{
  "id": "B1firJ7irjDVxCvf",
  "meta": {
    "templateId": "12601",
    "templateCredsSetupCompleted": true
  },
  "name": "Vet new Jotform leads with ZeroBounce and sync qualified contacts to ActiveCampaign",
  "tags": [],
  "nodes": [
    {
      "id": "880edef5-8bfc-4aeb-8242-c9d33f15e2d1",
      "name": "Validate email",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        1536,
        880
      ],
      "parameters": {
        "email": "={{ $('Jotform Trigger').item.json['E-mail'] }}",
        "addOptions": {
          "timeout": 10
        }
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ace2ee2b-fc14-4650-81aa-4d28a4ae9911",
      "name": "Status",
      "type": "n8n-nodes-base.switch",
      "position": [
        1760,
        864
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Valid",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "468015f8-26f2-4e72-be62-cb7a801b1e5d",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "valid"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Catch-all",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "ee6eb4c7-2d0e-4645-9454-5d63d863d355",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "catch-all"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "Other"
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5a9c298f-4059-4f6b-a503-01f0ab2ffec8",
      "name": "Has email?",
      "type": "n8n-nodes-base.if",
      "position": [
        1088,
        1168
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7287ef71-fd0e-4283-a029-d56939120766",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json['E-mail'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "a4d75e5e-fa2a-454e-bf09-c2b2cb65ebff",
      "name": "Filter by score",
      "type": "n8n-nodes-base.switch",
      "position": [
        2432,
        672
      ],
      "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": "c4ffe094-8ef6-4064-9cdb-62ee337197db",
      "name": "Score email",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "position": [
        2208,
        688
      ],
      "parameters": {
        "email": "={{ $('Jotform Trigger').item.json['E-mail'] }}",
        "resource": "scoring"
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d8492d56-5eae-429b-8bb4-130d68956df2",
      "name": "Not valid",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        1264
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Not valid"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "113453fb-15b7-4799-95ef-87466b99a6b1",
      "name": "Not enough credits for scoring",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        1072
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Not enough credits for scoring"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a2fbf682-e27b-41a4-9dcf-4615ee5cdb41",
      "name": "Not enough credits for validation",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        1456
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Not enough credits for validation"
            },
            {
              "id": "f4a379fb-7d3e-465d-b5f1-c618731e9dfe",
              "name": "email_override",
              "type": "string",
              "value": "={{ $('Form.io Trigger').item.json.email }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "09dc9c8e-1df0-41c3-9328-12e59ff08380",
      "name": "Email missing",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        1648
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Email missing"
            },
            {
              "id": "6314c6a3-d17a-444c-b0b6-d813c300d392",
              "name": "email_override",
              "type": "string",
              "value": "={{ $json['Full Name'].first }} {{ $json['Full Name'].last }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "102cf272-ea2d-4a90-a701-3ad77dc3f2b8",
      "name": "Check credits for validation",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "onError": "continueErrorOutput",
      "position": [
        1312,
        1072
      ],
      "parameters": {
        "resource": "account",
        "addOptions": {
          "creditsRequired": 1
        }
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": false,
      "typeVersion": 1
    },
    {
      "id": "f7ff2e85-f688-41a5-bfd9-65c059a163a2",
      "name": "Check credits for scoring",
      "type": "@zerobounce/n8n-nodes-zerobounce.zeroBounce",
      "onError": "continueErrorOutput",
      "position": [
        1984,
        880
      ],
      "parameters": {
        "resource": "account",
        "addOptions": {
          "creditsRequired": 1
        }
      },
      "credentials": {
        "zeroBounceApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9466cfc2-54e3-40f6-9a5f-cae5946db108",
      "name": "Medium score",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        688
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Medium score"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "4046db80-82ab-448d-a132-8a3c051c9f45",
      "name": "Low score",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        880
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Low score"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3e5debac-f3a4-4fb9-a9cd-5d54d621be7a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 864,
        "content": "## Jotform to ActiveCampaign: Advanced ZeroBounce Lead Vetting\n\n**This workflow automates the transition of new Jotform submissions into ActiveCampaign, using [ZeroBounce](https://www.zerobounce.net) for multi-layer validation (Validation + Scoring).**\n\n**Results are also output to Google Sheets for review.**"
      },
      "typeVersion": 1
    },
    {
      "id": "b7ea99e3-9e88-4741-9bf8-ec2364e0369d",
      "name": "Add to Accepted",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2880,
        400
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Jotform Trigger').item.json['E-mail'] }}",
            "ZB Score": "={{ $node[\"Score email\"] ? $('Score email').item.json.score : \"\" }}",
            "Last Name": "={{ $('Jotform Trigger').item.json['Full Name'].last }}",
            "ZB Domain": "={{ $('Validate email').item.json.domain }}",
            "ZB Status": "={{ $('Validate email').item.json.status }}",
            "First Name": "={{ $('Jotform Trigger').item.json['Full Name'].first }}",
            "ZB Account": "={{ $('Validate email').item.json.account }}",
            "Accepted At": "={{ $now }}",
            "ZB MX Found": "={{ $('Validate email').item.json.mx_found }}",
            "ZB MX Record": "={{ $('Validate email').item.json.mx_record }}",
            "ZB Free Email": "={{ $('Validate email').item.json.free_email }}",
            "ZB Sub Status": "={{ $('Validate email').item.json.sub_status }}",
            "Accepted Reason": "={{ $json.reason }}",
            "ZB Did You Mean": "={{ $('Validate email').item.json.did_you_mean }}",
            "ZB SMTP Provider": "={{ $('Validate email').item.json.smtp_provider }}",
            "ZB Domain Age Days": "={{ $('Validate email').item.json.domain_age_days }}"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "First Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Accepted At",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Accepted At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Accepted Reason",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Accepted Reason",
              "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": "ZB Free Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Did You Mean",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Account",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Domain",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Domain Age Days",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB SMTP Provider",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB MX Found",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB MX Record",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ZB Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 490801678,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k/edit#gid=490801678",
          "cachedResultName": "Accepted"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce Jotform ActiveCampaign"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9364d501-4933-4b52-b8b5-f810d9f8bbd6",
      "name": "Add to Rejected",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2880,
        992
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Jotform Trigger').item.json['E-mail'] }}",
            "ZB Score": "={{ $node[\"Score email\"] ? $('Score email').item.json.score : \"\" }}",
            "Last Name": "={{ $('Jotform Trigger').item.json['Full Name'].last }}",
            "ZB Domain": "={{ $('Validate email').item.json.domain }}",
            "ZB Status": "={{ $('Validate email').item.json.status }}",
            "First Name": "={{ $('Jotform Trigger').item.json['Full Name'].first }}",
            "ZB Account": "={{ $('Validate email').item.json.account }}",
            "Rejected At": "={{ $now }}",
            "ZB MX Found": "={{ $('Validate email').item.json.mx_found }}",
            "ZB MX Record": "={{ $('Validate email').item.json.mx_record }}",
            "Reject Reason": "={{ $json.reason }}",
            "ZB Free Email": "={{ $('Validate email').item.json.free_email }}",
            "ZB Sub Status": "={{ $('Validate email').item.json.sub_status }}",
            "ZB Did You Mean": "={{ $node[\"Validate email\"] ? $('Validate email').item.json.did_you_mean : \"\" }}",
            "ZB SMTP Provider": "={{ $('Validate email').item.json.smtp_provider }}",
            "ZB Domain Age Days": "={{ $('Validate email').item.json.domain_age_days }}"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "First Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Last Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Rejected At",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Rejected At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reject Reason",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reject Reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Sub Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Sub Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Free Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Did You Mean",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Account",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Domain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Domain Age Days",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB SMTP Provider",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB MX Found",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB MX Record",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Score",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ZB Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1C-V2jrev3Ep7G532VHIrEbFlBF9rLeVgyhV-SXA4-GQ/edit#gid=0",
          "cachedResultName": "Rejected"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce Jotform ActiveCampaign"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "71f773fb-3047-4b51-8531-0cf605fa41eb",
      "name": "High score",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        496
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "High score"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0c04b59b-946c-4a25-99fa-6bd777bf4a04",
      "name": "Valid",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "760f0ae8-a358-4875-9607-37f2d827bafe",
              "name": "reason",
              "type": "string",
              "value": "Valid"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "04df1c3a-eb64-4381-9d8e-bfd2c84fa7f9",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        1120
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 208,
        "content": "## \u26a1 Trigger & Verification"
      },
      "typeVersion": 1
    },
    {
      "id": "5bdafc6b-8c47-4781-9586-c8e4e7bb5655",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        784
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 448,
        "content": "## \u2714\ufe0f Stage 1: Email Validation"
      },
      "typeVersion": 1
    },
    {
      "id": "3ac91dc2-5da5-4592-bfb7-5dbdcc332c1c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1936,
        608
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 432,
        "content": "## \ud83c\udfaf Stage 2: Email Scoring"
      },
      "typeVersion": 1
    },
    {
      "id": "a7eabb06-7960-4f28-ba18-d22574acab41",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2608,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 1568,
        "content": "## \ud83d\udce4 Output Results\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7c1297ff-2bc5-4569-a6ec-4435a56d6f9f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1536,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 518,
        "height": 288,
        "content": "![ZeroBounce Logo](https://raw.githubusercontent.com/zerobounce/n8n-nodes-zerobounce/main/icons/zb-logo-purple.svg)"
      },
      "typeVersion": 1
    },
    {
      "id": "fed33475-96fc-4099-9278-05741281552a",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        1376
      ],
      "parameters": {
        "color": 7,
        "width": 864,
        "height": 432,
        "content": "### \ud83d\udccb Setup Requirements\n- **Jotform:** Connect via API Key to receive \"Form Submission\" events.\n- **ZeroBounce:** Connect via API Key. *[Create one here](https://www.zerobounce.net/members/API)*.\n- **ActiveCampaign:** Connect via API Key to create/update people for high-quality leads.\n- **Google Sheets:** Connect via OAuth2 to append/update rows in a Google Sheets worksheet. Alternatively, swap these nodes out with any other data storage node e.g. **n8n Data Table** or **Microsoft Excel**. The sheets/tables can be created with the headers:\n    - *Accepted* columns:\n`Email,First Name,Last Name,Accepted At,Accepted Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score`\n    - *Rejected* columns\n`Email,First Name,Last Name,Rejected At,Rejected Reason,ZB Status,ZB Sub Status,ZB Free Email,ZB Did You Mean,ZB Account,ZB Domain,ZB Domain Age Days,ZB SMTP Provider,ZB MX Found,ZB MX Record,ZB Score`"
      },
      "typeVersion": 1
    },
    {
      "id": "2f6b6bea-1738-4191-a154-59e253d705f3",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        944
      ],
      "parameters": {
        "color": 7,
        "width": 864,
        "height": 128,
        "content": "### \ud83d\udca1 Key Benefits\n- **\u2728 Zero-Waste Sync:** Only \"Valid\" or \"High-Scoring\" leads reach your CRM.\n- **\ud83d\udee1\ufe0f Credit Safety:** Internal checks ensure you never trigger an API call without credits.\n- **\ud83d\udcca Detailed Suppressions:** Every rejected lead is categorized by reason (e.g. Email Missing, Invalid, Low Score, or Insufficient credits)."
      },
      "typeVersion": 1
    },
    {
      "id": "a942bc5b-8e2f-4cc4-a17f-4119f1aa0b83",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        1120
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 208,
        "content": "### \ud83e\udde9 Nodes used in this workflow\n- [ZeroBounce](https://n8n.io/integrations/zerobounce)\n- [Jotform Trigger](https://n8n.io/integrations/jotform-trigger)\n- [ActiveCampaign](https://n8n.io/integrations/activecampaign)\n- [Google Sheets](https://n8n.io/integrations/google-sheets) (or alternative e.g. [Data Table](https://n8n.io/integrations/data-table))"
      },
      "typeVersion": 1
    },
    {
      "id": "1ced2aff-7c67-4b10-b01e-b28e85d94d91",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        448
      ],
      "parameters": {
        "color": 7,
        "width": 864,
        "height": 448,
        "content": "### \ud83d\ude80 How it Works\n1. **\u26a1 Trigger & Verification:** Activates on new **Jotform** submissions and first checks if an email address is provided.\n    - **Email present:** Proceeds to credit check and validation\n    - **Email missing:** Customer details are added to *Rejected* output for review with reason `'Email missing'`.\n2. **\ud83d\udcb3 Credit Management:** Before each ZeroBounce call, the workflow checks your account for sufficient credits to prevent node failures. \n    - **Success:** Proceeds to Stage 1 (Validation).\n    - **Failure:** Customer details are added to *Rejected* output for retry with reason `'Not enough credits'`.\n3. **\u2714\ufe0f Stage 1: Email Validation:** Validates the email address with ZeroBounce. \n    - **Valid:** Adds the result to *Accepted* output and creates a person in **ActiveCampaign**.\n    - **Invalid:** Logs to a **Google Sheet** with the validation results and a reason for rejection for review.\n    - **Catch-all:** Proceeds to Stage 2 (Scoring).\n4.  **\ud83c\udfaf Stage 2: Email Scoring:** For \"Catch-all\" emails, the workflow requests **ZeroBounce Scoring**.\n    - **High Score (>=9):** Syncs to **ActiveCampaign**.\n    - **Medium/Low Score:** Suppressed and added to a **Google Sheet** with the assigned score for review.\n5. **\ud83d\udce4 Output Results:**\n    - **Accepted:** Output validation and scoring results to *Accepted* and **ActiveCampaign**\n    - **Rejected** Output validation and scoring results to *Rejected*."
      },
      "typeVersion": 1
    },
    {
      "id": "b80044b1-5903-42fb-8ca7-224b72a660c8",
      "name": "Add to Rejected not validated",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2880,
        1552
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.email_override }}",
            "Last Name": "={{ $('Jotform Trigger').item.json['Full Name'].last }}",
            "First Name": "={{ $('Jotform Trigger').item.json['Full Name'].first }}",
            "Rejected At": "={{ $now }}",
            "Reject Reason": "={{ $json.reason }}"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "First Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Last Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Rejected At",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Rejected At",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reject Reason",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reject Reason",
              "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": "ZB Free Email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Free Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Did You Mean",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Did You Mean",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Domain",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Domain Age Days",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Domain Age Days",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB SMTP Provider",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB SMTP Provider",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB MX Found",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB MX Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB MX Record",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB MX Record",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZB Score",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZB Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k/edit#gid=0",
          "cachedResultName": "Rejected"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1fG6zRuJAVOryq15axOqLplwczFV-KPsM0JR2lUKIK-k/edit?usp=drivesdk",
          "cachedResultName": "ZeroBounce Jotform ActiveCampaign"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c4448f0c-8ace-4af4-8624-57ff02d95994",
      "name": "Jotform Trigger",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        864,
        1168
      ],
      "parameters": {
        "form": "260114799366364"
      },
      "credentials": {
        "jotFormApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9a11589c-43be-4ed4-ae06-11c45e2d2bee",
      "name": "Create an ActiveCampaign contact",
      "type": "n8n-nodes-base.activeCampaign",
      "position": [
        3104,
        400
      ],
      "parameters": {
        "email": "={{ $json.Email }}",
        "updateIfExists": true,
        "additionalFields": {
          "lastName": "={{ $('Jotform Trigger').item.json['Full Name'].last }}",
          "firstName": "={{ $('Jotform Trigger').item.json['Full Name'].first }}"
        }
      },
      "credentials": {
        "activeCampaignApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "7a9e076e-18e6-4ea1-8374-ecc52546cc8c",
  "connections": {
    "Valid": {
      "main": [
        [
          {
            "node": "Add to Accepted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Status": {
      "main": [
        [
          {
            "node": "Valid",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check credits for scoring",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Low score": {
      "main": [
        [
          {
            "node": "Add to Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Not valid": {
      "main": [
        [
          {
            "node": "Add to Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has email?": {
      "main": [
        [
          {
            "node": "Check credits for validation",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Email missing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "High score": {
      "main": [
        [
          {
            "node": "Add to Accepted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Score email": {
      "main": [
        [
          {
            "node": "Filter by score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Medium score": {
      "main": [
        [
          {
            "node": "Add to Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email missing": {
      "main": [
        [
          {
            "node": "Add to Rejected not validated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate email": {
      "main": [
        [
          {
            "node": "Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to Accepted": {
      "main": [
        [
          {
            "node": "Create an ActiveCampaign contact",
            "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
          }
        ]
      ]
    },
    "Jotform Trigger": {
      "main": [
        [
          {
            "node": "Has email?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check credits for scoring": {
      "main": [
        [
          {
            "node": "Score email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not enough credits for scoring",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check credits for validation": {
      "main": [
        [
          {
            "node": "Validate email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Not enough credits for validation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Not enough credits for scoring": {
      "main": [
        [
          {
            "node": "Add to Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Not enough credits for validation": {
      "main": [
        [
          {
            "node": "Add to Rejected not validated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}