Pushing Leads To HeyReach

How to push LinkedIn signal leads into a HeyReach campaign from Topa.

Pushing Leads To HeyReach

Topa can automatically send LinkedIn leads from your signals into a HeyReach.io campaign. Once configured, every time a signal runs and captures new leads, Topa applies your saved filter and Ai Messaging pitch (optional), enriches contact details (optional), and pushes matching leads into HeyReach by their LinkedIn profile URL.

Company posts and irrelevant posts are excluded by default.

Unlike email outreach tools, HeyReach does not require an email address. Leads are identified by their LinkedIn profile URL and are still delivered even when enrichment finds no email.

Step 1: Connect your HeyReach API key

Before you can push leads, add your HeyReach API key to Topa.

Get your HeyReach API key: Log in to HeyReach and open Public API under Integrations to create or copy your key.

  1. Log in to Topa
  2. In the sidebar, click API Key / Integrations
  3. Scroll to the HeyReach.io section
  4. Enter a friendly account name (for example: Main HeyReach Account)
  5. Paste your HeyReach API key
  6. Click Connect

You can add multiple HeyReach accounts if you use more than one API key. Each account gets a friendly name so you can pick the right one when setting up a signal integration.

Step 2: Open Integrations on a signal

HeyReach is configured per signal — each signal can push to its own HeyReach campaign.

  1. In the sidebar, click LinkedIn Signals
  2. Find the signal you want to connect in the signals table
  3. In the Actions column, click Integrations

The Integrations dialog opens. You will see options for Smartlead, Instantly, Webhook, Topa Campaign, and HeyReach.

Step 3: Choose HeyReach and set delivery options

Click HeyReach.ioSend leads to a HeyReach campaign.

Topa walks you through Step 1 of the HeyReach setup:

Apply a saved filter (optional)

Choose Yes if you only want leads matching a saved filter to be pushed. Select the filter from the dropdown.

Choose No to push all eligible leads from the signal (still excluding company posts and irrelevant posts by default).

If you have not created a saved filter yet, go to LinkedIn Leads, set up your ICP filters, and click Save filter first.

Apply an Ai Messaging template (optional)

Choose Yes if you want Topa to generate personalised messaging for each lead before pushing. Select the pitch from the dropdown.

Choose No to push leads without generating Ai messaging first.

Prewritten messages will be available as custom user fields in the HeyReach campaign (for example ai_outreach_message and ai_connection_message).

If you have not created a pitch yet, go to LinkedIn Leads and add one under Ai Messaging Pitch first.

Enrichment options

Enrichment is optional for HeyReach. Choose how Topa should enrich leads before pushing:

  • None — push leads by LinkedIn profile only (no email or phone lookup)
  • Enrich Email — look up email addresses when available
  • Enrich Cell & Email — look up both cellphone and email when available

When enrichment is enabled, Topa waits for it to complete before sending a lead to HeyReach. Enrichment uses credits from your account. A lead without an email is still delivered — HeyReach identifies the contact by their LinkedIn profile URL.

Click Continue when you are done.

Step 4: Select your HeyReach account and campaign

In Step 2 of the HeyReach setup:

  1. Select your HeyReach API key from the dropdown (the friendly name you set in Step 1)
  2. Select the HeyReach campaign you want leads added to
  3. Click Save Integration

The HeyReach card on the Integrations home screen will show an Active badge when the integration is saved.

Step 5: Test and push leads

Once the integration is active, you have two useful actions on the HeyReach card:

  • Push Test Lead — send test leads to HeyReach to verify delivery is working
  • Push Old Leads — re-queue all eligible existing leads from this signal into HeyReach (useful if you set up the integration after leads were already captured)

Clicking Push Old Leads asks you to confirm before queuing.

When does this trigger?

Each time your signal runs and captures new leads, Topa automatically:

  1. Excludes company posts and irrelevant posts
  2. Applies your saved filter (if configured)
  3. Enriches email and/or cellphone (if configured)
  4. Generates Ai messaging from your pitch (if configured)
  5. Pushes matching leads into your HeyReach campaign by LinkedIn profile URL

Leads are sent with profile details, company info, LinkedIn activity context, and any Ai-generated messaging as custom user fields in HeyReach.

What data is sent to HeyReach?

Topa sends a POST request to https://api.heyreach.io/api/public/campaign/AddLeadsToCampaignV2 for each lead, with your API key in the X-API-KEY header. Empty fields are omitted from the payload.

Request shape

{ "campaignId": 12345, "accountLeadPairs": [ { "lead": { "profileUrl": "https://www.linkedin.com/in/example", "firstName": "Sarah", "lastName": "Chen", "summary": "VP Sales at Acme Inc", "companyName": "Acme Inc", "position": "VP Sales", "emailAddress": "sarah.chen@acme.io", "location": "San Francisco, United States", "customUserFields": [ { "name": "lead_type", "value": "liked" }, { "name": "ai_outreach_message", "value": "Hi Sarah, ..." } ] } } ]}

Lead fields (visible in HeyReach)

profileUrlLinkedIn profile URLRequired — leads without a LinkedIn profile URL are not sent
firstName / lastNameLead nameSplit from the LinkedIn profile name
summaryLinkedIn headlineMaps to HeyReach's Headline column
companyNameCompany
positionJob title
emailAddressEnriched emailOnly included when enrichment is enabled and an email is found
locationCity and countryCombined as a single location string
customUserFieldsSee table belowExtra fields you can use as merge tags in HeyReach sequences

customUserFields

lead_typeliked, commented, or posted
author_headlineLinkedIn headline
keywordKeyword (keyword signal / post authors)
post_textLinkedIn post content
post_urlURL of the LinkedIn post
comment_textComment text (commenters only)
source_author_nameProfile or company being monitored (engagement leads)
source_author_urlLinkedIn URL of the monitored profile or company
signal_name / signal_targetTopa signal name and target URL/keyword
ai_outreach_messageAi-generated outreach message (if pitch enabled)
ai_connection_messageAi-generated LinkedIn connection note (if pitch enabled)
company_industryCompany industry
follower_count / connection_countLinkedIn stats
phoneEnriched cellphone (when enrichment finds a number)

Example Data Available In HeyReach To Run Campaigns

Example: Commenter (lead_type: commented)

A person who commented on a post on a monitored profile or company page. Same as a liker, but includes comment_text.

profileUrlhttps://www.linkedin.com/in/jamesortiz
firstNameJames
lastNameOrtiz
summaryHead of Growth at BuildCo
companyNameBuildCo
positionHead of Growth
emailAddressjames.ortiz@buildco.com
locationLondon, United Kingdom

customUserFields

lead_typecommented
author_headlineHead of Growth at BuildCo
comment_textThis is exactly the problem we are solving — great post.
post_textExcited to share our Q1 results — outbound is working better than ever.
source_author_nameDan Wardrope
source_author_urlhttps://www.linkedin.com/in/dan-wardrope/
signal_nameDan Wardrope Engagement
signal_targethttps://www.linkedin.com/in/dan-wardrope/
ai_outreach_messageHi James, your comment on Dan's post really stood out...
ai_connection_messageHi James — great comment on Dan's post. Would love to connect.
company_industryConstruction Tech
follower_count3100
connection_count900
phone+14155550987
{ "campaignId": 12345, "accountLeadPairs": [ { "lead": { "profileUrl": "https://www.linkedin.com/in/jamesortiz", "firstName": "James", "lastName": "Ortiz", "summary": "Head of Growth at BuildCo", "companyName": "BuildCo", "position": "Head of Growth", "emailAddress": "james.ortiz@buildco.com", "location": "London, United Kingdom", "customUserFields": [ { "name": "lead_type", "value": "commented" }, { "name": "author_headline", "value": "Head of Growth at BuildCo" }, { "name": "comment_text", "value": "This is exactly the problem we are solving — great post." }, { "name": "post_text", "value": "Excited to share our Q1 results — outbound is working better than ever." }, { "name": "source_author_name", "value": "Dan Wardrope" }, { "name": "source_author_url", "value": "https://www.linkedin.com/in/dan-wardrope/" }, { "name": "signal_name", "value": "Dan Wardrope Engagement" }, { "name": "signal_target", "value": "https://www.linkedin.com/in/dan-wardrope/" }, { "name": "ai_outreach_message", "value": "Hi James, your comment on Dan's post really stood out..." }, { "name": "ai_connection_message", "value": "Hi James — great comment on Dan's post. Would love to connect." }, { "name": "company_industry", "value": "Construction Tech" }, { "name": "follower_count", "value": "3100" }, { "name": "connection_count", "value": "900" }, { "name": "phone", "value": "+14155550987" } ] } } ]}

Example: Poster (lead_type: posted)

A person who posted about your monitored keyword (Keyword Monitoring signal). Includes keyword and their own post_text. For posters, source_author_name / source_author_url point to the poster themselves (they are the author).

profileUrlhttps://www.linkedin.com/in/emmawalsh
firstNameEmma
lastNameWalsh
summaryFounder at SaaS Foundry
companyNameSaaS Foundry
positionFounder
emailAddressemma.walsh@saasfoundry.com
locationAustin, United States

customUserFields

lead_typeposted
author_headlineFounder at SaaS Foundry
keywordoutbound sales
post_textWe just hit $1M ARR using outbound sales — here is what worked for us.
source_author_nameEmma Walsh
source_author_urlhttps://www.linkedin.com/in/emmawalsh
signal_nameOutbound Sales Keyword
signal_targetoutbound sales
ai_outreach_messageHi Emma, congrats on the $1M ARR post about outbound sales...
ai_connection_messageHi Emma — loved your post on outbound sales. Would love to connect.
company_industrySoftware
follower_count8900
connection_count2100
phone+14155550654
{ "campaignId": 12345, "accountLeadPairs": [ { "lead": { "profileUrl": "https://www.linkedin.com/in/emmawalsh", "firstName": "Emma", "lastName": "Walsh", "summary": "Founder at SaaS Foundry", "companyName": "SaaS Foundry", "position": "Founder", "emailAddress": "emma.walsh@saasfoundry.com", "location": "Austin, United States", "customUserFields": [ { "name": "lead_type", "value": "posted" }, { "name": "author_headline", "value": "Founder at SaaS Foundry" }, { "name": "keyword", "value": "outbound sales" }, { "name": "post_text", "value": "We just hit $1M ARR using outbound sales — here is what worked for us." }, { "name": "source_author_name", "value": "Emma Walsh" }, { "name": "source_author_url", "value": "https://www.linkedin.com/in/emmawalsh" }, { "name": "signal_name", "value": "Outbound Sales Keyword" }, { "name": "signal_target", "value": "outbound sales" }, { "name": "ai_outreach_message", "value": "Hi Emma, congrats on the $1M ARR post about outbound sales..." }, { "name": "ai_connection_message", "value": "Hi Emma — loved your post on outbound sales. Would love to connect." }, { "name": "company_industry", "value": "Software" }, { "name": "follower_count", "value": "8900" }, { "name": "connection_count", "value": "2100" }, { "name": "phone", "value": "+14155550654" } ] } } ]}

Example: Liker (lead_type: liked)

A person who liked a post on a monitored profile or company page.

profileUrlhttps://www.linkedin.com/in/sarahchen
firstNameSarah
lastNameChen
summaryVP Sales at Acme Inc
companyNameAcme Inc
positionVP Sales
emailAddresssarah.chen@acme.io
locationSan Francisco, United States

customUserFields

lead_typeliked
author_headlineVP Sales at Acme Inc
post_textExcited to share our Q1 results — outbound is working better than ever.
source_author_nameDan Wardrope
source_author_urlhttps://www.linkedin.com/in/dan-wardrope/
signal_nameDan Wardrope Engagement
signal_targethttps://www.linkedin.com/in/dan-wardrope/
ai_outreach_messageHi Sarah, loved seeing you engage with Dan's post on outbound...
ai_connection_messageHi Sarah — saw you liked Dan's post on outbound. Would love to connect.
company_industrySoftware
follower_count4200
connection_count1800
phone+14155550123
{ "campaignId": 12345, "accountLeadPairs": [ { "lead": { "profileUrl": "https://www.linkedin.com/in/sarahchen", "firstName": "Sarah", "lastName": "Chen", "summary": "VP Sales at Acme Inc", "companyName": "Acme Inc", "position": "VP Sales", "emailAddress": "sarah.chen@acme.io", "location": "San Francisco, United States", "customUserFields": [ { "name": "lead_type", "value": "liked" }, { "name": "author_headline", "value": "VP Sales at Acme Inc" }, { "name": "post_text", "value": "Excited to share our Q1 results — outbound is working better than ever." }, { "name": "source_author_name", "value": "Dan Wardrope" }, { "name": "source_author_url", "value": "https://www.linkedin.com/in/dan-wardrope/" }, { "name": "signal_name", "value": "Dan Wardrope Engagement" }, { "name": "signal_target", "value": "https://www.linkedin.com/in/dan-wardrope/" }, { "name": "ai_outreach_message", "value": "Hi Sarah, loved seeing you engage with Dan's post on outbound..." }, { "name": "ai_connection_message", "value": "Hi Sarah — saw you liked Dan's post on outbound. Would love to connect." }, { "name": "company_industry", "value": "Software" }, { "name": "follower_count", "value": "4200" }, { "name": "connection_count", "value": "1800" }, { "name": "phone", "value": "+14155550123" } ] } } ]}