Marketing Operations
July 17, 2026 · 6 min read · by Ananda Narasimhan
Every CRM-to-MAP integration we inherit from another vendor has the same signature failure: fields that were mapped once, at kickoff, and never touched again. The MAP added a property. The CRM renamed a field. Nobody updated the sync. Six months later, marketing and sales are arguing about numbers that were never the same number to begin with.
This is the checklist we run before touching a live sync, whether it is HubSpot to Salesforce, Marketo to Salesforce, or Pardot to anything.
Start with a field inventory, not a sync configuration. List every property that needs to move between the CRM and the MAP — lead source, lifecycle stage, owner, industry, company size, custom scoring fields — and write down which system owns each one. If both systems can edit the same field, you have not built an integration. You have built a race condition, and whichever system syncs last wins, silently, forever.
"MQL" in the MAP and "MQL" in the CRM need to mean the identical thing, triggered by the identical event, or your funnel reports will diverge the moment volume picks up. We have seen MAPs mark a contact MQL on form fill while the CRM only flips the matching field once a rep manually updates a lead status. Both systems report a different MQL count for the same underlying leads, and nobody notices until a board deck needs the number.
"The MAP syncs to the CRM" is not a real answer. Contacts might sync bidirectionally. Campaign membership might be MAP-to-CRM only. Deal stage should almost always be CRM-to-MAP only, since sales owns that data and marketing should be a reader, not a writer. Set this object by object, write it down, and configure the integration to enforce it rather than trusting the team to remember it.
Pick either the MAP or the CRM as the routing engine and retire the rules in the other. Running routing logic in both is how a lead gets assigned twice, to two different reps, who both reach out within the hour. It is also how you end up debugging a routing failure across two rule sets that were never meant to interact.
Before any sync goes live, we run a batch of test records through every branch: a new lead with a personal email domain, a lead that already exists as a contact on an open deal, a lead that fails enrichment, a lead with a blank required field. We confirm deduplication logic on both sides, confirm the sync handles partial failures without silently dropping records, and confirm someone gets alerted when the sync itself breaks — not just when a record fails validation.
If the integration has been live for a while, pull 50 random contacts and trace each field back to its source. You will usually find a handful of fields syncing in a direction nobody intended, a lifecycle stage that drifted out of alignment months ago, or a custom field that stopped syncing after a MAP update and nobody caught it. That drift compounds quietly, and it is the single most common reason attribution and pipeline numbers stop matching between marketing and sales.
Do the field inventory and lifecycle stage alignment first, on paper, before opening either platform's integration settings. Configure sync direction object by object, starting with the lowest-risk objects — company properties before deal stage. Turn on error alerting before you turn on the sync itself, not after the first silent failure. And schedule a recurring quarterly audit rather than waiting for someone in a QBR to ask why the numbers do not match. Integrations do not stay correct on their own. Platforms update, fields get added, and someone eventually builds a workflow that writes to a property nobody remembers is synced.
None of this requires new tooling. It requires treating the integration as an owned piece of infrastructure instead of a one-time setup task, which is usually the actual gap between a sync that holds up and one that quietly breaks every few months.