All workflows
Google Sheets logoAnthropic logoGmail logo

Write a tailored first email for every row of your list

Writes a different first-contact email for each row of your sheet from that row's own facts, records it, then sends it.

Run manually3 apps6 steps

Apps it connects

Authenticate each one once and the workflow is ready to run.

What it does

The integration steps this workflow runs, in the order it first runs them.

  1. 1Google SheetsCreate tab
  2. 2Google SheetsAppend row
  3. 3Google SheetsRead column
  4. 4Google SheetsRead rows
  5. 5AnthropicGenerate model response
  6. 6GmailSend

How it works

Everything the template sets up, and what to fill in before the first run.

This is not a mail merge. Instead of one message with {{First Name}} dropped into it, each row of your sheet is written up on its own: the name, company, role and your own notes for that person go to the model, and it writes that person's email from scratch.

Your prospect tab needs a header row with 'Email', 'Name' and 'Company' columns, and optionally 'Role' and 'Notes'. Those column names are fixed - the workflow reads them by name, so rename your headers to match rather than the other way round. A row without a valid Email, or without a Name and Company to write from, is skipped and counted rather than guessed at.

Two rules keep it honest. The model is told to use only the facts on that row - no invented funding rounds, no invented news - and any draft that implies you have already spoken ('as we discussed', 'following up on our call') is thrown away rather than sent, because on a first email that is never true. Your sign-off and your opt-out line are appended to every message by the workflow itself, so no email can leave without a way to say no.

Sends are recorded before they go out, not after. A send cannot be recalled, so the only failure worth having is a logged row that was never emailed - the other way round would email the same stranger twice on the next run. Every address is checked against that log first, which also catches the same person appearing twice in your sheet.

'maxEmailsThisRun' starts at 1 so your first run is a single test email you can send to yourself. Raise it once you have read one. There is no schedule on this template on purpose: you run it when you have looked at the list. Sending commercial email is your responsibility - the consent you hold, the records you keep and the rules that apply where you and your recipients are - and this workflow does not check any of that for you.

gmailgoogle sheetsoutreachcold emailsalesai

Start from a workflow that already works.

Add "Write a tailored first email for every row of your list" to your workspace, connect its apps, and make it yours. No credit card required.

Free plan available · No credit card required