← All Analytics

Posthog email verification with BillionVerify

PostHog is an open-source product analytics platform that tracks user behavior, runs experiments, and records sessions. Email addresses captured during sign-up or product events are central to user identification β€” BillionVerify ensures those addresses are real before they pollute your analytics data.

Why verify before the send

Fake or disposable email addresses skew your PostHog cohorts, inflate user counts, and corrupt funnel data. When invalid users enter your product analytics pipeline, A/B test results become unreliable and retention metrics mislead product decisions. Verifying emails at the source protects the integrity of every downstream insight.

Ready-to-use n8n workflow

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

verify-emails-in-posthog.json
{
  "name": "Verify emails before sending in PostHog + 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 PostHog contacts",
        "message": "Replace this Gmail send with your PostHog 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 Posthog

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

How it works

  1. 1

    Integrate BillionVerify via the n8n community node, Integrately, or the REST API to fit your existing PostHog data pipeline.

  2. 2

    Intercept email addresses at sign-up or import, before the identity event is sent to PostHog.

  3. 3

    BillionVerify checks each address for validity, disposable domain use, catch-all servers, and role-account patterns.

  4. 4

    Only verified addresses proceed to PostHog identity creation; rejected ones are flagged or blocked based on your policy.

  5. 5

    Monitor verification outcomes alongside your PostHog events to track the volume of filtered contacts over time.

When to use this

Block fake users from polluting analytics cohorts

Verify email addresses at sign-up before the user identity is created in PostHog. Filtering out disposable and invalid addresses keeps your cohorts accurate and ensures funnel analysis reflects genuine user behavior.

Improve experiment reliability by excluding bot sign-ups

A/B tests and feature flags assigned to fake accounts introduce noise. Running BillionVerify verification before user creation means your PostHog experiments are seeded with real users, making results statistically sound.

Keep CRM sync clean when exporting PostHog users

When exporting identified users from PostHog to a CRM or email tool, verify the addresses first so bounces do not damage sender reputation on the receiving platform.

FAQ

Why does email quality matter for a product analytics tool?

PostHog ties behavioral data to user identities anchored by email. Fake addresses create ghost users that inflate metrics, skew cohorts, and make retention or conversion data unreliable for product decisions.

Can BillionVerify integrate with PostHog via n8n?

Yes. The BillionVerify n8n community node lets you build workflows that verify emails before or after PostHog events, without writing custom server-side code.

What happens to addresses that fail verification?

You control the outcome. Common choices include blocking sign-up, asking the user to re-enter their email, or routing the record to a quarantine list for manual review β€” BillionVerify returns a structured result your logic can act on.

Does verification slow down the sign-up experience?

API response times are typically under one second, so verification can run synchronously at sign-up without a noticeable delay for users.

Verify emails in Posthog

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

Get started free