Weekly Apollo to HeyReach prospect refill with Slack approval

Every Monday at 9:07am, an agent pulls fresh ICP prospects from Apollo, posts the shortlist to Slack for approval, and loads the approved leads into the right HeyReach campaign.

Agentic Task
ApolloHeyReachSlack BotSalesLead EnrichmentNotifications & AlertsData Sync

Build an agent-based workflow that refills my LinkedIn outbound batch in HeyReach with fresh ICP-matched prospects from Apollo every Monday, with a Slack approval gate before anyone gets enrolled.

Trigger: cron, every Monday at 9:07am in my local timezone.

What the agent should do, in order:

1. Call Apollo People Search with my ICP filters: target titles, seniority, industries, company headcount range, and geography. Pull enough results to pick a strong weekly batch (e.g. fetch 100, score, keep the top 20 to 30). People Search does not consume Apollo credits, so it is fine to over-fetch and score down.

2. Score each returned person for ICP fit using title match, seniority, company size and industry alignment, and any negative signals (e.g. wrong function, agency / consulting if I exclude those). Keep the top candidates and discard the rest.

3. Dedupe against my existing HeyReach campaign before posting. Call HeyReach Get Leads From Campaign on the target campaign (paginate through all pages) and drop any candidate whose LinkedIn profile URL is already enrolled. This matters because adding an already-enrolled lead to a paused HeyReach campaign reactivates the sequence.

4. Draft the approval message in Slack. Use Slack Bot Send a Message to post to my approvals channel. The message should list each surviving candidate with their full name, company, title, LinkedIn profile URL, and a one-line "why this fits" tied to the ICP criteria. Format it as a numbered list so I can reply with the numbers to drop. End the message with the target HeyReach campaign name and a clear instruction: react with the approval emoji to enroll everyone, or reply with the numbers to skip.

5. Wait for my approval. Watch the Slack thread for either the approval reaction on the original message, or a reply that lists numbers to drop. If I do not respond by end-of-day Monday, do nothing and let next week's run try again.

6. Once approved, call HeyReach Create Empty List to create this week's list. Name it something like "ICP refill YYYY-MM-DD" using the current date. Use the USER_LIST type.

7. Call HeyReach Add Leads To List in batches of up to 100 to load the approved candidates into the new list. Use the LinkedIn profile URL as the primary identifier for each lead. Include company name and title as lead fields.

8. Call HeyReach Add Leads To Campaign for the target campaign to enroll the approved leads. Use the LinkedIn profile URL as primaryUrl. If the campaign needs a linkedInAccountId, use Get All LinkedIn Accounts to look up the sender I have configured.

9. Post a final confirmation message in the same Slack thread: how many were enrolled, how many were skipped as duplicates, and the HeyReach campaign name.

Configuration I will provide when I install this:

- My Apollo ICP filters (titles, seniorities, industries, headcount, geography, and any excludes).

- The HeyReach campaign ID to enroll into, and the connected LinkedIn sender to use.

- The Slack channel to post the approval message in, and the emoji that signals approval (default: white_check_mark).

- The weekly batch size cap (default: 25).

Hard rules: never enroll anyone without an explicit approval signal in Slack. Never call Apollo enrichment endpoints (those cost credits). Never re-add a lead already in the campaign.

Additional information

What does this prompt do?
  • Pulls a fresh batch of ICP-matched people from Apollo every Monday morning using your title, seniority, industry, headcount, and geography filters.
  • Scores each prospect for fit and posts the top picks to Slack with company, title, LinkedIn profile, and a one-line reason it fits so you can sanity check before anyone gets messaged.
  • After your approval, creates a fresh weekly list in HeyReach, loads in the approved prospects, and enrolls them into the matching campaign so the sequence kicks off automatically.
  • Cross-checks who is already in the campaign and skips duplicates so you do not nudge the same person twice or accidentally reactivate paused sequences.
What do I need to use this?
  • An Apollo account (the master API key from Apollo settings).
  • A HeyReach account with at least one launched campaign and a connected LinkedIn sender.
  • A Slack workspace and a channel where the weekly shortlist should be posted for approval.
  • Your ICP criteria written down: target titles, seniority levels, industries, company size, and geography.
How can I customize it?
  • Change the schedule. Monday at 9:07am is a default, but you can run it any day and time, or switch to a different cadence like Tuesday and Thursday.
  • Adjust the ICP filters. Swap in different titles, seniority bands, industries, headcount ranges, or regions, and tune the batch size to match how many touches your reps can absorb.
  • Change which Slack channel receives the shortlist and how approvals are signaled (an emoji reaction, a reply, or a specific keyword).
  • Point at a different HeyReach campaign or rotate between campaigns by ICP segment, region, or assigned LinkedIn sender.

Frequently asked questions

Does this burn through my Apollo credits?
No. The agent uses Apollo People Search, which does not consume Apollo credits and is designed for ICP discovery. Credits are only used when you separately choose to enrich a contact for email or phone, which this workflow does not do.
Will it message someone who is already in my HeyReach campaign?
No. Before adding anyone, the agent pulls the current roster of leads already in your campaign and filters those out. This also prevents the side effect where adding existing leads to a paused HeyReach campaign would silently reactivate it.
What happens if I do not approve the Slack shortlist?
Nothing gets added to HeyReach. The approval step is a hard gate. If you skip a week or want to swap out a few names, you can ignore the post or reply with which prospects to drop, and the agent will only enroll the ones you confirm.
Can I run this with multiple LinkedIn senders or different campaigns per segment?
Yes. You can tell the agent to route enterprise prospects to one campaign and SMB to another, or to rotate across a pool of connected LinkedIn senders. Just describe the routing rules when you set it up.
Do I need a specific Apollo plan?
You need an Apollo plan that allows API access and lets you create a master API key. People Search itself is available across plans and does not draw credits, so most paid Apollo tiers are sufficient for this workflow.

Stop hand picking outbound prospects every Monday morning.

Connect Apollo, HeyReach, and Slack once, and Geni refills your weekly outbound batch with a human approval step every Monday at 9:07am.