← All Analytics

Mention email verification with BillionVerify

Mention is a media monitoring and social listening analytics platform that tracks brand mentions across the web. When contacts or leads reach out through monitored channels, keeping their email addresses clean ensures your follow-up campaigns actually land in inboxes rather than bouncing back or flagging your domain as a spam source.

Why verify before the send

Analytics tools like Mention often feed contact data into downstream email workflows. Sending to invalid, disposable, or catch-all addresses inflates bounce rates, hurts sender reputation, and distorts engagement metrics. BillionVerify scrubs those addresses before they ever reach your email stack, so every message counts.

Ready-to-use n8n workflow

Import this workflow into n8n — it verifies every address with BillionVerify before Mention sends, so only deliverable contacts are emailed. Install the BillionVerify community node first, then add your API key. Adapted from this n8n template

verify-emails-in-mention.json
{
  "name": "Monitor brand mentions with GPT-5 Nano, Brave Search, Gmail and Google Sheets + BillionVerify",
  "nodes": [
    {
      "id": "efea64ae-8882-4b1f-b510-220425347f03",
      "name": "Loop Setup",
      "type": "n8n-nodes-base.set",
      "position": [
        -2560,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "loop1",
              "name": "currentDork",
              "type": "string",
              "value": "={{ $json.currentDork }}"
            },
            {
              "id": "loop2",
              "name": "keyword",
              "type": "string",
              "value": "={{ $json.keyword }}"
            },
            {
              "id": "loop3",
              "name": "bannedDomains",
              "type": "array",
              "value": "={{ $json.bannedDomains }}"
            },
            {
              "id": "loop4",
              "name": "timeRange",
              "type": "string",
              "value": "={{ $json.timeRange }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bdf1a944-7c81-4b13-93ad-8e20cdd589cc",
      "name": "Split Dorky",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -2864,
        112
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "1c106d24-67fa-4158-b5a7-954d8622796f",
      "name": "Split Results",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -2080,
        272
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "web.results"
      },
      "typeVersion": 1
    },
    {
      "id": "a482ff88-e998-4c99-92cf-37f9ffa3fff4",
      "name": "Extract Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -1936,
        272
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "url",
              "type": "string",
              "value": "={{ $json.url }}"
            },
            {
              "id": "a2",
              "name": "title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "a3",
              "name": "source",
              "type": "string",
              "value": "={{ $json.meta_url.hostname }}"
            },
            {
              "id": "a4",
              "name": "published",
              "type": "string",
              "value": "={{ $json.page_age }}"
            },
            {
              "id": "a5",
              "name": "snippet",
              "type": "string",
              "value": "={{ $json.description }}"
            },
            {
              "id": "a6",
              "name": "domain",
              "type": "string",
              "value": "={{ $json.profile.long_name }}"
            },
            {
              "id": "a7",
              "name": "bannedDomains",
              "type": "array",
              "value": "={{ $('Loop Setup').item.json.bannedDomains }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "507e1597-a630-4a2a-a60f-05e6d21191a1",
      "name": "Continue Loop",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1600,
        352
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d28025b9-2ed7-4b99-b166-fc06f36c793f",
      "name": "Check & Log to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -3200,
        -352
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "credential-id",
          "name": "TEMPLATE"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "214ecac2-ca55-4346-8d8b-d6ffc80270be",
      "name": "Format Email",
      "type": "n8n-nodes-base.code",
      "position": [
        -1456,
        -352
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\n\nif (items.length === 0) {\n  return [];\n}\n\nlet emailBody = `\n<div style=\"font-family: Arial, sans-serif; max-width: 600px;\">\n  <h2 style=\"color: #1DB954;\">🎸 ${items.length} nová zmínka${items.length > 1 ? 'y' : ''} o ${$('Set Config').item.json.keyword} !</h2>\n  <p style=\"color: #666;\">I found these new mentions in the last 24 hours:</p>\n`;\n\nfor (const item of items) {\n  emailBody += `\n    <div style=\"margin: 20px 0; padding: 15px; border-left: 4px solid #1DB954; background: #f9f9f9;\">\n      <h3 style=\"margin: 0 0 10px 0; color: #333;\">${item.json.title}</h3>\n      <p style=\"margin: 5px 0;\"><strong>📰 Zdroj:</strong> ${item.json.source} (${item.json.domain})</p>\n      <p style=\"margin: 5px 0;\"><strong>📅 Published:</strong> ${item.json.published}</p>\n      <p style=\"margin: 5px 0;\"><strong>🔗 Link:</strong> <a href=\"${item.json.url}\" style=\"color: #1DB954;\">${item.json.url}</a></p>\n      <p style=\"margin: 10px 0 0 0; color: #666; font-style: italic;\">${item.json.snippet}</p>\n    </div>\n  `;\n}\n\nemailBody += `\n  <hr style=\"margin: 30px 0; border: none; border-top: 1px solid #ddd;\">\n  <p style=\"color: #999; font-size: 12px;\">You can find all mentions in Google Sheets. This email was generated automatically by n8n workflow.</p>\n</div>\n`;\n\nreturn [{\n  json: {\n    subject: `🎸 ${items.length} new mention${items.length > 1 ? 'y' : ''} about ${$('Set Config').item.json.keyword} !`,\n    body: emailBody,\n    count: items.length\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "20511f36-e3f6-4e42-83f8-59241a0c5080",
      "name": "Send Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -1296,
        -352
      ],
      "webhookId": "6bb914b3-d626-414a-9912-fb9f1e46e910",
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{$json.body}}",
        "options": {},
        "subject": "={{$json.subject}}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "credential-id",
          "name": "TEMPLATE"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6d3679ab-f01f-455a-8588-2783fe249821",
      "name": "No New Results",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1456,
        -208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "dfc84274-2458-4a4a-b0c9-8e34c921e4c1",
      "name": "Every Day",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -3392,
        -32
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 6
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "48167150-df48-4708-ade8-f0acd3de9738",
      "name": "Brave Search",
      "type": "@brave/n8n-nodes-brave-search.braveSearch",
      "position": [
        -2416,
        336
      ],
      "parameters": {
        "count": 3,
        "query": "={{ $json.currentDork }}",
        "additionalParameters": {
          "freshness": "pd"
        }
      },
      "credentials": {
        "braveSearchApi": {
          "id": "credential-id",
          "name": "TEMPLATE"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8b7eaf91-cf0b-4d09-8e78-787cc54d566a",
      "name": "Set Config",
      "type": "n8n-nodes-base.code",
      "position": [
        -3056,
        -32
      ],
      "parameters": {
        "jsCode": "const keyword = $input.first().json.keyword;\nconst description = $input.first().json.description;\n\nconst dorky = [\n  `\"${keyword}\" music`,\n  `\"${keyword}\" concert`,\n  `\"${keyword}\" festival`,\n  `\"${keyword}\" album`,\n  `\"${keyword}\" band`,\n  `(\"${keyword}\" OR \"${keyword.replace(' ', '')}\") AND (music OR concert OR festival OR release)`\n];\n\nconst bannedDomains = [\n  'spotify.com',\n  'open.spotify.com',\n  'music.apple.com',\n  'bandcamp.com',\n  'soundcloud.com',\n  'youtube.com',\n  'youtu.be',\n  'instagram.com',\n  'facebook.com',\n  'twitter.com',\n  'x.com',\n  'tiktok.com',\n  'linktr.ee'\n];\n\n// Vrať array - každý dork jako samostatný item\nreturn dorky.map(dork => ({\n  json: {\n    currentDork: dork,\n    keyword: keyword,\n    description: description,\n    bannedDomains: bannedDomains,\n    timeRange: 'pd'  // past day pro Brave API\n  }\n}));"
      },
      "typeVersion": 2
    },
    {
      "id": "2961b163-3967-405c-81a8-5904970fd717",
      "name": "HasResult?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2272,
        336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a842e0db-94c6-4bce-9f9e-bf18221ba016",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.web.results.length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "18bfc460-da2c-45a0-bb9b-8701f1cb7142",
      "name": "FilterBannedDomains",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1792,
        272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9529f246-48e2-4c62-80bd-5a8edd821f4d",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !$json.bannedDomains.some(d => $json.domain.includes(d)) }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3,
      "alwaysOutputData": true
    },
    {
      "id": "f205a15e-a0a0-4f53-9f6c-16c47c43326d",
      "name": "Remove Duplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        -2592,
        -224
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "url"
      },
      "typeVersion": 2
    },
    {
      "id": "f31f7bcc-8e68-4f8c-a32e-68995b33692c",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -2272,
        -128
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "GPT-5-NANO"
        },
        "options": {
          "textFormat": {
            "textOptions": {
              "type": "json_object",
              "verbosity": "low"
            }
          }
        },
        "responses": {
          "values": [
            {
              "content": "=Web details:\nTitle: {{ $json.title }}\nSnippet: {{ $json.snippet }}\nURL: {{ $json.url }}\n\nBrand details:\nKeyword: {{ $('Set Config').item.json.keyword }}\nDescription: {{ $('Set Config').item.json.description }}\n\nAccording to the provided context, is this article?"
            },
            {
              "role": "system",
              "content": "You are a brand mention verification system. Your job is to determine if an article is about a specific brand.\n\nYou will receive:\n- keyword: brand name\n- description: description of the brand\n- title: article title  \n- snippet: article excerpt\n- url: article URL\n\nReturn ONLY a JSON object with this structure:\n{\n  \"isRelevant\": true/false,\n  \"confidence\": \"high/medium/low\",\n  \"reason\": \"brief explanation\"\n}\n\nRules:\n- If the article is about the music artist/band with that name → isRelevant: true\n- If it's about something else (different topic, different person, unrelated) → isRelevant: false\n- Be strict: only mark as relevant if it's clearly about the brand"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "credential-id",
          "name": "TEMPLATE"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "010c4f11-e1d1-4130-8696-381e22e2f339",
      "name": "5s",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2736,
        336
      ],
      "webhookId": "4883a8b3-d9ce-4ceb-993d-09f871c25446",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "0913b368-da12-479a-b6b1-fa4f33948af5",
      "name": "URL_Is_NOT_empty",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2752,
        -224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "20aef9d4-6807-484c-9da5-c087df9a6794",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.url }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "0a1b72ac-2d70-4450-b66b-c2e0eadc8b77",
      "name": "RelevancyVerification",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -2432,
        -224
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "2ca0ce23-9203-4a07-81c8-65bd410ace9c",
      "name": "MergeOutput&Input",
      "type": "n8n-nodes-base.code",
      "position": [
        -2016,
        -128
      ],
      "parameters": {
        "jsCode": "// Get the AI output\nconst aiData = $input.first().json;\nlet aiResult;\n\ntry {\n  // Extract the text object from the nested structure\n  aiResult = aiData.output[0].content[0].text;\n} catch (e) {\n  // Fallback if structure is different\n  aiResult = {\n    isRelevant: false,\n    confidence: 'low',\n    reason: 'Failed to parse AI response'\n  };\n}\n\n// Get the original data from Extract Data node\nconst originalData = $('Extract Data').item.json;\n\n// Merge everything together\nreturn [{\n  json: {\n    url: originalData.url,\n    title: originalData.title,\n    source: originalData.source,\n    domain: originalData.domain,\n    published: originalData.published,\n    snippet: originalData.snippet,\n    isRelevant: aiResult.isRelevant,\n    verificationConfidence: aiResult.confidence,\n    verificationReason: aiResult.reason\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "f3794ee9-f9f6-4047-a3d1-73eace15b0c6",
      "name": "FilterRelevantOnly",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2240,
        -272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5c180f1c-0a75-46b3-b9f4-850f4722468d",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.isRelevant }}",
              "rightValue": false
            }
          ]
        }
      },
      "typeVersion": 2.3,
      "alwaysOutputData": true
    },
    {
      "id": "0a48c33e-9051-414e-ad53-da11440b32be",
      "name": "No Relevant Results",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -1216,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "cd1d7732-5c82-48d2-ad92-eef043098d72",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1808,
        -336
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "joinMode": "keepNonMatches",
        "mergeByFields": {
          "values": [
            {
              "field1": "URL",
              "field2": "url"
            }
          ]
        },
        "outputDataFrom": "input2"
      },
      "typeVersion": 3.2
    },
    {
      "id": "e54e072d-d123-41fe-800b-0a213ba1860f",
      "name": "NewURL?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1648,
        -336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e2393571-e002-4c92-9c1f-3b2b92e2ffb9",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Object.keys($json).length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "b4b11e13-c3db-44ec-bf4a-2e27d83f250b",
      "name": "AnyRelevantResults?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2048,
        -272
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2ad314b3-034b-494a-b3ba-343d299010dc",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Object.keys($json).length }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "450e7974-34ae-460c-b068-f6d2cc214332",
      "name": "InsertSentRows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1104,
        -352
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "credential-id",
          "name": "TEMPLATE"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "553ed547-d78a-4d8c-a089-878ed3136bba",
      "name": "Set keyword and description",
      "type": "n8n-nodes-base.set",
      "position": [
        -3216,
        -32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "993b1670-77b6-4e1c-9643-35dad41b3f2c",
              "name": "keyword",
              "type": "string",
              "value": "Goofy Cow"
            },
            {
              "id": "7c9c0c63-8d5f-4856-a454-00af86d4f27a",
              "name": "description",
              "type": "string",
              "value": "Goofy Cow is a czech music band. "
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "695460b4-5357-4412-9b85-6ea6ec02553b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3680,
        -528
      ],
      "parameters": {
        "width": 272,
        "height": 912,
        "content": "# How it works\n\nTrigger fires once per day\nBrave Search API executes searches for the past 24 hours using configured dorky.\n\nResults are filtered against banned domains\nRemaining results go through GPT-5 Nano verification.\n\nVerified mentions are cross-matched against historical results (loaded from Google Sheet).\n\nNew mentions are sent via email and appended to the tracking sheet\n\n## Configuration Requirements:\n\n* Keyword (brand name)\n* .Keyword description (optional context for AI)\n* Dorky (array of search query variations)\n* Banned domains (list of domains to exclude)"
      },
      "typeVersion": 1
    },
    {
      "id": "1e8b6386-1540-40b5-a13a-3e2cf811261c",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3392,
        -48
      ],
      "parameters": {
        "color": 5,
        "width": 528,
        "height": 512,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 1. Setup your brand :\nThis section contains the configuration node where you define your monitoring parameters.\n\n## Configuration Fields:\n* Keyword: The exact name of brand\n* Keyword Description \n* Dorky\n* Banned Domains\n"
      },
      "typeVersion": 1
    },
    {
      "id": "69b23f7c-0b3c-4af1-8f72-568331ee356e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2864,
        -528
      ],
      "parameters": {
        "color": 5,
        "width": 992,
        "height": 608,
        "content": "## 4. Verification\nThis section handles data cleanup and AI-powered relevance verification.\nProcess Flow:\n\n* Filter URL Exists: Removes any results without valid URLs\n* Deduplicate: Eliminates duplicate URLs found across multiple dorky\n* AI Verification: Each unique result is sent to GPT-5 Nano for relevance check"
      },
      "typeVersion": 1
    },
    {
      "id": "c113b1f8-f934-44e7-9923-be1c101709ad",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3392,
        -528
      ],
      "parameters": {
        "color": 5,
        "width": 528,
        "height": 480,
        "content": "## 2. Load File with previous results\nThis section loads historical data from your Google Sheet to enable duplicate detection."
      },
      "typeVersion": 1
    },
    {
      "id": "f65e8129-16e5-43e8-a868-9d3693504630",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2704,
        112
      ],
      "parameters": {
        "color": 5,
        "width": 576,
        "height": 208,
        "content": "##  3. Split Dorky Section\nThis section executes the core search loop, processing each dork sequentially.\nProcess:\n\n* Each search query (dork) is executed individually via Brave Search API\n* Results are filtered against banned domains\n* Valid results proceed to the next stage"
      },
      "typeVersion": 1
    },
    {
      "id": "c25dd165-96ef-4fa5-a5b2-8e12e6ef8be1",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1856,
        -64
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 208,
        "content": "## Prompt Note\n* **System Prompt:** Defines the verification task. The AI acts as a brand mention verification system, determining if an article is genuinely about your music artist/band (not a different person with the same name, unrelated topic, etc.).\n\n* **User Prompt:** Provides the article context (keyword, title, snippet, URL) and asks for verification."
      },
      "typeVersion": 1
    },
    {
      "id": "eaf1ab50-2fe5-4b44-be3e-59afd7dddcde",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1872,
        -528
      ],
      "parameters": {
        "color": 5,
        "width": 896,
        "height": 448,
        "content": "## 5. Merge & Send\nThis section finalizes results and delivers notifications."
      },
      "typeVersion": 1
    },
    {
      "parameters": {
        "operation": "verify",
        "email": "={{ $json.email || $json.Email }}",
        "additionalOptions": {}
      },
      "type": "n8n-nodes-billionverify.billionVerify",
      "typeVersion": 1,
      "position": [
        -1656,
        -352
      ],
      "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": [
        -1476,
        -352
      ],
      "name": "IF deliverable"
    }
  ],
  "connections": {
    "5s": {
      "main": [
        [
          {
            "node": "Loop Setup",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "NewURL?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "NewURL?": {
      "main": [
        [
          {
            "node": "Format Email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No New Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Day": {
      "main": [
        [
          {
            "node": "Set keyword and description",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check & Log to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HasResult?": {
      "main": [
        [
          {
            "node": "Split Results",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Continue Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Setup": {
      "main": [
        [
          {
            "node": "Brave Search",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Email": {
      "main": [
        [
          {
            "node": "InsertSentRows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Config": {
      "main": [
        [
          {
            "node": "Split Dorky",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Dorky": {
      "main": [
        [
          {
            "node": "URL_Is_NOT_empty",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Brave Search": {
      "main": [
        [
          {
            "node": "HasResult?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Data": {
      "main": [
        [
          {
            "node": "FilterBannedDomains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Email": {
      "main": [
        [
          {
            "node": "Verify Email (BillionVerify)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Continue Loop": {
      "main": [
        [
          {
            "node": "Split Dorky",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Results": {
      "main": [
        [
          {
            "node": "Extract Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "MergeOutput&Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "URL_Is_NOT_empty": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MergeOutput&Input": {
      "main": [
        [
          {
            "node": "RelevancyVerification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "RelevancyVerification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FilterRelevantOnly": {
      "main": [
        [
          {
            "node": "AnyRelevantResults?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AnyRelevantResults?": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "No Relevant Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FilterBannedDomains": {
      "main": [
        [
          {
            "node": "Continue Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check & Log to Sheet": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RelevancyVerification": {
      "main": [
        [
          {
            "node": "FilterRelevantOnly",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set keyword and description": {
      "main": [
        [
          {
            "node": "Set Config",
            "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": {
    "availableInMCP": false,
    "executionOrder": "v1"
  }
}

Workflow templates with Mention

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

How it works

  1. 1

    Connect BillionVerify to Mention via the n8n community node, Integrately, or the REST API.

  2. 2

    Set up a trigger whenever a new contact or lead is captured in Mention.

  3. 3

    BillionVerify checks each email address for validity, disposable domains, role accounts, and catch-all status.

  4. 4

    Addresses that pass verification flow into your email workflow; invalid ones are flagged or discarded.

  5. 5

    Monitor verification results and refine your filtering rules over time to maintain list hygiene.

When to use this

Clean leads captured from brand monitoring alerts

When Mention surfaces a prospect who mentioned your brand, verify their email before adding them to a nurture sequence. Filtering out invalid and role-based addresses keeps your outreach deliverable and your domain reputation intact.

Validate contacts before exporting to email campaigns

Before pushing a Mention contact list to your email platform, run each address through BillionVerify to remove disposable and undeliverable entries, reducing bounce rates and protecting your sender score.

FAQ

Why should I verify emails from a media monitoring tool?

Brand monitoring often surfaces contact emails from web forms or social profiles. These can be outdated, disposable, or role-based. Verifying before you email protects your sender reputation and improves deliverability.

Does BillionVerify detect catch-all email addresses?

Yes. BillionVerify identifies catch-all domains that accept any address regardless of whether the mailbox exists, so you can decide how to handle those contacts based on your risk tolerance.

Can I use Integrately to connect Mention with BillionVerify without coding?

Yes. Integrately offers a 1-click integration that routes contact data from Mention through BillionVerify automatically, requiring no custom code.

Verify emails in Mention

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

Get started free