Shopify–Odoo Integration · intermediate · 11 min read
Order Synchronization Workflow
End-to-end Shopify order import into Odoo: idempotency, tax and payment mapping, partial fulfillments, refunds, cancellations, and fulfillment feedback.
Last reviewed 2026-07-30 · Estimated effort: 2–6 weeks typical implementation slice
Table of contents
Order sync is the highest-risk domain: duplicate imports create double shipments; missing tax mapping breaks compliance; ignored partial fulfillments frustrate customers and finance alike.
A solid workflow imports Shopify orders idempotently into Odoo sales orders, maps lines to existing products via external IDs, applies fiscal positions and payment methods deliberately, and pushes tracking and fulfillment status back when Odoo deliveries complete.
Refunds, cancellations, and edits are first-class events — not manual cleanup tasks after go-live.
Operations teams feel integration quality first in the order queue. When imports are reliable, warehouse picks proceed; when not, staff re-key orders and trust erodes quickly.
This article describes ERP order workflow design — not Shopify checkout customization or payment gateway selection.
Orders should enter a durable queue from Shopify webhooks (orders/create, orders/updated, orders/cancelled) or from scheduled reconciliation that catches missed events. Each job must check a unique Shopify order ID before creating Odoo documents.
Store the Shopify order ID and order number on the Odoo sale.order. Retries and webhook duplicates must no-op or update in place — never create a second sale order for the same checkout.
- ▸Unique constraint or lookup on Shopify order ID
- ▸Correlation ID in logs tying webhook payload to Odoo record
- ▸Dead-letter queue for orders that fail mapping validation
Each line maps to product.product via variant ID or SKU. Shipping lines, tips, and gift cards need explicit product or service mappings — do not drop them into generic lines finance cannot reconcile.
Tax lines from Shopify must map to Odoo taxes or fiscal positions with documented rounding rules. Discounts should preserve intent: order-level versus line-level, tax-inclusive versus exclusive.
Billing and shipping partners resolve through customer sync rules — create or match partners, attach child contacts for addresses, and handle B2B company names separately from consumer names.
International orders may need incoterm, HS code, and duty metadata carried into Odoo for shipping connector handoff.
When Odoo validates pickings or posts deliveries, push fulfillment events and tracking numbers to Shopify. Partial fulfillments must update remaining line quantities — Shopify customers expect accurate shipment notifications.
Multi-package shipments may require aggregated tracking or per-package events depending on carrier integration capabilities.
Cancellations before fulfillment should cancel or hold the Odoo order with linked inventory release. Refunds after payment may create credit notes or payment refund records depending on accounting setup.
Post-import order edits in Shopify (line changes, address fixes) need update handlers — ignoring orders/updated webhooks leaves Odoo stale.
- ✓Implement idempotent order import before enabling automatic fulfillment.
- ✓Define mappings for shipping, discounts, tips, and gift cards explicitly.
- ✓Test partial fulfillment and multi-package tracking on staging with real carrier formats.
- ✓Push fulfillment status from Odoo events, not manual Shopify admin edits.
- ✓Reconcile paid order totals between Shopify and Odoo daily during rollout.
- ✓Use queues for order import — never block webhook HTTP responses on slow Odoo ORM work.
- !Creating duplicate sale orders on webhook retry without unique checks.
- !Mapping all tax to a single generic tax when multi-jurisdiction rules apply.
- !Importing orders but never pushing fulfillment back to Shopify.
- !Treating refunds as manual journal entries instead of automated events.
- !Ignoring cancelled orders and leaving pickings active in warehouse.
- !Processing orders synchronously inside webhook handlers under load.
Reliable order sync is idempotent import plus closed-loop fulfillment and refund handling — not one-way order dumping into Odoo.
High-volume stores should pair this workflow with queue design and rate-limit aware workers.
Capture
Order created on channel.
Import
Create sale / POS order in Odoo.
Fulfill
Pick, pack, ship or store handoff.
Settle
Payment and accounting close.
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
Should Odoo or Shopify own payment capture?
Shopify typically captures customer payment. Odoo records the sale and may register payment for reconciliation — mapping depends on accounting workflow. Document whether Odoo invoices on delivery or on order import.
How do we handle POS or draft orders?
Scope which Shopify order statuses import. Draft and unpaid orders may be excluded until paid to avoid phantom demand in warehouse.
What about split fulfillment across warehouses?
Odoo may split deliveries by warehouse route. Each delivery validation should emit corresponding Shopify fulfillment lines for the correct location when multi-location inventory is enabled.
Related articles
What Is Shopify–Odoo Integration?
A practical definition of Shopify–Odoo integration: system of record, sync scope, external IDs, and how it differs from theme work or one-off CSV exports.
View →Inventory Synchronization Strategies
Stock sync between Odoo and Shopify: system of record, location mapping, reserved quantity, oversell prevention, and multi-warehouse patterns.
View →Customer Data Synchronization
Sync Shopify customers with Odoo partners: deduplication, B2B accounts, addresses, privacy updates, and order-time customer resolution.
View →Queue Management for High-Volume Stores
Durable queues, workers, priority lanes, and observability for Shopify–Odoo sync at scale — beyond synchronous webhook processing.
View →Related services
Shopify–Odoo Integration
Architecture, connectors, and operational sync for Shopify storefronts and Odoo ERP.
View →Odoo Delivery
Implementation programmes including ecommerce connectors and sync design.
View →Python Backend Development
Middleware workers, queues, and APIs beside Odoo when the connector needs a service layer.
View →Designing order-to-Odoo flow?
We map tax, fulfillment, and refund paths between Shopify and Odoo before you turn on automatic import.
