Turn a prospect spreadsheet into personalized sequence enrollments

Every weekday morning, new rows in your prospect sheet get researched, given a personal opening line, and enrolled into the right sequence.

Agentic Task
LeadsForgeGoogle SheetsSlackSalesLead EnrichmentEmail Automation
PromptCreate

Every weekday at 8am, read my prospect list in Google Sheets with Get Values and work only the rows that are ready, meaning the Status column is still empty and a company domain is present. Skip every other row. Use the header row as the column map so the workflow keeps working if I reorder columns. I keep columns for first name, email, company, company domain, Segment, and Status, plus columns to write back the opening line that was used and the sequence the person was enrolled into.

Before enrolling anyone, check capacity. Call LeadsForge List Mailboxes to see the connected sending mailboxes and their daily sending limits, and stop the run once the day's available sending capacity is used up rather than queueing past it. Separately, enforce a hard cap of 25 enrollments per run so a big paste into the sheet cannot burn the sending domain in one morning, and keep that number defined in one obvious place so I can change it. When either limit is reached, stop enrolling, leave the remaining rows untouched so the next run picks them up, and say so in the summary.

Also call LeadsForge List Contacts and build the set of people already in the workspace, matching on email address. Anyone already there is skipped instead of double enrolled, with the reason recorded as already in workspace.

For each remaining prospect, research the company on the web using the company domain. Look for what they actually do, recent news, funding, hiring, product launches, or anything else that explains why now is a sensible moment to reach out. Then write two things: a personalized opening line of under about 25 words, and a short why now reason of one or two sentences. The opening line has to reference something specific and verifiable I could point to, and must never use flattery cliches like loved what you are doing or huge fan of your work. If the research turns up nothing specific about that company, do not ship a generic line. Skip the row, mark its status as skipped with the reason no research signal, and move on.

Enroll each qualifying prospect with LeadsForge Import Lead Into Sequence. Choose the sequence from the row's Segment column by resolving the segment name against List Sequences and matching on sequence name. If a segment does not match any sequence, skip the row and record that reason rather than guessing at one. Pass the opening line and the why now reason as custom variables on the imported lead so my sequence copy can reference them as placeholders.

Write the outcome back to the same row with Google Sheets Update Values: the status, which is enrolled or skipped with its reason, the opening line that was used, and the name of the sequence the person went into. Write back as each prospect is handled rather than batching at the very end, so a run that stops halfway never loses work or re-enrolls someone tomorrow.

Finish by posting a summary to Slack with Send a Message in my outbound channel. List who was enrolled, with their company and the sequence each one went into, then who was skipped with the specific reason for each, whether that was already in the workspace, no research signal, no matching sequence, or capacity reached. Include how many were enrolled against the per run cap and roughly how much sending capacity is left, and keep the whole thing short enough to read on a phone.

What does this prompt do?

  • Reads your prospect sheet each weekday morning and picks up only the rows you have not worked yet, ignoring anything without a company website.
  • Researches each company and writes a one sentence opening line plus a short reason the timing makes sense, so no two emails read the same.
  • Enrolls each person into the sequence that matches their segment, skipping anyone already in your outreach tool so nobody gets emailed twice.
  • Marks the sheet with what happened and posts a Slack recap of who was enrolled, who was skipped, and why.

What do I need to use this?

  • A LeadsForge account with your sequences already built and at least one sending mailbox connected
  • A Google Sheet of prospects with columns for name, email, company domain, segment, and status
  • A Slack workspace and a channel where the daily recap should land

How can I customize it?

  • Change the time of day it runs, or the days of the week it runs on
  • Raise or lower the cap on how many people can be enrolled in a single run to protect your sending reputation
  • Adjust the length and tone rules for the opening line, or point each segment at a different sequence

FAQs

Will this email the same person twice?
No. Before enrolling anyone it checks the contacts already in your outreach workspace and skips people who are there, and it writes the result back to the sheet so the next morning's run ignores rows that have already been handled.
What happens if the research turns up nothing useful about a company?
That row is skipped and marked in the sheet rather than getting a filler line. The whole point is that a generic opening is worse than no email at all, so the workflow would rather leave the prospect for you to look at by hand.
Can someone pasting 500 rows into the sheet burn my sending domain?
No. There is a cap on how many people can be enrolled per run, and the workflow also checks how much sending capacity your mailboxes have left that day and stops once it is used up. Leftover rows simply wait for the next run.
Do I still write my own email copy?
Yes. Your sequences stay exactly as you wrote them. The workflow only supplies the personalized opening line and the timing reason as variables, which your sequence copy can drop in wherever you want them.
How does it know which sequence to put someone into?
It reads the segment column on each row and matches it to a sequence with the same name in your account. If a segment does not match any sequence, the person is skipped and the reason shows up in the Slack recap instead of the workflow guessing.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop hand writing the first line of every cold email.

Let your prospect sheet work itself every morning and enroll only the people you have something specific to say to.