Skip to content

Sender + CRM stack

HeyReach + HubSpot: LinkedIn outreach tied to deals

See which HeyReach LinkedIn campaigns led to HubSpot deals. Leads are matched to HubSpot contacts on LinkedIn URL or email, and a LinkedIn invite or message can be the touch that gets the credit.

7-day free trial • No credit card required • 5-min setup

The question this page answers

Which HeyReach LinkedIn campaigns led to HubSpot deals?

Why HeyReach and HubSpot do not line up on their own

HeyReach knows the lead's LinkedIn profile, the campaign, which LinkedIn account reached out, whether the invite was accepted and what was said in the conversation. It has no record of the deal that followed, and often no email address for the lead.

HubSpot knows the deal, its amount, stage and create date, the contacts and company associated with it, its owner, and the meetings and calls logged against those contacts. It does not hold a campaign-level record of your cold outreach: which campaign, mailbox or LinkedIn account made the last touch before the deal existed.

Depending on how your native sync is set up, HeyReach activity may also appear on HubSpot contact timelines. A timeline answers "was this person contacted". The question a head of SDR asks sits one level up: per campaign and per rep, how many deals, how much pipeline, how much won.

The awkward part of this pair is the key. HeyReach identifies people by LinkedIn profile. HubSpot identifies them by email address. A deal's contact and a HeyReach lead can be the same person and share nothing a spreadsheet lookup could match on.

How OutboundManager joins HeyReach and HubSpot

  1. Each HeyReach lead becomes one contact, identified by the lead's LinkedIn profile URL, plus the email address when the HeyReach lead has one. Contacts are de-duplicated on email address first, then on LinkedIn URL.
  2. Because the two tools lead with different keys, the LinkedIn URL does most of the work here: OutboundManager reads the LinkedIn URL property on HubSpot contacts (for example hs_linkedin_url or linkedin_url) and normalises both sides to the same linkedin.com/in/ form before comparing.
  3. HubSpot deals sync with their associated contacts and companies. A deal is linked to outbound activity through those HubSpot associations, matching the associated contacts to the same people.
  4. When none of a deal's associated contacts carries a touch, the deal's company domain is used as a fallback: any contact at that domain can supply the touch. Free email domains never match.
  5. Each deal is credited to the most recent email sent, LinkedIn invite, LinkedIn message or call to any of the deal's contacts, before the deal was created and no more than 120 days before it. If that touch is a HeyReach invite or message, its campaign, channel and rep win.
  6. The rep comes from the sender. Every HeyReach invite and message carries the LinkedIn account that sent it, and each account is mapped to a rep. Activity with no mapped sender falls back to the campaign owner.
  7. HeyReach replies are classified from their text as interested, not now, not interested, wrong person, opt-out or auto-reply, and sit in one reply queue.
  8. With write-back on, the source campaign, channel, rep and touch date are written to four OutboundManager properties on the HubSpot deal.

A worked example

A rep's LinkedIn account sends an invite from a HeyReach campaign. It is accepted and two messages follow. The lead has no email address in HeyReach. Later an account executive creates a HubSpot contact for them, with the LinkedIn URL on the record, and then a deal. On the next sync the HubSpot contact and the HeyReach lead resolve to one person through the LinkedIn URL, and the deal is credited to the HeyReach campaign with LinkedIn as its channel.

What you can see once both are connected

  • LinkedIn as the source channel on deals where an invite or a message was the last touch, next to deals sourced by email or calls
  • Invites, accepts, messages and LinkedIn replies per rep, beside that rep's HubSpot meetings and pipeline
  • Meetings, deals, pipeline and won revenue for every HeyReach campaign, in the same row as its activity and reply rate
  • Pipeline per rep on the scorecard, next to that rep's HeyReach activity, replies and positive replies, each against a weekly target
  • Deals with no outbound touch in the window marked as not outbound, so sourced pipeline is not overstated
Campaigns table listing email and LinkedIn campaigns with sends, reply rates, meetings, deals, pipeline and won revenue

Campaign to pipeline: every campaign across tools with meetings, deals, pipeline and won revenue. Demo data.

Set it up

Connect HeyReach

  1. In HeyReach, open the workspace you want to report on and go to Settings → Integrations → API. Create a workspace API key.
  2. Use a workspace key, not an organization key. Organization keys cannot read campaign data, and the connection test says so.
  3. In OutboundManager, an admin opens Settings → Connections and clicks Add connection.
  4. Pick HeyReach. Paste the workspace API key. It is checked against the tool automatically; click Save once it shows Key works. The key is stored encrypted.
  5. Open Settings → Reps & senders and give each sender a rep. Suggested matches by email are offered; re-mapping later moves the history with the sender.

Connect HubSpot

  1. In HubSpot, a super admin creates a private app (Settings → Integrations → Private Apps; newer accounts list private apps under Development → Legacy apps).
  2. Give it these scopes: crm.objects.deals.read, crm.objects.contacts.read, crm.objects.companies.read, crm.objects.owners.read and crm.schemas.deals.read. For write-back, also crm.objects.deals.write and crm.schemas.deals.write.
  3. Copy the private app's access token.
  4. In OutboundManager, an admin opens Settings → Connections and clicks Add connection.
  5. Pick HubSpot. Paste the access token. It is checked against the tool automatically; click Save once it shows Key works. The key is stored encrypted.
  6. Map HubSpot owners to reps in Settings → Reps & senders. To write attribution back to deals, turn on write-back on the HubSpot connection; it is off until you do.

After both are connected

  1. Map senders to reps. In Settings → Reps & senders, give every mailbox, LinkedIn account, dialer seat and HubSpot owner a rep. Re-mapping later moves the history with the sender.
  2. Set weekly targets per rep on the same page, so the scorecard shows each number against a target and the overview flags reps under 60% of it.
  3. Optional: turn on write-back on the HubSpot connection. It is off by default and needs the two deal write scopes; it then fills four OutboundManager properties on each attributed deal.

Good to know

  • HeyReach + HubSpotA HeyReach lead matches a HubSpot contact when HubSpot stores that contact's LinkedIn URL, or when the HeyReach lead has an email address. With neither, the only route left is the company domain fallback, and a deal with no match shows as not outbound.
  • HeyReach + HubSpotAttribution is last touch only. There is no multi-touch or first-touch model, and the 120-day window is fixed.
  • HeyReachHeyReach only exposes each lead's current connection state, not the time of each invite or acceptance. OutboundManager fixes an approximate time the first time it sees the event and never moves it.
  • HeyReachProfile views, likes, follows and the InMail versus message split are only available as totals in HeyReach and are not synced.
  • HeyReachLeads removed from a campaign and deleted conversations are not seen.
  • HeyReachThe API key is shared across the workspace at 300 requests a minute.
  • HubSpotDeal stage history is not synced, only the current stage.
  • HubSpotInbound calls are skipped, and cancelled meetings are removed.
  • HubSpotHubSpot search returns at most 10,000 results per query; long deal backfills are read in slices, which takes a little longer.
  • HubSpotWrite-back only touches deals with an outbound attribution, in a property group named OutboundManager.

HeyReach + HubSpot questions

HubSpot does not store LinkedIn URLs for our contacts. Will anything match?

Leads that carry an email address in HeyReach still match on email. For the rest, fill a LinkedIn URL property on your HubSpot contacts: OutboundManager reads it on the next sync and the match follows.

Does a connection request count as a touch?

Yes. Invites and messages both count. HeyReach does not expose the time of each invite, so OutboundManager records an approximate time the first time it sees the invite and never moves it.

Do I have to switch off my existing HeyReach to HubSpot sync?

No. OutboundManager reads from HeyReach and from HubSpot separately, each with its own API key, and does the join itself. It does not depend on, replace or interfere with any sync you already run between them.

What does OutboundManager write to HeyReach or HubSpot?

Nothing in HeyReach, apart from a reply a person on your team writes and sends from the reply queue. In HubSpot, nothing unless you turn write-back on; then it fills four deal properties in a group named OutboundManager.

See HeyReach and HubSpot in one set of numbers.

7-day free trial • No credit card required • 5-min setup

HeyReach and HubSpot are trademarks of their respective owners. OutboundManager is not affiliated with, endorsed by or partnered with HeyReach or HubSpot.