HeyReach list review desk before LinkedIn campaign enrollment

Open any HeyReach list, see who is already in a campaign or already in your CRM, clean the batch, and enroll only the people you approved.

App
HeyReachHubSpotApolloSalesOperationsLead EnrichmentData Sync
PromptCreate

Build me a review desk for LinkedIn outreach lists. Before I load anyone into a HeyReach campaign I want one screen where I can see exactly who is about to get messaged, clean the list, and only then enroll. I run multi account outreach, so the whole point of the app is catching the people who should never be in this batch: someone already enrolled in another campaign, someone who is already a customer, someone with an open deal.

The app opens on a list picker. Use HeyReach Get All Lists to show every lead list with its name, type and size, sorted so the biggest and most recently touched lists are easy to find. Clicking a list opens the review table for it.

The review table shows every person in the selected list via HeyReach Get Leads From List, paging through until the whole list is loaded, with name, headline, company and LinkedIn profile URL. Then add the checks I currently do by hand as columns, filled in per lead: Get Campaigns For Lead for every campaign this person is already enrolled in and its status, Get Lists For Lead for the other lists they sit in, and Get Tags For Lead for the tags they carry. Fetch these per row in the background with a visible loading state and a concurrency limit, since HeyReach allows 300 requests per minute across all endpoints, and cache the results for the session so switching lists and coming back does not refetch everything. Leads are identified primarily by their LinkedIn profile URL, so use profileUrl as the row key everywhere in the app.

Add a CRM status column pulled from HubSpot. For each lead, use Search Contacts to find a matching contact by email first and then by name plus company, and Search Deals to find open deals associated with that contact or its company. Show the lifecycle stage, the owner and any open deal with its stage and amount. Anyone who is already a customer, or who has an open deal, gets flagged for exclusion with a clear reason on the row rather than being silently removed. Let me set which lifecycle stages and which deal stages count as off limits, and remember that setting.

Give me an approved and excluded state per row, with the exclusion flags pre-selecting people for exclusion but never deciding for me. I want filters and bulk selection across the table: show only people in another active campaign, only people flagged by the CRM, only untagged people, only people in more than one list. A running counter at the top should say how many are approved, how many are excluded, and why the excluded ones were excluded.

From the table I need real actions. Drop the selected people from the list with Delete Leads From List. Tag the selected people with Add Tags To Lead, both from a free text field and from a saved set of exclusion reason tags. Spin the approved segment off as its own clean list using Create Empty List and then Add Leads To List, batching at most 100 leads per request and showing progress as the batches complete. Every one of these should ask for confirmation and show me exactly how many people it will touch before it runs.

Enrollment is the last step. Let me pick the destination campaign from HeyReach Get All Campaigns and the sender account from Get All LinkedIn Accounts, then push the approved batch with Add Leads To Campaign. Bake in the platform rules. A campaign must have been launched at least once before leads can be added, so only offer those campaigns and explain why the others are unavailable. Adding leads to a paused campaign reactivates it, so warn me clearly when the campaign I picked is paused. Custom field names have to match the HeyReach sequence variables exactly and can only contain letters, numbers and underscores, so validate the personalization field name against that rule in the UI and block enrollment with a readable error rather than letting a bad field name fail at the API.

Warn loudly about double enrollment. If anyone in the approved batch is already in another active campaign, show a blocking warning that names those people and the campaigns they are in, and make me confirm deliberately before the enrollment goes through. Same warning if the sender account I picked is already the sender on another campaign these people are in. Also show how many leads this sender is taking on in this batch so I can spread workload across accounts instead of overloading one.

Add a Research and personalize button that starts a background agent over the approved batch. For each approved lead the agent runs Apollo People Enrichment on the person and Apollo Organization Enrichment on their company, then writes a single line opener specific to that person, grounded in what it actually found: their role and tenure, a recent company signal, headcount or funding, whatever is real. It must not invent facts. The agent posts the drafts back into the app, one row per lead with the enrichment it used and the opener it wrote, so I can approve or edit each opener individually. Show the agent's progress while it runs and let me keep working on the table meanwhile.

Nothing gets enrolled until I approve it. Only leads with an approved opener carry personalization into Add Leads To Campaign as a custom field, and leads I approved without an opener enroll with no personalization. Persist per list the approval and exclusion decisions, the exclusion reasons, and the approved openers, so I can close the app mid review and pick the list back up exactly where I left it. Show a short history of what was done to each list: how many were dropped, how many were tagged, which segment lists were created, and which batches were enrolled into which campaign with which sender.

What does this prompt do?

  • Opens on all your HeyReach lead lists with their sizes, and picking one shows every person in it in a single review table.
  • Each row carries the checks you normally do by hand: which other campaigns the person is already enrolled in, which other lists they sit in, what tags they carry, and their status in HubSpot so existing customers and people with open deals get flagged for exclusion.
  • From the table you can drop people from the list, tag them, spin a clean segment off as its own list, and enroll the approved batch into the campaign and sender account you choose.
  • A Research and personalize button starts a background agent that enriches each approved person and their company, drafts a one line opener for each of them, and posts the drafts back into the app so you approve or edit them person by person before anything is enrolled.

What do I need to use this?

  • A HeyReach account with at least one connected LinkedIn sender account
  • At least one HeyReach campaign that has already been launched once, since that is the only kind that accepts new leads
  • A HubSpot login so the desk can check who is already a customer or has an open deal
  • An Apollo account with enrichment credits if you want the research and personalization step
  • Lead lists that already exist in HeyReach, since this desk cleans lists rather than sourcing new prospects

How can I customize it?

  • Change the exclusion rules: which HubSpot lifecycle stages and which open deal stages should flag someone as off limits
  • Set a cap on how many people one LinkedIn sender account can take in a single batch, so no account gets overloaded
  • Adjust the tone and length of the opener the research agent writes, and the name of the personalization field it fills in
  • Add your own tag vocabulary for the reasons you exclude people, so the same labels show up on every list

FAQs

Does this app send LinkedIn messages?
No. The app is where you decide who is allowed into a campaign. The actual outreach still runs inside HeyReach with the sequence and sender account you picked.
Why can I not select some of my campaigns?
HeyReach only accepts new leads into campaigns that have been launched at least once, so the desk only offers those. It also warns you that adding leads to a paused campaign will restart it.
What happens if someone is already in another campaign?
The row is flagged and the desk warns loudly before you enroll, because the same person receiving messages from two senders at once is the failure that damages both deliverability and client trust. You can still proceed if you want to, but never by accident.
How does it know someone is already a customer?
It looks each person up in HubSpot by email, name and company, checks their contact record and any open deals, and marks anyone who is already a customer or already in an active deal so you can drop them from the batch.
Do I have to use the research and personalize button?
No. It is optional. You can review, clean and enroll a list without it, and it only writes personalization back into leads you approved.

Related templates

Client-by-client cold email pipeline review for agencies

Pick a client and a date range to see sent, replies, meetings booked and the real deal value your cold email produced, campaign by campaign.

Instantly
HubSpot
Slack Bot
App
Partner tier review board for quarterly promotion calls

Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.

Introw
HubSpot
Slack
App
Reconcile partner commissions between HubSpot and Introw

Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.

Introw
HubSpot
Slack
App
Hiring signal board for your customers and open pipeline

Open one board each morning to see which of your accounts are hiring, what they are building, and where your product fits the roles they just opened.

JobsPipe
HubSpot
App
Placement pricing desk for recruiting and staffing agencies

Open a live deal, see the market pay range for that role and city, set your markup, and write the agreed numbers straight back onto the deal.

Job Salary Data
HubSpot
App
Instagram comment and DM triage inbox for your team

Work every unanswered Instagram comment, Reel reply and Direct message from one queue, with claimed rows so two people never answer the same person.

Instagram
HubSpot
Slack Bot
App

Stop loading unchecked lists into LinkedIn campaigns.

Review every person, remove the ones who should never be messaged, and enroll a batch you actually trust.