Khichdi InfoTech
Skip to content

Shopify–Odoo Integration · intermediate · 10 min read

Product Synchronization Best Practices

How to sync Shopify products and Odoo catalog records: SKU masters, variants, barcodes, attributes, external IDs, and conflict rules without silent duplicates.

Last reviewed 2026-07-30 · Estimated effort: 2–6 weeks typical implementation slice

Table of contents

Product sync fails when teams treat Shopify products and Odoo templates as interchangeable without a declared catalog master, variant strategy, and external ID discipline.

Best practice is to pick one system as SKU master — usually Odoo for wholesale and multi-channel estates — map Shopify variants to Odoo product variants or attribute lines, store Shopify product and variant IDs on Odoo records, and define explicit create, update, and archive rules.

Pricing, collections, and promotions rarely map 1:1. Document which side owns list price, compare-at price, and discount intent so order import preserves financial meaning in Odoo.

Catalog sync is where integration projects spend early weeks — and where duplicate SKUs surface months later during a stock reconciliation. Getting product mapping right reduces pain across inventory, orders, and reporting.

This article focuses on ERP catalog strategy, not Shopify theme product cards or collection merchandising UX.

Odoo as master suits businesses that manage purchasing, manufacturing, or multi-channel pricing in ERP first. Shopify as master suits digital-native brands that experiment with variants in Admin and only later formalize items in Odoo.

Bidirectional product creation without rules produces duplicate barcodes, conflicting titles, and orders that reference SKUs finance cannot find. Pick a master and allow controlled exceptions — for example marketplace-only SKUs created in Shopify with an auto-provision rule into Odoo.

Shopify variants map cleanly to Odoo when each variant is a distinct product.product with a unique default_code or barcode. Configurable products with Odoo attributes need explicit attribute-value mapping so new Shopify options do not spawn orphan variants.

Store Shopify product_id and variant_id on Odoo (dedicated fields or ir.model.fields) and Odoo product IDs in Shopify metafields or private app metadata when the connector supports it. Never rely on title or handle alone — they change.

  • One canonical SKU or barcode per sellable unit
  • Explicit attribute mapping table for size, color, and custom options
  • Archive or unpublish rules when products retire on either side

Define which fields sync on create versus update. Title and description may flow Shopify to Odoo for SEO-led brands; weight and HS code may flow Odoo to Shopify for compliance-led exports.

Archiving must be symmetric enough to prevent ghost SKUs: unpublishing in Shopify should not leave Odoo sellable on other channels unless that is intentional. Document whether delete means archive or hard remove.

List price and compare-at price can sync from Odoo pricelists or Shopify — but pick one master for base price. Shopify automatic discounts and Odoo pricelist rules interpret promotions differently; order lines must carry enough metadata for Odoo to reconstruct revenue.

When price changes are high frequency, batch sync on a schedule and use webhooks only for critical corrections — see rate limit articles before polling entire catalogs hourly.

Shopify collections are merchandising constructs; Odoo product categories support accounting and reporting. Sync only when reporting requires it. Forcing full hierarchy mirrors creates maintenance drag with little ERP value.

Use tags or metafields for lightweight cross-reference when full collection sync is overkill.

  • Publish a SKU and variant mapping matrix before the first production sync.
  • Store external IDs on both sides before enabling automated create jobs.
  • Run a duplicate-detection report on barcode and default_code weekly during rollout.
  • Separate catalog sync jobs from inventory and order jobs for clearer failure isolation.
  • Validate tax category and fiscal mapping for new products in staging before publish.
  • Consult the Customization pillar when standard product fields cannot hold required channel metadata.

  • !Matching products by title or handle instead of stable external IDs.
  • !Creating a new Odoo product for every Shopify variant option change.
  • !Syncing list price both directions with no conflict rule.
  • !Ignoring archived or draft products and leaving stale availability online.
  • !Omitting weight, HS code, or country of origin needed for shipping integrations.
  • !Running full catalog pulls on every cron tick and exhausting API budgets.

Product sync succeeds with a declared catalog master, stable external IDs, and explicit create-update-archive rules — not implicit hope that titles stay unique.

Once catalog mapping is stable, align inventory and order sync to the same SKU keys.

Create/update/archive with external ID checkpoints.
1

Master change

SKU / price / media updated.

2

Map fields

Transform to channel schema.

3

Push / pull

API call with idempotency.

4

Reconcile

Detect drift and exceptions.

Pre-go-live catalog mapping checklist.
  • Owners named
  • UAT scripts signed
  • Rollback documented
  • Hypercare roster ready

Frequently asked questions

Should Odoo product templates match Shopify products 1:1?

Often yes at the product level, with each Shopify variant mapping to an Odoo variant. Bundles, kits, and manufactured items may need Odoo BOM logic that does not mirror Shopify's product model — document exceptions.

How do we handle products sold only on Shopify?

Use a clear product category or flag in Odoo, auto-provision from Shopify with a defined template, and ensure they still receive inventory and order mapping like any other SKU.

What about multi-store catalogs?

Decide whether each store gets duplicate Odoo products or one product with per-store publication rules. Multi-company Odoo setups usually need company_id routing per store.

Untangling catalog mapping?

We help teams audit SKU masters, variant maps, and duplicate products before turning on automated sync.

Business technology and software delivery