Productivity · n8n

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.

difficulty Beginnersetup 30 minresult Every new row added to your Google Sheet triggers a personalized Gmail sent to the recipient in that row, completely hands-free.
  1. 1

    Set up the Google Sheets Trigger

    Add a Google Sheets Trigger node. Connect your Google account via the Credential field. Set Event to Row Added. Enter your Spreadsheet ID (found in the sheet URL) and the Sheet Name you want to watch. n8n will poll the sheet on a schedule and fire whenever a new row appears.

  2. 2

    Extract and map the row data

    Add a Set node after the trigger. Create fields that map to your sheet columns — for example, set recipientEmail to {{ $json['Email'] }}, recipientName to {{ $json['Name'] }}, and messageBody to {{ $json['Message'] }}. Adjust the column names to match your actual sheet headers exactly.

  3. 3

    Check that an email address exists

    Add an IF node to prevent errors from empty rows. Set the condition: {{ $json['recipientEmail'] }} is not empty. Connect the True branch to the next Gmail node, and leave the False branch unconnected so blank rows are silently skipped.

  4. 4

    Send the Gmail

    Add a Gmail node on the True branch of the IF node. Connect your Google account. Set To to {{ $json['recipientEmail'] }}, Subject to something like Hello, {{ $json['recipientName'] }}!, and Message to {{ $json['messageBody'] }}. Choose HTML or Text format depending on your preference. Save and enable the node.

  5. 5

    Activate the workflow

    Click Save then toggle the workflow to Active in 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.

About this recipe. Recipes on FlowRecipesHub are written for business owners, not developers, and are tested before publishing — how recipes get made. Some ingredient links are affiliate links that cost you nothing — full disclosure.