| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
CRM (crm)
• Discuss (mail) • Inventory (stock) • Invoicing (account) • Manufacturing (mrp) • Sales (sale_management) • Calendar (calendar) • Contacts (contacts) |
| Lines of code | 12721 |
| Technical Name |
oodoshopify |
| License | OPL-1 |
| Website | https://nepsolweb.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
CRM (crm)
• Discuss (mail) • Inventory (stock) • Invoicing (account) • Manufacturing (mrp) • Sales (sale_management) • Calendar (calendar) • Contacts (contacts) |
| Lines of code | 12721 |
| Technical Name |
oodoshopify |
| License | OPL-1 |
| Website | https://nepsolweb.com |
Shopify Odoo Connector
Two-way, real-time Shopify ⇄ Odoo 19 integration on the latest GraphQL Admin API — plus profit analytics, AI content, and self-healing sync that no other connector offers.
More than a sync tool
Because it bridges Odoo (true cost & stock) with your storefront, it does things a plain connector can't.
Profit-Margin Intelligence
Real net margin per order, SKU and channel — Shopify revenue minus your Odoo COGS. Spot best-sellers that lose money.
Sync-Drift & Self-Healing
Detects price/stock mismatches between Odoo and Shopify and fixes them in one click. No more silent desync.
AI Content Studio
Generate and optimize titles, descriptions, SEO meta and tags with your own AI key, then push to Shopify.
Dry-Run Preview
See a before → after diff of every price push before it goes live. Ship changes with confidence.
Scheduled Sales & Repricing
Timed sales that apply and auto-revert (with strikethrough pricing), plus stock-aware markups with a margin floor.
Demand → Replenishment
Forecasts sell-through from Shopify orders and creates Odoo reordering rules so you never stock out.
Complete two-way sync
Orders & Fulfillment
- Real-time order import via webhooks
- Auto-create Odoo sale orders & invoices
- Push fulfillment tracking back to Shopify
- Cancellations, refunds & returns / RMA
- Draft orders for B2B / wholesale
Products, Pricing & Inventory
- Bi-directional products, variants, media, SEO, tags
- Multi-currency price push from pricelists
- Multi-location inventory sync
- Bulk & background imports that scale to huge catalogs
- Metafields & metaobjects
Customers & Marketing
- Customer & address sync with de-duplication
- Abandoned checkouts → CRM leads
- Discounts & gift cards
- Customer segments & B2B companies
- Markets / international pricing
Operations & Reliability
- Shopify Payouts → accounting reconciliation
- Theme settings & assets management
- HMAC-verified webhooks incl. app-uninstall
- Background queue with retries & live progress
- Cost-aware rate limiting & idempotent refunds
Sync coverage
| Data | Direction | Real-time | Scheduled |
|---|---|---|---|
| Orders & refunds | Shopify → Odoo | ✔ | ✔ |
| Fulfillment / tracking | Odoo → Shopify | — | ✔ |
| Products & variants | Both | ✔ | ✔ |
| Prices & inventory | Both | ✔ | ✔ |
| Customers | Both | ✔ | ✔ |
| Collections & discounts | Both | ✔ | ✔ |
| Payouts / accounting | Shopify → Odoo | — | ✔ |
| Theme settings & assets | Both | — | — |
Set up in minutes
Create a Shopify app
In your Shopify admin: Settings → Apps → Develop apps. Grant the API scopes you need.
Connect Odoo
Paste the Admin API token and click Test / Connect, or use the full OAuth flow.
Register webhooks & sync
One click registers all real-time events. Then import your catalog, orders and customers.
Technical
GraphQL-first
Shopify Admin API 2025-10 (REST only where required, e.g. Theme API).
Deploy anywhere
Odoo Online, Odoo.sh and On-Premise. One instance per store, unlimited stores.
Secure by design
HMAC webhook verification, OAuth, and SSRF-guarded shop domains. Credentials stay in your database.
External service — Shopify API
This module connects to Shopify, a third-party service. It exchanges data
with the Shopify Admin API (https://<your-store>.myshopify.com/admin/api)
using credentials you provide for your own store. Credentials are stored only in your Odoo
database and are never sent to the publisher — all calls go directly from your Odoo to Shopify.
A Shopify subscription (billed by Shopify) and a custom/public app are required. See Shopify's
Privacy Policy and
API Terms.
Support & documentation — response within 1 business day.
✉ rafuns@gmail.com · 🌐 nepsolweb.com
Shopify Odoo Connector
Full Shopify integration for Odoo 19: orders, products, pricing, customers, inventory, refunds, and theme management — GraphQL-first, built on API 2025-04.
Setup
Create a Shopify Custom App
Go to Shopify Admin → Settings → Apps and sales channels → Develop apps. Create a new app and grant the following Admin API scopes:
- read_products, write_products
- read_orders, write_orders
- read_customers, write_customers
- read_inventory, write_inventory
- read_themes, write_themes
- read_fulfillments, write_fulfillments
Copy the API Key and API Secret.
Create an instance in Odoo
Go to Shopify → Instances → New. Enter your shop domain (my-store.myshopify.com), API Key, and API Secret.
Connect with OAuth
Click Connect with OAuth. You will be redirected to Shopify to authorise the app and then returned to Odoo automatically. The access token is saved.
Register Webhooks
Click Register Webhooks. This creates real-time subscriptions for orders, products, customers, inventory, and refunds on Shopify.
Sync Locations
Click Sync Locations. Open each location record, assign it to an Odoo warehouse, then set a Default Inventory Location on the instance.
Import Inventory Levels
On the default location record, click Import Inventory Levels to load current stock quantities and wire up variant → location GID mappings.
Core Features
Orders
- Real-time import via webhooks (orders/create, orders/updated)
- Scheduled import: last N days, filtered by status
- Auto-create Odoo sale orders from Shopify orders
- Push delivery tracking numbers back to Shopify (fulfillmentCreateV2)
- Order cancellation handled via webhook
Products & Pricing
- Bi-directional product sync (productCreate / productUpdate)
- Bulk variant price push using productVariantsBulkUpdate
- Compare-at price (sale pricing) support
- Scheduled price push cron (disabled by default — enable in Technical → Automation)
Inventory
- Push Odoo stock quantities to Shopify via inventorySetQuantities
- Real-time inventory level updates via webhook
- Inventory diff view (Odoo qty vs Shopify qty per location)
- Scheduled inventory level import (every 4 hours)
Customers
- Import Shopify customers → Odoo contacts (smart email/phone matching)
- Export Odoo contacts → Shopify customers
- Marketing consent and verified email tracking
Refunds
- Webhook-driven: refunds/create fires automatically
- Full refund detail fetched via GraphQL
- Odoo credit note created automatically against the original invoice
- Manual trigger available for historical refunds
Theme Manager
- List all Shopify themes and switch the active theme
- Load and edit config/settings_data.json (colors, fonts, layout toggles)
- Browse, load, and push individual CSS/JS/Liquid assets
- Theme assets editor within Odoo (note: Shopify Theme API is REST-only; this is the only part of the connector that does not use GraphQL)
Reliability
- Sync Queue: failed operations are queued and retried up to 3 times
- Activity Logs: all errors logged with HTTP status, 30-day retention
- HMAC Verification: all incoming webhooks verified against webhook_secret
- Rate Limit Detection: warns when Shopify API call limit is near exhaustion
- Multi-store: configure one instance per Shopify store
Architecture
All API calls use Shopify Admin GraphQL API 2025-04 except for the Theme API (REST-only — Shopify has no GraphQL equivalent for themes).
Cursor-based pagination is used for all list queries (pageInfo.hasNextPage + endCursor). Shopify Global IDs (GIDs) are stored alongside numeric IDs on all mapping records for use in mutations.
Cron Jobs
| Job | Default Interval | Active |
|---|---|---|
| Import Orders | Every 1 hour | Yes |
| Import Customers | Every 12 hours | Yes |
| Import Inventory Levels | Every 4 hours | Yes |
| Process Sync Queue | Every 15 minutes | Yes |
| Push Prices | Every 6 hours | No |
| Purge Old Logs | Daily | Yes |
Support
Email: rafuns@gmail.com
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module