AutomationFlowsEmail & Gmail › Cost-free Email Follow-up Sequence with Google Sheets and Gmail

Cost-free Email Follow-up Sequence with Google Sheets and Gmail

ByGerald Denor @dominixai on n8n.io

This n8n workflow template, "Email Outreach Automation," is designed to help you set up an automated email outreach system using tools you might already be familiar with: Google Sheets and Google Docs.

Cron / scheduled trigger★★★★☆ complexity18 nodesGoogle SheetsGoogle DocsGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 18 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #7856 — we link there as the canonical source.

This workflow follows the Gmail → Google Docs recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "obx5E5Fbfe9yfECA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Email Outreach Automation",
  "tags": [],
  "nodes": [
    {
      "id": "47381995-0595-482e-94c6-19e223722e68",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -80
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "a6a48076-ed29-405a-853d-ef1e0a74f592",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1888,
        736
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "eb5ee0b6-1be7-43f2-bfe8-04fd02ee8dce",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2048,
        528
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "35214964-7e3e-48bd-9fad-dd3906a2e808",
      "name": "Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        -1840,
        528
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "0827b600-5522-4961-9085-0718e42f906d",
      "name": "Get Contacts",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1616,
        528
      ],
      "parameters": {},
      "typeVersion": 4.4
    },
    {
      "id": "788de15d-edbf-4f8c-960c-f6ffbff1b7a1",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -768,
        528
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "7abdf707-87c8-4c69-83d0-b63e7c681bcf",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        800,
        528
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "a0ab3983-4de5-4e4e-8b94-c87f1d581b17",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1856,
        -64
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "253f9651-018c-4fac-b423-7ec600db9d57",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        736
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "9bd6adaa-d8cc-4901-abc9-1129c730a562",
      "name": "email template selector",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        -96,
        448
      ],
      "parameters": {},
      "executeOnce": false,
      "typeVersion": 2
    },
    {
      "id": "472d9091-7fca-4e6c-be1d-4ee0a6c765d9",
      "name": "Determine Email Number",
      "type": "n8n-nodes-base.set",
      "position": [
        -320,
        448
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "a3e8ddb1-7cfd-42be-9503-170cb0965dfe",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        352,
        448
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "b401964f-bd56-45e2-aa04-e5f8b5e6963d",
      "name": "updatecontacts",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "row_number (using to match)\n{{ $('contacts').item.json.row_number }}\n\nprocess\n{{ $now.format('yyyy-MM-dd, hh:mm:ss a') }}",
      "position": [
        576,
        448
      ],
      "parameters": {},
      "typeVersion": 4.4
    },
    {
      "id": "1f4c9ab2-b242-4ae5-87ae-675aa8adb7a7",
      "name": "Limits the number of emails per run",
      "type": "n8n-nodes-base.limit",
      "position": [
        -1408,
        528
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5f2dcdbd-bed8-447c-8350-edd799d349d3",
      "name": "Filter passes only unprocessed contacts",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1200,
        528
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "acd72b36-9d83-4a84-a566-1ae51498a4df",
      "name": "Is Contact Real?",
      "type": "n8n-nodes-base.if",
      "position": [
        -544,
        448
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "24e198d1-1131-452b-a51b-c83799b33858",
      "name": "Has contact completed email sequence?",
      "type": "n8n-nodes-base.filter",
      "position": [
        -992,
        528
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "68d16071-544a-414e-a7c7-52ee88e5443f",
      "name": "HTML: formats and beautifies the email",
      "type": "n8n-nodes-base.html",
      "position": [
        128,
        448
      ],
      "parameters": {},
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "da5f4136-2daf-4ab4-99a1-f112f5ecddf0",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Settings": {
      "main": [
        [
          {
            "node": "Get Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Contacts": {
      "main": [
        [
          {
            "node": "Limits the number of emails per run",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "updatecontacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "updatecontacts": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Is Contact Real?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Contact Real?": {
      "main": [
        [
          {
            "node": "Determine Email Number",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Determine Email Number": {
      "main": [
        [
          {
            "node": "email template selector",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "email template selector": {
      "main": [
        [
          {
            "node": "HTML: formats and beautifies the email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limits the number of emails per run": {
      "main": [
        [
          {
            "node": "Filter passes only unprocessed contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has contact completed email sequence?": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML: formats and beautifies the email": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter passes only unprocessed contacts": {
      "main": [
        [
          {
            "node": "Has contact completed email sequence?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n workflow template, "Email Outreach Automation," is designed to help you set up an automated email outreach system using tools you might already be familiar with: Google Sheets and Google Docs.

Source: https://n8n.io/workflows/7856/ — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

Cold Email Automation - Safe Ramp + AI Personalization + Follow-ups. Uses googleSheets, httpRequest, gmail. Scheduled trigger; 34 nodes.

Google Sheets, HTTP Request, Gmail
Email & Gmail

This workflow runs every weekday morning to find HubSpot deals with stale proposal activity, pulls the associated contact email, enforces opt-out and follow-up limits using Google Sheets, sends a valu

HubSpot, Google Sheets, Slack +1
Email & Gmail

Chasing vendors for overdue Purchase Orders (POs) is a manual, repetitive task that eats up hours of procurement time. This workflow automates that entire process—intelligently.

Google Sheets, Gmail
Email & Gmail

This workflow runs daily to read estimates from Google Sheets, identify stale items that need a follow-up, generate a personalized email draft with Anthropic Claude, save it as a Gmail draft, and upda

Google Sheets, HTTP Request, Gmail
Email & Gmail

Email Reply Tracker and Automated Follow-Up System. Uses googleSheets, gmail. Scheduled trigger; 8 nodes.

Google Sheets, Gmail