Short answer
Odoo 19 includes an official Shopify Connector that syncs orders, products, inventory, deliveries, returns, and refunds — but on a schedule (orders every 10 minutes), without webhooks, and, per Odoo's setup guide, only on Odoo.sh with version 19. For custom integrations, use Odoo's External JSON-2 API with API keys; the older XML-RPC and JSON-RPC endpoints are scheduled for removal in Odoo 22 (fall 2028) and Odoo Online 21.1 (winter 2027). On Odoo Online, external API access requires a Custom pricing plan, so check your hosting and plan before choosing an approach.
Odoo integration surface at a glance (documented by the vendor; see sources)
- Native connector
- Odoo's Shopify Connector syncs orders, products, inventory, deliveries, returns, and refunds.
- Sync model
- Scheduled actions, no webhooks: orders every 10 minutes; stock pushed to Shopify after each order sync.
- Requirements
- Per Odoo's setup guide, the connector only works with Odoo.sh and requires version 19.0.
- Shopify auth
- OAuth is mandatory for Shopify stores created on or after January 1, 2026.
- API
- External JSON-2 API: POST /json/2/{model}/{method} with Authorization: bearer {API key}.
- Deprecation
- /xmlrpc, /xmlrpc/2 and /jsonrpc scheduled for removal in Odoo 22 (fall 2028) / Odoo Online 21.1 (winter 2027).
- Plan restriction
- On Odoo's pricing, external API data access is only available on Custom plans, not One App Free or Standard.
- Shopify Orders
- Connector or service Scheduled or event-driven
- Odoo Sales
Odoo is a popular open-source ERP for growing merchants, with an official Shopify Connector since Odoo 19. That makes the first decision easy — try the connector — but it comes with constraints that matter for some stores: it’s scheduled rather than real-time, and its availability depends on how you host Odoo. This page covers both the connector and the custom route. As on every page, documented marks statements from Odoo or Shopify documentation, and recommendation marks our guidance.
The official Shopify Connector
Documented: Odoo’s Shopify Connector synchronizes orders, products, inventory, deliveries, returns, and refunds between a Shopify store and Odoo. It doesn’t perform real-time synchronization and doesn’t rely on webhooks; all synchronization runs through scheduled actions. Odoo lists the frequencies as: orders every 10 minutes, inventory pushed from Odoo to Shopify each time orders are pulled, and deliveries handled in Odoo every 10 minutes.
Documented: Odoo’s setup guide states that the integration only works with Odoo.sh and requires version 19.0. For the Shopify connection, OAuth is mandatory for stores created on or after January 1, 2026; older stores can use an admin API access token.
Recommendation: the connector fits stores that are on Odoo.sh with version 19, can tolerate orders arriving in Odoo every few minutes, and have mostly standard flows. Check three things before committing:
- Hosting and version. If you’re on Odoo Online or self-hosted, or on an earlier version, the official connector may not be available to you.
- Stock timing. With stock pushed after each scheduled order pull, fast-selling items can oversell during peaks. Use safety buffers on Shopify, or choose an event-driven approach for those SKUs.
- Edge cases. Test edited orders, partial refunds, bundles, and multi-location stock with the test plan template.
See real-time vs. scheduled sync for the trade-off.
Custom integration with the JSON-2 API
Documented: Odoo 19’s External JSON-2 API accepts a JSON object posted to /json/2/{model}/{method}, authenticated with an Authorization: bearer header carrying an API key, with an optional X-Odoo-Database header to choose the database. The older /xmlrpc, /xmlrpc/2 and /jsonrpc endpoints are scheduled for removal in Odoo 22 (fall 2028) and Odoo Online 21.1 (winter 2027).
Documented: access to data via the external API is only available on Custom Odoo pricing plans; it isn’t available on One App Free or Standard plans.
POST https://{your-odoo-host}/json/2/sale.order/create
Authorization: bearer {api_key}
Content-Type: application/json
X-Odoo-Database: {database}
{
"vals_list": [{
"partner_id": 42,
"client_order_ref": "SHOP-US-5551234",
"order_line": [[0, 0, { "product_id": 311, "product_uom_qty": 2 }]]
}]
}
Illustrative only. Method arguments and field names depend on your Odoo version and installed modules; check the model documentation your instance exposes.
Recommendation:
- Create a dedicated Odoo user and API key for the integration, with only the access rights it needs.
- Build on JSON-2 now; don’t start new work on XML-RPC or JSON-RPC.
- Receive Shopify webhooks in your own service, verify their signature, queue them, and write to Odoo — that gives you event-driven order flow the official connector doesn’t provide.
Avoiding duplicate orders
Documented (Shopify): Shopify webhooks can be delivered more than once.
Recommendation: store the Shopify order ID in a reference field you can search (for example the customer reference on the sales order) with a per-store prefix, keep a processed-events table, and search Odoo for that reference before creating an order after a timeout. See preventing duplicate orders.
Inventory, fulfillment, and accounting
Recommendation:
- Inventory: let Odoo own on-hand quantities and publish available-to-sell per warehouse to the matching Shopify location; reconcile daily (syncing inventory).
- Fulfillment: validate the delivery in Odoo, then create the Shopify fulfillment with carrier and tracking so the customer is notified.
- Tax: post the tax Shopify (or your tax engine) calculated at checkout; avoid recalculating it in Odoo. See sales tax in ERP integrations.
- Payouts: reconcile Shopify Payments payouts as net deposits with fees and refunds booked separately (reconciling payouts).
Common pitfalls
- Assuming the connector is real-time and overselling between scheduled syncs.
- Choosing the connector on unsupported hosting (not Odoo.sh, or not version 19).
- Building on XML-RPC with removal scheduled for Odoo 22 / Online 21.1.
- Expecting API access on a Standard plan on Odoo Online.
- Duplicate sales orders from retries without a reference lookup.
Frequently asked questions
Does Odoo have an official Shopify integration?
Yes. Odoo 19's documentation describes a Shopify Connector in the Sales app that synchronizes orders, products, inventory, deliveries, returns, and refunds. According to Odoo's setup guide, it only works with Odoo.sh and requires version 19.0.
Is the Odoo Shopify Connector real-time?
No. Odoo documents that the connector doesn't use webhooks and doesn't sync in real time; scheduled actions run periodically — orders every 10 minutes, with stock pushed to Shopify after each order sync. If you need near-real-time stock or order flow, you'd need a different connector or a custom integration.
Can I use the Odoo API on Odoo Online?
Odoo's documentation states that access to data through the external API is only available on Custom pricing plans, not on One App Free or Standard. Confirm with Odoo for your subscription before designing a custom integration on Odoo Online.
Should a new integration use XML-RPC or JSON-RPC?
Neither. Odoo 19 introduced the External JSON-2 API, and the /xmlrpc, /xmlrpc/2 and /jsonrpc endpoints are scheduled for removal in Odoo 22 (fall 2028) and Odoo Online 21.1 (winter 2027). Build new integrations on JSON-2 and plan migrations for existing ones.
Sources and further reading
Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.
- [1] Shopify Connector (Odoo 19.0) — Odoo
- [2] Shopify Connector configuration (Odoo 19.0) — Odoo
- [3] External JSON-2 API (Odoo 19.0) — Odoo
- [4] External RPC API (Odoo 19.0) — Odoo
- [5] Shopify webhooks — Shopify
Related reading
- Platforms Shopify ERP Integration How Shopify connects to an ERP — the GraphQL Admin API, webhooks, inventory states, fulfillment orders, rate limits — plus the sync patterns and pitfalls that matter.
- Comparisons Real-Time vs. Scheduled Synchronization When ecommerce-ERP data should sync in real time and when a schedule is better — compared by workflow, cost, complexity, rate limits, and failure behavior.
- Comparisons Custom ERP Integration vs. Off-the-Shelf Connectors Compare building a custom ecommerce-ERP integration with buying a prebuilt connector — fit, cost over time, flexibility, support, and the questions to ask vendors.
- Guides How to Synchronize Inventory Between Shopify and an ERP Keep Shopify stock levels aligned with your ERP — choosing which quantity to publish, mapping locations, using compare-and-swap updates, and reconciling drift.
- ERP integrations Shopify NetSuite Integration: Architecture, APIs, and Pitfalls How to integrate Shopify with Oracle NetSuite — REST web services, OAuth 2.0, external-ID upserts, concurrency limits, order and inventory flows, and connector options.
- Templates Shopify to ERP Field Mapping Template A starting field map for the order-to-cash flows most Shopify–ERP integrations need.