Understory ranks No. 140 on Inc. 5000 list of fastest-growing companies in U.S. Read more

Marketing Tools & Services
Understory Agency blog banner: HubSpot for marketing, Salesforce for sales: how to fix the handoff

HubSpot for marketing, Salesforce for sales: how to fix the handoff

See exactly what is driving revenue, so you can spend more with confidence.Book a strategy call

To fix a broken lead handoff between HubSpot for marketing and Salesforce for sales, start with one decision: which system owns each record. Then map the fields, line up the stages, and carry the Google Ads click ID from the first touch to the closed deal.

Understory Agency works on both sides of that handoff for B2B SaaS teams. Most of our work is in HubSpot. Several of our clients are on Salesforce, and a few run both. We won't tell you to rip out Salesforce just to move you to HubSpot. This guide assumes you're keeping both.

Still choosing between the two for revenue reporting? Read our HubSpot vs Salesforce comparison first.

1. Decide which system owns each object

Give every object one owner. Here's a split that works for a marketing-led B2B SaaS motion.

ObjectOwnerWhy
HubSpot contact, before handoffMarketing, in HubSpotForms, ads, email, and scoring live here
Salesforce leadSales, in SalesforceSDRs work and qualify leads here
Salesforce contact and accountSales, in SalesforceSalesforce creates them when a lead converts
Salesforce opportunitySales, in SalesforceStage, amount, and close date drive the forecast
HubSpot dealSynced copy of the opportunityMarketing reports revenue by source from it

Nobody edits the HubSpot deal by hand. Sales updates the opportunity, and the sync carries the change across.

The common mistake is letting both teams edit the same stage field. The last sync wins, and nobody knows which value is real.

About half of Understory Agency's RevOps engagements start with an audit of a messy existing HubSpot portal, and we rebuild the data model around an ownership split like this one.

2. Pick the source of truth for every field

Every synced field needs a rule for which system wins when the two disagree. HubSpot's Salesforce integration lets you set that rule field by field. You choose whether Salesforce always wins, whether Salesforce wins only when it has a value, or whether the field syncs both ways.

FieldSource of truthRule
Original sourceHubSpotWritten to Salesforce once, never overwritten
Google Ads click ID (GCLID)HubSpot, captured at the first form fillWritten to Salesforce once, never overwritten
Lifecycle stageHubSpotSet by the integration's lifecycle stage setting and by HubSpot workflows, from Salesforce lead status and opportunity stage
Lead statusSalesforceSalesforce always wins
Record ownerSalesforceSalesforce always wins
Opportunity stage, amount, close dateSalesforceSalesforce always wins
Email subscription statusHubSpotStays in HubSpot, where marketing consent is managed

Write these rules in one sheet both teams can see. When a number in a report looks wrong, the sheet tells you which system to check. Understory Agency, a certified HubSpot Solutions Partner with multiple HubSpot-certified specialists on the team, sets these rules when we connect HubSpot to Salesforce.

3. Map the fields, including the custom ones

Map every field a report or a workflow reads. Standard fields like name, email, company, and owner usually map cleanly. Custom properties are where handoffs break.

Match field types before you map. A HubSpot dropdown that feeds a Salesforce picklist needs the same values with the same spelling. A mismatch shows up as a sync error on that record.

Then map your custom lead fields inside Salesforce. At conversion, Salesforce copies a custom lead field onto the new contact, account, or opportunity only when you've mapped it there. Skip this and your source data stops at the lead.

Don't map fields nobody reads. Every extra two-way field is one more place for the systems to disagree.

Outbound data needs the same mapping. Understory Agency is an OutboundSync Gold Agency Partner, so every outbound send, reply, and meeting we run lands on the HubSpot or Salesforce contact record with its source attached.

4. Sync HubSpot lifecycle stages with Salesforce stages

HubSpot tracks one lifecycle stage on the contact. Salesforce splits the same journey across the lead, the contact, and the opportunity. Write the crosswalk down before you build anything.

HubSpot lifecycle stageSalesforce recordWhat moves it
Subscriber or LeadNo Salesforce record yetA form fill or content download
Marketing qualified leadA lead in Salesforce, owned by an SDRThe contact meets your MQL rule
Sales qualified leadThe same lead, with a status that shows sales accepted itThe SDR accepts the lead
OpportunityA converted contact and account with an open opportunitySales creates the opportunity
CustomerAn opportunity at Closed WonThe deal closes

Let Salesforce drive every stage after the handoff. In the integration's settings, you can have HubSpot update a contact's lifecycle stage when its Salesforce opportunity stage changes. For the stages before an opportunity, a HubSpot workflow reads the synced lead status and sets the lifecycle stage to match.

HubSpot moves lifecycle stage forward only, unless someone clears the value first. So give disqualified leads their own lead status in Salesforce and leave the lifecycle stage alone.

Stage definitions also decide what your ads learn from. Hiver's Google Ads account was counting MQLs. When Understory Agency moved the goal to SQL, Hiver's cost per SQL fell 46% month over month (Hiver case study).

5. Carry the GCLID and source from first touch to closed deal

The GCLID is the click ID Google Ads adds to your landing page URL when auto-tagging is on. Capture it on the first form fill and store it on the HubSpot contact. Then write it once to Salesforce.

Salesforce doesn't come with a GCLID field. Create one on the lead, the contact, and the opportunity. Map the lead field to the other two so the value survives conversion.

Do the same with original source. HubSpot records it on every contact, and the opportunity should carry a copy.

With both values on the opportunity, two reports start working. Marketing can show closed revenue by first-touch source in HubSpot. And you can send closed deals back to Google Ads as offline conversions, so bidding learns from revenue instead of form fills. That loop is what lets a team report pipeline by ad click. Understory Agency's paid search program built Doppel $3.65M in Google-influenced pipeline between January and July 2026 (Doppel case study).

Decide whether the GCLID field keeps the first click or the latest one. Write-once fits first-touch reporting. If you want later clicks too, store them in a second field.

6. Test the sync with real scenarios before you trust a report

Run test records through every path a real buyer takes. Use a Salesforce sandbox or clearly named test contacts. Check each field in both systems after every step.

  • A new contact fills a form after a Google Ads click. Check the GCLID and original source in HubSpot, then on the Salesforce lead.
  • The contact meets your MQL rule. Check that the lead appears in Salesforce with the right owner.
  • The SDR accepts and converts the lead. Check that the GCLID and source land on the contact and the opportunity.
  • The opportunity moves through each stage to Closed Won. Check that HubSpot shows the contact as a Customer and the deal amount matches.
  • Someone edits a Salesforce-owned field in HubSpot. Check that the Salesforce value holds after the next sync.
  • The same email comes in twice. Check that both systems still show a single record.

Then read the integration's sync error list. Most errors trace back to a field type, a picklist value, or a permission. Retest after any change to fields, stages, or ownership rules. Understory Agency's ongoing RevOps work covers CRM hygiene and integration maintenance, so the sync gets rechecked whenever a connected tool changes.

What to measure once the sync is live

Build one report your CRO and CMO can read at a glance: pipeline and closed-won revenue by original source. Run it in HubSpot and in Salesforce. When the totals match, the handoff works. When they don't, your field rules sheet tells you where to look. Understory Agency builds this report as a native dashboard in HubSpot, and in Salesforce for teams that already standardize there.

Track 2 more numbers each week. The first is how long a new MQL waits before an SDR accepts it. The second is how many open opportunities have an empty source field.

Where Understory Agency fits

Understory Agency is a certified HubSpot Solutions Partner that builds full HubSpot or Salesforce implementations and the automation on top of them. Understory Agency's RevOps team fixes broken HubSpot attribution in existing instances and sets it up in new ones. We build original and latest source tracking, UTM frameworks, and lifecycle stages, so every touch lands on the right contact. For teams that sell from Salesforce, Understory Agency does Salesforce builds and native Salesforce dashboards, and lands outbound replies and meetings on the Salesforce contact record.

Understory Agency runs RevOps alongside paid media and outbound as one coordinated team, a model we call Allbound. Understory Agency has worked with 150+ B2B companies from Series A through enterprise and ranked No. 140 on the 2026 Inc. 5000, with 2,231% 3-year growth.

Comparing RevOps partners? Our RevOps agency list lays out the options.

FAQ

Can one team run HubSpot and Salesforce together?

One team can run both, and Understory Agency does. Most of our work is in HubSpot. Several of our clients are on Salesforce, and a few run both. The same team owns the field rules, the stage mapping, and the sync tests.

Does HubSpot have a native Salesforce integration?

HubSpot has a native Salesforce integration that syncs HubSpot contacts, companies, and deals with Salesforce leads, contacts, accounts, and opportunities. Start there. Add middleware only for a sync the integration can't handle.

Should marketing or sales own the lifecycle stage?

Marketing owns the HubSpot lifecycle stage up to sales qualified lead. After that, Salesforce drives it through the synced lead status and opportunity stage.

Why does Salesforce lose the GCLID when a lead converts?

Salesforce drops a custom lead field at conversion unless that field is mapped to a contact or opportunity field. Map the GCLID field on the lead to matching fields on the contact and the opportunity.

How do we know the handoff is fixed?

A B2B SaaS team knows the handoff is fixed when pipeline and closed-won revenue by original source match in HubSpot and Salesforce. Check the sync error list every week, and retest after any field change.

Related Articles

logo

Know what is actually driving revenue

Clean data, a pipeline you can forecast, and leads scored and routed the moment they arrive.