Skip to content

Daily

Send a personalised email sequence to leads in a sheet

Each lead in your sheet gets a short, personal sequence of emails through SendGrid, and the sheet shows who is at which step.

Runs
Daily
Apps
Google Sheets, SendGrid
AI
Optional
Access
sheet edit; Mail Send

Send this to your assistant

Create a ClickRuntime automation: every weekday at 9, email the leads in my Leads sheet through SendGrid: a first email, then follow-ups 3 and 7 days later. Personalise the opening line from their company and note, and update the step and date in each row.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A two-person agency keeps a sheet of a few hundred prospects gathered from events and referrals. They know follow-ups win most replies, but nobody remembers who got the first email when, so most leads get one message and are never contacted again.

The sheet now drives the whole sequence. Each weekday the next email goes to every lead that is due, with an opening line written from the company and notes in the row, and the step and date are updated so you can see exactly where each lead stands.

What you get out of it

  • Follow-ups actually happen

    The second and third emails are where most replies come from, and they go out on time without anyone setting reminders.

  • Personal without the typing

    An opening line drawn from the lead's company and your notes reads like a real email, not a mail merge.

  • The sheet stays the source of truth

    Step, last sent date and status sit in each row, so the whole team can see the campaign at a glance.

  • Easy to stop for anyone who replies

    Mark a row as replied and the sequence stops for that lead the next morning.

How it works

What happens, step by step

  1. Every weekday morning, ClickRuntime reads your leads sheet.

  2. It finds the leads due for their next email, based on the step and the date of the last one.

  3. AI writes a short personal opening line from the lead's company and your notes, and the email goes out through SendGrid.

  4. The step and date are updated in the row, so no one gets the same email twice.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect SendGrid

What you get

RunsDaily
Send a personalised email sequence to leads in a sheettoday, 9:00Succeeded
Google Sheets · LeadsNorthwind Logistics moved to step 2, follow-up sent 16 Oct.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Google Sheets and SendGrid steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
cold_email_campaign_from_a_lead_sheet.pyexample
from datetime import date, timedelta
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai

SHEET_ID = "your-spreadsheet-id"
STEPS = [(0, "Quick idea for {company}"), (3, "Following up"), (7, "Last note from me")]

@on_trigger
def run(event):
    values = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets().values()
    rows = values.get(spreadsheetId=SHEET_ID, range="Leads!A2:F").execute().get("values", [])
    key, sent = credentials.secret("SENDGRID_API_KEY"), 0
    for i, r in enumerate(rows):
        name, email, company, note, step, last = (r + [""] * 6)[:6]
        step = int(step or 0)
        if step >= len(STEPS) or note == "replied" or (last and date.fromisoformat(last) + timedelta(days=STEPS[step][0]) > date.today()) or sent >= 50:
            continue
        opener = ai.generate(f"One friendly opening line to {name} at {company}. Context: {note}", max_output_tokens=60).text.strip()
        http.post("https://api.sendgrid.com/v3/mail/send", headers={"Authorization": f"Bearer {key}"},
                  json={"from": {"email": "hello@acme.example"}, "subject": STEPS[step][1].format(company=company),
                        "personalizations": [{"to": [{"email": email}]}], "content": [{"type": "text/plain", "value": opener}]})
        values.update(spreadsheetId=SHEET_ID, range=f"Leads!E{i + 2}:F{i + 2}", valueInputOption="RAW",
                      body={"values": [[step + 1, date.today().isoformat()]]}).execute()
        sent += 1
    return {"sent": sent}

FAQ

Common questions

How many emails does it send per day?
You set a daily cap in the prompt, such as 50, which protects your sender reputation. Leads beyond the cap wait for the next day.
What stops the sequence when someone replies?
Set the row's status to replied, or ask for a separate automation that watches your inbox and marks it for you. Rows with that status are skipped.
Can I write the emails myself?
Yes. You write each step's email once, and only the opening line is personalised. Without AI, the opening uses the company name and your note directly.
What permissions does it need?
sheet edit; Mail Send. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run each time it runs (daily). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Send a personalised email sequence to leads in a sheet” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.