← All Analytics

Databox email verification with BillionVerify

Databox is a business analytics platform that aggregates KPIs from multiple data sources into real-time dashboards. When your dashboards track email marketing metrics, verifying contact lists with BillionVerify first means the numbers you see β€” open rates, deliverability β€” reflect actual engagement, not bounce noise.

Why verify before the send

Unverified email lists inflate send counts while deflating every meaningful metric. Cleaning lists with BillionVerify before campaigns run ensures your Databox dashboards show accurate deliverability rates, true open rates, and sender reputation scores worth acting on.

Ready-to-use n8n workflow

Import this workflow into n8n β€” it verifies every address with BillionVerify before Databox 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-databox.json
{
  "name": "Send weekly Databox paid ads performance reports to Slack and email + BillionVerify",
  "nodes": [
    {
      "id": "bf94a011-2f67-4330-aa95-bee4a2cc5eb1",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5904,
        6576
      ],
      "parameters": {
        "color": 7,
        "width": 1688,
        "height": 612,
        "content": "## Automated Paid Ads Weekly Performance Report via Databox MCP\n\nAutomate your paid advertising performance reporting across all platforms with AI-powered insights delivered every Monday morning. This workflow connects to your Databox account via MCP, automatically discovers which paid ads platforms you have connected, fetches 6 key metrics from each platform, calculates week-over-week performance changes, and sends beautifully formatted consolidated reports to both Slack and email-completely hands-free.\n\n### What you'll get\n- πŸ“Š Automated weekly reports \n- πŸ“ˆ 6 key metrics tracked per platform: Cost/Spend, Clicks, CPC, CTR, Impressions, Conversions\n- 🎯 Week-over-week % changes \n- πŸ’¬ Summary with highlights and AI-generated insights\n- πŸ“§ HTML email report \n- ⏰ Scheduled automation\n\n### How it works\n`Schedule Trigger` β†’ `AI Agent (auto-discovers connected platforms via Databox MCP)` β†’ `Aggregates metrics across all platforms` β†’ `Send report to Slack + Email`\n\n### What you need\n- Databox account with at least one paid ads platform connected β†’ Free plan available: https://databox.com/?ref=n8n\n- Claude or ChatGPT API key\n- Slack account (optional)\n- Gmail account (optional)\n\n### Supported Platforms\nFacebook Ads β€’ Google Ads β€’ LinkedIn Ads β€’ YouTube Ads β€’ Reddit Ads β€’ TikTok Ads β€’ Snapchat Ads β€’ Microsoft Advertising β€’ X (Twitter) Ads β€’ Pinterest Ads"
      },
      "typeVersion": 1
    },
    {
      "id": "ef60debc-97bb-4d10-80f9-ee41f4f5b219",
      "name": "Sticky Note 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5904,
        7216
      ],
      "parameters": {
        "color": 4,
        "width": 500,
        "height": 1138,
        "content": "## 1️⃣ Scheduled Execution\n\n### What this section does\nTriggers the workflow every **Monday at 9 AM** and captures the current date so the AI Agent can calculate the correct 7-day reporting windows (current week vs. previous week).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### Change the schedule (optional)\n- Click the \"Every Monday 9 AM\" node\n- Click on the Cron Expression field\n- Modify the schedule (e.g., change to daily, weekly on different day, or custom time)"
      },
      "typeVersion": 1
    },
    {
      "id": "c21c7662-dc7c-4777-8e84-b5df1798e19b",
      "name": "Sticky Note 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        6448,
        7216
      ],
      "parameters": {
        "color": 6,
        "width": 550,
        "height": 1132,
        "content": "## 2️⃣ AI Agent + Databox MCP Setup\n\n### What this section/Agent does\nThe AI Agent connects to Databox via MCP and intelligently auto-discovers your connected paid ads platforms, fetches data across all of them for 6 key metrics, aggregates performance, calculates week-over-week changes, and formats professional reports for Slack and Email.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### What you need to do ⚠️\n1. Click the **OpenAI Chat Model** node β†’ add your `API key` credential\n   - You can also replace this node with the **OpenAI Chat Model** node\n2. Click the **Databox MCP Tool** node β†’ set Authentication to `OAuth2` β†’ authorize with your Databox account\n3. **Ensure at least one paid ads platform is connected** in your Databox account\n\n### How to connect Databox MCP Tool in n8n\n@[youtube](892KtXhv-vI)"
      },
      "typeVersion": 1
    },
    {
      "id": "d0ecc1bd-1929-49f6-9b8e-3793b120152a",
      "name": "Sticky Note 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7040,
        7216
      ],
      "parameters": {
        "color": 5,
        "width": 550,
        "height": 1132,
        "content": "## 3️⃣ Output & Notification\n\n### What this section does\nThe Parse AI Output node splits the Agent's response into two formatted reports - a concise Slack summary with top-level metrics and AI-generated insights, and a rich HTML email with individual platform tables and color-coded week-over-week changes - then delivers both simultaneously.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### What you need to do ⚠️\n- **Slack**: Connect your account in **Send to Slack** node and set the Slack `channel` for report delivery\n- **Email**: Add your Gmail/SMTP credentials to the **Send Email** node\n- **Optional**: Add a Microsoft Teams, Discord, or Telegram node for additional outputs"
      },
      "typeVersion": 1
    },
    {
      "id": "df05566a-c4ff-432c-b754-e29628646ac8",
      "name": "Every Monday 9 AM",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Triggers every Monday at 9 AM",
      "position": [
        5984,
        7456
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ab859925-15a9-4421-89b3-df2c7cc7a4fc",
      "name": "Get Current Date",
      "type": "n8n-nodes-base.dateTime",
      "position": [
        6208,
        7456
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "ca60e49c-7b15-4aac-bc68-180c4ab94b97",
      "name": "Databox MCP Tool",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        6768,
        7664
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://mcp.databox.com/mcp",
        "authentication": "mcpOAuth2Api"
      },
      "credentials": {
        "mcpOAuth2Api": {
          "id": "credential-id",
          "name": "Databox"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "501ab843-4c7a-4745-8590-8fedebef3212",
      "name": "Paid Ads Reporting Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        6608,
        7456
      ],
      "parameters": {
        "text": "=Today's Date: {{ $json.formattedDate }}\n\nGenerate a comprehensive weekly performance report for ALL connected paid advertising platforms.\n\nDetermine the exact date ranges for \"the last 7 days\" and the \"previous 7 days\" based on TODAY's DATE.\n\nQuery Databox to:\n1. Discover which paid ads platforms are connected (Facebook Ads, Google Ads, LinkedIn Ads, YouTube Ads, Reddit Ads, TikTok Ads, Snapchat Ads, Microsoft Advertising, X/Twitter Ads, Pinterest Ads)\n2. For EACH connected platform, fetch these 6 metrics for both weeks:\n   - Cost/Spend\n   - Clicks\n   - CPC (Cost Per Click)\n   - CTR (Click-Through Rate)\n   - Impressions\n   - Conversions\n\nCalculate:\n- Week-over-week (WoW) percentage changes for EVERY metric on EVERY platform\n- Aggregated totals across all platforms (total spend, total clicks, total impressions, total conversions)\n- Average CPC and CTR across all platforms (weighted by volume)\n\nFormat the output into a Slack summary and a detailed HTML email with platform breakdowns.",
        "options": {
          "systemMessage": "You are a performance reporting assistant that queries Databox through the MCP Client and formats cross-platform paid advertising reports.\n\nSTEP-BY-STEP WORKFLOW:\n\n1. Call list_accounts to get the account ID.\n\n2. Call list_data_sources with that account ID to discover ALL connected paid ads platforms. Look for data sources matching these names/patterns:\n   - Facebook Ads (or variations like \"Facebook Ad Account\")\n   - Google Ads (or \"Google AdWords\")\n   - LinkedIn Ads\n   - YouTube Ads\n   - Reddit Ads\n   - TikTok Ads\n   - Snapchat Ads\n   - Microsoft Advertising (or \"Bing Ads\")\n   - X Ads (or \"Twitter Ads\")\n   - Pinterest Ads\n\n3. For EACH connected platform found, call load_metric_data for these 6 metrics (use the appropriate metric keys for each platform):\n   - Cost/Spend (metric keys may vary: \"cost\", \"spend\", \"amount_spent\")\n   - Clicks\n   - CPC (Cost Per Click)\n   - CTR (Click-Through Rate)\n   - Impressions\n   - Conversions (or \"purchases\", \"leads\" depending on platform)\n\n   Use these parameters for each metric call:\n   - data_source_id: the platform's source ID from step 2\n   - start_date: 14 days before today (YYYY-MM-DD)\n   - end_date: today (YYYY-MM-DD)\n   - granulation_time_unit: 3 (weekly)\n   - granulation_multiplier: 1\n   - is_whole_range: false\n\n   Each call returns two data points β€” previous week and current week.\n\n4. If a platform is NOT connected or returns no data, silently skip it. Do NOT mention missing platforms in the output.\n\n5. If NO paid ads platforms are connected or all platforms return zero data:\n   - In the Slack message: State \"No paid advertising activity detected for the reporting period.\"\n   - In the email: Include \"Platforms analyzed: None\" in the subtitle and a message explaining no reportable activity was found.\n   - STILL include the ---SEPARATOR--- delimiter and generate the email structure with empty/zero values.\n\n5. Calculate WoW percentage change for every metric on every platform: ((current - previous) / previous) * 100\n\n6. Aggregate totals:\n   - Total Spend = sum of all platforms' spend\n   - Total Clicks = sum of all platforms' clicks\n   - Total Impressions = sum of all platforms' impressions\n   - Total Conversions = sum of all platforms' conversions\n   - Average CPC = Total Spend / Total Clicks\n   - Average CTR = (Total Clicks / Total Impressions) * 100\n\n7. Format the output.\n\nCRITICAL OUTPUT INSTRUCTIONS:\nAfter completing all calculations internally, output ONLY the two formatted sections below. Do NOT include any pre-calculation notes, data mapping explanations, raw values, formulas, or intermediate steps in your response. Your output must START DIRECTLY with the Slack message format.\n\nFORMAT RULES:\nOutput two sections separated exactly by ---SEPARATOR---\n\nFIRST β€” Slack message:\nPaid Ads Performance Snapshot πŸ“Š\n[Last 7 Days Dates]\n\n[One sentence summary highlighting cross-platform performance trends]\n\n*Aggregated Totals Across All Platforms:*\nπŸ’° *Total Spend:* $[value] ([+/-X.X%] WoW)\nπŸ–±οΈ *Total Clicks:* [value] ([+/-X.X%] WoW)\nπŸ‘οΈ *Total Impressions:* [value] ([+/-X.X%] WoW)\n🎯 *Total Conversions:* [value] ([+/-X.X%] WoW)\nπŸ’΅ *Avg CPC:* $[value] ([+/-X.X%] WoW)\nπŸ“Š *Avg CTR:* [value]% ([+/-X.X%] WoW)\n\n*Platform Breakdown:*\n[For each connected platform, list top 3 metrics with emojis]\n\nAutomated with this n8n workflow\n\n---SEPARATOR---\n\nSECOND β€” HTML email:\nStructure:\n<h2 style=\"color: #3164FA; font-family: 'Helvetica Neue', Arial, sans-serif; font-weight: 600; margin-bottom: 5px;\">Paid Ads Weekly Report</h2>\n<p style=\"color: #666; font-family: 'Helvetica Neue', Arial, sans-serif; margin-top: 0; font-size: 14px;\">[Last 7 Days Dates] vs [Previous 7 Days Dates]</p>\n<p style=\"color: #666; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 13px; font-style: italic;\">Platforms analyzed: [List of connected platforms]</p>\n\n<p style=\"font-family: 'Helvetica Neue', Arial, sans-serif; color: #333; margin-bottom: 20px; line-height: 1.6;\">[Executive summary paragraph highlighting key insights across all platforms]</p>\n\n<div style=\"background-color: #F7F9FC; border-left: 4px solid #3164FA; padding: 15px; font-family: 'Helvetica Neue', Arial, sans-serif; margin-bottom: 20px; border-radius: 4px;\">\n  <strong style=\"color: #3164FA; font-size: 16px;\">Key Highlights - Aggregated Totals</strong><br><br>\n  Total Spend: $XX,XXX (<span style=\"color: #059669;\">+X.X% WoW</span>)<br>\n  Total Clicks: XX,XXX (<span style=\"color: #059669;\">+X.X% WoW</span>)<br>\n  Total Conversions: XXX (<span style=\"color: #059669;\">+X.X% WoW</span>)<br>\n  Avg CPC: $X.XX (<span style=\"color: #dc2626;\">+X.X% WoW</span>)<br>\n  Avg CTR: X.XX% (<span style=\"color: #059669;\">+X.X% WoW</span>)\n</div>\n\n<!-- For EACH connected platform, create a table: -->\n<h3 style=\"color: #3164FA; font-family: 'Helvetica Neue', Arial, sans-serif; font-weight: 600; margin-top: 30px; margin-bottom: 10px;\">[Platform Name] Performance</h3>\n\n<table style=\"width: 100%; border-collapse: collapse; font-family: 'Helvetica Neue', Arial, sans-serif; margin-bottom: 30px;\">\n  <tr style=\"background-color: #3164FA; color: white;\">\n    <th style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; font-weight: 600;\">Metric</th>\n    <th style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; font-weight: 600;\">This Week</th>\n    <th style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; font-weight: 600;\">Last Week</th>\n    <th style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; font-weight: 600;\">WoW</th>\n  </tr>\n  <tr style=\"background-color: #ffffff;\">\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">Cost/Spend</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">$X,XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">$X,XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #059669;\">+X.X%</td>\n  </tr>\n  <tr style=\"background-color: #f9fafb;\">\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">Clicks</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">X,XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">X,XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #dc2626;\">-X.X%</td>\n  </tr>\n  <tr style=\"background-color: #ffffff;\">\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">CPC</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">$X.XX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">$X.XX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #059669;\">+X.X%</td>\n  </tr>\n  <tr style=\"background-color: #f9fafb;\">\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">CTR</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">X.XX%</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">X.XX%</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #059669;\">+X.X%</td>\n  </tr>\n  <tr style=\"background-color: #ffffff;\">\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">Impressions</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">XXX,XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">XXX,XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #dc2626;\">-X.X%</td>\n  </tr>\n  <tr style=\"background-color: #f9fafb;\">\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">Conversions</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #333;\">XXX</td>\n    <td style=\"padding: 12px; border: 1px solid #e5e7eb; color: #059669;\">+X.X%</td>\n  </tr>\n</table>\n\n<!-- Repeat table for each connected platform -->\n\n<p style=\"color: #999; font-size: 11px; margin-top: 25px; font-family: 'Helvetica Neue', Arial, sans-serif; border-top: 1px solid #e5e7eb; padding-top: 15px;\">Automated reporting via Databox MCP & n8n</p>\n\nSTRICT RULES:\n- DO NOT include ANY text before the formatted output sections. Start your response directly with \"Paid Ads Performance Snapshot\"\n- DO NOT show calculation steps, data mapping, timestamps, raw values, or intermediate work\n- DO NOT mention platforms that are not connected or have no data\n- DO NOT include warnings or caveats\n- Use Databox brand color #3164FA for headings and highlights\n- Make WoW values green (#059669) if positive, red (#dc2626) if negative\n- For cost metrics, lower is better (show red for increases in CPC)\n- For CTR, clicks, impressions, conversions - higher is better (show green for increases)\n- Keep the Slack message concise β€” title, date, summary, aggregated metrics, platform breakdown, and footer\n- In email, include executive summary paragraph before Key Highlights box\n- Create separate tables for each connected platform in the email\n- If a previous week value is 0, show \"N/A\" for WoW instead of dividing by zero\n- Format all numbers with thousand separators (commas)\n- For currency values, use $ symbol and format as $X,XXX.XX\n- For percentages, format as X.XX%\n- List platforms analyzed in the email subtitle"
        },
        "promptType": "define"
      },
      "retryOnFail": false,
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "7db0ea3c-fe4b-4424-b99b-79061b0be967",
      "name": "Parse AI Output",
      "type": "n8n-nodes-base.code",
      "position": [
        7136,
        7456
      ],
      "parameters": {
        "jsCode": "const aiOutput = $input.first().json.output;\n\nif (!aiOutput) {\n  throw new Error('No output received from the Paid Ads Reporting Agent.');\n}\n\nconst parts = aiOutput.split('---SEPARATOR---');\n\nif (parts.length < 2) {\n  throw new Error('AI output missing ---SEPARATOR--- delimiter.');\n}\n\n// Extract subject from the HTML or use default\nlet emailSubject = 'Paid Ads Weekly Report';\nconst titleMatch = parts[1].match(/<h2[^>]*>(.*?)<\\/h2>/i);\nif (titleMatch) {\n  emailSubject = titleMatch[1].replace(/<[^>]*>/g, '').trim();\n}\n\nreturn [{\n  json: {\n    slackMessage: parts[0].trim(),\n    emailSubject: emailSubject,\n    emailHtml: parts[1].trim()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "e4dde5cf-52b7-4c1b-93c5-8db357a00703",
      "name": "Send to Slack",
      "type": "n8n-nodes-base.slack",
      "notes": "Sends the Slack summary message",
      "position": [
        7376,
        7456
      ],
      "webhookId": "7763981b-c81a-423b-adda-840ce4f209ba",
      "parameters": {
        "text": "={{ $json.slackMessage }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C0AELRTHZAA"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "credential-id",
          "name": "Slack"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "20a77cc8-17bc-45a4-b3e6-4dc8779ad650",
      "name": "Send Email",
      "type": "n8n-nodes-base.gmail",
      "notes": "Sends the full HTML report via Gmail",
      "position": [
        7376,
        7632
      ],
      "webhookId": "unique-webhook-id",
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.emailHtml }}",
        "options": {},
        "subject": "={{ $json.emailSubject }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "credential-id",
          "name": "Gmail"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e6313e1a-00e4-4a53-880e-cc60799e0c9c",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        6576,
        7664
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "credential-id",
          "name": "RevOps Open AI"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "cb6b6fa3-51cb-4f98-9109-b836ffe29703",
      "name": "Sticky Note 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        7616,
        6576
      ],
      "parameters": {
        "color": 7,
        "width": 948,
        "height": 610,
        "content": "## How it works\n\n@[youtube](Y3bJsPWtSIA)"
      },
      "typeVersion": 1
    },
    {
      "parameters": {
        "operation": "verify",
        "email": "={{ $json.email || $json.Email }}",
        "additionalOptions": {}
      },
      "type": "n8n-nodes-billionverify.billionVerify",
      "typeVersion": 1,
      "position": [
        7016,
        7632
      ],
      "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": [
        7196,
        7632
      ],
      "name": "IF deliverable"
    }
  ],
  "connections": {
    "Parse AI Output": {
      "main": [
        [
          {
            "node": "Send to Slack",
            "type": "main",
            "index": 0
          },
          {
            "node": "Verify Email (BillionVerify)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Databox MCP Tool": {
      "ai_tool": [
        [
          {
            "node": "Paid Ads Reporting Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Current Date": {
      "main": [
        [
          {
            "node": "Paid Ads Reporting Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Monday 9 AM": {
      "main": [
        [
          {
            "node": "Get Current Date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Paid Ads Reporting Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Paid Ads Reporting Agent": {
      "main": [
        [
          {
            "node": "Parse AI Output",
            "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 Databox

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

How it works

  1. 1

    Trigger an n8n workflow when a new batch of contacts is ready for analysis.

  2. 2

    Send the email list to BillionVerify and receive per-address verification results.

  3. 3

    Aggregate results β€” valid count, invalid count, disposable count β€” within n8n.

  4. 4

    Push the summary metrics to Databox using its API or a native n8n node.

  5. 5

    Monitor list health trends on your Databox dashboard alongside campaign performance.

When to use this

Improve email KPI accuracy

Remove invalid and disposable addresses before sending, so the deliverability and engagement metrics that flow into Databox reflect real audience behavior rather than inflated denominators from bounced sends.

Automate list-health reporting

Run BillionVerify on new subscriber batches via n8n, then push verification summary stats to Databox. Track list quality trends over time alongside your other marketing KPIs.

FAQ

Can BillionVerify data be pushed directly into Databox?

Yes. Use n8n to call BillionVerify, aggregate the verification results, then push numeric metrics (valid %, bounce risk %) to Databox via its Push API or native connector.

How often should I verify my list?

For active campaigns, verify new subscribers immediately on sign-up. For existing lists, a monthly or quarterly batch check is usually sufficient to keep bounce rates under control.

Does BillionVerify detect role-based addresses like info@ or support@?

Yes. Role-based addresses are flagged separately so you can decide whether to suppress them from campaigns where personal engagement matters.

Verify emails in Databox

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

Get started free