All workflows
Google Sheets logoAnthropic logoGmail logo

Turn sales calls into action plans

Every hour, turns new call transcripts in a Google Sheet into a structured action plan and emails it to the rep who ran the call.

Every hour3 apps4 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 SheetsRead rows
  2. 2AnthropicGenerate model response
  3. 3Google SheetsWrite row
  4. 4GmailSend

How it works

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

Every hour this workflow reads your call log in Google Sheets, finds the calls whose transcript has landed but whose action plan has not been written yet, and for each one asks Claude to turn the transcript into a plan the rep can work from: where the deal stands, what was actually said about pain, budget, timeline and stakeholders, the next steps with an owner and a date on each, the risks worth acting on, and a follow-up email draft. The plan is emailed to the rep who ran the call, and the row is marked so it is never written twice.

The sheet The tab needs these five column headers in row 1, and Status has to be the first column:

Status | Call Date | Account | Rep Email | Transcript

Status is the only column the workflow writes, and it writes nothing else on the row. That is why it has to be column A: a one-column write lands on A alone, so a plan can be marked done without any chance of overwriting the transcript next to it. Leave Status blank on a new call; the workflow fills it in with "Plan sent <date> to <address>" once the email is out.

Rep Email is optional. When it holds an address, that rep gets their own call's plan; when it is blank, the plan goes to defaultRecipient instead. Call Date and Account are used to title the email and to give Claude the context it needs, and either may be blank.

Before the first run, edit the settings at the top of the workflow: - spreadsheetUrl: the call log. It ships blank and the run stops with a message until you fill it in. - sheetName: the tab inside it. Defaults to "Calls". - defaultRecipient: where a plan goes when the row names no rep. Also ships blank. - maxPerRun: how many plans one run may send. Defaults to 5, which paces a backlog out over a few hours instead of sending forty emails at once on the first run. - minTranscriptChars: how long a transcript has to be before it is worth analysing. Defaults to 400 characters, which skips the stub rows that exist before the recording is processed.

How a row is picked up A row is worked when Status is blank and the transcript is long enough. A row whose transcript has not arrived yet is left alone with Status still blank, so it is picked up on a later hour with nothing to reset. Status is written last, after the email is sent, so a failure part-way through leaves the row untouched and the next run retries it. If the model returns nothing usable, the row is marked "Needs review" instead and no email goes out.

What it costs and what it needs Connections: Google Sheets (reading the log and marking rows), Anthropic (the plan) and Gmail (delivery). One Claude call per new call transcript, so cost tracks how many calls your team actually runs. Long transcripts are the expensive part; a two-hour call is a few cents.

Worth knowing The follow-up email in the plan is a draft for the rep to review and send themselves. This workflow only ever emails your own team, never the customer, which is the guardrail that matters when a model is reading a transcript: a wrong detail in an internal plan is caught by the rep who was on the call, and the same detail sent to the buyer is not. Claude is told to write "Not stated on this call" rather than infer anything the transcript does not cover, so a thin plan is a signal that the call was thin.

Gmail sends plain text here, not HTML, so the Markdown Claude writes is converted to readable plain text before it is sent: links become "text (url)", bold and heading markers are stripped, bullets become indented dots, and the five sections are separated by a rule.

To change the pace, edit the trigger; hourly suits a team whose transcripts arrive through the day. To send every plan to one shared address instead of the individual reps, clear the Rep Email column and set defaultRecipient.

salescall notestranscriptsaction planfollow upgoogle sheetsclaudeemailhourly

Start from a workflow that already works.

Add "Turn sales calls into action plans" to your workspace, connect its apps, and make it yours. No credit card required.

Free plan available · No credit card required