# 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.

- Workflow type: agent
- Services: LeadsForge, Google Sheets, Slack
- Categories: Sales
- Published: 2026-08-31

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-a-prospect-spreadsheet-into-personalized-sequence-enrollments