RevOps Playbook: Field Mapping, Lifecycle, and Attribution Between HubSpot and Salesforce

Published by Bles Software, a custom software and AI company based in Yehud-Monoson, Israel, building web apps, AI agents and API integrations for clients in Israel, the US, the UK and the EU.

Precise field mapping is the backbone of a trustworthy HubSpot ↔ Salesforce integration. When values align, lifecycle transitions become predictable and attribution ties marketing influence to pipeline without tedious reconciliation. This playbook provides an opinionated blueprint for mapping the fields that matter, orchestrating lifecycle, and preserving campaign attribution from first touch to closed won.

Principles for a Minimal, Powerful Schema

RevOps systems tend to grow until they are hard to manage. Prevent that outcome with four principles:

If a proposed field doesn’t meet these principles, defer it and capture the underlying requirement in your backlog.

Identity and Keys

Identity mapping preserves uniqueness and prevents duplication.

When both sides update identity at the same time, Salesforce typically wins for Account/Contact keys; HubSpot wins for behavioral keys.

Lifecycle and Status Fields

Lifecycle is the control plane for routing and reporting. Map it explicitly and guard against regressions.

Mappings:

Prevent regressions by blocking moves from SQL/Opportunity back to Lead unless explicitly requested with a reason.

Routing, Ownership, and Territories

Routing fields dictate who works what and when.

Ownership changes should be evented (Platform Events, webhooks, or periodic diff jobs) to avoid drift.

Qualification and ICP Fields

Push only qualification attributes you actively use for scoring and segmentation.

Maintain a translation matrix: if HubSpot’s Industry taxonomy is finer, map it to your Salesforce picklist via a controlled lookup or middleware.

Campaigns and Campaign Members

Attribution hinges on consistent Campaigns.

Rules of engagement:

Attribution Models and Data Contracts

Choose models that match your motion and stick to them.

Contract the inputs per model: required Campaign types, eligible Member Statuses, and minimum engagement signals. If those inputs are missing, the model should exclude or flag the record rather than fabricate influence.

Conflict Resolution and Null Safety

Conflicts occur when both systems change a field between syncs. Define systemic winners:

For nulls:

Practical Mapping Matrix (Starter)

Below is a compact starter matrix you can copy into your data dictionary. Expand with your exact field API names and owners.

Keep the matrix versioned in git and require pull requests for any change.

Testing the Mapping End‑to‑End

Use small, labeled cohorts and time‑boxed runs.

  1. Create five test contacts that represent common paths: inbound demo, content MQL, event attendee, partner referral, and cold outbound reply.
  2. Progress each through lifecycle while manipulating a few key fields (industry, region, product of interest). Verify mapping and directionality.
  3. Create one test opportunity per cohort and associate relevant campaigns. Confirm attribution appears correctly.
  4. Purposely induce a conflict (change the same picklist on both sides) and verify the winner matches your contract.

Record results with screenshots and the final record payloads. Store them alongside the mapping matrix.

Observability and Audits

Build simple checks to prove your mapping stays healthy:

Alert when metrics cross thresholds, and add the alert IDs to your runbooks.

FAQ

How do we map both Leads and Contacts from HubSpot contacts?

Treat HubSpot Contacts as people and decide in Salesforce whether they begin life as Leads or are attached as Contacts to existing Accounts. Use domain matching and dedupe to avoid creating a Lead when a Contact already exists. Document the precise decision tree and keep it in your repo.

Can we keep HubSpot as the source for UTM parameters?

Yes. HubSpot is better positioned to capture and normalize UTMs at session time. Mirror the normalized values to Salesforce for reporting and campaign association, but lock editing on the Salesforce side to avoid drift.

What if our industry lists don’t match?

Adopt a translation layer. Either maintain a mapping table in middleware or a controlled HubSpot workflow that converts granular values into your Salesforce picklist. Avoid pushing HubSpot’s free‑text into Salesforce where validation rules will block it.

How should we handle multi‑product interest fields?

Use a primary product of interest picklist plus a secondary multi‑select if absolutely necessary. Sync the primary only. Store additional selections in a text array field in HubSpot and expose them to Salesforce via a read‑only text field if the business case requires it.

How do we test attribution reliably?

Run a calendarized test: create a known first‑touch campaign, then a mid‑funnel engagement, and finally a last‑touch campaign. Create an opportunity and associate the contact. Validate that the position‑based model allocates weight per the contract and that campaign types are eligible.

More RevOps Playbooks from Bles Software