← All AI Workflows
BillionVerifyHeygen

Create AI personalized video & voice outreach with HeyGen, ElevenLabs & Perplexity

Pull contacts, verify each address with BillionVerify, and continue to HeyGen — only deliverable addresses get through.

Why verify before the send

Sending to invalid, risky, catch-all, or disposable addresses spikes your bounce rate and erodes sender reputation. A verification gate before the HeyGen step removes that risk automatically — only deliverable addresses continue, the rest are flagged.

The workflow

BillionVerify — verification sits right before the send.

+17
n8n steps
+2
n8n steps

Node by node

  1. 1
    Google Sheets TriggerTrigger· n8n

    Starts the workflow — on a schedule, a webhook, or manually while you test.

  2. 2
    Message a model in PerplexitySource· n8n

    Provides or transforms the contact data flowing through the workflow.

  3. 3
    OpenAI Chat ModelSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  4. 4
    OpenRouter Chat ModelSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  5. 5
    OpenAI Chat Model1Source· n8n

    Provides or transforms the contact data flowing through the workflow.

  6. 6
    Structured Output ParserSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  7. 7
    OpenAI Chat Model2Source· n8n

    Provides or transforms the contact data flowing through the workflow.

  8. 8
    Code in JavaScriptSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  9. 9
    Research AgentSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  10. 10
    Scripting AgentSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  11. 11
    Heygen Clone AI CreationSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  12. 12
    Convert text to speechSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  13. 13
    Wait 30sSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  14. 14
    Upload fileSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  15. 15
    GET ResultSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  16. 16
    Send an SMS/MMS/WhatsApp messageSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  17. 17
    AI AgentSource· n8n

    Provides or transforms the contact data flowing through the workflow.

  18. 18
    Verify Email (BillionVerify)Verify· billionverify

    The BillionVerify node verifies the address — status (valid / invalid / risky / catch-all / role / disposable), is_deliverable, and a confidence score — before anything is sent.

  19. 19
    IF deliverableLogic· n8n

    Branches on the verification result: only deliverable addresses continue to the send; the rest are skipped and flagged.

  20. 20
    Send a messageSend· n8n

    Sends only to verified, deliverable addresses. Swap in your own provider node if you send elsewhere.

Workflow JSON

Copy or download this workflow, then import it in n8n (Workflows → Import from File / Paste). Install the BillionVerify community node first, then add your API key credential.

verify-emails-in-heygen.json
{
  "name": "Create AI personalized video & voice outreach with HeyGen, ElevenLabs & Perplexity + BillionVerify",
  "nodes": [
    {
      "id": "657bc2dd-01f2-4292-acd1-d447c3a63283",
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -288,
        0
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "REPLACE_WITH_YOUR_SHEET_TAB",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/REPLACE_WITH_YOUR_SHEET_ID/edit#REPLACE_WITH_YOUR_SHEET_TAB",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "REPLACE_WITH_YOUR_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/REPLACE_WITH_YOUR_SHEET_ID/edit",
          "cachedResultName": "Leads"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bba9b597-557a-49b5-9eb5-09fe7cc0b9f9",
      "name": "Research Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        240,
        0
      ],
      "parameters": {
        "text": "=Full Name:{{ $json.Name }}\nEmail Address:{{ $json['Email Address'] }}\nPhone Number: {{ $json['Phone Number'] }}\nCompany:{{ $json.Company }}\nIndustry: {{ $json.Industry }}\nLinkedIn Profile: {{ $json['LinkedIn URL'] }}\n",
        "options": {
          "systemMessage": "=You are Outbound Research Agent for Purple Unicorn, an influencer marketing agency.\nYour mission: Use Preplexity Tool to research the assigned prospect and return insights that equip the sales team to personalize highly relevant outreach.\n\nYou will be given the following input about the lead:\nFull Name, Email Address, Phone Number, Company Name, Industry, Linked URL\n\nYour responsibilities:\n\nUsing Perplexity Tool: \n\nResearch the PERSON\n\nCurrent role & main responsibilities\n\nRecent achievements, interviews, social activity, thought-leadership topics\n\nInterests related to content, influencers, social media, brand building\n\nResearch the COMPANY\n\nWhat they sell, who they serve, and main value propositions\n\nRecent news, campaigns, marketing strategy insights (especially digital/influencer)\n\nGrowth signals: funding, hiring trends, product launches\n\nCurrent presence on Instagram / TikTok / YouTube / LinkedIn if available\n\nIdentify OPPORTUNITIES\n\nWhere influencer marketing could help:\n\nIncrease brand awareness\n\nImprove social engagement & conversions\n\nModernize outdated marketing approach\n\nExample influencers or campaign angles aligned to their industry/customer base\n\nExtract TRIGGERS\n\nWhat makes this lead worth contacting right now\n\nTie insights directly to Purple Unicorn’s value (high-ROI influencer campaigns)\n\nTone & Format Requirements:\n\nBe accurate, concise, and compelling\n\nNo fluff, no generic statements\n\nUse bullet points and short actionable sentences\n\nInclude 3–5 customized outreach hooks that the SDR can directly use\n\nKeep strict data integrity — state only verifiable insights\n\nOutput Format (always follow this structure)\n\nProspect Overview\n\nName: …\n\nRole: …\n\nKey interests: …\n\nCompany Overview\n\nWhat they do: …\n\nTarget customers: …\n\nMarketing status: …\n\nOpportunities for Influencer Marketing (Purple Unicorn)\n\n…\n\nSales Triggers\n\n…\n\n3–5 Personalized Outreach Hooks\n\n…\n\n…\n\n…"
        },
        "promptType": "define"
      },
      "typeVersion": 3
    },
    {
      "id": "9452861e-a74c-45bf-8ef5-905c04172888",
      "name": "Message a model in Perplexity",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        304,
        208
      ],
      "parameters": {
        "model": "sonar-pro",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "simplify": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Simplify_Output', ``, 'boolean') }}",
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "a191cb19-4d54-4ccf-8489-733acbbb6a96",
      "name": "Scripting Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        672,
        0
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "options": {
          "systemMessage": "=You are Script Writing Agent for Marc from Purple Unicorn, an influencer marketing agency. \n\nYou will receive research insights about a single prospect and their company.\nYour job is to write a personalized 30-second outreach script for narration by an AI video avatar.\n\nRequirements:\n\nTone & Voice\n\nCasual, confident, and friendly\n\nSounds like a real human talking — no corporate jargon\n\nPersonalized references based on the provided research (THIS IS CRITICAL)\n\nFocus on building curiosity and interest, not hard selling\n\nContent Rules\n\nIntro with the prospect’s name and what caught our attention about their work or company\n\nBriefly connect Purple Unicorn’s influencer marketing expertise to their goals or current marketing status\n\nMention 1–2 specific opportunities or triggers discovered in research\n\nEnd with a light, non-pushy call to chat (“worth a quick convo?”)\n\nOutput Format\n\nOnly return the script as plain text (no bullet points or explanations)\n\n4–6 short conversational paragraphs\n\nTotal read time: ~30 seconds (80–110 words)\n\nProhibited\n\nNo email-style formatting (no subject lines, no signatures)\n\nNo emojis\n\nNo generic filler like “I hope you’re well”\n\nNo unverified claims\n\nExample structure (for reference — do not include in output)\n\nHi [Name], loved your work on…\nNoticed your company is pushing into…\nAt Purple Unicorn, we help brands like yours…\nThought we could explore…\nUp for a quick chat?\n\nStay focused on making the prospect feel seen, understood, and excited enough to respond.\n\n##Output rule\nOutput only valid text format without special characters to make sure that it will be a valid JSON input in the next node"
        },
        "promptType": "define"
      },
      "typeVersion": 3
    },
    {
      "id": "4cb305d9-0838-4d74-8665-4f948e11b626",
      "name": "Heygen Clone AI Creation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1232,
        0
      ],
      "parameters": {
        "url": "https://api.heygen.com/v2/video/generate",
        "method": "POST",
        "options": {},
        "jsonBody": "={{\n  {\n    \"video_inputs\": [\n      {\n        \"character\": {\n          \"type\": \"avatar\",\n          \"avatar_id\": \"c84a546eb24e496da33673c336624d1c\",\n          \"avatar_style\": \"normal\"\n        },\n        \"voice\": {\n          \"type\": \"text\",\n          \"input_text\": $json.output,\n          \"voice_id\": \"e690edf698c043409a59fbfc5175c4b1\",\n          \"speed\": 1.1\n        }\n      }\n    ],\n    \"dimension\": { \"width\": 720, \"height\": 1280 }\n  }\n}}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "typeVersion": 4.3
    },
    {
      "id": "2526777e-d184-4ffa-96df-581a3899cf24",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2304,
        0
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.output.body }}\n\nListen my quick assessment of your business:\n{{ $('GET Result').item.json.data.video_url }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.output.title }}",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "76a46ccd-e1f9-4022-a18e-9f760436dff9",
      "name": "Send an SMS/MMS/WhatsApp message",
      "type": "n8n-nodes-base.twilio",
      "position": [
        1584,
        336
      ],
      "parameters": {
        "to": "REPLACE_PHONE",
        "from": "REPLACE_PHONE",
        "message": "={{ $json.webContentLink }}",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "f0741d59-b5d6-4578-b24f-7ddf91527788",
      "name": "Code in JavaScript",
      "type": "n8n-nodes-base.code",
      "position": [
        -96,
        0
      ],
      "parameters": {
        "jsCode": "// \"items\" is an array of all rows coming from Google Sheets\n// We only want the latest one (usually the last item in the array)\n\nif (items.length === 0) {\n\treturn [];\n}\n\n// Take the last item (most recently added row)\nconst lastItem = items[items.length - 1];\n\n// Return it as a single-item array so n8n can continue as usual\nreturn [lastItem];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f75ff906-4b9f-4cc8-8384-60bc6f2d4e6d",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        112,
        208
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5.1",
          "cachedResultName": "gpt-5.1"
        },
        "options": {
          "timeout": 6000000
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "55a89042-e5ac-4c20-bb54-60e0400ab684",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        640,
        208
      ],
      "parameters": {
        "model": "openai/gpt-5.1",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "b9cab21d-8851-4e36-90fb-9f8bdc5d3d71",
      "name": "Convert text to speech",
      "type": "@elevenlabs/n8n-nodes-elevenlabs.elevenLabs",
      "position": [
        1152,
        336
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "voice": {
          "__rl": true,
          "mode": "id",
          "value": "UEKYgullGqaF0keqT8Bu"
        },
        "resource": "speech",
        "requestOptions": {},
        "additionalOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "d27df0a6-1151-443a-86c0-28592890c5a4",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1360,
        336
      ],
      "parameters": {
        "name": "Audio",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "REPLACE_WITH_YOUR_FOLDER_ID",
          "cachedResultUrl": "https://drive.google.com/drive/folders/REPLACE_WITH_YOUR_FOLDER_ID",
          "cachedResultName": "n8n Folder"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "54f9ad85-bc0d-4f02-9c30-8168060bba3f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -80
      ],
      "parameters": {
        "color": 6,
        "width": 1536,
        "height": 288,
        "content": "Intro Video Generation + Send to Email"
      },
      "typeVersion": 1
    },
    {
      "id": "7c816c51-b4fe-47e7-8b50-a6ba687ff359",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 752,
        "height": 288,
        "content": "Voice Generation and Text"
      },
      "typeVersion": 1
    },
    {
      "id": "70dcb589-3e92-41f7-9208-1c3afd6a7f71",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        -96
      ],
      "parameters": {
        "color": 4,
        "width": 960,
        "height": 624,
        "content": "Research & Script"
      },
      "typeVersion": 1
    },
    {
      "id": "0f2d716c-7aa0-441c-936c-c4f3cc1674d3",
      "name": "Wait 30s",
      "type": "n8n-nodes-base.wait",
      "position": [
        1440,
        0
      ],
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "9364537a-8917-43ab-b9c2-12ceec88d1c0",
      "name": "GET Result",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1648,
        0
      ],
      "parameters": {
        "url": "https://api.heygen.com/v1/video_status.get",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "video_id",
              "value": "={{ $json.data.video_id }}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "aa799380-8601-4d87-a2a2-f8e47fee29cb",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1856,
        0
      ],
      "parameters": {
        "text": "={{ $('Research Agent').item.json.output }}",
        "options": {
          "systemMessage": "You are the Outreach Email Copywriter Agent for Purple Unicorn Marketing Agency.\nYour task is to generate one short and personalized outbound email for each prospect.\n\nRequirements:\n\nYou will receive prospect details in the user input\n\nUse their company information or recent updates to personalize the message\n\nThe email must reference a personalized intro video included in the outreach\n\nMarc from Purple Unicorn Agency is the sender\n\nTone: friendly, clear, and value-led\n\nKeep it short and impactful (no long paragraphs)\n\nSTRICT Output Format\n\nYou must output valid JSON only, with exactly two properties:\n\n{\n  \"title\": \"A short, attention-grabbing subject line\",\n  \"body\": \"Email body text here. Keep paragraphs short and include a reference to the personalized video.\"\n}\n\n\nMandatory rules\n\nNo additional text outside the JSON\n\nNo markdown formatting\n\nNo emojis\n\nNo explanations or annotations\n\nIf the required information is insufficient, use placeholders rather than adding commentary\n\nIf your output does not strictly match the JSON structure above, it will be considered incorrect."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "f236ceb1-bb32-4058-af83-0b079263f7cf",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1824,
        224
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "06c9c350-5107-45dc-bf89-8df081dda40f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2032,
        208
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"title\": \"…\",\n  \"body\": \"…\"\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "a7abfece-d384-40f7-8c1a-a48609a6ce73",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1968,
        416
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "64bb87e2-5094-44b9-a0e3-a9c4d0805f66",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 368,
        "height": 624
      },
      "typeVersion": 1
    },
    {
      "id": "7f7bc175-94e8-4a40-9b58-c875fd196c8d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        -96
      ],
      "parameters": {
        "width": 800,
        "height": 816,
        "content": "What this Workflow Does\n\nAutomates the creation of hyper-personalized outreach videos, voice notes, and emails whenever a new lead is added to Google Sheets.\n\nWatch step-by-step tutorial of this build here: https://www.youtube.com/watch?v=q9AAh9zRou4\n\nIt performs:\nLead Intake (Google Sheets Trigger → Latest Row Extractor)\nDeep AI Research (Perplexity + Research Agent)\nPersonalized Scriptwriting (Script Agent)\nHeyGen Video Generation\nElevenLabs Voice Note Generation\nUpload Audio to Google Drive\nEmail Delivery (video + voice note + personalized email)\nOptional SMS/WhatsApp Message via Twilio\n\nHigh-Level Flow\nGoogle Sheets → Research → Script → Video → Voice → Drive → Email/SMS\n\nNode Lane Explanations\n\nResearch & Script Lane\nCode Node: grabs latest lead from the sheet\nResearch Agent: uses Perplexity to gather insights\nScript Agent: creates a 30-sec personalized outreach script\nOpenAI/OpenRouter models: support research + script consistency\nVideo Generation Lane\nHeyGen Request: creates avatar video based on script\nWait → GET Result: polls until video is ready\nAI Email Agent: generates JSON email (subject + body referencing video)\nVoice & Upload Lane\nElevenLabs: converts script or summary to voice note\nGoogle Drive Upload: stores voice file\nTwilio (optional): sends voice note link via SMS/WhatsApp\nEmail Output\nGmail Node: sends the outreach email + video link + voice note link to your inbox\n\nPurpose\nCreate SDR-ready, highly-personalized outreach assets using AI — end-to-end automated."
      },
      "typeVersion": 1
    },
    {
      "id": "8eaee9ef-0431-40e6-8ddb-6937d0fa05a2",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -496
      ],
      "parameters": {
        "width": 688,
        "height": 368,
        "content": "@[youtube](q9AAh9zRou4)"
      },
      "typeVersion": 1
    },
    {
      "parameters": {
        "operation": "verify",
        "email": "={{ $json.email || $json.Email }}",
        "additionalOptions": {}
      },
      "type": "n8n-nodes-billionverify.billionVerify",
      "typeVersion": 1,
      "position": [
        1944,
        0
      ],
      "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": [
        2124,
        0
      ],
      "name": "IF deliverable"
    }
  ],
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Verify Email (BillionVerify)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 30s": {
      "main": [
        [
          {
            "node": "GET Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GET Result": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Send an SMS/MMS/WhatsApp message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Research Agent": {
      "main": [
        [
          {
            "node": "Scripting Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scripting Agent": {
      "main": [
        [
          {
            "node": "Heygen Clone AI Creation",
            "type": "main",
            "index": 0
          },
          {
            "node": "Convert text to speech",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Research Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Research Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Scripting Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Convert text to speech": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Heygen Clone AI Creation": {
      "main": [
        [
          {
            "node": "Wait 30s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Message a model in Perplexity": {
      "ai_tool": [
        [
          {
            "node": "Research Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Verify Email (BillionVerify)": {
      "main": [
        [
          {
            "node": "IF deliverable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF deliverable": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

When to use this

  • Cleaning a list before a HeyGen send or sync.
  • Protecting HeyGen deliverability and sender reputation.
  • Keeping bounce rates low so your sending is never throttled.

FAQ

Why verify before sending in HeyGen?

Verifying first keeps your bounce rate low, which protects your sender reputation and your results.

How do I import this workflow?

Download the JSON, then in n8n go to Workflows → Import from File (or paste it). Install the BillionVerify community node and add your API key credential.

What happens to risky or catch-all addresses?

They are routed to the false branch and excluded from the send. You decide whether to retry, review, or drop them.

Add verification to your workflow

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

Get started free