Intro
This template is for teams, individuals, or businesses who want to automatically send daily email reminders (eg, updates, status alerts, follow‑ups) using n8n + Gmail .
How it works
-
Cron Trigger fires every day at your specified time.
-
Google Sheets node reads all rows from your sheet.
-
If node filters rows matching your condition (eg,
Status = "Pending" ).
-
Send a message (Gmail) sends a customized email to each filtered row.
Required Google Sheet Structure
| Column Name |
Type |
Example |
Notes |
| E-mail |
string |
user@example.com
|
Recipient email address |
| Status |
string |
Pending |
Filter criteria |
| Subject |
string |
Daily Status Update |
Email subject (supports variables) |
| Body |
string |
“Please update your task” |
Email body (text or HTML) |
Detailed Setup Steps
-
Google Sheets
- Build your sheet with the columns above.
- In n8n → Credentials, add Google Sheets API (avoid sensitive names).
-
Gmail
- In n8n → Credentials → Gmail (OAuth2 or SMTP), connect your account.
- Do not include your real email in the credential name.
-
Import & Configure
- Export the workflow JSON (three‑dot menu → Export).
- Paste it under Template Code in the Creator form.
- In each node, select your Google Sheets and Gmail credentials.
-
Sticky Notes
- On the If node: “Defines which rows to email.”
- On the Gmail node: “Sends the email.”
Customization Guidance
-
Adjust schedule : change the Cron expression in Cron Trigger .
-
Modify filter : edit the condition in the If node.
-
Customize email : use expressions like
{{$node["Get row(s) in sheet"].json["Subject"]}} .
Troubleshooting
- Verify the Google Sheet is shared with the connected service account.
- Check your Cron timezone and expression.
- Ensure Gmail credentials are valid and not rate‑limited.
Security & Best Practices
-
Remove any real email addresses and sheet IDs.
-
Use n8n Credentials or environment variables—never hard‑code secrets.
-
Add sticky notes for any complex logic.