AutomationFlowsMarketing & Ads › Validate & Score Leads with Zerobounce AI Before Sending Gmail Emails

Validate & Score Leads with Zerobounce AI Before Sending Gmail Emails

ByZeroBounce @zerobounce on n8n.io

This workflow automates the process of validating, scoring, and emailing leads from a Google Sheet. It ensures you only send emails to high-quality contacts, protecting your sender reputation. Trigger: Watches a Google Sheet for new or updated rows (contacts). Validate: Uses…

Event trigger★★★★☆ complexity17 nodesGmailGoogle Sheets Trigger@Zerobounce/N8N Nodes ZerobounceGoogle Sheets
Marketing & Ads Trigger: Event Nodes: 17 Complexity: ★★★★☆ Added:

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

This workflow follows the Gmail → 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": "ac20d0d3-f60f-42ce-9f15-646485473498",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1424,
        880
      ],
      "parameters": {
        "sendTo": "={{ $json.Email }}",
        "message": "Test message",
        "options": {
          "appendAttribution": true
        },
        "subject": "Test from n8n",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bb29a83a-234c-483a-92c9-03da28928b9c",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        976,
        368
      ],
      "parameters": {
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e870f85b-5023-4531-a0cf-e18600952cca",
      "name": "Filter by score",
      "type": "n8n-nodes-base.switch",
      "position": [
        1872,
        640
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "low",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5c624f71-1acc-4ce8-92d3-821fe2d4f83b",
                    "operator": {
                      "type": "number",
                      "operation": "lt"
                    },
                    "leftValue": "={{ $json.Score }}",
                    "rightValue": 3
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "medium",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b1bdb574-a04c-4086-86a3-899e53ccda07",
                    "operator": {
                      "type": "number",
                      "operation": "lt"
                    },
                    "leftValue": "={{ $json.Score }}",
                    "rightValue": 9
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "high",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "47aa6c56-2c5a-41ac-8f5c-5b7f183d898b",
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.Score }}",
                    "rightValue": 9
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "none"
        },
        "looseTypeValidation": true
      },
      "typeVersion": 3.3
    },
    {
      "id": "32c40db3-8fce-4d13-9b0a-71f88a96cb12",
      "name": "Validate email",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        1424,
        288
      ],
      "parameters": {
        "email": "={{ $('Google Sheets Trigger').item.json.Email }}",
        "addOptions": {
          "timeout": 10
        }
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a42960da-b6b5-48ff-8ab7-b33bb8bb6692",
      "name": "Score email",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        1424,
        560
      ],
      "parameters": {
        "email": "={{ $json.Email }}",
        "resource": "scoring"
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8a449e2e-69c0-4d28-833c-c040fff2a5cb",
      "name": "Add Scoring Results",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1648,
        560
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.email }}",
            "Score": "={{ $json.score.toString() }}",
            "Scored": "true"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Validated",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Validated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Sub Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Sub Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Free Email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Did You Mean",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain Age Days",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMTP Provider",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Found",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Record",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Country",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Region",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Region",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Zipcode",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Zipcode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Processed At",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Processed At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Scored",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Scored",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Emailed",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Emailed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reason",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "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": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "b148f359-737e-483b-a393-611087e339d4",
      "name": "Add validation results",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1648,
        288
      ],
      "parameters": {
        "columns": {
          "value": {
            "City": "={{ $json.city }}",
            "Email": "={{ $json.address }}",
            "Domain": "={{ $json.domain }}",
            "Region": "={{ $json.region }}",
            "Account": "={{ $json.account }}",
            "Country": "={{ $json.country }}",
            "Zipcode": "={{ $json.zipcode }}",
            "MX Found": "={{ $json.mx_found }}",
            "MX Record": "={{ $json.mx_record }}",
            "Validated": "true",
            "ZB Status": "={{ $json.status }}",
            "Free Email": "={{ $json.free_email }}",
            "Did You Mean": "={{ $json.did_you_mean }}",
            "Processed At": "={{ $json.processed_at }}",
            "SMTP Provider": "={{ $json.smtp_provider }}",
            "ZB Sub Status": "={{ $json.sub_status }}",
            "Domain Age Days": "={{ $json.domain_age_days }}"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Validated",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Validated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Sub Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Sub Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Free Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Did You Mean",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Account",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain Age Days",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMTP Provider",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Found",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Record",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Country",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Region",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Region",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Zipcode",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Zipcode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Processed At",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Processed At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Scored",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Scored",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Emailed",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Emailed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reason",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "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": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "0920ec59-a03e-4fdb-a31f-d97687a6f1ee",
      "name": "Email is valid?",
      "type": "n8n-nodes-base.if",
      "position": [
        1872,
        384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "27c7f88c-86f9-4f15-bbb7-42e6033f590b",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['ZB Status'] }}",
              "rightValue": "valid"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "777e9cbb-46c1-4d87-a577-ec8758bfce39",
      "name": "Validate?",
      "type": "n8n-nodes-base.if",
      "position": [
        1200,
        368
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "0a437a50-9ba7-468a-9e9d-931379408826",
              "operator": {
                "type": "boolean",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.Validated }}",
              "rightValue": true
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.3
    },
    {
      "id": "1da4898e-6b7e-4369-9a7c-107290baefd9",
      "name": "Score?",
      "type": "n8n-nodes-base.if",
      "position": [
        1200,
        640
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "19c0d54e-b7db-493d-b14a-a9e81e2abafd",
              "operator": {
                "type": "boolean",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.Scored }}",
              "rightValue": true
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.3
    },
    {
      "id": "4f4bd953-aadc-4ba2-b780-671a7e517337",
      "name": "Email?",
      "type": "n8n-nodes-base.if",
      "position": [
        1200,
        896
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d23c2c47-4bbf-40d2-8f54-2720791200cb",
              "operator": {
                "type": "boolean",
                "operation": "notEquals"
              },
              "leftValue": "={{ $('Google Sheets Trigger').item.json.Emailed }}",
              "rightValue": true
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.3
    },
    {
      "id": "930512bb-b0a2-4054-96dc-8b17afce2961",
      "name": "Add Emailed = false",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2368,
        544
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.Email }}",
            "Reason": "={{ $json.reason }}",
            "Emailed": "false"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Sub Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Sub Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Free Email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Did You Mean",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain Age Days",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMTP Provider",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Found",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Record",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Country",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Region",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Region",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Zipcode",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Zipcode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Processed At",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Processed At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Emailed",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Emailed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reason",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "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": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "32df7f77-f22c-49b3-8ea2-c1fd893f8140",
      "name": "Add Emailed = true",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1648,
        880
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Email?').item.json.Email }}",
            "Reason": "High score",
            "Emailed": "true"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Sub Status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Sub Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Free Email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Did You Mean",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Domain Age Days",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMTP Provider",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Found",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "MX Record",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Country",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Region",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Region",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Zipcode",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Zipcode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Processed At",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Processed At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Emailed",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Emailed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reason",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "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": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_j8PHumLPqs1ZNpGtmdTato/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "702c4c36-7c1d-4565-a3db-b2719fa73a63",
      "name": "Not valid",
      "type": "n8n-nodes-base.set",
      "position": [
        2128,
        400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e63a429e-a312-4c9c-8875-91d89e35884d",
              "name": "reason",
              "type": "string",
              "value": "={{ $json['ZB Status'] }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "f6ba41cd-26df-41bf-b76e-cda296c0748f",
      "name": "Low score",
      "type": "n8n-nodes-base.set",
      "position": [
        2128,
        544
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e63a429e-a312-4c9c-8875-91d89e35884d",
              "name": "reason",
              "type": "string",
              "value": "Low score"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "fee21988-f6a7-4c85-bc6a-830f181ed7da",
      "name": "Medium score",
      "type": "n8n-nodes-base.set",
      "position": [
        2128,
        688
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e63a429e-a312-4c9c-8875-91d89e35884d",
              "name": "reason",
              "type": "string",
              "value": "Low score"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "a71f6a08-4a75-4b58-981b-a3be3d45c27d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 768,
        "height": 864,
        "content": "## ZeroBounce Email Validation, A.I Scoring & Sending with Gmail\n![ZeroBounce Logo](https://raw.githubusercontent.com/zerobounce/n8n-nodes-zerobounce/main/icons/zerobounce-logo.svg)\n\n\nThis workflow automates the process of validating, scoring, and emailing leads from a Google Sheet. It ensures you only send emails to high-quality contacts, protecting your sender reputation.\n\n\n\n### \ud83d\ude80 How it Works\n1.  **Trigger:** Watches a Google Sheet for new or updated rows (contacts).\n2.  **Validate:** Uses **ZeroBounce** to check if the email address is valid.\n    * *If Invalid:* Updates the sheet with the reason and marks \"Emailed\" as `false`.\n3.  **Score:** If valid, uses **ZeroBounce A.I. Scoring** to grade the lead quality (0-10).\n    * *If Low/Medium Score (<9):* Updates the sheet with the score and marks \"Emailed\" as `false`.\n4.  **Send:** If the score is **High (9-10)**, sends an email via **Gmail**.\n5.  **Update:** Writes the final status back to the Google Sheet, preventing duplicate sends.\n\n\n\n### \ud83d\udccb Setup Requirements\n* **Google Sheet:** A sheet with columns for `Email`, `Validated`, `Scored`, `Score`, `Emailed`, `Reason`, etc.\n* **ZeroBounce Account:** API Key for validation and scoring.\n* **Gmail Account:** Connected via OAuth2 to send emails.\n\n\n\n### \ud83d\udca1 Key Features\n* **Cost Efficient:** Checks existing `Validated` and `Scored` columns to avoid re-processing contacts.\n* **Risk Protection:** Filters out valid but low-quality leads (e.g., catch-alls or low scores).\n* **Status Tracking:** Keeps your Google Sheet updated with rich data (Sub-status, Domain Age, etc.)."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Email?": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Score?": {
      "main": [
        [
          {
            "node": "Score email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Filter by score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Low score": {
      "main": [
        [
          {
            "node": "Add Emailed = false",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Not valid": {
      "main": [
        [
          {
            "node": "Add Emailed = false",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate?": {
      "main": [
        [
          {
            "node": "Validate email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Email is valid?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Score email": {
      "main": [
        [
          {
            "node": "Add Scoring Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Medium score": {
      "main": [
        [
          {
            "node": "Add Emailed = false",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "Add Emailed = true",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate email": {
      "main": [
        [
          {
            "node": "Add validation results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email is valid?": {
      "main": [
        [
          {
            "node": "Score?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter by score": {
      "main": [
        [
          {
            "node": "Low score",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Medium score",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Email?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Emailed = false": {
      "main": [
        []
      ]
    },
    "Add Scoring Results": {
      "main": [
        [
          {
            "node": "Filter by score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Validate?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add validation results": {
      "main": [
        [
          {
            "node": "Email is valid?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

This workflow automates the process of validating, scoring, and emailing leads from a Google Sheet. It ensures you only send emails to high-quality contacts, protecting your sender reputation. Trigger: Watches a Google Sheet for new or updated rows (contacts). Validate: Uses…

Source: https://n8n.io/workflows/11902/ — 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

This workflow automates the import of leads into the Company table of a CRM built with Airtable.

Data Table, Gmail, Airtable +1
Marketing & Ads

Find companies similar to your best clients using PredictLeads, enrich each with news, hiring, and tech signals, then score them 0–100 for outreach priority.

Google Sheets, @Predictleads/N8N Nodes Predictleads, Slack +2
Marketing & Ads

This n8n template automates finding roofing contractors in any city using Google Maps. It deep-scrapes listings via ScrapeOps Proxy, deduplicates results against Google Sheets, saves fresh leads, and

Google Sheets, Slack, Gmail +2
Marketing & Ads

This n8n template automates the generation of local business leads by scraping Google Maps. It goes beyond basic search results by visiting individual business pages to extract detailed contact inform

Form Trigger, @Scrapeops/N8N Nodes Scrapeops, Google Sheets +2
Marketing & Ads

This workflow allows users to extract potential leads from their inboxes. The idea of a reverse outreach is based on the notion that the next big client/customer/partner might be sitting in your inbox

Gmail Trigger, Gmail, Slack +1