AutomationFlowsMarketing & Ads › Automated Email Marketing Campaign Workflow

Automated Email Marketing Campaign Workflow

ByBadr @b4dr on n8n.io

This n8n workflow demonstrates how to automate a large-scale personalized promotional email campaign, leveraging artificial intelligence to generate unique content for each recipient.

Event trigger★★★★☆ complexityAI-powered11 nodesGoogle SheetsEmail SendOpenAI
Marketing & Ads Trigger: Event Nodes: 11 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Emailsend → Google Sheets 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
{
  "nodes": [
    {
      "id": "fded4779-34cd-457f-98f2-ba1127969e16",
      "name": "Workflow Description",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        100
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e03330a2-08b2-4872-ba0e-b3b49ad8b9f8",
      "name": "Start Campaign Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        1080,
        440
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "68404c16-140a-46ba-858d-f13db02c39ee",
      "name": "Update Recipient Status",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3120,
        440
      ],
      "parameters": {},
      "typeVersion": 4.5
    },
    {
      "id": "bb341dc5-b00d-4804-ab5c-a479fc523e55",
      "name": "Process Recipients",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1940,
        420
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "f4689fc2-3908-42f4-8d43-0a14c775a809",
      "name": "Validate Email Addresses",
      "type": "n8n-nodes-base.if",
      "position": [
        1640,
        440
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "5c0ff7a1-ed02-42cd-9e2e-24b95f4666b7",
      "name": "Pause Between Emails",
      "type": "n8n-nodes-base.wait",
      "position": [
        3680,
        480
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "598f3f66-60e1-413f-9c15-2abc26dc89aa",
      "name": "Generate Random Delay",
      "type": "n8n-nodes-base.code",
      "position": [
        3280,
        420
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "d4afcab6-8603-4fe1-b987-7dddafa29a54",
      "name": "Fetch Recipient Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1360,
        440
      ],
      "parameters": {},
      "typeVersion": 4.5
    },
    {
      "id": "afa333d4-f54d-4681-b407-67e49a093d2e",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2680,
        440
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "1c819407-7502-45f1-86da-b27247643e82",
      "name": "Set Status to \"Sent\"",
      "type": "n8n-nodes-base.set",
      "position": [
        2900,
        440
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "57846b02-ec73-44d0-871d-e9d61c7b922d",
      "name": "Create Personalized Email",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2320,
        440
      ],
      "parameters": {},
      "typeVersion": 1.4
    }
  ],
  "connections": {
    "Send Email": {
      "main": [
        [
          {
            "node": "Set Status to \"Sent\"",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Recipients": {
      "main": [
        null,
        [
          {
            "node": "Create Personalized Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Recipient Data": {
      "main": [
        [
          {
            "node": "Validate Email Addresses",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pause Between Emails": {
      "main": [
        [
          {
            "node": "Process Recipients",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Status to \"Sent\"": {
      "main": [
        [
          {
            "node": "Update Recipient Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Random Delay": {
      "main": [
        [
          {
            "node": "Pause Between Emails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Campaign Trigger": {
      "main": [
        [
          {
            "node": "Fetch Recipient Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Recipient Status": {
      "main": [
        [
          {
            "node": "Generate Random Delay",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Email Addresses": {
      "main": [
        [
          {
            "node": "Process Recipients",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Personalized Email": {
      "main": [
        [
          {
            "node": "Send Email",
            "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 demonstrates how to automate a large-scale personalized promotional email campaign, leveraging artificial intelligence to generate unique content for each recipient.

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

More Marketing & Ads workflows → · Browse all categories →

Related workflows

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

Marketing & Ads

My workflow 11. Uses manualTrigger, splitOut, httpRequest, splitInBatches. Event-driven trigger; 14 nodes.

HTTP Request, OpenAI, Google Sheets +2
Marketing & Ads

Trending YouTube Videos copy. Uses googleSheets, openAi, httpRequest, stickyNote. Event-driven trigger; 12 nodes.

Google Sheets, OpenAI, HTTP Request +1
Marketing & Ads

1. LI Connection Request System: Trigger PhantomBuster Agent. Uses formTrigger, httpRequest, openAi, limit. Event-driven trigger; 8 nodes.

Form Trigger, HTTP Request, OpenAI +1
Marketing & Ads

📊 Reads leads list from Google Sheets (Name, Email, Send Status) 🔍 Filters out already-contacted leads (skips "SENT" status) 🎲 Randomly selects email template from template library ✏️ Personalizes sub

Google Sheets, Email Send
Marketing & Ads

Use this template if you’re collecting leads in Google Sheets manually or automatically and need to send them emails daily using any personal or professional email provider. It’s simple yet effective.

Google Sheets, Hunter, Email Send