Odoo 17 Shopify integration · Updated 2026
Odoo 17 and Shopify,
in agreement by this afternoon.
Products, prices and stock go down to Shopify every 6 hours — or the second you press sync. Shopify orders come back into Odoo 17 as draft quotations within seconds, and you approve them there. You see a dry-run plan before anything is written, and every run leaves a per-SKU log. No module to install, no theme edits, official Shopify OAuth.
Cancel anytime during the trial · Stress-tested at 1,000 req/hr on Odoo
What syncs
Two directions. Both on your terms.
Catalogue and stock, down to Shopify
Products, prices and stock levels move Odoo 17 → Shopify automatically every 6 hours, and on demand whenever you press sync. Matching is by SKU, so a re-run updates — it never duplicates.
Orders back in seconds, as draft quotations
The moment a Shopify order is placed, Hasil writes it into Odoo 17 as a draft quotation — referenced by the Shopify order number, customer matched by email. Nothing is confirmed for you — you approve in Odoo.
Preview first, then push
Run a dry-run and read the plan: which SKUs get created, which get updated, what each stock figure becomes. Only when you agree does anything get written to Shopify.
How a run works
Read, plan, write, log.
Four steps, every time, on a schedule you control. Your Odoo 17 catalogue can't drift for more than 6 hours — and you can force a run whenever you want one.
Read Odoo 17
Hasil reads products, prices and stock from Odoo 17 over the standard external JSON API with an API key. No custom module, no Odoo source patch.
Plan the run (dry-run)
Hasil builds the change set before touching Shopify: creates, updates, stock deltas, and anything it refuses to guess at. All-or-nothing on SKU matching — a line it can't match stops the write instead of inventing one.
Write to Shopify
The approved change set is written through official Shopify OAuth. Writes are idempotent, so a retried or repeated run lands on the same result.
Log every SKU
Counters, per-SKU results and errors are stored for the run. Orders travel on their own path — they reach Odoo as draft quotations within seconds of checkout.
┌────────────────┐ ┌──────────────────┐
│ Odoo 17 │ catalogue · prices · stock │ Shopify │
│ Community · │ ──── every 6 h · or on demand ──▶│ official OAuth │
│ Enterprise · │ │ │
│ Odoo.sh │ ◀── orders · in seconds ─────────│ │
└───────┬────────┘ (webhook, not the run) └────────▲─────────┘
│ │
│ read (JSON API + API key) write (idempotent)
▼ │
┌────────────────────────────────────────────────────────────┴───────┐
│ Hasil Sync │
│ plan (dry-run) · SKU match, all-or-nothing · per-SKU log │
│ single catalogue source · re-runs never duplicate │
└────────────────────────────────────────────────────────────────────┘Odoo 16 vs Odoo 17
Identical today — with more room on 17.
Both versions get the same results from the same engine. Odoo 17 adds one thing on the Odoo side: it can emit native outbound webhooks, a push path we can build on next.
| Capability | Odoo 16 | Odoo 17 |
|---|---|---|
| Catalogue, prices, stock → Shopify | Yes — identical engine | Yes — every 6 h + on demand |
| Shopify orders → Odoo draft quotations | Yes | Yes |
| Dry-run preview before writing | Yes | Yes |
| Custom Odoo module required | No | No |
| Connection method | Not supported | JSON API + API key |
| Odoo can emit native outbound webhooks | No | Yes — a push path Hasil can build on next |
Still on Odoo 16? /integrations/odoo-16-shopify
Setup
Live in 3 steps.
- 1
Connect Shopify through official OAuth
Approve the scopes in Shopify's own OAuth screen. No App Store install, no theme edits, no code near your storefront.
- 2
Connect Odoo 17 with a URL and an API key
Paste your Odoo 17 database URL and a user API key. Community, Enterprise and Odoo.sh all work the same way.
- 3
Dry-run, then go live
Preview the first run, read the plan, push it. From then on the catalogue refreshes every 6 hours, plus any run you trigger yourself.
The limits, plainly: sync runs on a schedule you control; Odoo price lists are not imported; single location. SKU caps by plan: 2,000 · 10,000 · unlimited.
Free playbook
Planning the Odoo 17 → Shopify move? Take the playbook.
Free Shopify B2B Pricing Playbook — pricing models, inventory rules, and the exact draft-order flow Hasil uses. Concise, no fluff.
FAQ
Odoo 17 Shopify integration — common questions
How does Hasil connect to Odoo 17?+
Over Odoo 17's standard external JSON API with a user API key, on Community, Enterprise and Odoo.sh alike. Nothing is installed inside Odoo, and the same engine serves Odoo 17, 18 and 19 — moving between those versions doesn't change your results. Odoo 16 and earlier cannot serve this API and are not supported.
How current is my Shopify catalogue?+
Your catalogue cannot drift for more than 6 hours: a run fires automatically on that schedule, and you can force one from the dashboard at any moment — before a launch, after a price change, in the middle of a stock count. Predictable beats theatrical.
Odoo 17 emits native outbound webhooks — does Hasil use them?+
Not today. Odoo 17 is the first Odoo release that can emit native outbound webhooks, which is a push path we can build on next. The sync you buy today is the scheduled and on-demand engine: you see the plan before anything writes, and re-running is always safe.
What happens to Shopify orders in Odoo 17?+
Within seconds of checkout, the order appears in Odoo 17 as a draft quotation, with the Shopify order number as the reference and the customer matched by email so you don't collect duplicate contacts. They stay drafts until you confirm them — no surprise confirmations, no stock moved behind your back.
Can I see what a sync will do before it does it?+
Yes — that's the dry-run. It shows the planned creates, updates and stock changes per SKU before a single write reaches Shopify, and every real run is logged per SKU with counters and errors. Every run leaves a receipt. Re-running is safe: records are matched by SKU and update rather than duplicate.
Do I need an App Store install or theme edits?+
No. Shopify is connected through official OAuth, nothing is installed from the Shopify App Store, and your theme is never touched. Orders run through Shopify's own checkout and Odoo's own invoicing — Hasil moves data, never money. Stress-tested at 1,000 requests per hour against Odoo.
Free playbook · 1 email/month
Not ready for a trial? Take the playbook instead.
Put Odoo 17 in charge of the catalogue. Keep control of the writes.
14-day free trial. Preview every run before it writes, force a sync whenever you want one, and read the per-SKU log afterwards.
Start 14-day free trial