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.
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?
Will it message someone who is already in my HeyReach campaign?
What happens if I do not approve the Slack shortlist?
Can I run this with multiple LinkedIn senders or different campaigns per segment?
Do I need a specific Apollo plan?
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.