← All Developer Tools

Bubble email verification with BillionVerify

Bubble is a no-code platform that lets teams build fully functional web applications without writing traditional code. Adding email verification to your Bubble app protects your user database from fake sign-ups, reduces bounce rates on transactional emails, and keeps your app's communication workflows reliable.

Why verify before the send

No-code apps built on Bubble often collect user emails through sign-up forms, waitlists, and checkout flows. Without verification, invalid and disposable addresses accumulate quickly, inflating your user count while degrading email deliverability. BillionVerify ensures only real, reachable addresses enter your Bubble database.

Ready-to-use n8n workflow

Import this workflow into n8n β€” it verifies every address with BillionVerify before Bubble sends, so only deliverable contacts are emailed. Install the BillionVerify community node first, then add your API key.

verify-emails-in-bubble.json
{
  "name": "Verify emails before sending in Bubble + BillionVerify",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        240,
        300
      ],
      "name": "When clicking β€˜Test workflow’"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "email-field",
              "name": "email",
              "value": "jane@example.com",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        460,
        300
      ],
      "name": "Get contacts"
    },
    {
      "parameters": {
        "sendTo": "={{ $json.email }}",
        "subject": "Message for Bubble contacts",
        "message": "Replace this Gmail send with your Bubble node β€” only deliverable, verified contacts reach it.",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        900,
        300
      ],
      "name": "Send email",
      "webhookId": "",
      "credentials": {
        "gmailOAuth2": {
          "id": "",
          "name": "Gmail account"
        }
      }
    },
    {
      "parameters": {
        "operation": "verify",
        "email": "={{ $json.email }}",
        "additionalOptions": {}
      },
      "type": "n8n-nodes-billionverify.billionVerify",
      "typeVersion": 1,
      "position": [
        540,
        300
      ],
      "name": "Verify Email (BillionVerify)",
      "credentials": {
        "billionVerifyApi": {
          "id": "",
          "name": "BillionVerify account"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "is-deliverable",
              "leftValue": "={{ $json.is_deliverable }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ]
        }
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        720,
        300
      ],
      "name": "IF deliverable"
    }
  ],
  "connections": {
    "When clicking β€˜Test workflow’": {
      "main": [
        [
          {
            "node": "Get contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get contacts": {
      "main": [
        [
          {
            "node": "Verify Email (BillionVerify)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Email (BillionVerify)": {
      "main": [
        [
          {
            "node": "IF deliverable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF deliverable": {
      "main": [
        [
          {
            "node": "Send email",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

Workflow templates with Bubble

Ready-to-use workflows that verify emails before Bubble sends.

How it works

  1. 1

    Set up BillionVerify using the REST API, n8n community node, or Integrately to connect it to your Bubble workflows.

  2. 2

    Add an API Connector call in Bubble that sends an email address to BillionVerify whenever a form is submitted.

  3. 3

    BillionVerify returns a verification result covering validity, disposable status, role-address flags, and catch-all detection.

  4. 4

    Use Bubble's conditional logic to accept or reject the address based on the result before saving it to the database.

  5. 5

    Optionally log verification outcomes in a Bubble data type for auditing and analytics.

When to use this

Block fake sign-ups at registration

Call BillionVerify via the REST API from a Bubble workflow the moment a user submits their email. Reject disposable or invalid addresses before the account is created, keeping your user base clean from day one.

Protect transactional email delivery

Bubble apps frequently send welcome emails, password resets, and order confirmations. Verifying addresses before each send prevents bounces that could get your sending domain flagged or blacklisted.

Validate imported contact lists

When users upload CSVs or bulk data into your Bubble app, run those addresses through BillionVerify in batch mode to filter out invalid entries before they pollute your workflows.

FAQ

How do I call BillionVerify from Bubble?

Use Bubble's API Connector plugin to make a GET or POST request to the BillionVerify REST API. Pass the email address as a parameter and use the response to conditionally proceed in your workflow.

Will this add friction to my sign-up flow?

Real-time single lookups typically complete in under a second, so users will not notice any delay. You can also run verifications asynchronously after initial sign-up if you prefer.

Can I verify existing records already in my Bubble database?

Yes. Use a scheduled API workflow in Bubble to iterate over existing records and verify each email in batch, then update the record with the verification status.

What should I do with catch-all addresses?

Catch-all domains accept any email, making deliverability uncertain. BillionVerify flags them so you can choose to accept, quarantine, or prompt users to confirm their address with a double opt-in.

Verify emails in Bubble

Create a free account, grab your API key, and stop bounces before they happen.

Get started free