All segments

Zapier CRM: What Belongs on the Contact vs the Company

Zapier CRM sync for ecommerce data: what belongs on the contact record, what belongs on the company, deduplication on email, and when volume outgrows a Zap.

  • Published
  • Reading time 13 min read
  • Author Nafiul Hasan
Zapier CRM: What Belongs on the Contact vs the Company. Diagram: the branch nothing measures. RUN Zapier CRM: What Belongs on theContact vs the Company TRACKEDINVISIBLE pointerflow.com

Short answer

Zapier CRM sync works when the contact record holds person-level facts (name, email, order history) and the company record holds account-level facts (billing entity, total spend), deduplication runs on email rather than name, and the Zap is retired once volume or field complexity outgrows what a single trigger-filter-action chain can hold reliably.

What “Zapier CRM” sync actually means for an ecommerce brand

Zapier CRM sync, for most ecommerce brands, means moving customer and order data out of Shopify or a subscription platform and into a system built for sales, retention or account management to work from. It isn’t about which specific CRM you’ve chosen. It covers the decisions that apply whichever one it is, not a walkthrough of any single platform’s setup screens. If you’re looking for the field-by-field mechanics of a particular CRM, that’s a narrower piece than this one; this is about the decisions that come before you open any CRM’s field mapping screen at all: what data belongs where, how you avoid creating the same customer twice, and the point at which a Zap stops being the right tool for the job.

Those decisions matter more than the mechanics, because a badly designed sync doesn’t fail loudly. It fails by slowly filling the CRM with duplicate contacts, stale totals and fields nobody trusts, until someone on the sales or retention team starts keeping their own spreadsheet because the CRM has stopped being reliable. By the time that happens, the fix isn’t a settings change. It’s a data cleanup project.

Operators at $3M–$30M in revenue running Shopify Plus or a comparable paid subscription platform are this article’s audience, where a sales or retention team exists and needs a shared customer view, but the volume doesn’t yet justify a dedicated integration engineer. If you’re below that floor, a CRM sync at all is often solving a problem you don’t have yet, and a spreadsheet or your email platform’s own segmentation will get you further for less maintenance. If you’re well above it, the volume and field complexity this article assumes a single Zap can handle will likely have already outgrown it, and the honest answer is the next section on when to stop using Zapier for this.

What belongs on the contact record

The contact record should hold facts about the person: their name, their email address, and the interaction history that’s genuinely theirs: recent orders, last purchase date, subscription status, lifetime order count. For the substantial majority of direct-to-consumer ecommerce brands, the person who buys is the account, so almost everything worth syncing lands here rather than on a company record.

Order history is the field most teams get right, because it’s the obvious one. What they miss is being selective about which order fields actually help a sales or retention person do their job. Syncing every line item from every order clutters the record without adding a decision-making signal; syncing a rollup, such as most recent order date, most recent order value and count of orders in a trailing period, gives someone glancing at the contact a usable picture in five seconds. The detailed line-item history stays exactly where it already lives correctly: in the ecommerce platform, one click away if someone actually needs it.

Subscription or recurring-purchase status belongs on the contact too, when it exists, because it changes how a retention conversation should go. A contact with an active subscription and a contact whose subscription just lapsed are different conversations, and a CRM field showing which one you’re looking at saves the first two minutes of any call finding out.

What belongs on the company record

For most consumer ecommerce brands, the company record is close to unused, and that’s the correct outcome, not a gap to fill. A company object exists in CRMs to model B2B relationships: one organisation, many contacts, purchasing decisions that involve more than one person. Unless your ecommerce brand sells wholesale, sells to other businesses, or has a genuine multi-buyer account structure, forcing every consumer contact into a company record just adds a layer of indirection between the sales team and the person they’re actually talking to.

Where a company record does earn its place: wholesale or B2B accounts where multiple buyers purchase against one billing relationship, and the account-level facts, such as total spend across all buyers, contract or payment terms and account tier, genuinely live above any single contact. If that’s part of your business, sync those account-level facts to the company and leave person-level facts on the contact, and resist the temptation to duplicate the same figure in both places. A total-spend figure that exists on both the contact and the company is a total-spend figure that will eventually disagree with itself, because two sync paths updating two records almost never stay in lockstep indefinitely.

What shouldn’t sync to the CRM at all

Not every field that’s technically available to a Zap belongs in the CRM, and drawing that line early saves a cleanup later. Payment details, such as card numbers, tokens or anything payment-related beyond a plain “paid” or “failed” status, have no reason to exist in a CRM record; they carry compliance weight a CRM isn’t built to hold, and the payment processor already has them. Full line-item order detail is another one: a CRM contact with forty synced line items from a year of orders is harder to scan than one with a clean rollup, and the detail is one click away in the ecommerce platform for anyone who genuinely needs it.

Raw browsing or event-level behaviour, such as page views, cart abandons at the individual-event level or every email open, belongs in an analytics or email platform built to query high-frequency data, not in a CRM contact record, where it adds noise without adding a decision a person can act on. If a sales or retention team genuinely needs “this customer abandoned a cart three times this month” as a signal, sync the rollup, not the three raw events.

Marketing consent is the trickiest one to get right, because it’s tempting to treat the CRM as a second source of truth once it’s visible there. Keep a copy for visibility if it helps the team, but the authoritative record, the one anything compliance-sensitive actually acts on, should stay in whichever platform captured the opt-in or opt-out directly, usually the ecommerce or email platform’s own preference centre. A CRM copy that’s a day out of date because the sync runs on a schedule is a real risk if anyone acts on it as current.

The general rule underneath all three: sync what changes a decision, not everything a Zap is technically capable of moving. A field nobody has opened in six months isn’t earning its place in the record, and it’s one more thing that can drift out of date and make the whole CRM feel less trustworthy than it should.

Why deduplication has to happen on email, not name

Every CRM sync eventually meets the same customer twice, and what happens next depends entirely on the match key the Zap uses to decide whether this is a new contact or an existing one. Name matching feels intuitive and fails constantly: a customer checks out as “J. Smith” on a mobile order and “Jane Smith” on a desktop order months later, and two different formatting choices produce two different contacts for one person. Worse, two genuinely different customers sharing a common name can get merged into one record if the match logic is loose enough, mixing one person’s order history with another’s.

Email is the closest thing most ecommerce checkouts capture to a stable identifier, and it’s the key a Zapier CRM sync should search on before deciding whether to create a new record or update an existing one. It isn’t perfect. A customer who checks out with two different email addresses genuinely does look like two people to any system matching on email alone, and there’s no reliable way to link them without another signal, such as a phone number or a logged-in account ID, tying the two together. That’s a real limit worth naming to whoever owns the sales process, rather than a bug worth chasing: the fix is encouraging a single, consistent checkout identity, not a cleverer matching algorithm.

Step 1: Decide which system owns the customer record

Before any Zap gets built, name one system as the source of truth for who the customer is. For most ecommerce brands, that’s the storefront or ecommerce platform: it’s where the customer account is created, where the email address is captured at checkout, and where order history originates. The CRM should read that identity, not generate a competing version of it. This decision sounds abstract until it isn’t: if both systems can independently create a “new customer,” you now have two paths that can each fork the record, and no single answer to “which one is real.”

Step 2: Map the fields before you touch Zapier

Write the field mapping down somewhere outside any tool first: which ecommerce field becomes which CRM field, and on which object. Doing this before opening Zapier’s mapping screen turns the build into transcription: you already know the answer, you’re just entering it. Doing it inside Zapier’s mapping screen, under the pressure of “let’s just get something working,” is how a field ends up mapped to the wrong destination and nobody notices until a sales rep quotes the wrong number to a customer on a call.

Step 3: Set the dedupe key so a repeat customer doesn’t fork

Configure the CRM action Zapier uses to search for an existing contact by email before it creates a new one. Most CRM actions in Zapier expose a search-then-create pattern, sometimes as a single “find or create” step and sometimes as two steps you chain yourself. Whichever shape your CRM’s Zapier integration offers, the goal is the same: nothing gets created without first checking whether it already exists under that email address.

Step 4: Build the create-or-update Zap, not two separate Zaps

Resist splitting this into a “new contact” Zap and an “update existing contact” Zap triggered by different events. Two Zaps racing to write the same customer record from two different triggers is one of the more common ways duplicates get created, because the two Zaps have no awareness of each other and can both decide, independently, that this is a new contact. One Zap with a single find-or-create or create-or-update action handles both cases inside the same logic, using the same dedupe check every time.

Step 5: Test with a returning customer, not a new one

Most testing instinctively uses a brand-new test order, which only exercises the “create” path. Test the update path deliberately, using a customer who already has a contact record, and confirm the sync finds the existing record rather than creating a second one. The update path is where dedup logic actually earns its keep, and it’s the path that’s easiest to leave unverified because a fresh test order never triggers it.

The three failure modes nobody documents

Failure mode one: the fork

A fork happens when the same real customer ends up as two separate CRM contacts, usually from checking out with a slightly different email, from two competing Zaps racing on the same event, or from a dedupe search that’s case-sensitive and treats “Jane@example.com” and “jane@example.com” as different values. The fix isn’t a cleverer Zap; it’s a scheduled review that surfaces likely duplicate contacts by close email similarity, and a manual merge step for the ones that are genuinely the same person. Fully automated merging is worth avoiding, since a wrongly merged pair of actual different customers is harder to untangle than an unmerged duplicate.

Failure mode two: the stale contact

A stale contact is one the sync stopped updating without anyone noticing. The Zap is still switched on, but a renamed field upstream, a changed API scope, or a quietly paused Zap means new orders never reach that contact’s record again. Nothing errors loudly; the record just stops moving while the rest of the CRM keeps looking normal. Catching this needs a periodic spot check: pick a handful of recently active customers and confirm their CRM record reflects an order you know happened this week, rather than trusting that a Zap with no error notification is a Zap that’s still working.

Failure mode three: the silent field overwrite

Many CRM update actions, left on default settings, write an empty source field as an empty destination field, meaning a sync that only has partial data this time around can quietly erase a value that was correct from a previous sync. A contact’s phone number entered manually by a sales rep can vanish the next time the Zap runs, if that field happens to map to something the ecommerce order payload doesn’t reliably include. Check whether your CRM’s Zapier action has a setting to skip blank fields rather than overwrite with them, and use it for any field the CRM itself might hold better data for than the source system does on a given run.

When Zapier stops being the right tool

Three signals suggest it’s time to move past a Zapier CRM sync rather than add another filter step to patch around its limits. The first is volume: once the number of events crosses what a single Zap can process without a backlog forming, delays start showing up as “the CRM is behind” complaints rather than a clean, fast sync. The second is conditional complexity: once the mapping genuinely needs to branch on customer segment, order type or a handful of other conditions, a chain of filter steps becomes fragile and hard for the next person to read. The third is field volume: once you’re syncing more than a small, deliberate set of fields, keeping the mapping accurate as either system’s schema changes becomes a maintenance job in its own right.

Past any of those points, a native integration built by the CRM or ecommerce vendor, or a small script run on a schedule with its own error handling and logging, tends to hold up better than a Zap stretched past what it was designed for. That’s not a failure of Zapier. It’s a tool doing the job it’s built for, up to the point where the job outgrows it. Check the CRM’s own current pricing and integration documentation before committing either way; billing models and native integration depth both change often enough that naming a specific figure here would be wrong the day it’s published.

Who this isn’t for

If your ecommerce brand runs on a small, low-touch customer base without a sales or retention team actively working the CRM, building this sync at all is likely solving a problem you don’t have. Segmentation inside your email platform will get you further with less to maintain. And if you’re already well past the volume and complexity that push a sync toward a native integration, meaning high event volume and genuinely branching field logic, patching a Zap further is the wrong instinct; the honest move is a native integration or a proper script, not another filter step.

Deciding which system owns a customer’s identity, keeping two records from drifting apart, and knowing exactly when a manual patch stops being the right fix are the kind of narrow, rules-based judgement calls that belong to a consistent automation layer rather than to whoever happens to notice the CRM looks wrong this week. That’s the problem Pointerflow’s AI agents and automation work is built to solve: keeping the sync correct by design, not by someone remembering to check it.

Sources

No external figures are quoted in this article. It is written from how Zapier’s CRM actions, deduplication settings and multi-step Zap logic behave in practice, and from current CRM and Zapier documentation, which readers should check directly for platform-specific field names and pricing.

Frequently asked

What's the difference between a contact and a company in a CRM?

A contact is a person: an individual with an email address, a name and their own interaction history. A company is the account or organisation that person is associated with. For most ecommerce brands selling to individual consumers, every contact effectively is the account: the company object matters far more once you sell to businesses.

Should order history sync to the contact or the company?

Order history belongs on the contact when a person is the buyer, which is true for the large majority of direct-to-consumer ecommerce. It only makes sense to roll orders up to a company record when multiple people are purchasing on behalf of one business account, which is a B2B pattern, not a typical DTC one.

Why does deduplication on name cause problems?

Names aren't unique and aren't consistently formatted. A customer might check out as "J. Smith" once and "Jane Smith" the next time, or two different customers might share a common name entirely. Email addresses are the closest thing to a stable identifier most ecommerce checkouts capture, so dedup logic should search on email, not name.

What happens if a customer checks out with two different email addresses?

The CRM creates two separate contact records, because email is the match key and there's no reliable signal linking the two addresses to one person unless something else, such as a phone number, a login or a loyalty ID, ties them together. This is a real limit of email-based dedup, not a bug in the Zap.

Can Zapier update a CRM field without overwriting good data with blank data?

Only if the action step is configured to skip blank or unmapped fields rather than write them as empty. Left on default behaviour, many CRM actions overwrite an existing value with nothing if the source field is empty on that particular sync, which is a setting worth checking rather than assuming.

How many fields should sync from ecommerce into a CRM?

Fewer than most teams start with. Sync what a person actually uses to make a decision: recent order value, last purchase date, subscription status. Leave operational or platform-specific fields in the ecommerce system, where they stay accurate, instead of duplicating them into a second place that can drift out of date.

When does a Zapier CRM sync stop being reliable?

Once the volume of events crosses what a single Zap can process without delay, or once the sync needs conditional logic deeper than a filter step can express cleanly, for example different field mappings depending on customer segment. Past that point, a native integration or a small custom script run on a schedule tends to hold up better.

Does every ecommerce brand need a CRM at all?

Not below a certain size. A brand with a small, low-touch customer base often gets more value from segmentation inside its email platform than from a separate CRM. A CRM earns its place once sales, retention or account management needs a shared, structured view of the customer that email tools aren't built to hold.

What's the risk of syncing every ecommerce event into the CRM in real time?

Real-time sync on high-frequency events, such as every page view or every cart update, floods the CRM with noise that makes the record harder to read, not easier, and burns through Zapier's task allowance on data nobody queries. Sync the events a person actually acts on, and batch or skip the rest.

Should marketing consent live in the CRM or the ecommerce platform?

Consent state should have one owner, and for most brands that's the platform where the customer actually gave or withdrew it: usually the ecommerce or email platform's own preference centre. Syncing a copy into the CRM is fine for visibility, but treating the copy as authoritative risks acting on stale consent.

What's a common sign that a Zapier CRM sync has drifted?

A sales or retention person quotes a total spend or order count that doesn't match what the ecommerce platform shows for the same customer. That gap usually means a sync failure went unnoticed, a field got overwritten, or a duplicate contact is splitting the customer's history across two records.

Is it worth building the CRM sync before the sales or retention team asks for it?

Generally not. A sync built ahead of a defined use case tends to guess wrong about which fields matter, and guessing wrong is expensive to unwind once records exist. Build the sync against a specific question, such as "who churned last month," rather than syncing everything on the assumption someone will eventually want it.

Next step

Is this your ai agents & automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →