Turn a Sales Navigator saved search into a daily Lemlist outbound queue
Every weekday morning, pull fresh leads from a Sales Navigator saved search, write a personalized opener for each one, and drop them into a Lemlist campaign.
Build me an agent workflow that turns a single LinkedIn Sales Navigator saved search into a hands-off daily personalized outbound queue in Lemlist.
Trigger: cron, every weekday (Monday through Friday) at 6:00am in my timezone.
Step 1. Use the PhantomBuster Launch Agent action to launch my Sales Navigator Search Export Phantom. I will configure the agent ID and pass the saved Sales Navigator search URL as an argument. Treat the launch as asynchronous and capture the container ID returned.
Step 2. Wait for the run to finish. Poll using PhantomBuster Fetch Agent Output no more often than once every 10 seconds, watching the status field until the most recent container is no longer running. Stop polling once it is finished (or after a reasonable timeout like 20 minutes, in which case post a Slack failure recap and exit).
Step 3. Once finished, call PhantomBuster Fetch Container Result Object for that container ID to get the structured array of leads. Each lead typically includes first name, last name, headline, current job title, company name, LinkedIn profile URL, and (when PhantomBuster found it) a work email.
Step 4. For each lead in the result set: (a) if there is no email, skip the lead and increment a missing_email counter; (b) call Lemlist Get Lead by Email with the lead's email and check whether any returned record is already attached to the target campaign ID. If yes, skip and increment a duplicate counter.
Step 5. For each remaining lead, use built-in AI generation to write a single-sentence personalized opener (an icebreaker) based on the lead's headline, current role, and company name. Keep it under 200 characters, conversational, specific to something in their profile, and never generic flattery. Avoid em dashes.
Step 6. Call Lemlist Create Lead in Campaign for the target campaign with email, first name, last name, company name, LinkedIn profile URL, and the AI-generated icebreaker mapped to a custom variable named 'icebreaker' (or whatever name I configure). The first email in my Lemlist sequence already references {{icebreaker}}, so Lemlist injects it automatically when sending. Increment an added counter on success.
Step 7. After all leads are processed, use the Slack Bot Send a Message action to post a recap to the channel I configure. The message should include: the campaign name and a clickable link to the campaign in Lemlist, the count of leads added, the count skipped for missing email, the count skipped as duplicates, and the total leads pulled from PhantomBuster.
Configuration inputs I should be able to edit: PhantomBuster agent ID, Sales Navigator saved search URL, Lemlist campaign ID, Lemlist custom-variable name for the icebreaker, Slack channel ID for the recap, and the cron schedule itself.
Use the Slack Bot integration (not the user Slack integration) for the recap, since this is automated workspace messaging. Respect PhantomBuster's polling guidance (no more than once every 10 seconds) and Lemlist's rate limit (20 requests per 2 seconds) when iterating through leads.
Additional information
What does this prompt do?
- Runs a Sales Navigator export against your saved search every weekday at 6am and pulls the structured lead list back in.
- Writes a one-line personalized icebreaker for each lead using their headline, role, and company.
- Skips anyone already sitting in the target Lemlist campaign, so you never double-enroll a prospect.
- Adds the keepers to your Lemlist campaign with the icebreaker mapped to a custom field your first email plugs in automatically.
- Posts a daily Slack recap showing how many leads were added, how many were skipped, and a link to the campaign.
What do I need to use this?
- A PhantomBuster account with a Sales Navigator Search Export Phantom already set up against the saved search you want to mine.
- A Lemlist account with the outbound campaign you want to fill, including a custom variable in the sequence (for example {{icebreaker}}) used by your first email.
- A Slack workspace and a channel where the daily recap should land.
- A Sales Navigator subscription that the PhantomBuster Phantom is authenticated against.
How can I customize it?
- Change the cron from weekday 6am to whatever cadence fits your team, like Monday and Thursday only, or twice a day.
- Swap the saved search URL or point at a different PhantomBuster Phantom if you mine multiple ICPs.
- Edit the writing brief for the icebreaker (length, tone, angle) or swap which Lemlist custom variable receives it.
- Add extra skip rules, like dropping anyone missing a company name or anyone whose headline contains certain keywords.
- Change the recap destination from a public channel to a DM, or add the actual leads added as a thread reply.
Frequently asked questions
Do I need to keep my Sales Navigator search updated?
What happens if a lead is already in the Lemlist campaign?
Where does the personalized opener actually show up in the email?
What if a lead does not have an email address?
Can I send the recap somewhere other than Slack?
Stop exporting CSVs and writing icebreakers by hand.
Connect PhantomBuster, Lemlist, and Slack once, and let Geni run your Sales Navigator outbound queue every weekday morning.