Send timezone-aware drip emails with Gmail and Google Sheets using daily limits

Go to Workflow
0 views
Built by Alena - Prodigy AI Sol Alena - Prodigy AI Sol
Created on June 11, 2026

Description

How it works

Three scheduled triggers fire on weekdays at region-appropriate working hours: EU/UK at 10:00 UTC, North America at 18:00 UTC, and Australia at 01:00 UTC
All three feed one shared pipeline, so there is no duplicated logic across regions
A code node detects the active region from the current UTC hour and picks a daily send limit (45 / 90 / 15 by default)
Reads your contact list from Google Sheets, filters by country-to-region mapping, skips rows already marked sent, and caps at the daily limit
Sends a personalised email via Gmail using expressions like {{ $json['First Name'] }} and {{ $json['Company'] }}
Writes success or error status back to the same row (email_sent, sent_date, status, group_sent, error_msg)
No Wait nodes, no long-running executions - timing is driven entirely by Cron schedules

Set up steps

Setup takes about 10-15 minutes
Connect a Google Sheets OAuth2 credential with read + write access to your contacts sheet
Connect a Gmail OAuth2 credential for the sending account
Create a Google Sheet with these columns: First Name, Company, Email, Country, email_sent, sent_date, status, group_sent, error_msg
In all three Google Sheets nodes, select your spreadsheet and the contacts tab
Open the Build Email node and replace the placeholder subject and HTML body with your own copy
In the Send Gmail node, set senderName to your display name
Optional: adjust daily send caps inside Determine Group and edit the country-to-region lookup inside Filter and Limit
Detailed per-step notes live inside the workflow as sticky notes

Nodes Used (3)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
Google Sheets
n8n-nodes-base.googleSheets