Data Mapping Checklist (Leads/Contacts/Opportunities) | Bles Software
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.
Your HubSpot ↔ Salesforce integration is only as strong as its data mapping. If you’re a RevOps leader or admin planning a hubspot integration salesforce project, this playbook gives you an outcome-first, ops-ready mapping checklist for Leads, Contacts, and Opportunities—plus the sync rules, guardrails, and effort drivers you’ll need to deliver at scale with confidence.
This guide assumes you’re using the native HubSpot-Salesforce connector or a comparable middleware with similar capabilities. If you’re evaluating tools or architecture, see our deep dives at HubSpot, Salesforce, and the combined HubSpot ↔ Salesforce integration.
Who this checklist is for, and the outcomes it enables
This mapping checklist is built for RevOps leaders, CRM/marketing automation admins, and GTM stakeholders who want to:
- Shorten speed-to-lead and improve assignment accuracy.
- Keep routing, MQL/SQL definitions, and pipeline stages consistent between systems.
- Reduce duplicate records, sync errors, and attribution gaps.
- Establish clear data governance so future changes don’t break the integration.
We focus on the most contentious areas—identity resolution, field-level authority, lifecycle and stage mapping, and opportunity attribution—so you can avoid rework and hidden technical debt.
Architecture patterns: choose your source of truth and conversion path
Before mapping fields, define how people and companies flow across systems. HubSpot is contact-centric; Salesforce can be lead-centric or contact-centric. Your architecture choice drives the mapping strategy, workflows, and sync rules.
- Lead-centric Salesforce (most common): HubSpot creates Leads in Salesforce on qualified events (e.g., MQL). Leads later convert to Contacts (and Accounts), and Deals are created at conversion or later. HubSpot continues to sync Contact data to the resulting Contact after conversion. This pattern leverages Salesforce Lead Status and assignment rules.
- Contact-centric Salesforce: HubSpot creates/updates Contacts (and Accounts/Companies) directly. No Salesforce Leads are used. This reduces conversion complexity but requires clean Account assignment, Contact Role discipline on Opportunities, and clear lifecycle definitions across both systems.
- Hybrid: Marketing-qualified records create Leads; account-based or hand-raiser flows create Contacts. Use with caution—hybrids add operational complexity and require precise routing rules to avoid duplicates.
If you’re unsure, default to lead-centric. It aligns with most sales processes, preserves marketing to prospect workflows, and is best supported by native connector defaults.
[screenshot: integration architecture diagram—lead-centric vs contact-centric, sanitized]
Cost and timeline drivers (so you can forecast with confidence)
Expect 3–8 weeks from discovery to go-live for a clean hubspot integration salesforce mapping project. Budget increases with record volumes, custom objects, and the number of exceptions in your process. Under typical assumptions (≤500k total records, standard objects, 1–2 pipelines), implementation ranges from $12k–$45k; add 10–20% for complex routing, multi-currency, or heavy picklist normalization.
Major cost and timeline drivers include:
- Number of objects in scope (standard plus any custom objects).
- Field count, picklist normalization, and validation-rule alignment.
- Identity model and deduplication approach (including historical cleanup).
- Volume and type of activities to sync (emails, calls, meetings, tasks).
- Number of pipelines, record types, and stage mappings.
- Multi-currency, product/price book complexity, and contract/subscription fields.
- Data quality remediation and backfill strategy.
- Security model (profiles, permission sets for the integration user) and audit logs.
- Testing scope: sandboxes, UAT cycles, and stakeholder sign-off.
- Change management and documentation requirements.
A lightweight “Phase 1” that limits scope to Leads/Contacts/Opportunities, one pipeline, and essential activities is the fastest path to value. You can expand to Campaigns, Products/Line Items, and custom objects in Phase 2.
The mapping checklist: core field categories per object
This is the backbone of a reliable integration. Document each field’s definition, owning system, sync direction, and transformation. Map business rules (e.g., “when Lifecycle Stage changes to MQL, create a Salesforce Lead”) alongside the fields to prevent drift.
- Leads (Salesforce) / Contacts (HubSpot): identity keys (email, record IDs), name, phone, job title, lead status, lifecycle stage, lead source and original source, marketing consent flags, owner, MQL date, SLA/response times, UTM metadata, inferred data (IP, Geo), enrichment data (industry, company size).
- Contacts: everything above plus contact role requirements, opt-in/subscription preferences, persona, NPS/health context if used by Sales, key dates (first touch, last touch, last engagement).
- Opportunities (Salesforce) / Deals (HubSpot): pipeline/stage mapping, amount and currency, close date, forecast category, probability, record type, primary campaign, contact roles, product/line items linkage, renewal/expansion indicators, opportunity owner alignment, custom milestones.
[screenshot: sanitized field mapping example — Lifecycle Stage ↔ Lead Status, Deal Stage ↔ Opportunity Stage, Owner ↔ Owner]
Identity and keys: prevent duplicates before they happen
Identity strategy is the most consequential mapping decision. HubSpot uses Email as the primary dedupe key for Contacts, plus an internal Contact ID. Salesforce can dedupe on Email, an External ID, or matching rules across Name + Company + Email. Choose one canonical identity model:
- Email-first for Contacts with a system-generated External ID in both systems (recommended). HubSpot Contact ID syncs to a custom field in Salesforce; Salesforce ID syncs back to HubSpot.
- Company identity via website domain. Map HubSpot Company Domain to Salesforce Account Website; use domain for automated association, but validate for multi-brand and parent/child cases.
- Opportunities should anchor on Salesforce Opportunity ID as the system of record. HubSpot Deals store that ID to maintain referential integrity.
For net-new creation, define matching rules that link to existing Salesforce Contacts when an email matches—even if the record originated as a Lead and has since converted.
[screenshot: dedupe rule example—Email exact match, secondary match on Email + Company, sanitized]
Lead mapping: lifecycle, status, and creation triggers
In a lead-centric model, HubSpot Contacts can create Salesforce Leads when they reach a defined lifecycle threshold (e.g., Lifecycle Stage becomes MQL; Lead Score crosses threshold; form submission on high-intent page). Map the following carefully:
- Lifecycle Stage ↔ Lead Status. Example mappings: HubSpot Subscriber/Lead to Salesforce Open – Not Contacted; MQL to Working/Contacted; SQL to Qualified; Disqualified to Nurture or Unqualified; Recycle statuses for long-term nurture.
- Lead Source. Use HubSpot Original Source/Drill-Downs to populate Salesforce Lead Source and Campaign attribution. Normalize values to Salesforce picklists and preserve granular UTMs in custom fields.
- Owner. If you use Salesforce assignment rules, avoid setting Owner in HubSpot before creation. If routing in HubSpot, map Contact Owner to Lead Owner on create; lock after assignment.
- Required fields for creation. Ensure HubSpot has the minimal set to satisfy Salesforce validation (e.g., Company, Last Name, Email, Country). If Salesforce requires more, create fallbacks or adjust validation rules to avoid sync failures.
- Conversion. When Salesforce converts a Lead, the HubSpot Contact must re-link to the new Salesforce Contact. This is handled by the native connector if IDs are mapped; avoid custom workflows that clone Contacts.
For contact-centric models, skip Lead creation and map lifecycle events directly to Contact fields in Salesforce (e.g., MQL Date, Lifecycle Stage) using custom fields.
Contact mapping: consent, enrichment, and sales readiness
Contact is the shared object both systems care about most. Clarify:
- Consent and subscription preferences. Use HubSpot subscription types and legal basis as the source of truth for marketing consent; sync to Salesforce with one-way updates. For sales opt-out (Do Not Call), consider Salesforce as the authority if your telephony stack lives there.
- Enrichment. If you enrich via HubSpot or a third party, decide whether enrichment fields overwrite Salesforce values or only fill in blanks. Most teams use “fill blank only” from marketing to sales; sales can overwrite.
- Readiness signals and SLA. MQL Date, Last Engagement, and Lead Score should be read-only in Salesforce or mapped one-way from HubSpot. SLA timers (first response time) should be owned in Salesforce if you use case/task automation there.
Account/Company mapping: keep domain-based automation honest
Companies in HubSpot map to Accounts in Salesforce. Align these areas:
- Identity. Use Website/Domain as your matching key where reliable. For manufacturers, multi-brand, or channel-heavy businesses, adopt parent/child Account mapping and avoid auto-association solely by domain.
- Ownership. Company Owner in HubSpot should follow Account Owner in Salesforce or vice versa, not both. Choose a single authority; most sales-led motions put Account Owner in Salesforce as the source of truth.
- Type and segmentation. Type (Prospect, Customer, Partner), Industry, Tier, ICP Fit—normalize picklists and maintain consistent definitions across systems. For ICP scoring, keep the model in one system and sync outputs.
- Lifecycle. If you track Customer Lifecycle at the Account level (customer vs. expansion vs. churn risk), centralize ownership of those fields in Salesforce.
Opportunity/Deal mapping: stages, attribution, and revenue accuracy
Deals in HubSpot map to Opportunities in Salesforce. Decisions here impact forecasting and attribution:
- Pipeline and stage mapping. Align stage semantics up front. Use a one-to-one mapping for each Deal Stage to an Opportunity Stage per pipeline. Maintain the same number of stages where possible; if not, define a deterministic mapping and freeze it before go-live.
- Amount, currency, and forecast category. Salesforce typically owns currency and forecast category, especially if using Collaborative Forecasts. Keep these read-only in HubSpot or two-way with Salesforce authority.
- Close date and probability. To avoid whiplash in forecasts, define who sets these fields at each stage. Many teams let HubSpot automate probability (read-only); Salesforce sets Close Date.
- Primary Campaign and contact roles. Use Salesforce Primary Campaign Source to credit pipeline creation; sync HubSpot Campaign associations to Salesforce Campaign Members with appropriate statuses. Enforce Contact Roles on Opportunities; define which role is required for revenue attribution.
- Products and line items. If you quote from Salesforce and rely on price books, make Salesforce the authority; map line items one-way to HubSpot. If quoting from HubSpot, keep it in HubSpot and sync summary fields to Salesforce.
Activity and campaign mapping: context without noise
Activities are essential for context but can overwhelm storage and logs if synced indiscriminately.
- Emails, calls, and meetings. Sync only what sales needs. For email bodies, consider subject-only or trimmed content to protect PII. Map HubSpot engagements to Salesforce Tasks and Completed Activities; ensure record associations are preserved.
- Tasks. Decide whether task creation lives in HubSpot (marketing SLAs) or Salesforce (sales cadence tools). Mix-and-match creates duplicates; centralize where possible.
- Campaigns. If you run marketing in HubSpot, mirror major HubSpot Campaigns to Salesforce Campaigns. Keep statuses and member sync clean, and avoid auto-creating a Campaign for every email—roll up tactics under thematic Campaigns.
[screenshot: sanitized sync settings—activities inclusion, task mapping, campaign member statuses]
Sync rules and conflict resolution: codify who wins where
Your connector supports one-way, bi-directional, or conditional sync. Set explicit rules to prevent flip-flopping and silent data loss.
- Create rules: net-new HubSpot Contacts create Salesforce Leads or Contacts based on lifecycle and architecture; net-new Salesforce records should create HubSpot Contacts only when owned by a marketing segment or when marked “Sync to HubSpot.”
- Update rules: marketing-owned attributes (UTMs, Lead Score, MQL Date) sync one-way from HubSpot to Salesforce; sales-owned attributes (Contact Owner, Account fields, Opportunity data) sync one-way from Salesforce to HubSpot; shared basics (name, phone) can be bi-directional with field-level precedence if needed.
- Delete rules: never hard-delete via sync. Use soft-deletes or status fields. If a Contact is deleted in HubSpot, do not delete in Salesforce; instead, set “Do Not Sync” or a custom archival flag. The same applies in reverse.
- Merge rules: perform merges in Salesforce where possible and propagate to HubSpot via IDs. If you must merge in HubSpot, confirm that the Salesforce Contact ID is preserved on the surviving record.
- Error handling: validation rule failures in Salesforce should not block all updates—route errors to an integration queue with clear remediation steps. Add playbooks for common error codes.
[screenshot: conflict resolution policy—authoritative fields list, last-update vs source-of-truth, sanitized]
Ownership and routing: stop the ping-pong
Define the system that assigns owners and the moment ownership becomes sticky. If Salesforce assignment rules are active at Lead creation, let Salesforce assign; HubSpot should not overwrite. If you route in HubSpot, ensure Leads are created with the right owner and disable Salesforce re-assignment on update. Always include defaults for unmatched territories and after-hours routing.
If you use round-robin in HubSpot, ensure the same user exists in Salesforce and the integration user has permission to set ownership.
Picklists and validation rules: normalize or pay the penalty
Collect all picklist fields in scope and inventory values in both systems. Align the allowed values before go-live. Where alignment isn’t feasible, add translation rules in the connector or workflows. Keep Salesforce validation rules lenient during initial backfill; tighten them once the sync has stabilized. Document every transformation so analytics teams know what data they’re reading.
[screenshot: picklist alignment and value translation rules, sanitized]
Operational guardrails: keep production stable
An integration succeeds when governance is explicit. Establish:
- An integration user profile with least-privilege access, field-level security matching your mapping plan, and API quotas monitored. Avoid using human user licenses for the connector.
- Change control. New fields, picklist values, or validation rules require an integration review. Enforce a lightweight request-and-approval workflow in RevOps.
- Clear runbooks. For sync errors, duplicates, or unexpected surges in volume, define who triages and within what SLA. Track error categories and resolution time to inform future changes.
Testing plan and go-live checklist
Use a Salesforce sandbox and a HubSpot sandbox or developer account. Keep configuration symmetrical where possible, and test end-to-end with realistic data.
- Establish field parity in both systems and install the connector in sandboxes.
- Seed test personas: net-new inbound lead, existing contact revisiting, account-based hand-raiser, renewal/expansion path, partner referral.
- Validate creation, assignment, and stage movement across all mapped pipelines.
- Confirm attribution: Campaign membership, Primary Campaign Source, and UTMs on the Opportunity.
- Load test with a controlled backfill to observe error rates and throughput.
- Freeze schema changes during cutover, run a delta sync, and monitor error queues for 48–72 hours post-launch.
[screenshot: UAT checklist view with pass/fail columns, sanitized]
What’s in scope vs. out of scope (Phase 1 framing)
Phase 1 should keep you focused on the pipeline and routing outcomes that matter most. In-scope commonly includes Leads/Contacts/Companies/Opportunities, Owners, Lifecycle, Lead Status, Stage mapping, Campaign Members, and selective Activities. Out of scope often includes full bi-directional Products/Line Items, complex custom objects, full email body syncing, or historical Campaign reparenting. Defer those to Phase 2 after stability.
Pricing scenarios and timeframes (transparency by design)
Indicative, not a quote—final pricing depends on discovery.
- Essentials (3–4 weeks; $12k–$18k): One pipeline, standard objects, ≤150 fields mapped, single currency, basic routing, no historical backfill beyond 50k records, sandbox + UAT + cutover support.
- Growth (5–6 weeks; $19k–$30k): Two pipelines, picklist normalization, attribution alignment, multi-stage routing, light product mapping, historical backfill up to ~250k records, structured stakeholder training.
- Scale (6–8 weeks; $31k–$45k+): Multi-currency, products/price books, complex validation rules, advanced dedupe (multi-key), activity volume optimization, phased backfill for 500k–1M+ records, change management and documentation.
Managed services for ongoing governance and enhancements typically range from $2k–$7k/month depending on scope (support SLAs, roadmap builds, analytics, and admin coverage).
Assumptions: standard connector, no net-new custom dev; single global Salesforce org; ≤100 integration errors/day after stabilization; stakeholders available for weekly decisions.
Example mapping snippets (practical, opinionated defaults)
Leads: Map HubSpot Lifecycle Stage to Salesforce Lead Status with explicit definitions. For example, Subscriber/Lead = Open – Not Contacted; MQL = Working – Contacted; SQL = Qualified; Disqualified = Unqualified; Recycle = Nurture. Keep HubSpot Original Source as the authority for Lead Source; translate values to Salesforce picklist labels. MQL Date is one-way from HubSpot.
Contacts: Email as primary key; sync HubSpot Contact ID to Salesforce (custom field) and Salesforce Contact ID back to HubSpot. Contact Owner is Salesforce-authoritative if you use Salesforce queues and assignment rules. Subscription preferences are HubSpot-authoritative; map to Salesforce Email Opt Out and custom subscription fields.
Companies/Accounts: HubSpot Company Domain to Salesforce Website; Company Owner follows Account Owner (Salesforce authority). Type and Industry are normalized; if enrichment fills these, allow “fill blank only” from HubSpot to Salesforce.
Deals/Opportunities: HubSpot Deal Stage maps one-to-one to Salesforce Stage Name within pipelines. Amount/currency and Close Date are Salesforce-authoritative. Use Salesforce Opportunity ID as the external ID in HubSpot to prevent duplicates. Primary Campaign Source is Salesforce-owned; HubSpot Campaign membership sync informs Campaign influence reporting.
Activities: Sync HubSpot marketing-originated tasks selectively; avoid duplicating tasks created by sales engagement tools in Salesforce. For emails, subject + metadata only unless legal approves body content.
[screenshot: sanitized field mapping example — example field pairs and sync directions, with authorities noted]
How we work (and how to get a precise estimate)
We start with a two-hour working session to confirm architecture, field inventory, and outcomes. You’ll leave with a draft mapping spec, a prioritized risk list, and a phased timeline. From there, we execute in weekly sprints with visible progress: sandbox configuration, UAT, cutover, and 30–90 days of hypercare.
If you’re planning a hubspot integration salesforce rollout or a remediation, let’s discuss scope so you can get a precise estimate tied to your data shape and GTM motion. Reach out to start your mapping workshop and get a timeline and cost you can trust.
FAQ
Do we have to use Salesforce Leads, or can we go Contact-only?
You can go Contact-only, but you should be confident in your routing and account model. Lead-centric is more forgiving for early funnel processes and widely supported by Salesforce features like assignment rules and standard reports. Contact-only works best in account-based motions with strong Account ownership and rigorous Contact Role usage on Opportunities.
What’s the safest deduplication strategy across HubSpot and Salesforce?
Use Email as the primary key for Contacts, augmented by an External ID stored in both systems. Mirror HubSpot Contact ID into Salesforce and the Salesforce Contact ID into HubSpot to preserve links through merges and conversions. Run merges in Salesforce when possible and let the connector propagate. For Companies/Accounts, use Website/Domain carefully and supplement with manual review for multi-brand or parent/child scenarios.
How do we keep picklists aligned without disrupting users?
Start by inventorying actual values in production for both systems. Normalize the target set in Salesforce, then translate HubSpot values during sync. Freeze new values during the cutover window and communicate a change log to end users. After stabilization, enforce restricted picklists in Salesforce and use HubSpot’s value mapping to prevent reintroduction of rogue values.
Should HubSpot or Salesforce own lifecycle and lead status?
Separate ownership by purpose. HubSpot is the source of truth for marketing lifecycle fields (Lifecycle Stage, MQL Date, Lead Score). Salesforce is the authority for sales process fields (Lead Status, Contact Status, Opportunity stages). Map them thoughtfully and avoid making the same concept authoritative in both systems.
How do we handle historical backfills without hitting API or storage limits?
Backfill in batches by object and time window, starting with Accounts/Companies, then Contacts/Leads, then Opportunities/Deals, and finally Activities. Temporarily relax validation rules that block updates. Monitor API usage and schedule runs during off-peak hours. If you’re moving 500k+ records, plan a phased approach with checkpoints and error remediation in each phase before continuing.
Can we sync email bodies and attachments for full context?
You can, but most teams shouldn’t. Email bodies and attachments raise privacy, storage, and search performance concerns. A practical compromise is syncing subject lines, timestamps, and engagement metadata. If legal requires body content, restrict to specific record types and add retention policies.
What breaks most often after go-live?
Three common issues: picklist misalignment causing validation errors, ownership ping-pong between systems, and duplicates from inconsistent matching rules. All three are preventable with a mapping spec that defines authoritative systems per field, locked-down picklists, and a single, explicit identity model. Add monitoring and error runbooks to catch drift early.
How do we maintain the integration as the business evolves?
Create a lightweight governance process: a single mapping document as the source of truth, an integration change request template for new fields or rules, and monthly reviews of error logs and data quality metrics. Treat the connector like a product with versioning, release notes, and owners in RevOps. This discipline avoids fire drills and protects your analytics.
Ready to translate this checklist into a working integration? Let’s discuss scope for a precise estimate and implementation plan tailored to your team.
More RevOps Playbooks from Bles Software
- Attribution & Pipeline Reporting Setup | Bles Software
- Field Governance & Picklists | Bles Software
- HubSpot ↔ QuickBooks Integration Playbook | Bles Software
- HubSpot ↔ Salesforce: Cost & Timeline Drivers | Bles Software
- HubSpot ↔ Salesforce Integration: Executive Guide | Bles Software
- Sync Rules: Deduping, Owners, Lifecycle | Bles Software
- SLA & SLOs for RevOps Integrations | Bles Software
- ROI Calculator: Lead-to-Cash Lift | Bles Software
- Daily AI Roundup: AI agent, model and enterprise AI news