Shopify–Odoo Integration · intermediate · 10 min read
Shopify Webhooks vs Scheduled Sync
When to use Shopify webhooks, cron reconciliation, or both: latency, completeness, failure modes, and recovery patterns for Odoo integration.
Last reviewed 2026-07-30 · Estimated effort: 2–6 weeks typical implementation slice
Table of contents
Webhooks deliver low-latency events — orders, inventory changes, product updates — but they are not a guaranteed audit trail. Endpoints fail, subscriptions lapse after app changes, and duplicate delivery is normal.
Scheduled sync (cron or worker polling) recovers missed events, reconciles drift, and smooths bulk catalog work — at the cost of latency and API budget consumption.
Production-grade Shopify–Odoo integrations almost always use hybrid design: webhooks enqueue work immediately; scheduled jobs reconcile by time window and entity type with idempotent upserts.
Debates about webhooks versus cron often miss the point: they solve different reliability and latency problems. Choosing only one creates predictable gaps.
This article compares integration transport patterns — not Shopify webhook admin UI tutorials or theme event hooks.
Webhooks push orders and critical updates within seconds — essential when warehouse starts picking on import and customers expect fast confirmation in Odoo-backed support tools.
They reduce unnecessary polling and API cost for event-heavy entities like orders during peak season.
- ▸Verify HMAC signatures on every payload
- ▸Respond quickly with 200 after enqueue — not after Odoo commit
- ▸Subscribe deliberately to orders, products, inventory, and refunds needed for scope
Shopify retries failed deliveries, which can duplicate work if importers are not idempotent. Long Odoo transactions inside webhook handlers cause timeouts and retry storms.
App reinstalls, scope changes, and stale endpoints silently stop delivery until someone notices missing orders. Monitoring undelivered webhook age is mandatory.
Cron jobs query Shopify or Odoo by updated_at windows to catch anything webhooks missed. They suit inventory reconciliation, catalog diff sweeps, and nightly financial alignment.
Batch windows can respect rate limits with predictable throughput — useful for large SKU counts and media backfills.
Latency increases: hourly inventory reconciliation means up to 59 minutes of drift unless webhooks also run. Aggressive polling burns API budget and competes with customer-facing operations.
Blind full sync without cursors reprocesses unchanged records — expensive and noisy in logs.
Typical split: webhooks for orders/create and orders/updated; scheduled jobs every 15–60 minutes for inventory delta and order reconciliation; nightly catalog diff for products changed in Odoo.
Each scheduled job stores high-water marks per entity type so restarts resume safely. Reconciliation reports quantify webhook gap rate — a leading indicator of endpoint or queue health.
- ✓Never process heavy Odoo logic inline in webhook HTTP handlers — enqueue first.
- ✓Run at least one reconciliation job per critical entity: orders and inventory.
- ✓Monitor webhook delivery failures and subscription health in Shopify admin or API.
- ✓Use updated_at cursors for scheduled pulls instead of full catalog scans.
- ✓Design all importers idempotent so webhook retries and cron overlap safely.
- ✓Document which events are webhook-only versus cron-only versus both.
- !Webhook-only design with no reconciliation backstop.
- !Cron-only design with unacceptable order import delay at peak.
- !Missing HMAC verification exposing fake order injection risk.
- !Full product catalog pull every hour instead of delta queries.
- !Assuming 200 OK from Shopify means Odoo successfully committed.
- !Forgetting to re-register webhooks after connector redeploy or URL change.
Webhooks give speed; scheduled sync gives completeness. Mature integrations require both with idempotent workers between them.
Queue design and rate limits determine how well hybrid patterns survive peak season — not the choice of webhook alone.
| Option | Best when | Trade-off |
|---|---|---|
| Configure | Standard Odoo covers the need | Limited uniqueness |
| Customize | Differentiating workflow | Upgrade cost |
| Integrate | External system of record | Sync complexity |
External system
Shopify / WMS / etc.
API / Webhooks
Edge
Queue
Reliability
Odoo
ERP truth
- extapi
- apiq
- qodoo
Trigger
Business event starts the flow.
Execute
Operate in the system of record.
Validate
Check outcomes and exceptions.
Close
Reconcile and hand off.
Frequently asked questions
How often should reconciliation run?
Match business tolerance: high-volume retail often reconciles orders every 15–30 minutes and inventory hourly. Low volume may use hourly for both. Measure drift before tightening schedules.
Can Odoo cron alone replace middleware workers?
Light volume sometimes yes. High volume and long ORM work usually need external workers so Odoo request threads and webhook timeouts stay healthy.
Should inventory use webhooks or scheduled sync?
Both. Webhooks or inventory_levels/update events for speed where supported; scheduled reconciliation for truth because inventory events can be missed during bulk Odoo adjustments.
Related articles
Queue Management for High-Volume Stores
Durable queues, workers, priority lanes, and observability for Shopify–Odoo sync at scale — beyond synchronous webhook processing.
View →Handling API Limits and Retries
Shopify and Odoo API rate limits, backoff strategies, idempotent retries, error classification, and priority budgets for integration workers.
View →Order Synchronization Workflow
End-to-end Shopify order import into Odoo: idempotency, tax and payment mapping, partial fulfillments, refunds, cancellations, and fulfillment feedback.
View →Inventory Synchronization Strategies
Stock sync between Odoo and Shopify: system of record, location mapping, reserved quantity, oversell prevention, and multi-warehouse patterns.
View →Related services
Shopify–Odoo Integration
Architecture, connectors, and operational sync for Shopify storefronts and Odoo ERP.
View →Python Backend Development
Middleware workers, queues, and APIs beside Odoo when the connector needs a service layer.
View →Odoo Support
Monitoring, incident response, and AMC for live Shopify–Odoo estates.
View →Missing orders or stale stock?
We audit webhook subscriptions, reconciliation jobs, and queue health to close gaps between Shopify events and Odoo truth.
