Customer and contact sync

Shopify Odoo customer sync that survives address edits and B2B structures

Customer data sounds simple until a Shopify customer with three shipping addresses, a tax ID, and a B2B company assignment hits Odoo's res.partner model. Two-way customer sync has to handle country and state resolution, billing-vs-shipping address structures, B2B parent-child relationships, and merge cases where the same person exists twice. SyncO syncs Shopify customers to Odoo contacts with persistent identifier links and rules that match real B2C and B2B operations.

4.9 on Shopify App Store200+ Odoo–Shopify storesFrom $15/monthNo card to trial

Shopify Odoo customer sync

What syncs on every customer

A Shopify customer is one record with billing and shipping addresses on it. An Odoo contact is a tree: a main partner, child partners for each address, and metadata for invoicing, delivery, and accounting. SyncO maps Shopify customers to Odoo res.partner records with the right structure so addresses land where Odoo expects them — invoice address, delivery address, and contact-level fields.

What syncs on every customer — Synco Shopify Odoo connector

Shopify Odoo customer sync

Country and state resolution that does not corrupt accounting

Most customer sync bugs are address bugs. A connector that stores `state: "California"` as free text instead of resolving it to Odoo's `res.country.state` record will produce wrong tax calculations on every invoice — silently. SyncO resolves country and state at write time and surfaces unresolvable values as queue errors instead of writing bad data.

Shopify Odoo customer sync

B2B companies, parent-child contacts, and tax IDs

B2B Shopify orders carry a company assignment, a different billing address than the buyer, and tax IDs that need to land on the right Odoo record. SyncO supports the full B2B contact tree: company as the parent partner, individual buyer as a child contact, with the correct invoice and delivery addresses on each.

Shopify Odoo customer sync

Persistent customer link that survives email edits

Shopify customer matching by email alone is fragile — buyers change addresses, employees leave, and the same person can exist in Shopify under two emails. SyncO stores the Odoo partner ID in a Shopify metafield on first match, so the link survives email changes and the connector never accidentally creates a duplicate Odoo contact.

Shopify Odoo customer sync

Customer sync launch checks

Customer sync is rarely the first thing to break, but when it breaks it breaks accounting. The pre-launch test set should include one new B2C customer, one returning B2C customer, one B2B order with a company assignment, one address edit after the first sync, and one guest checkout — these five cover most of the cases that trip up real stores.

Implementation path

From install to live sync

01

Connect Odoo

Verify server, database, credentials, version, and company access.

02

Map operations

Choose locations, warehouses, product rules, order rules, and customer behavior.

03

Run queued sync

Move external API work through retry-safe queues instead of fragile inline actions.

04

Monitor records

Use linked identifiers and logs to understand what synced and what needs attention.

Related

Keep exploring

Read more

From the blog

FAQ

Questions merchants ask before connecting Shopify and Odoo

Are Shopify customers synced to Odoo contacts or to companies?

Both, depending on the order. B2C orders create a single Odoo `res.partner` per Shopify customer. B2B orders create a parent company partner and a child contact under it, so the company can hold the VAT and pricelist while the buyer holds personal details.

How are countries and states matched between the systems?

By ISO code first, then by name with locale-aware matching. Unresolvable values surface as queue errors instead of writing free text — this prevents the most common cause of incorrect Odoo tax calculation.

Does the connector update existing Odoo contacts or always create new ones?

It updates. The Odoo partner ID is stored as a Shopify metafield on first match. Future syncs use that stored ID, so an email change on either side does not break the link or create a duplicate.

What about Shopify guest checkouts?

Configurable. You can route every guest checkout to a single shared Odoo partner (for B2C accounting where the buyer never returns), or create a per-order Odoo partner for full audit trail. Most stores use shared-guest mode.

Are tax IDs and VAT numbers synced?

Yes. Tax IDs from Shopify B2B orders are written to the Odoo `vat` field on the company partner so invoices issue with the correct VAT compliance shape.

Can I keep different default salesperson or pricelist per Shopify store?

Yes. Per-shop defaults for sales team, salesperson, customer payment terms, and pricelist are configurable in setup.

Start with your store

See how Synco Connector fits your Shopify and Odoo workflow

Open the app flow or enter your Shopify store domain to start configuring Shopify and Odoo sync.