Shopify says webhook delivery is not guaranteed. Your sync is built on webhooks.
Almost every sync app works the same way: your store fires a webhook when something changes, the app catches it and copies the change. It is fast, it is efficient, and it has one property worth knowing about: the platform itself does not promise the webhook will arrive.
What the documentation actually says
This is not a rumour about rare failures. It is stated plainly in Shopify's own developer documentation (checked on 12 August 2026):
"Webhook delivery isn't always guaranteed, and your app can miss or mishandle events for other reasons, such as handler failures or downtime."
"Your app shouldn't rely on receiving data from Shopify webhooks."
And the recommended cure, in the same document: "For redundancy, use reconciliation jobs to periodically fetch data from Shopify so that your app stays consistent with Shopify's data." The source is Shopify's webhooks guide at shopify.dev - open it and search for "guaranteed".
What a missed webhook does to a sync
Nothing visible, and that is the problem. A missed delivery is not an error anyone sees: the sending store saved the change, the app was never told, the receiving store keeps the old value. Both stores look healthy. There is no failed job to retry and no red banner, because from where the app stands, nothing happened.
The gap surfaces later as a quiet difference: a price from last month, stock that sold out in one store and not the other, a renamed product that kept its old title in the copy. On a catalogue that changes daily, a small missed fraction compounds into drift you can no longer date or explain. That is how stores end up out of sync with a sync app running.
Deduplication is on the app too
The same document tells apps to ignore duplicate deliveries using the webhook id header. So the delivery model is: an event can arrive twice, and an event can not arrive at all. Both are normal operation, and both are the app's job to handle - one with deduplication, the other with the reconciliation jobs quoted above.
What to require from any sync app
The platform's own advice points at the answer: webhooks for speed, scheduled full comparison for truth. Concretely, that means a sync app should re-check the whole catalogue on a schedule, field by field, and show you the result - not a green light, but a list: which products differ, on which fields, with the value from each store.
This is how StoreTwin is built: webhooks make copies fast, an hourly check catches what they missed, and a daily comparison walks the complete catalogue of both stores. Every difference is named, not counted. The checking part runs on the free plan over any catalogue - including one that a different app is syncing - so you can verify a sync you already run without switching anything. More on ways to keep two stores in step.