# 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.

- Workflow type: app
- Services: HeyReach, HubSpot, Apollo
- Categories: Sales, Operations
- Published: 2026-08-24

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/heyreach-list-review-desk-before-linkedin-campaign-enrollment