{
  "nodes": [
    {
      "id": "c1fe40ba-44dc-4b9b-b6ba-e3be53e58b9c",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        80,
        180
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "35e321f8-0d51-4d08-973f-3aa6cc7c6540",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        300,
        180
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "0a4594fe-0fa5-4c9d-a2b8-b6d747c8fcbe",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        640,
        180
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "c89ee585-2187-437c-a541-7accad9bf9a6",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        920,
        200
      ],
      "parameters": {
        "url": "https://email-validator-ai.p.rapidapi.com/email.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "email",
              "value": "={{ $json.email }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "email-validator-ai.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "your key"
            }
          ]
        }
      },
      "retryOnFail": false,
      "typeVersion": 4.2
    },
    {
      "id": "67fbd30e-fce6-4d4a-b956-6e915ef32806",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "height": 340,
        "content": "### \ud83d\udd18 When clicking \u2018Execute workflow\u2019\nManually starts the workflow from the n8n editor.  \nUsed during development or one-time execution."
      },
      "typeVersion": 1
    },
    {
      "id": "57c6547d-e0bf-412c-b4dc-17e3a7eee5f0",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        0
      ],
      "parameters": {
        "height": 340,
        "content": "### \ud83d\udcc4 Google Sheets (Read)\nFetches email  from a specified Google Sheet.  \nUses a service account for authentication and reads all rows."
      },
      "typeVersion": 1
    },
    {
      "id": "a52a13a2-448b-4edd-b56c-46a8276336f3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        0
      ],
      "parameters": {
        "height": 340,
        "content": "### \ud83d\udd01 Loop Over Items (Split In Batches)\nLoops through each email  one at a time.  \nEnsures individual API processing per email ."
      },
      "typeVersion": 1
    },
    {
      "id": "15ff72ad-4f94-4c9c-a763-3613a4d92d3e",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        840,
        0
      ],
      "parameters": {
        "height": 340,
        "content": "### \ud83c\udf10 HTTP Request (RapidAPI)\nSends a POST request to the RapidAPI email validation endpoint.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "efbdaf78-2e00-4b07-86b3-3b804abdbb11",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        160
      ],
      "parameters": {
        "height": 380,
        "content": "### \ud83d\udcc4 Google Sheets (Update)\nUpdates rows in a specified Google Sheet using data from your workflow.\nUses a service account for authentication to access and modify existing rows.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e7ece89d-82ea-434b-bfc6-be30299dac43",
      "name": "Google Sheets ( Update Row )",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1280,
        360
      ],
      "parameters": {
        "columns": {
          "value": {
            "email": "={{ $json.email }}",
            "is_disposable ": "={{ $json.disposable }}"
          },
          "schema": [
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "is_disposable ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "is_disposable ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "41e4dabd-f1ce-4f8b-b0b0-b128317824e2",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -780,
        -140
      ],
      "parameters": {
        "width": 720,
        "height": 1280,
        "content": "# \ud83d\udcca  Email Validation & Google Sheets Update\n\nThis workflow automates the process of validating email addresses stored in a Google Sheet. It reads each email, checks if it's disposable or fake using a third-party API (via RapidAPI), and updates the same row with the result. All interactions with Google Sheets are done securely using a Google Service Account.\n\n---\n\n## \u2705 Node-wise Overview\n\n### \ud83d\udd18 Manual Trigger  \nStarts the workflow manually from the n8n editor.\n\n### \ud83d\udcc4 Google Sheets (Read)  \nReads all rows (including emails) from a specified Google Sheet.\n\n### \ud83d\udd01 Split In Batches  \nProcesses each row (email) one at a time.\n\n### \ud83c\udf10 HTTP Request (RapidAPI)  \nSends the email to a validation API via HTTP POST.\n\n### \ud83d\udfe9 Google Sheets (Update Row)  \nUpdates the corresponding row in the sheet with the validation result.\n\n---\n\n## \ud83d\udca1 Use Cases\n\n- \ud83d\udce7 **Email List Cleanup**  \n  Keep your lead or contact lists free of fake, temporary, or disposable emails.\n\n- \ud83e\uddfc **Data Quality Enhancement**  \n  Ensure your Google Sheets contain only validated, high-quality email addresses.\n\n- \ud83d\udd01 **Automated Data Enrichment**  \n  Add metadata (like `is_disposable`) to your contacts without manual review.\n\n- \ud83d\udce5 **Lead Qualification Filtering**  \n  Automatically flag or remove junk leads before importing into CRMs or email tools.\n\n---"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Google Sheets ( Update Row )",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets ( Update Row )": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}