Mock a Shopify order webhook
A GET mock shaped like a Shopify order webhook, with an order_number that counts up and a random total and customer email.
This template returns a Shopify-shaped order webhook whose order_number counts up on every call, with a random total and customer email. That makes it useful for testing code that has to cope with a stream of distinct orders rather than the same fixture repeatedly — deduplication, ordering, and idempotency all need more than one value.
Returns a ready-made event — feed it straight into your own handler.
Response payload
{
"id": 5734891234567,
"order_number": {{seq}},
"total_price": "{{faker.price}}",
"currency": "USD",
"line_items": [
{
"title": "Wireless Mouse",
"quantity": 2,
"price": "19.99"
}
],
"customer": {
"email": "{{faker.email}}"
}
}
Fields worth knowing
| Field | What it means |
|---|---|
| order_number | Counts up on every call via {{seq}} — this is how Shopify's own order numbers behave too. |
| total_price | A random amount via {{faker.price}}; a real order's total is the sum of its line items plus tax and shipping. |
| currency | The currency code, hardcoded here to USD. |
| line_items | The order's line items — one fixed item here, a real order can carry many. |
| customer.email | A random email via {{faker.email}}. |
Create the mock
curl -X POST https://quickmock.dev/api/mocks \
-H 'Content-Type: application/json' \
-d '{
"method": "GET",
"response_status": 200,
"content_type": "application/json",
"response_body": "{\"id\":5734891234567,\"order_number\":{{seq}},\"total_price\":\"{{faker.price}}\",\"currency\":\"USD\",\"line_items\":[{\"title\":\"Wireless Mouse\",\"quantity\":2,\"price\":\"19.99\"}],\"customer\":{\"email\":\"{{faker.email}}\"}}"
}'
Call it
curl https://quickmock.dev/m/<slug>
What you get
GET /m/<slug> -> 200 a Shopify-style order webhook
order_number counts up per call, total_price/customer.email are random
How this differs from the real thing
This is one trimmed-down order instead of the full field set a real Shopify order carries, and the request isn't signed. order_number counts up via {{seq}}; total_price and customer.email are random on every call.
Sources
FAQ
- Does this connect to a Shopify store?
- No. It is one trimmed-down order served from your mock URL, with no store, no inventory and no API behind it. A real Shopify order carries many more fields than the ones shown here.
- Why does order_number change every call?
- It uses a sequence token, mirroring how Shopify's own order numbers increment. A fixture with a fixed ID cannot catch a bug where your code treats two different orders as the same one.
- Is total_price consistent with the line items?
- No — it is random on each call while the line items are fixed. If your code recomputes the total from the items, edit the response body to make the two agree first.
Ready to use it?
Pairs well with this guide: Test a webhook receiver
Related templates
Last updated: 2026-10-17