The same Shopify order came through twice
Nothing is broken on Shopify's side. It sends, it does not hear a quick 2xx, and it sends again — that is the contract. What breaks is a flow that assumes each delivery is a new order.
Shopify retries delivery on timeout or on any non-2xx, and it can deliver the same event more than once even when everything is healthy. If the n8n webhook responds only AFTER a slow chain of nodes, the first delivery times out on Shopify's clock while your flow keeps running — so the work happens twice and the customer gets two emails, two fulfilment rows, or a double charge on your own side.
Respond 2xx immediately and do the work after, and key every write on the event: Shopify's `X-Shopify-Webhook-Id` header (or the order id plus topic) stored before processing makes the second delivery a no-op. Never treat a duplicate as an error to alert on — it is normal traffic, and the flow's job is to absorb it silently.
Replay the same webhook payload twice and confirm exactly one order, one email and one fulfilment row exist afterwards.
Not sure if this is the only leak?
Paste your workflow and see which steps run twice when a webhook is redelivered — free, 30 seconds.
Scan my workflow free