Hi everyone,
I’m building an integration that syncs Shopify orders to our database, and I need to understand exactly which fields can change for each order webhook event.
My situation:
- I receive multiple webhooks for the same order:
orders/create,orders/paid,orders/fulfilled,orders/updated, etc. - My database has 100+ columns mapped to the Order object
- I want to update only the fields that actually changed to optimize database writes
My question:
Is there official documentation or a definitive list showing which Order fields are guaranteed to change (or might change) for each webhook event?
For example:
orders/create→ ???orders/paid→ I assumefinancial_status,paid_at,transactions… but what else?orders/fulfilled→ I assumefulfillment_status,fulfillments… but what else?orders/cancelled→ I assumecancelled_at,cancel_reason… but what else?orders/updated→ Any field can change?
What I’ve tried:
- Read the Webhook documentation
- Read the Order object documentation
- Both explain WHEN webhooks fire, but not WHICH fields change
Current approach:
Right now I’m doing a full upsert for every webhook, but this feels inefficient. Should I:
- Continue with full upsert for all webhooks? (safest but inefficient)
- Update only specific fields per webhook type? (efficient but risky if I miss fields)
- Use webhooks as triggers and fetch fresh data via API? (accurate but rate-limit concerns)
Has anyone solved this problem? Any advice would be appreciated!
Thanks!