Automatically Send a Personalized Gmail for Every New Google Sheets Row
Whenever a new row is added to your Google Sheet, this workflow instantly sends a personalized Gmail to the email address in that row. No more copying and pasting — every submission triggers a professional email automatically.
- 1
Set up the Google Sheets Trigger
Add a
Google Sheets Triggernode. Connect your Google account via theCredentialfield. SetEventtoRow Added. Enter yourSpreadsheet ID(found in the sheet URL) and theSheet Nameyou want to watch. n8n will poll the sheet on a schedule and fire whenever a new row appears. - 2
Extract and map the row data
Add a
Setnode after the trigger. Create fields that map to your sheet columns — for example, setrecipientEmailto{{ $json['Email'] }},recipientNameto{{ $json['Name'] }}, andmessageBodyto{{ $json['Message'] }}. Adjust the column names to match your actual sheet headers exactly. - 3
Check that an email address exists
Add an
IFnode to prevent errors from empty rows. Set the condition:{{ $json['recipientEmail'] }}is not empty. Connect theTruebranch to the next Gmail node, and leave theFalsebranch unconnected so blank rows are silently skipped. - 4
Send the Gmail
Add a
Gmailnode on theTruebranch of the IF node. Connect your Google account. SetToto{{ $json['recipientEmail'] }},Subjectto something likeHello, {{ $json['recipientName'] }}!, andMessageto{{ $json['messageBody'] }}. ChooseHTMLorTextformat depending on your preference. Save and enable the node. - 5
Activate the workflow
Click
Savethen toggle the workflow toActivein the top-right corner of n8n. Add a test row to your Google Sheet and verify the email arrives in the recipient inbox within the polling interval (default 1 minute). Adjust the trigger poll interval in the trigger node settings if you need faster or slower checks.
Frequently asked questions
What column names does my Google Sheet need?
Your sheet can use any column names you like. Just make sure the names you type in the Set node — such as 'Email', 'Name', and 'Message' — exactly match the headers in row 1 of your sheet, including capitalization.
Will existing rows trigger the workflow when I first activate it?
No. The Google Sheets Trigger node only detects rows added after the workflow is activated. Existing rows are ignored on the first run, so you won't accidentally spam anyone.
Can I send the email from a different Gmail address or alias?
Yes. In the Gmail node, connect a credential for the Google account you want to send from. If you use Gmail aliases, you can type the alias address in the `From` field inside the Gmail node settings.