NeverBounce Form Shield: Real-Time Lead Verifier

Tired of lead pollution in your CRM? I built this ‘Gatekeeper’ workflow to stop fake and undeliverable emails at the source.

How it works:

  • Verification: Uses NeverBounce to check every email submitted via an n8n Form.

  • Validation Loop: If the email is invalid, it prompts the user to re-enter a valid one in real-time.

  • Clean Sync: Only 100% verified leads are pushed to your CRM (HubSpot/Salesforce).

Setup: Just swap the No-Op node for your preferred CRM node!

Json
{

“nodes”: [

{

  "parameters": {

    "formTitle": "Verify",

    "formFields": {

      "values": \[

        {

          "fieldLabel": "Email"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.formTrigger",

  "typeVersion": 2.5,

  "position": \[

    0,

    0

  \],

  "id": "bd74b608-3e8f-4681-9486-bfae15ed8f99",

  "name": "On form submission",

  "webhookId": "c7c72480-7be5-4a1c-b7ac-1e3af815b757"

},

{

  "parameters": {

    "emailField": "=Email",

    "additionalFields": {}

  },

  "type": "n8n-nodes-neverbounce-email-verification.nbEmailVerification",

  "typeVersion": 1,

  "position": \[

    208,

    0

  \],

  "id": "ce2a949e-55b0-49f6-8e0f-78cb9e34b6a0",

  "name": "Verify an email address",

  "credentials": {

    "neverBounceApi": {

      "id": "ju7366kCMJpZdqY5",

      "name": "NeverBounce account"

    }

  }

},

{

  "parameters": {

    "conditions": {

      "options": {

        "caseSensitive": true,

        "leftValue": "",

        "typeValidation": "strict",

        "version": 3

      },

      "conditions": \[

        {

          "id": "cbb5abf5-9734-4345-8087-39adbb4f666b",

          "leftValue": "={{ $json.verification_result.status }}",

          "rightValue": "valid",

          "operator": {

            "type": "string",

            "operation": "equals",

            "name": "filter.operator.equals"

          }

        }

      \],

      "combinator": "and"

    },

    "options": {}

  },

  "type": "n8n-nodes-base.if",

  "typeVersion": 2.3,

  "position": \[

    416,

    0

  \],

  "id": "9e82e251-21fa-4330-a1e7-adefe6da39ac",

  "name": "If"

},

{

  "parameters": {

    "operation": "completion",

    "completionTitle": "Form submitted successfully",

    "completionMessage": "Thank you for your submission",

    "options": {}

  },

  "type": "n8n-nodes-base.form",

  "typeVersion": 2.5,

  "position": \[

    800,

    -64

  \],

  "id": "9586ad65-74a1-486f-9f05-d286a4f17c6e",

  "name": "Form",

  "webhookId": "92540d6e-ed8e-4ce8-8eaf-7a3754af3855"

},

{

  "parameters": {},

  "type": "n8n-nodes-base.noOp",

  "typeVersion": 1,

  "position": \[

    624,

    -64

  \],

  "id": "70c75bb5-ff74-4d94-8755-1c682df7af33",

  "name": "Create Lead in CRM"

},

{

  "parameters": {

    "formFields": {

      "values": \[

        {

          "fieldLabel": "⚠️ Invalid email. Please check for typos and try again.",

          "fieldName": "Email"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.form",

  "typeVersion": 2.5,

  "position": \[

    624,

    96

  \],

  "id": "22889c9b-1602-4f0f-a39b-73b78cf1ed9c",

  "name": "Form - Invalid email submit again",

  "webhookId": "61665336-4f6b-4082-b7a4-40f827d81907",

  "onError": "continueRegularOutput",

  "notes": "Invalid email. Please enter a valid email"

}

],

“connections”: {

"On form submission": {

  "main": \[

    \[

      {

        "node": "Verify an email address",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"Verify an email address": {

  "main": \[

    \[

      {

        "node": "If",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"If": {

  "main": \[

    \[

      {

        "node": "Create Lead in CRM",

        "type": "main",

        "index": 0

      }

    \],

    \[

      {

        "node": "Form - Invalid email submit again",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"Form": {

  "main": \[

    \[\]

  \]

},

"Create Lead in CRM": {

  "main": \[

    \[

      {

        "node": "Form",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"Form - Invalid email submit again": {

  "main": \[

    \[

      {

        "node": "Verify an email address",

        "type": "main",

        "index": 0

      }

    \]

  \]

}

},

“pinData”: {},

“meta”: {

"templateCredsSetupCompleted": true,

"instanceId": "2220d92941497956cf87b2f3e973d41cbc7ee702408b7a5f004d5f4966c92f23"

}

}

Thanks for the thoughtful feedback, Benjamin! :bullseye:

You’re spot on about the confidence_score. Feeding that into lead scoring is a massive value-add for sales teams to prioritize high-intent leads.

For this specific blueprint, I focused on being the ‘Essential Gatekeeper’—keeping the setup under 2 minutes for GTM teams while still providing that critical ‘Error & Retry’ loop to save leads from typos.

Quick question for your expert opinion—in your experience, do most teams prefer a ‘Hard Block’ on invalid emails right at the form, or do they prefer a ‘Soft Flag’ that just tags them in the CRM for manual review?

I’m curious if adding more granular status tags would make the setup too ‘heavy’ for the average user, or if that’s the ‘Pro’ version people are looking for.