Shopify CRM integration: syncing customers without duplicating them
The failure mode is always the same: the same person as four records. Identity matching is the project.
7 min read · Integrations ·
A CRM integration sounds like the easiest kind — copy customers across, done. It is the one that most reliably produces a mess, because the failure mode isn't technical. It's that the same person ends up as four records and nobody notices for a year.
Decide what the CRM is for
Different answers produce different integrations:
- Marketing. It needs email, consent status, purchase history and segments.
- Sales. It needs companies, contacts, deals and activity — relevant for B2B.
- Support. It needs order history and the ability to look someone up fast.
- A single customer view. It needs everything, from every channel.
The fourth is the most commonly stated and least commonly achieved, because it requires solving identity matching properly.
Identity matching is the project
Shopify identifies customers by email, mostly. Your CRM might use email, a customer ID, a phone number, or its own key. Real people:
- Order as a guest, then create an account with the same email.
- Use a different email at work and at home.
- Change their email.
- Have a shared household address with two people ordering.
- Order once through a marketplace with a proxied address.
Decide the matching rule before writing anything: email as the primary key, normalised to lowercase and trimmed, is the pragmatic answer for most stores. Then decide what happens on a near-match — merge automatically, or queue for a human?
Getting this wrong produces duplicates, and duplicates in a CRM are much harder to clean up than to prevent.
Which direction, per field
As with any integration, each field needs exactly one owner:
| Field | Usually owned by |
|---|---|
| Email, name | Shopify (they typed it at checkout) |
| Order history | Shopify |
| Marketing consent | Wherever it was collected — and it must sync both ways |
| Lifecycle stage, segments | CRM |
| Notes, deals, activity | CRM |
| Company and contacts | CRM for B2B, Shopify for B2C |
Marketing consent is the one to be careful with. If someone unsubscribes in the CRM and Shopify doesn't know, you'll email them again — which is a compliance problem, not an inconvenience. Consent must flow both ways, promptly.
Order history: summary or detail
Summary — lifetime value, order count, first and last order date, favourite category — is enough for most CRM use and is far cheaper to maintain.
Full order detail in the CRM is worth it only for support use cases, and even then, a link back to the Shopify order is often better than a copy that goes stale.
Copying every line item into a CRM is a common early decision that produces a large, expensive, permanently out-of-date dataset.
Real-time or batch
- New customers and orders: near-real-time via webhooks, because the marketing automation that follows a first purchase is time-sensitive.
- Consent changes: immediately, both directions.
- Segment and lifetime-value recalculation: nightly is fine.
And in every case, a reconciliation pass that catches the webhooks that didn't arrive.
Privacy is not an afterthought
The CRM receives customer personal data, which means:
- It belongs in your privacy policy by name.
- Deletion requests must propagate to it. A customer redacted in Shopify but sitting in the CRM is a real problem, and it's what the mandatory privacy webhooks exist for.
- If the CRM is in another jurisdiction, that's an international transfer.
App or custom
Most mainstream CRMs have a Shopify app, and for standard marketing use they're genuinely sufficient. Custom becomes worthwhile when:
- Your CRM has no app but does have an API.
- Identity matching needs rules specific to your business.
- You're consolidating several channels — store, marketplace, retail — into one customer view.
- Data can't leave your infrastructure.
The usual buy-before-build reasoning: try the app, and build only for the part it can't express.
Nobody's CRM integration fails on the API. They fail because "the customer" turned out to be a harder concept than anyone budgeted for.
Is this the problem you’re looking at?
Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.
mario@clicksandcarts.coOr see what I do around Shopify: services, work beyond the theme, selected work.