{
  "nodes": [
    {
      "id": "22153003-c046-4703-84b7-89cfb0b5e5d8",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        512,
        80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e1db2aa9-8bd2-420b-a8f1-2a2512281f05",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 3. ZeroBounce Validation\n**Validate** an email address with ZeroBounce.\n\nThis uses the ZeroBounce API to validate a single email address and optional IP address.\n\nDetails can be found here [Single Email Validator](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-validate-emails).\n\nThis returns the status of the email address along with other useful information about the address and domain."
      },
      "typeVersion": 1
    },
    {
      "id": "817634e1-750b-45ef-a55d-23fa1685cf53",
      "name": "Check credits for validation",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        1232,
        144
      ],
      "parameters": {
        "resource": "account",
        "addOptions": {
          "creditsRequired": "={{ $input.all().length }}"
        }
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "fd94c5ad-abfa-459d-b52f-2c4b2ea1c334",
      "name": "Check credits for scoring",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        2432,
        144
      ],
      "parameters": {
        "resource": "account",
        "addOptions": {}
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "6644c283-406f-4c14-bafd-dde1cdf213e7",
      "name": "Low score",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3632,
        464
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1bf8b4f3-4df6-480c-88f8-ad1c44a3b45b",
      "name": "Not valid",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1952,
        464
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6f6059f7-e27d-40ec-82c7-eb6d4d620fdd",
      "name": "Wait for scoring credits check",
      "type": "n8n-nodes-base.merge",
      "position": [
        2672,
        80
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "468e17b7-e5a2-4dc6-b1de-f19c3dd8c5d8",
      "name": "Wait for validation credits check",
      "type": "n8n-nodes-base.merge",
      "position": [
        1472,
        80
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.2
    },
    {
      "id": "f8e0a28f-ca7c-4c7b-84c8-08ba6e6ea7db",
      "name": "Not scored",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2912,
        464
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "49a7d0f6-eece-46b5-9e44-d80c5440b551",
      "name": "Merge validation and scoring results",
      "type": "n8n-nodes-base.merge",
      "position": [
        3392,
        80
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "joinMode": "enrichInput1",
        "mergeByFields": {
          "values": [
            {
              "field1": "address",
              "field2": "email"
            }
          ]
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "5b77fe7c-8fab-4a99-8bae-2e3a3162f522",
      "name": "Skip scoring?",
      "type": "n8n-nodes-base.switch",
      "position": [
        2912,
        80
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "score",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "761a0147-a4d3-47bd-8c0a-2a325d0879fa",
                    "operator": {
                      "type": "array",
                      "operation": "lengthLte",
                      "rightType": "number"
                    },
                    "leftValue": "={{ $input.all() }}",
                    "rightValue": "={{ $json.Credits }}"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "skip",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "da3f8ab3-1606-497a-b0a8-e958d317d68c",
                    "operator": {
                      "type": "array",
                      "operation": "lengthGt",
                      "rightType": "number"
                    },
                    "leftValue": "={{ $input.all() }}",
                    "rightValue": "={{ $json.Credits }}"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {},
        "looseTypeValidation": true
      },
      "typeVersion": 3.3
    },
    {
      "id": "c2ed393f-0561-4beb-b0d0-b33d55a7962a",
      "name": "Is valid?",
      "type": "n8n-nodes-base.switch",
      "position": [
        1952,
        80
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "valid",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "958a508a-4388-42e0-b9a7-f7ed5e974343",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "valid"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "other",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "63d83f43-0d54-413c-aa9e-6c4bc920d345",
                    "operator": {
                      "type": "string",
                      "operation": "notEquals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "valid"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "b479bc31-3297-46d4-aed9-0e6c03a906bb",
      "name": "Split into items",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        992,
        80
      ],
      "parameters": {
        "include": "allOtherFields",
        "options": {
          "destinationFieldName": "email"
        },
        "fieldToSplitOut": "emails"
      },
      "typeVersion": 1
    },
    {
      "id": "b2f95213-3b77-4291-b131-08f04e46dcf2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 2. Check ZeroBounce account credits balance (optional)\nCheck if your ZeroBounce account has enough credits to perform validation for all of the input items.\n\nThis step is optional, although checking before starting the workflow can prevent issues part way through.\n\nThe [Get Credits](https://www.zerobounce.net/docs/email-validation-api-quickstart#get_balance__v2__) node can optionally compare the returned credits balance against a value and throw an error if there aren't enough.\n\nThe \"Merge\" node allows us to use \"Execute Once\" for the \"Get Credits\" node and wait for the result without altering the 30 input items."
      },
      "typeVersion": 1
    },
    {
      "id": "bde06e64-fae1-4d6e-8c22-14faf68ceffe",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 1. Input data\nHere we are using [Sandbox](https://www.zerobounce.net/docs/email-validation-api-quickstart/v2-sandbox-mode) email addresses which don't use any ZeroBounce credits.\n\nThese can be used for testing and proving your workflows before connecting production data.\n\nIn a real workflow, the input data will usually be provided by the trigger, e.g. new contact added.\n\nThe split step converts the data from a single array into 30 individual email address items. "
      },
      "typeVersion": 1
    },
    {
      "id": "14cddc36-882d-46da-bd52-0b08f044db10",
      "name": "Sandbox emails",
      "type": "n8n-nodes-base.set",
      "position": [
        752,
        80
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "{\n  \"emails\": [\n    \"disposable@example.com\",\n    \"invalid@example.com\",\n    \"valid@example.com\",\n    \"toxic@example.com\",\n    \"donotmail@example.com\",\n    \"spamtrap@example.com\",\n    \"abuse@example.com\",\n    \"unknown@example.com\",\n    \"catch_all@example.com\",\n    \"antispam_system@example.com\",\n    \"does_not_accept_mail@example.com\",\n    \"exception_occurred@example.com\",\n    \"failed_smtp_connection@example.com\",\n    \"failed_syntax_check@example.com\",\n    \"forcible_disconnect@example.com\",\n    \"global_suppression@example.com\",\n    \"greylisted@example.com\",\n    \"leading_period_removed@example.com\",\n    \"mail_server_did_not_respond@example.com\",\n    \"mail_server_temporary_error@example.com\",\n    \"mailbox_quota_exceeded@example.com\",\n    \"mailbox_not_found@example.com\",\n    \"no_dns_entries@example.com\",\n    \"possible_trap@example.com\",\n    \"possible_typo@example.com\",\n    \"role_based@example.com\",\n    \"timeout_exceeded@example.com\",\n    \"unroutable_ip_address@example.com\",\n    \"free_email@example.com\",\n    \"role_based_catch_all@example.com\"\n  ]\n}"
      },
      "typeVersion": 3.4
    },
    {
      "id": "f51f6d3c-9753-449c-b816-249fcbc60bfc",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2128,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 4. Check ZeroBounce account credits balance (optional)\nCheck if your ZeroBounce account has enough credits to perform scoring for all of the input items.\n\nThe optional \"Credits required\" parameter is not set. This allows us to check the result and skip scoring  if there aren't enough credits.\n\nA 5 second wait is added to allow time for the credits balance to update after the validations."
      },
      "typeVersion": 1
    },
    {
      "id": "74fc0dbe-815a-43da-b6a0-23ce569fdd95",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        336
      ],
      "parameters": {
        "color": 7,
        "width": 3344,
        "height": 272,
        "content": "## Filtered outputs\nThese are the output branches which have been filtered by their validation status and score.\n\nFurther actions could be taken with these filtered results, e.g. followed up using [Email Finder](https://www.zerobounce.net/docs/email-finder-api) or [Domain Search](https://www.zerobounce.net/docs/domain-search-api) using our n8n node. "
      },
      "typeVersion": 1
    },
    {
      "id": "dacd88cd-db68-4819-a8f4-bd5afc56f608",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3568,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 7. Split results by score\nHere is your output, this refined list can now be used with a high confidence that it will reach your intended recipient."
      },
      "typeVersion": 1
    },
    {
      "id": "0e77fbbb-81fa-4d60-a4d7-7c49bc1e773e",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3088,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 6. ZeroBounce A.I. Scoring\n**A.I. Score** an email address with ZeroBounce.\n\nThis uses the ZeroBounce API to score a single email address.\n\nDetails can be found here [Single Email Scoring](https://www.zerobounce.net/docs/ai-scoring-api/single-email-scoring).\n\nThis returns the score for the email address.\n\nThe merge node is used to merge the scoring result with the validation result."
      },
      "typeVersion": 1
    },
    {
      "id": "99d5b954-003d-4167-86fa-68f9715e8730",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        2192,
        144
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "d1448267-8fa5-4161-8916-c935e9383954",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2608,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 464,
        "height": 560,
        "content": "## 5. Score emails or finish\nThis checks if there are enough credits to score the remaining emails.\n\nThis allows the validation results to be used even if scoring can't be performed."
      },
      "typeVersion": 1
    },
    {
      "id": "c7aeca49-69ce-402a-a642-bc953ce659f6",
      "name": "Filter by score",
      "type": "n8n-nodes-base.switch",
      "position": [
        3632,
        64
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "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
            },
            {
              "outputKey": "medium",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "loose"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b1bdb574-a04c-4086-86a3-899e53ccda07",
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.score }}",
                    "rightValue": 3
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "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
            }
          ]
        },
        "options": {
          "fallbackOutput": 2
        },
        "looseTypeValidation": true
      },
      "typeVersion": 3.3
    },
    {
      "id": "105b986d-84b0-48f6-b44c-e1c219ff471a",
      "name": "Medium score",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3872,
        144
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "95a3bca3-f9e8-4227-a577-16251e5e061c",
      "name": "High score",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3872,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3bdb5066-93a5-42fa-86ca-c0a3de914015",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -240
      ],
      "parameters": {
        "color": 7,
        "width": 912,
        "height": 848,
        "content": "## ZeroBounce Email Validation and Scoring\n\nThis template uses the [ZeroBounce](https://www.zerobounce.net) node to validate and score email addresses. It is designed to first check if an email is deliverable and then uses A.I. Scoring to assess the sender's deliverability confidence.\n\nThis is an example template to demonstrate ways to use the ZeroBounce node and how to manipulate the data with core n8n nodes.\n\nA ZeroBounce API key is needed to use this template. Generate one [here](https://www.zerobounce.net/members/API).\n\n\n\n\n![ZeroBounce Logo](https://raw.githubusercontent.com/zerobounce/n8n-nodes-zerobounce/main/icons/zerobounce-logo.svg)\n\n### 1. Email Validation\nThe **`Validate email`** node sends the email address to the ZeroBounce API to determine its status (e.g., **`'valid', 'invalid', 'spam trap'`**).\n* **Function:** Checks the email address against ZeroBounce's Email Validation API\n\n\n### 2. A.I. Scoring\nFor emails confirmed as valid, the workflow proceeds to the **`Score email`** node.\n* **Function:** Applies ZeroBounce's proprietary A.I. model to assess the quality of the email, returning a numerical score (**0 to 10**).\n\n\n### 3. Output\nThe workflow concludes with the **`Filter by score` Switch Node**, which uses the ZeroBounce score to categorize the email into three confidence tiers:\n* **High Score:** Indicates high confidence in deliverability and is ready for immediate campaigns.\n* **Medium Score:** Suggests moderate risk; these might be suitable for re-engagement or specialized campaigns.\n* **Low Score:** Indicates high risk, even if the status was technically `valid`. These should be suppressed to protect sender reputation."
      },
      "typeVersion": 1
    },
    {
      "id": "f245ff49-9fda-45fb-b724-394f3533ab07",
      "name": "Validate email",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        1712,
        80
      ],
      "parameters": {
        "email": "={{ $json.email }}",
        "addOptions": {
          "timeout": 10,
          "verifyPlus": true,
          "activityData": true
        }
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a2c894ad-25bf-44d7-8080-2c95760e3398",
      "name": "Score email",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        3152,
        144
      ],
      "parameters": {
        "email": "={{ $json.address }}",
        "resource": "scoring"
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Check credits for scoring",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is valid?": {
      "main": [
        [
          {
            "node": "Wait for scoring credits check",
            "type": "main",
            "index": 0
          },
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Score email": {
      "main": [
        [
          {
            "node": "Merge validation and scoring results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Skip scoring?": {
      "main": [
        [
          {
            "node": "Score email",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge validation and scoring results",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not scored",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sandbox emails": {
      "main": [
        [
          {
            "node": "Split into items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate email": {
      "main": [
        [
          {
            "node": "Is valid?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter by score": {
      "main": [
        [
          {
            "node": "High score",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Medium score",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Low score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split into items": {
      "main": [
        [
          {
            "node": "Check credits for validation",
            "type": "main",
            "index": 0
          },
          {
            "node": "Wait for validation credits check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check credits for scoring": {
      "main": [
        [
          {
            "node": "Wait for scoring credits check",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Check credits for validation": {
      "main": [
        [
          {
            "node": "Wait for validation credits check",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Wait for scoring credits check": {
      "main": [
        [
          {
            "node": "Skip scoring?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for validation credits check": {
      "main": [
        [
          {
            "node": "Validate email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge validation and scoring results": {
      "main": [
        [
          {
            "node": "Filter by score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Sandbox emails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}