{
  "id": "mKV1i8hp6RBm16kg",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Email Leads Verifier",
  "tags": [],
  "nodes": [
    {
      "id": "03bf0d66-4dd1-497d-bc0d-4627840d7a1c",
      "name": "Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        720,
        -100
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "feb6c5ec-97cb-4c73-bc4c-e6f34ff1e1b8",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.results[0].score }}",
              "rightValue": 75
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "fc358c77-3639-4b8b-95e3-d5f4ef85cbe4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -520,
        -360
      ],
      "parameters": {
        "width": 420,
        "height": 760,
        "content": "## Email Leads Verifier: Batch Validation Workflow\n\nThis automation verifies large batches of email leads using Rapid Email Verifier, applying rate limits and score thresholds for optimal quality. Emails are fetched from Google Sheets, processed in batches (<= 100 per API limits), filtered by verification score, and appended to a results sheet with validation metadata. Ideal for sales, marketing, or event teams needing fast, automated lead cleanup.\n\n**Who is this for?**\n- Event planners, sales teams, marketers needing bulk email verification.\n\n**Features & Steps:**\n- Fetch emails from Google Sheets\n- Batch verify via Rapid Email Verifier API, respecting API limits\n- Wait node for rate limiting\n- Filter by score (>75), with configurable batch size\n- Append full verification details to output sheet\n\n**Setup:**\n- Configure Google Sheets connection\n- Specify input/output sheet names in 'Set' node\n- Ensure Rapid Email Verifier API URL and auth (if any) are set up\n\n**Customizing:**\n- Adjust batch size, filtering threshold, API endpoint, and output schema as needed.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c3fb433d-6856-4feb-99a4-1d1632e06be0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        -160
      ],
      "parameters": {
        "width": 220,
        "height": 120,
        "content": "### Step 1:\n Google Sheets node for fetching the emails to be verified."
      },
      "typeVersion": 1
    },
    {
      "id": "a892d566-9789-42b8-aab0-3bc556500e2e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        380,
        -240
      ],
      "parameters": {
        "height": 200,
        "content": "### Step 2:\nThe loop node is needed as Rapid Email Verifier can verify a 100 emails at a time for free.\n\nHence, we set a batch of less than 100 emails at once to be forwarded."
      },
      "typeVersion": 1
    },
    {
      "id": "7f222128-5394-4665-9fbc-67dc888e643d",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        280
      ],
      "parameters": {
        "content": "### Step 3:\nThe Wait node waits for 5 seconds before prompting an HTTP request, so that the website does not think it as spam."
      },
      "typeVersion": 1
    },
    {
      "id": "e397415d-93a3-44cf-98d0-cb977f15a46b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        280
      ],
      "parameters": {
        "height": 200,
        "content": "### Step 4:\nThe HTTP Request node sends a POST request of less than 100 emails at once to be verified.\n\nIt returns verification data about the emails sent."
      },
      "typeVersion": 1
    },
    {
      "id": "f1010f90-1810-4095-a6c7-d4f80409570e",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        -300
      ],
      "parameters": {
        "height": 180,
        "content": "### Step 5:\nAfter a batch of emails is verified and sent to the 'done' branch of the Loop node, the filter node checks the email score >75 to populate the Google Sheet."
      },
      "typeVersion": 1
    },
    {
      "id": "3353f56a-67cb-4f31-9bc9-2dd3c7bc789f",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        940,
        -320
      ],
      "parameters": {
        "height": 200,
        "content": "### Step 6:\nFinally the Google Sheets node is populated with the verified emails along with more data about each of the emails and their inboxes as well as their 'projected score' out of 100."
      },
      "typeVersion": 1
    },
    {
      "id": "675fe3ac-4e0a-4931-9436-cafba0db48e3",
      "name": "Execute workflow trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -40,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "042e06d0-b054-4168-8512-8d638363ce33",
      "name": "Get emails from sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        200,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r4z9kppSwx4Xn-QlhoJuPxx0AH5KujB_4I6hbHsZkXw/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1r4z9kppSwx4Xn-QlhoJuPxx0AH5KujB_4I6hbHsZkXw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r4z9kppSwx4Xn-QlhoJuPxx0AH5KujB_4I6hbHsZkXw/edit?usp=drivesdk",
          "cachedResultName": "Event Management Map Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "017efaad-0d24-484a-98eb-627181e3b8bb",
      "name": "Loop",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueRegularOutput",
      "position": [
        440,
        0
      ],
      "parameters": {
        "options": {},
        "batchSize": 20
      },
      "typeVersion": 3
    },
    {
      "id": "c79b5e98-810a-41ef-b5b0-a268e242fb1c",
      "name": "Rate Limiting Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        720,
        80
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "33b412a9-d1f5-4194-b99c-9442c004076b",
      "name": "Append verified emails to sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        960,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {
            "Score": "={{ $json.results[0].score }}",
            "Disposable": "={{ $json.results[0].validations.is_disposable }}",
            "Domain Exists": "={{ $json.results[0].validations.domain_exists }}",
            "Mailbox Exists": "={{ $json.results[0].validations.mailbox_exists }}",
            "Verified Emails": "={{ $json.results[0].email }}"
          },
          "schema": [
            {
              "id": "Verified Emails",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Verified Emails",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain Exists",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Domain Exists",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mailbox Exists",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Mailbox Exists",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Disposable",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Disposable",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Verified Emails"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1180619104,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r4z9kppSwx4Xn-QlhoJuPxx0AH5KujB_4I6hbHsZkXw/edit#gid=1180619104",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1r4z9kppSwx4Xn-QlhoJuPxx0AH5KujB_4I6hbHsZkXw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1r4z9kppSwx4Xn-QlhoJuPxx0AH5KujB_4I6hbHsZkXw/edit?usp=drivesdk",
          "cachedResultName": "Event Management Map Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "e2629161-c606-41dc-9709-9d481b281ecf",
      "name": "HTTP Request to Rapid Email Verifier",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        960,
        80
      ],
      "parameters": {
        "url": "https://rapid-email-verifier.fly.dev/api/validate/batch",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"emails\": [\"{{ $json.Emails }}\"]\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "={{ $json.Emails }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f0cb9107-c566-4764-8123-cf9cfe94fb16",
  "connections": {
    "Loop": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Rate Limiting Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter": {
      "main": [
        [
          {
            "node": "Append verified emails to sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rate Limiting Wait": {
      "main": [
        [
          {
            "node": "HTTP Request to Rapid Email Verifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get emails from sheet": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute workflow trigger": {
      "main": [
        [
          {
            "node": "Get emails from sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request to Rapid Email Verifier": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}