# Recycle stuck HeyReach leads into Instantly cold email every Monday

> Every Monday at 7am, sweep the leads that ghosted your LinkedIn outreach and reload them into cold email as a second channel, with a Slack recap of what moved.

- Workflow type: agent
- Services: HeyReach, Instantly, Slack Bot
- Categories: Sales
- Published: 2026-06-26

## What it does

- Looks at every active LinkedIn outreach campaign and finds the leads who finished the sequence without replying or accepting.
- Pulls their work email where you already have one and quietly skips leads with no email or leads already being emailed.
- Loads the rest into the matching cold email campaign so they get a second touch on a different channel.
- Tags the recycled leads in LinkedIn so the same person never gets pulled twice, then posts a Slack summary with per-campaign counts.

## What you'll need

- A HeyReach account where your LinkedIn campaigns live.
- An Instantly account with cold email campaigns named to match your LinkedIn ones, so the agent knows where to load each lead.
- A Slack workspace and a channel for the Monday recap.

## Prompt

Every Monday at 7am, run an agent that recycles non-responding HeyReach LinkedIn leads into Instantly cold email as a second channel, then posts a Slack recap of what moved.

Trigger: cron, weekly on Monday at 7am in my local timezone.

Step 1 — Enumerate active LinkedIn campaigns. Call HeyReach Get All Campaigns to list my campaigns. Keep ones that are currently active or were recently active (skip drafts and archived). Paginate until exhausted.

Step 2 — For each campaign, pull the non-responders. Call HeyReach Get Leads From Campaign and filter to leads who finished the sequence without a reply and without an accepted connection. These are the candidates to rescue.

Step 3 — For each candidate, call HeyReach Get Lead to fetch the lead detail, including their email and current tags. If the lead has no email on file, count it as "skipped for missing email" and move on. If their tags already include a prior moved-to-email-* marker, count it as "already recycled" and skip — this is how we avoid pulling the same person twice on future runs.

Step 4 — Dedupe against Instantly. For each remaining candidate, call Instantly Search Campaigns by Lead Email with their email. If they're already enrolled in any Instantly campaign, count them as "already in Instantly" and drop them.

Step 5 — Map HeyReach campaigns to Instantly campaigns by name. For each HeyReach campaign, find the Instantly campaign whose name matches (exact match first, then close match on the campaign name stem). If no Instantly campaign matches a given HeyReach campaign, skip that whole group and surface it in the recap so I can fix the naming.

Step 6 — Bulk-load the qualified leads. For each HeyReach → Instantly mapping, call Instantly Add Leads in Bulk with the matched Instantly campaign id and the qualified leads (email plus first name, last name, company, and LinkedIn URL where available). Use Instantly's built-in duplicate and blocklist checks as a second safety net.

Step 7 — Tag the moved leads in HeyReach. For every lead that was successfully loaded into Instantly, call HeyReach Add Tags To Lead with the tag moved-to-email-<YYYY-MM-DD> using today's date. This is the marker future runs use to skip them in step 3.

Step 8 — Post the recap. Call Slack Bot Send a Message to my #outbound channel (configurable) with a per-campaign breakdown: candidates found, moved to email, skipped for missing email, skipped as already in Instantly, and skipped because no matching Instantly campaign was found. Include totals at the top so I can read it in five seconds.

Notes: don't add LinkedIn leads who already accepted the connection (those are warm and should stay on LinkedIn). Respect HeyReach's rate limits and Instantly's per-call lead caps. If a campaign has no candidates, omit it from the recap rather than printing zeros. If Slack posting fails, retry once, then continue.

## How to customize

- Change the day and time. A 7am Monday window is the default, but you can pick any cadence (every other Monday, weekday mornings, end of the week).
- Decide which campaigns are in scope. You can target only certain LinkedIn campaigns by name, or skip ones you'd rather keep LinkedIn-only.
- Choose where the recap lands. Swap the Slack channel for a DM, or change the format to a longer summary that calls out top campaigns.

## FAQ

### Will the same lead get pulled twice if I run this every week?

No. Each lead that gets moved is tagged in HeyReach with a dated marker (for example, moved-to-email-2026-06-29). Future runs see the tag and skip them automatically.

### What happens if a lead doesn't have an email on file?

They're skipped and counted in the Slack recap under "skipped for missing email," so you can decide whether to enrich them later.

### Does this avoid double-emailing someone already in a cold email campaign?

Yes. Before loading anyone in, the agent checks whether the email is already enrolled in an Instantly campaign and drops duplicates.

### How does it know which cold email campaign each lead belongs in?

It matches by campaign name. If your LinkedIn campaign and your cold email campaign share the same name (or a clear naming pattern), the agent maps them automatically.

### Can I review what's about to move before it actually loads?

Yes. You can ask for a dry-run version that posts the candidate list to Slack for approval first, then only loads after you give the green light.

Use this prompt in General Input: https://www.generalinput.com/prompts/recycle-stuck-heyreach-leads-into-instantly-cold-email-every-monday