Data leak

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.

Why it happens

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.

How to fix it

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.

How to verify

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
Related leaks
n8n is writing duplicate leads into your CRMThe run is green and nothing arrivedThe retry that helped once is now writing everything twice