AutomationFlowsData & Sheets › Double Opt-in Email Verification System with Google Sheets

Double Opt-in Email Verification System with Google Sheets

Original n8n title: 🔐 Double Opt-in Email Verification System with Google Sheets

ByUn tal Camilo Medina @untalcamilomedina on n8n.io

This template implements a professional Double Opt-In email verification system using Google Sheets as a database. The workflow collects user emails, generates unique verification codes, stores them securely, and validates user access before proceeding with your main form. User…

Event trigger★★★★☆ complexity24 nodesForm TriggerFormEmail SendGoogle Sheets
Data & Sheets Trigger: Event Nodes: 24 Complexity: ★★★★☆ Added:

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

This workflow follows the Emailsend → Form Trigger 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": "bWbwE1qVduRTdWmc",
  "name": "\ud83d\udd10 Double Opt-In Email Verification System with Google Sheets",
  "tags": [
    {
      "id": "2E1hRaAa0axOUCXV",
      "name": "UTCM",
      "createdAt": "2025-05-08T22:11:01.814Z",
      "updatedAt": "2025-05-08T22:11:01.814Z"
    },
    {
      "id": "GZT3Cgu3i4As1Giz",
      "name": "Doble-OptIn",
      "createdAt": "2025-05-08T22:10:58.928Z",
      "updatedAt": "2025-05-08T22:10:58.928Z"
    },
    {
      "id": "UZnyfKrtC83mHOyK",
      "name": "Forms",
      "createdAt": "2025-05-08T22:10:50.602Z",
      "updatedAt": "2025-05-08T22:10:50.602Z"
    }
  ],
  "nodes": [
    {
      "id": "93c4049b-138e-4cb1-906a-8aada9485ffd",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -4460,
        -160
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "358d84d7-381b-4de9-8c5e-d1d988c0b4a7",
      "name": "Email Form",
      "type": "n8n-nodes-base.form",
      "position": [
        -4140,
        -160
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "d0106dca-e3d1-45bc-b0e4-a0ac7a82a903",
      "name": "Generate Code",
      "type": "n8n-nodes-base.code",
      "position": [
        -3800,
        -160
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "659f0327-c4ee-45f8-a38d-80e9aada20db",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        -3020,
        -160
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 2.1
    },
    {
      "id": "ac5dfb19-9254-45fd-92bb-2d78a3062f51",
      "name": "Store Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -3440,
        -120
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 4.5
    },
    {
      "id": "f9586647-ea00-4b21-bd54-76f4314f926d",
      "name": "Verification Form",
      "type": "n8n-nodes-base.form",
      "position": [
        -2700,
        -160
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "e33fb6cd-59c2-4c84-9d51-5c8f7af1e2a1",
      "name": "Check Code",
      "type": "n8n-nodes-base.if",
      "position": [
        -2380,
        -160
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "47dd37e4-409c-42dd-9554-b14c18b65cb0",
      "name": "Main Form",
      "type": "n8n-nodes-base.form",
      "position": [
        -1840,
        -440
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "016ff76e-12f6-42ed-ad3c-234c585d6126",
      "name": "Incorrect Code Form",
      "type": "n8n-nodes-base.form",
      "position": [
        -1920,
        600
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "b1692894-3759-4f56-bd98-1c57a91dbb3c",
      "name": "Second Check",
      "type": "n8n-nodes-base.if",
      "position": [
        -1200,
        60
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 2.2
    },
    {
      "id": "f883c1c1-4529-41a8-9ec4-4f2396fcc972",
      "name": "Reset Form",
      "type": "n8n-nodes-base.form",
      "position": [
        -640,
        760
      ],
      "parameters": {},
      "notesInFlow": false,
      "typeVersion": 1
    },
    {
      "id": "dc335784-6532-4e63-b4a1-5b9cf77b5de6",
      "name": "Sticky Note 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4540,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2160baa2-a011-4bd8-b4bb-a11845e0323c",
      "name": "Sticky Note 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4240,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "6fed7946-cac4-48c0-836d-863f87ac1da0",
      "name": "Sticky Note 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3920,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "4d8dbcce-1dc3-48fa-a2f9-1561e6399462",
      "name": "Sticky Note 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3600,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "3b1cdbbd-28f3-420a-b507-0a707e857845",
      "name": "Sticky Note 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3120,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "59276d85-d217-4883-86ac-427eb70083df",
      "name": "Sticky Note 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2800,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "6c0df430-39c0-4dc9-b0a4-6b9a2aeabc12",
      "name": "Sticky Note 7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2480,
        -600
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "05973b8b-b873-44c6-8274-1bae17118cb8",
      "name": "Sticky Note 8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2120,
        300
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1479b495-1d18-4a03-8fdb-d276b33e70ac",
      "name": "Sticky Note 9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1480,
        -220
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "9936331c-2fb5-4d4f-ab8d-b586310a75ca",
      "name": "Sticky Note 10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -780,
        400
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2ae131e8-69a1-4212-81d6-95aabaf5cd3e",
      "name": "Sticky Note 11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2120,
        -740
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2a429ebd-460c-4a33-bc57-7576e31e1fea",
      "name": "Continue With Your Flow",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1200,
        -440
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0935942e-3a27-4f5c-ac0f-9a0ddc68ac8a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1420,
        -1000
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5ace2a5e-1f6c-4c13-a069-d71dcb22ee1d",
  "connections": {
    "Main Form": {
      "main": [
        [
          {
            "node": "Continue With Your Flow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Code": {
      "main": [
        [
          {
            "node": "Main Form",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Incorrect Code Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Form": {
      "main": [
        [
          {
            "node": "Generate Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reset Form": {
      "main": [
        [
          {
            "node": "Email Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Email": {
      "main": [
        [
          {
            "node": "Verification Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store Data": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Second Check": {
      "main": [
        [
          {
            "node": "Main Form",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Reset Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Code": {
      "main": [
        [
          {
            "node": "Store Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verification Form": {
      "main": [
        [
          {
            "node": "Check Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Email Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Incorrect Code Form": {
      "main": [
        [
          {
            "node": "Second Check",
            "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 template implements a professional Double Opt-In email verification system using Google Sheets as a database. The workflow collects user emails, generates unique verification codes, stores them securely, and validates user access before proceeding with your main form. User…

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

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

This automation streamlines the process of collecting user information using a Form Node, enabling individuals to join a waitlist managed via Google Sheets.

Google Sheets, Email Send, Form +2
Data & Sheets

Splitout Code. Uses splitOut, httpRequest, googleSheets, stickyNote. Event-driven trigger; 36 nodes.

HTTP Request, Google Sheets, Form Trigger +1
Data & Sheets

This n8n workflow is designed for Customer Success Managers (CSM), marketers, sales teams, and data administrators who need to automate the process of uploading and processing CSV data in HubSpot. It

HTTP Request, Google Sheets, Form Trigger +1
Data & Sheets

Track website traffic and backlinks effortlessly using the Website Traffic Checker - Ahref API. This n8n workflow automates data retrieval and logging into Google Sheets, making it perfect for SEO pro

Form Trigger, HTTP Request, Email Send +1
Data & Sheets

Upload your CV as a PDF and instantly get a structured "Master CV" Google Sheet – every experience, education entry, skill, and contact detail extracted into the right tab. This gives you a clean pers

Form Trigger, Google Sheets, @Easybits/N8N Nodes Extractor +1