Skip to content

Field-level mapping across CRM, ERP and warehouse

Field-level mapping decides whether your CRM data is the same data your ERP and warehouse see. This is the playbook we run, including the rules we wish we'd written down before we needed them.

Author
Ruben Burdin · Founder & CEO
Published
June 3, 2026
Read time
12 min

Map at three levels, in this order

Field mapping isn't one decision. It's three, in sequence: object, field, value. Object mapping says "a Salesforce Account becomes a NetSuite Customer". Field mapping says "Account.BillingCountry becomes Customer.country_iso". Value mapping says "United States becomes US". Most teams collapse all three into a single spreadsheet and then can't explain why a record stopped syncing six months later.

Treat each level as its own configuration surface with its own audit trail. The cost is more configuration; the payoff is being able to answer "why did this record fail?" without having to read code.

Conflict resolution rules that survive contact with sales

Once both sides can write, every field needs a written rule for what happens when they both write at once. There are only four useful ones.

  • 01Source-of-truth wins. The owning system always wins; the other side is read-only for that field.
  • 02Most recent wins. Last write by wall-clock timestamp wins, with a configurable skew tolerance.
  • 03Non-null wins. Whichever side has a value wins; nulls don't overwrite real data.
  • 04Manual reconciliation. Both writes are queued; a human resolves the conflict, and the rule is logged so the next conflict on that field is automatic.
Pick rules per field, not per object
A Contact's email and a Contact's owner have completely different conflict semantics. If your tool only lets you set conflict rules at the object level, every field on that object is mismapped by default.
See real-time two-way sync in action
Book a demo with real engineers — no sales script.
Book a demo

Custom records: the place every integration breaks

Standard objects map themselves. The cost is in custom objects, custom properties, and the dependency graph between them. A Salesforce custom object with a master-detail relationship to a Contact doesn't have a clean equivalent in HubSpot's association model — it has to be expressed as an association with constraints enforced by sync rules.

The rule we follow: every custom object pair gets a written contract before any data flows. The contract names the keys on both sides, the cardinality, the cascade behavior, and what happens when a parent is soft-deleted. Skip this step and you'll discover the missing constraint at quarter-end, when finance asks why two records think they're the same opportunity.

FAQ

Frequently asked questions

How do you handle a picklist value that exists in one system but not the other?
Map at the value level, not the field level. Define a default fallback in the target schema, log every coerced value as a sync-quality event, and surface the divergence list to the data team weekly so the source of truth is corrected upstream — not papered over in the sync.
Does field-level audit really matter, or is record-level enough?
Record-level audit tells you a record changed. Field-level audit tells you which user-facing surface caused it. For revenue, compliance, and customer-trust questions, that distinction is the difference between answering 'when' and answering 'why'.

About the author

Ruben Burdin
Founder & CEO

Ruben Burdin is the Founder and CEO of Stacksync, the first real-time and two-way sync for enterprise data at scale. Ruben is a Y Combinator alumni with a strong background in software engineering and business.

All posts by Ruben Burdin

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows — not dirty API plumbing.

Coworkers laughing in front of a laptop in a casual office setting

Your last integration took months.
Your next one takes a prompt.