Every 15 minutes
Send a welcome email to each new row in a sheet
Anyone added to your sheet gets your welcome email through SendGrid, with their name filled in, and the row is marked as sent.
- Runs
- Every 15 minutes
- Apps
- Google Sheets, SendGrid
- AI
- Not needed
- Access
- sheet edit; Mail Send
Send this to your assistant
Create a ClickRuntime automation: every 10 minutes, check my Signups sheet for new rows and send each person our SendGrid welcome template with their first name, then mark the row as sent.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A community organiser collects sign-ups from events, a website form and a spreadsheet the volunteers share. New members are meant to get a welcome email with the group's rules and next meetup, but it depends on someone remembering to send it, so many never do.
Now anyone added to the sheet, by any route, gets the welcome email within minutes, sent through SendGrid with their name in it. The row is marked as sent so nobody is welcomed twice.
What you get out of it
A welcome that never slips
Every new person gets the same first email, whether they signed up on a form or were typed in by a volunteer.
Arrives while interest is high
An email within minutes of signing up gets opened far more often than one sent a week later.
Uses your existing template
Your SendGrid template keeps your design and wording; the sheet only supplies the name and other fields.
Clear record in the sheet
A sent date in each row shows exactly who has been welcomed and when.
How it works
What happens, step by step
Every 10 minutes, ClickRuntime checks your sheet for rows without a sent date.
For each one with an email address, it sends your SendGrid welcome template with their name filled in.
It writes the date into the row so that person is never emailed again.
When there are no new rows, nothing happens and nothing is sent.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect SendGrid
What you get
Build your own
Need it to work differently?
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
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- 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
from datetime import date
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, report_fetched
SHEET_ID = "your-spreadsheet-id"
@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="Signups!A2:C").execute().get("values", [])
new = [(i + 2, r) for i, r in enumerate(rows) if len(r) >= 2 and r[1] and len(r) < 3]
report_fetched(len(new))
if not new:
return {"summary": "No new rows"}
key = credentials.secret("SENDGRID_API_KEY")
for row_num, r in new:
http.post("https://api.sendgrid.com/v3/mail/send", headers={"Authorization": f"Bearer {key}"},
json={"from": {"email": "hello@northwind.example"}, "template_id": "d-welcome",
"personalizations": [{"to": [{"email": r[1]}], "dynamic_template_data": {"first_name": r[0]}}]})
values.update(spreadsheetId=SHEET_ID, range=f"Signups!C{row_num}", valueInputOption="RAW",
body={"values": [[date.today().isoformat()]]}).execute()
return {"sent": len(new)}FAQ
Common questions
Which columns does it need?
What if a row has no email address?
Can I use different emails for different groups?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Screen applicants in a sheet and email each one
Every new applicant in your sheet is scored against the job, the score is written back, and they get the right email.
See how it worksSend 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.
See how it worksSend your newsletter to everyone in a subscriber sheet
AI drafts your newsletter, you approve it, and it goes to every subscriber in your sheet through SendGrid, with each send logged.
See how it worksKeep exploring
Set up “Send a welcome email to each new row in a sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.