Connecting Odoo to PrestaShop or Shopify: architecture of a reliable connector
Bi-directional product, stock and order synchronization between Odoo and your store: patterns that really work in production.
You use Odoo to manage your business, PrestaShop or Shopify to sell online, and two teams that keep passing Excel files back and forth. Welcome to the nightmare of out-of-sync catalogs, overselling, inconsistent prices, and orders that never make it to accounting. A well-designed Odoo ⇄ e-commerce connector solves these problems once and for all—provided you avoid the classic pitfalls.
Why a native connector is never enough
The “official” Odoo-PrestaShop or Odoo-Shopify modules cover the standard use case: a simple catalog, one warehouse, one language, and basic attributes. As soon as you step outside this scope—multi-attribute configurations, segment-specific pricing, inventory spread across multiple locations, translations, complex promotions—you have to write your own connector or significantly extend the existing one.
Signs that a generic connector won’t cut it:
- More than 5,000 active SKUs with variants
- Multiple warehouses or drop shippers contributing to inventory
- Multi-currency or segmented pricing grids (B2B/B2C)
- Management of kits, bundles, or composite products
- Real-time requirements (< 5 min latency on inventory)
The 4 critical workflows to orchestrate
1. Catalog: Odoo → e-commerce (downstream)
Odoo is the single source of truth for products. Attributes, descriptions, images, prices, and categories originate in Odoo and flow down to the store. The connector must handle:
- Attribute mapping: Odoo attributes (color, size, material) become combinations/variants on the store side.
- Media: optimized upload (WebP, resizing) with a thumbnail cache to avoid sending an unchanged image.
- Translations: if you manage multiple languages in Odoo, the translated fields must be pushed to the correct multi-shop/multi-locale stores.
- Categories: Odoo tree → store categories, while preserving SEO slugs.
2. Inventory: Odoo → e-commerce (near real-time)
This is the most critical data flow. A 10-minute desynchronization on a popular product can lead to costly overselling. Two approaches:
- Event-driven push: Odoo triggers a hook (via automation rules) for every inventory movement that changes the available quantity. The connector calls the store API within seconds. Ideal for catalogs with < 50k SKUs.
- Incremental polling: every 2–5 minutes, the connector reads stock movements since the last sync (
write_date) and pushes the deltas. More robust for very large catalogs.
In both cases, a buffer is required: we do not publish the raw physical quantity, but rather available quantity minus quantity in current orders minus a safety buffer. This buffer absorbs the inevitable latency between Odoo and the store.
3. Orders: e-commerce → Odoo (amount)
Each order validated on the store side must create in Odoo: a sales order, a customer contact (or link to an existing one), a delivery note, and a pro forma invoice. Points to watch out for:
- Idempotence: use the store order ID as the unique key in Odoo to avoid duplicates in case of retries.
- Taxes: Explicit mapping of store VAT rates to Odoo tax items (be mindful of EU/non-EU sales and reverse charge).
- Discounts: Report product discounts AND order discounts separately; do not combine them.
- Shipping costs: Dedicated order line with the appropriate accounting account.
4. Statuses: Odoo → e-commerce (feedback)
When an order is shipped in Odoo, the store must display the status and tracking number to the customer. The connector listens for status changes on Odoo delivery notes and pushes them to the store (via the dedicated API: orders/fulfillments on Shopify, order_carriers on PrestaShop).
Recommended architecture
A robust connector is built around 3 decoupled components:
- A message queue (Redis Queue, Celery, RabbitMQ) that absorbs spikes and ensures asynchronous processing. No synchronous API calls from Odoo—it breaks as soon as the store slows down.
- A dedicated worker (Python, Node) that consumes the queue, manages exponential retries, handles the store API rate limiting, and logs errors to a monitoring table.
- A monitoring dashboard displaying pending items, errors, average synchronization times, and allowing manual retries of an item.
Mistakes to Avoid
- No store-side webhooks: without order webhooks, you’ll miss orders created offline (POS) or via third-party APIs. Always use both webhooks and catch-up polling.
- Ignoring rate limiting: Shopify limits to 2 requests/second (per bucket); PrestaShop depends on the server. The connector must adhere to these limits; otherwise, your bulk syncs will be blocked midday.
- No dry-run mode: it’s impossible to confidently develop the connector without being able to test the data flows on a staging environment without impacting production.
- No reconciliation: even with a good connector, stock discrepancies occur. A nightly reconciliation job (Odoo ↔ store) and a daily discrepancy report are essential.
PrestaShop vs Shopify: What’s Different in Terms of Integration
PrestaShop: Relatively well-documented REST API, direct access to the MySQL database as a last resort, historically limited webhooks (improved since 8.x). Third-party modules can modify data in unpredictable ways → manage conflicts.
Shopify: Modern GraphQL API, reliable webhooks, but strict rate limiting and no access to the database. Metafields and Metaobjects are your friends for storing custom Odoo attributes without cluttering up products. With Shopify Plus, Functions and Flow scripts offer greater flexibility.
ROI of a well-built connector
For a retailer with 15,000 SKUs and 200 orders/day:
- -80% reduction in manual data entry by admin and logistics teams
- -95% reduction in overselling due to out-of-sync inventory
- Order-to-shipment time cut in half (no more manual order transfers)
- Real-time accounting updates without monthly CSV imports
The initial investment (4 to 10 weeks depending on complexity) generally pays for itself in 6 to 12 months.
Our approach at Pixee Play
We build custom Odoo ⇄ PrestaShop/Shopify connectors, using a proven common foundation (async file processing, monitoring, reconciliation) and store-specific adapters. Every project begins with an audit of business workflows to identify true edge cases—this is where reliability is won or lost. Contact us for a free audit of your current integration.