← All posts

CRM to MAP sync: what actually goes wrong

Most CRM–marketing automation integrations work until they don't. Here's a catalogue of the failure modes we see most often — and how to design against them from the start.

Most CRM–marketing automation integrations look fine on day one. The sync is running, records are flowing, and everyone’s happy. Six months later, marketing is working from a lead database with a 30% dupe rate and sales can’t trust the engagement data in their CRM. Here’s what usually causes it.

The direction problem

The most common setup is a one-way push from CRM to MAP — contacts created in Salesforce flow into Marketo, and that’s it. This creates an immediate asymmetry: your marketing platform is a consumer of data rather than a participant. Lead status changes, form fills, and behavioural signals that live in the MAP never make it back to the CRM, so your sales team has no visibility into what marketing is actually doing.

Bi-directional sync is more complex to configure and more expensive in API terms, but it’s the only way to have a single source of truth. You need to decide, field by field, which system wins in a conflict — and that decision needs to be documented and enforced, not left to whoever last touched the config.

Field mapping drift

At go-live, someone carefully maps every field. Six months later, someone adds a new custom field to the CRM and it never gets mapped. A year later, a field gets renamed in one system but not the other, and now you have silent data loss — records syncing without error, but key fields quietly dropped.

The fix is treating your field map as a living document with an owner, not a one-time setup task. Every new field in either system should trigger a review. We typically build this as a version-controlled YAML file that the sync configuration is generated from, so the map is auditable.

Lead deduplication

This one comes up constantly. Your MAP receives a lead from a form fill. Your CRM already has that person as a contact. The integration creates a second record because it didn’t match on email (or matched but created a new person instead of updating). Two months in you have thousands of dupes, your reporting is meaningless, and a deduplication project that will take weeks.

The right solution is to define your matching logic before the first record ever syncs, test it with real data from both systems, and build idempotent upsert logic rather than naive inserts. Email is the standard matching key but it’s not sufficient alone — you need to handle case sensitivity, leading/trailing spaces, and the reality that people use multiple email addresses.

API limits and backpressure

Both Salesforce and Marketo have API rate limits. Most integrations handle normal volume fine but collapse under bulk operations — a large list import, a Salesforce data load, or an end-of-quarter batch update can exhaust your daily API limit and leave your real-time sync stalled for hours.

Design for the peaks, not the average. Queue your sync operations, implement backoff, monitor your API usage as a first-class metric, and have a recovery strategy for when limits are hit. An integration that silently falls behind is worse than one that fails loudly.

What good looks like

A well-designed CRM–MAP integration has clear ownership of each field, documented conflict resolution rules, idempotent sync operations, API usage monitoring, and a regular data quality audit. It treats the sync layer as infrastructure, not a one-time integration project.

If you’re seeing data quality problems in your marketing database, the root cause is almost always in the sync layer. We’re happy to take a look.