← All Forms

Google Forms email verification with BillionVerify

Google Forms is one of the most common ways to collect email addresses from leads, event attendees, survey respondents, and newsletter subscribers. BillionVerify plugs into Google Forms workflows to verify each submitted email in real time, stopping invalid, disposable, and fake addresses from entering your list at the moment of collection.

Why verify before the send

Form submissions are a primary entry point for bad email data. People mistype addresses, use temporary inboxes, or submit fake emails to avoid follow-up. Every unverified submission that reaches your email tool raises your bounce rate and erodes your sender reputation. Catching these at the form stage β€” before they touch your CRM or list β€” is the most efficient place to filter them.

Ready-to-use n8n workflow

Import this workflow into n8n β€” it verifies every address with BillionVerify before Google Forms 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-google-forms.json
{
  "name": "Automated customer support with GPT-4o-mini AI triage for Google Forms & Gmail + BillionVerify",
  "nodes": [
    {
      "id": "00ee0984-b75a-4eda-939d-db882cee466d",
      "name": "Google Form Responses Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -576,
        352
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1ef2d3c8-4431-4c88-9f15-09be5d27c6f0",
      "name": "Map Form Column Names",
      "type": "n8n-nodes-base.set",
      "position": [
        -240,
        352
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "emailColumnName",
              "type": "string",
              "value": "Email Address"
            },
            {
              "id": "id-2",
              "name": "inquiryColumnName",
              "type": "string",
              "value": "Inquiry"
            },
            {
              "id": "id-3",
              "name": "nameColumnName",
              "type": "string",
              "value": "Name"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "dd8030ab-2052-4789-bb69-95d577d65eba",
      "name": "Analyze with AI Triage",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -16,
        352
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "content": "=You are an expert customer support triage system with deep understanding of multiple languages and cultural context.\n\nAnalyze this customer inquiry:\n\nCustomer Name: {{$json[\"Name\"]}}\nCustomer Email: {{$json[\"Email Address\"]}}\nInquiry: {{$json.inquiry}}\n\nURGENCY CLASSIFICATION RULES (be strict):\n\nHIGH urgency - Use when ANY of these apply:\n- Product is broken/damaged/defective\n- Words indicating immediate need: immediately, urgent, ASAP\n- Customer explicitly states they are troubled or frustrated\n- Complaints or angry tone\n- Request for refund/replacement/exchange\n- Service failure or system down\n- Time-sensitive issues\n\nMEDIUM urgency - Use when:\n- General questions about product usage\n- Feature inquiries or clarifications\n- Manual/documentation questions\n- Non-urgent support requests\n- Neutral tone inquiries\n\nLOW urgency - Use when:\n- General information requests\n- Compliments or positive feedback\n- Future product inquiries\n- Casual questions with no time pressure\n\nCATEGORIES:\n- technical: Software bugs, technical issues, errors, login problems\n- sales: Pricing, product information, purchase inquiries\n- support: How-to questions, usage help, troubleshooting\n- billing: Payment issues, invoices, refunds\n- general: Everything else\n\nSENTIMENT:\n- negative: Complaints, problems, dissatisfaction, frustrated tone\n- neutral: Questions, information requests\n- positive: Compliments, satisfaction, thank you messages\n\nReturn ONLY valid JSON in this format (no markdown, no code blocks):\n{\n  \"urgency\": \"low\" | \"medium\" | \"high\",\n  \"category\": \"technical\" | \"sales\" | \"support\" | \"billing\" | \"general\",\n  \"sentiment\": \"positive\" | \"neutral\" | \"negative\",\n  \"keywords\": [\"keyword1\", \"keyword2\"],\n  \"summary\": \"One sentence summary\"\n}"
            }
          ]
        },
        "builtInTools": {}
      },
      "typeVersion": 2
    },
    {
      "id": "7022d016-142f-40f0-ae43-876b609f7897",
      "name": "Parse AI Analysis Results",
      "type": "n8n-nodes-base.code",
      "position": [
        336,
        352
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Parse AI analysis results\nconst allData = $input.item.json;\n\nlet analysis = {\n  urgency: 'medium',\n  category: 'general',\n  sentiment: 'neutral',\n  keywords: [],\n  summary: ''\n};\n\nif (allData.output && Array.isArray(allData.output) && allData.output.length > 0) {\n  const outputItem = allData.output[0];\n  if (outputItem.content && Array.isArray(outputItem.content) && outputItem.content.length > 0) {\n    const aiResponse = outputItem.content[0].text || '{}';\n    try {\n      analysis = JSON.parse(aiResponse);\n    } catch (e) {\n      console.log('Failed to parse AI response:', aiResponse);\n    }\n  }\n}\n\n// Get original form data\nconst workflowConfig = $('Map Form Column Names').first().json;\nconst emailColumnName = workflowConfig.emailColumnName || 'Email Address';\nconst inquiryColumnName = workflowConfig.inquiryColumnName || 'Inquiry';\nconst nameColumnName = workflowConfig.nameColumnName || 'Name';\n\nreturn {\n  email: workflowConfig[emailColumnName] || '',\n  inquiry: workflowConfig[inquiryColumnName] || '',\n  name: workflowConfig[nameColumnName] || '',\n  urgency: analysis.urgency,\n  category: analysis.category,\n  sentiment: analysis.sentiment,\n  keywords: analysis.keywords,\n  summary: analysis.summary,\n  timestamp: new Date().toISOString()\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "bf80a552-17a8-445d-bdb7-288ad0d8bb25",
      "name": "Route by Priority Level",
      "type": "n8n-nodes-base.switch",
      "position": [
        560,
        336
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "High Priority",
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.urgency }}",
                    "rightValue": "high"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Medium Priority",
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.urgency }}",
                    "rightValue": "medium"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Low Priority",
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.urgency }}",
                    "rightValue": "low"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "7ca42752-5260-4ddc-abd3-a2e52ba53162",
      "name": "Generate Urgent Response",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        768,
        240
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "content": "=Create a polite, professional, and URGENT response email to this HIGH PRIORITY inquiry.\n\nCustomer Name: {{$json.name}}\nInquiry Category: {{$json.category}}\nSentiment: {{$json.sentiment}}\nInquiry: {{$json.inquiry}}\n\nIMPORTANT INSTRUCTIONS:\n- Acknowledge the urgency and apologize if negative sentiment detected\n- Provide immediate next steps\n- Include a commitment to fast response time (within 1-2 hours)\n- Be empathetic and professional\n\nOutput format (strictly follow):\nSUBJECT: (write urgent subject here)\n\nBODY: (write body here)"
            }
          ]
        },
        "builtInTools": {}
      },
      "typeVersion": 2
    },
    {
      "id": "8715f230-d87d-4ef9-808f-96d5679be8a3",
      "name": "Generate Standard Response",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        768,
        352
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "content": "=Create a polite and professional response email to this inquiry.\n\nCustomer Name: {{$json.name}}\nInquiry Category: {{$json.category}}\nInquiry: {{$json.inquiry}}\n\nOutput format (strictly follow):\nSUBJECT: (write subject here)\n\nBODY: (write body here)"
            }
          ]
        },
        "builtInTools": {}
      },
      "typeVersion": 2
    },
    {
      "id": "24788dbe-f143-499b-b54e-ab2f8b081e5b",
      "name": "Generate Friendly Response",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        768,
        464
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "content": "=Create a polite and friendly response email to this inquiry.\n\nCustomer Name: {{$json.name}}\nInquiry Category: {{$json.category}}\nInquiry: {{$json.inquiry}}\n\nOutput format (strictly follow):\nSUBJECT: (write subject here)\n\nBODY: (write body here)"
            }
          ]
        },
        "builtInTools": {}
      },
      "typeVersion": 2
    },
    {
      "id": "40134468-499c-4c55-bce1-62a991d82ee4",
      "name": "Extract Email Subject and Body",
      "type": "n8n-nodes-base.code",
      "position": [
        1136,
        352
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Get AI-generated email and triage data\nconst allData = $input.item.json;\n\nlet aiResponse = '';\nif (allData.output && Array.isArray(allData.output) && allData.output.length > 0) {\n  const outputItem = allData.output[0];\n  if (outputItem.content && Array.isArray(outputItem.content) && outputItem.content.length > 0) {\n    aiResponse = outputItem.content[0].text || '';\n  }\n}\n\n// Parse subject and body from AI response\nlet subject = 'Thank you for your inquiry';\nlet body = '';\n\nif (aiResponse) {\n  const subjectMatch = aiResponse.match(/SUBJECT:\\s*([\\s\\S]*?)(?=\\nBODY:|$)/);\n  if (subjectMatch && subjectMatch[1]) {\n    subject = subjectMatch[1].trim();\n  }\n\n  const parts = aiResponse.split(/BODY:\\s*/);\n  if (parts.length > 1) {\n    body = parts[1].trim();\n  } else {\n    body = aiResponse.trim();\n  }\n}\n\nconst triageData = $('Parse AI Analysis Results').first().json;\n\nreturn {\n  subject,\n  body,\n  email: triageData.email,\n  name: triageData.name,\n  urgency: triageData.urgency,\n  category: triageData.category,\n  sentiment: triageData.sentiment,\n  keywords: triageData.keywords,\n  summary: triageData.summary,\n  inquiry: triageData.inquiry,\n  timestamp: triageData.timestamp\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "112807ff-a82c-4f08-bcd6-8f80b00c9e7f",
      "name": "Send Auto-Reply via Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1360,
        352
      ],
      "webhookId": "b58c0315-fb54-4b41-8198-f0ceba77ced1",
      "parameters": {
        "sendTo": "={{ $json.email }}",
        "message": "={{ $json.body }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.subject }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "90ac9a6c-8644-4369-8dc0-7ad6e48db909",
      "name": "Prepare Data for Tracking",
      "type": "n8n-nodes-base.set",
      "position": [
        1584,
        352
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "name",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.name }}"
            },
            {
              "id": "id-2",
              "name": "email",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.email }}"
            },
            {
              "id": "id-3",
              "name": "urgency",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.urgency }}"
            },
            {
              "id": "id-4",
              "name": "category",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.category }}"
            },
            {
              "id": "id-5",
              "name": "sentiment",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.sentiment }}"
            },
            {
              "id": "id-6",
              "name": "summary",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.summary }}"
            },
            {
              "id": "id-7",
              "name": "keywords",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.keywords }}"
            },
            {
              "id": "id-8",
              "name": "subject",
              "type": "string",
              "value": "={{ $('Extract Email Subject and Body').item.json.subject }}"
            },
            {
              "id": "id-9",
              "name": "inquiry",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.inquiry }}"
            },
            {
              "id": "id-10",
              "name": "timestamp",
              "type": "string",
              "value": "={{ $('Parse AI Analysis Results').item.json.timestamp }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bd3aa2c7-e7f0-42e5-843b-9ecba1746432",
      "name": "Is High Priority?",
      "type": "n8n-nodes-base.if",
      "position": [
        1792,
        352
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.urgency }}",
              "rightValue": "high"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "426bf20f-ab48-453b-945c-a70a65818526",
      "name": "Alert Team on Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2032,
        272
      ],
      "webhookId": "9d621a32-e3b1-4280-9c01-599989094a8a",
      "parameters": {
        "text": "=🚨 *HIGH PRIORITY INQUIRY RECEIVED*\n\n*Customer:* {{ $json.name }}\n*Email:* {{ $json.email }}\n*Category:* {{ $json.category }}\n*Sentiment:* {{ $json.sentiment }}\n\n*Summary:* {{ $json.summary }}\n\n*Original Inquiry:*\n{{ $json.inquiry }}\n\nβœ… Auto-reply sent. Manual follow-up recommended within 1-2 hours.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "8435195b-82c2-4085-afbe-b1e6bd40830a",
      "name": "Log to Tracking Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2208,
        368
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "1ad7a7ae-1f80-4081-a481-74cfd89bdaa7",
      "name": "Sticky Note - Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1408,
        -272
      ],
      "parameters": {
        "width": 680,
        "height": 1596,
        "content": "## πŸ“‹ AI-Powered Customer Support Automation\n\n**Automatically triage and respond to Google Form submissions with intelligent priority routing**\n\n### 🎯 What This Workflow Does\n\nThis workflow transforms your Google Form into an intelligent customer support system that:\n- **Analyzes** every inquiry using AI to determine urgency, category, and sentiment\n- **Routes** inquiries based on priority (High/Medium/Low)\n- **Generates** contextual, personalized email responses\n- **Alerts** your team via Slack for high-priority cases\n- **Tracks** all interactions in a Google Sheet\n\n### βš™οΈ How It Works\n\n1. **Trigger**: Monitors Google Sheets for new form responses\n2. **AI Analysis**: OpenAI analyzes inquiry for urgency, category, sentiment\n3. **Smart Routing**: Routes to appropriate response template\n4. **Response Generation**: AI creates personalized reply email\n5. **Auto-Reply**: Sends email via Gmail\n6. **Team Alert**: Notifies team on Slack for urgent cases\n7. **Tracking**: Logs all data to tracking sheet\n\n### πŸ“¦ Requirements\n\n- Google Form connected to Google Sheets\n- OpenAI API key (GPT-4o-mini recommended)\n- Gmail account for sending emails\n- Slack workspace (optional, for team notifications)\n- Google Sheets for tracking logs\n\n### ⏱️ Setup Time\n\nApproximately **15-20 minutes**\n\n### πŸš€ Setup Steps\n\n1. **Create Google Form** with fields: Name, Email Address, Inquiry\n2. **Connect to Google Sheets** (automatically created by Google Forms)\n3. **Configure trigger node** with your form response sheet\n4. **Add OpenAI credentials** (get API key from platform.openai.com)\n5. **Connect Gmail** for sending auto-replies\n6. **Create tracking sheet** with columns: timestamp, name, email, category, urgency, sentiment, summary, keywords, subject, inquiry\n7. **Optional: Connect Slack** for high-priority alerts\n8. **Customize AI prompts** to match your brand voice and use case\n9. **Test with sample data** before activating\n\n### 🎨 Customization Options\n\n- **Adjust urgency criteria** in AI Triage prompt for your specific needs\n- **Modify response templates** for different priority levels\n- **Add custom categories** (e.g., refunds, appointments, technical issues)\n- **Multi-language support** - AI handles multiple languages automatically\n- **Add more notification channels** (Discord, email, SMS)\n- **Integrate with CRM** systems for customer history\n\n### πŸ’‘ Use Cases\n\n- **Customer Support**: Auto-respond to product questions and issues\n- **Lead Management**: Instant follow-up on sales inquiries\n- **Event Registration**: Confirm bookings with personalized messages\n- **Feedback Collection**: Acknowledge and categorize user feedback\n- **Service Requests**: Triage and route service/maintenance requests\n\n---\n\n*Created by the n8n community. Questions? Check the sticky notes inside each workflow section for detailed instructions.*"
      },
      "typeVersion": 1
    },
    {
      "id": "d1a6e001-f164-4985-9cc9-c22493349127",
      "name": "Sticky Note - Step 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -688,
        -16
      ],
      "parameters": {
        "color": 7,
        "width": 360,
        "height": 352,
        "content": "### πŸ“₯ Step 1: Form Response Trigger\n\nMonitors your Google Sheet for new form submissions.\n\n**Setup:**\n1. Select your Google Form's response sheet\n2. Sheet automatically updates when forms are submitted\n3. Trigger runs every minute to check for new rows\n\n**Requirements:**\n- Google Form with fields: Name, Email Address, Inquiry\n- Form must be connected to Google Sheets"
      },
      "typeVersion": 1
    },
    {
      "id": "4122d26f-5ccf-4ad3-b130-99bbe84a020f",
      "name": "Sticky Note - Step 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        528
      ],
      "parameters": {
        "color": 7,
        "width": 340,
        "height": 236,
        "content": "### πŸ”§ Step 2: Map Column Names\n\nMaps your form fields to workflow variables.\n\n**Customize:**\n- Update column names if your form uses different field names\n- Default: \"Name\", \"Email Address\", \"Inquiry\"\n\n**Tip:** Keep \"includeOtherFields\" enabled to preserve all form data"
      },
      "typeVersion": 1
    },
    {
      "id": "0ee1a9d8-3e37-412e-9a63-db17b354e52e",
      "name": "Sticky Note - Step 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -32
      ],
      "parameters": {
        "color": 7,
        "width": 360,
        "height": 364,
        "content": "### 🧠 Step 3: AI Triage Analysis\n\nOpenAI analyzes inquiry to determine:\n- **Urgency**: low/medium/high\n- **Category**: technical/sales/support/billing/general\n- **Sentiment**: positive/neutral/negative\n- **Keywords**: Key terms extracted\n- **Summary**: One-sentence overview\n\n**Customize:**\n- Adjust urgency criteria for your business\n- Add custom categories\n- Supports multiple languages automatically\n\n**Cost:** ~$0.001-0.002 per inquiry with GPT-4o-mini"
      },
      "typeVersion": 1
    },
    {
      "id": "bd556784-eb77-4347-8821-b0c301fca7b4",
      "name": "Sticky Note - Step 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        528
      ],
      "parameters": {
        "color": 7,
        "width": 360,
        "height": 344,
        "content": "### πŸ”€ Step 4: Priority Routing\n\nRoutes inquiries to appropriate response template:\n\n**High Priority β†’** Urgent, empathetic response\n- Broken products, complaints, angry customers\n- Immediate needs, refund requests\n\n**Medium Priority β†’** Professional, standard response\n- General questions, usage help\n- Feature inquiries\n\n**Low Priority β†’** Friendly, casual response\n- Information requests, compliments\n- Future product questions"
      },
      "typeVersion": 1
    },
    {
      "id": "d47878da-4235-44b9-bc04-85fa618298e4",
      "name": "Sticky Note - Step 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 360,
        "height": 340,
        "content": "### βœ‰οΈ Step 5: Generate AI Response\n\nThree separate AI nodes create priority-specific responses.\n\n**Each template considers:**\n- Customer name for personalization\n- Inquiry category and sentiment\n- Urgency level for appropriate tone\n\n**Output format:**\nSUBJECT: (email subject)\nBODY: (email body)\n\n**Customize:** Edit prompts to match your brand voice and policies"
      },
      "typeVersion": 1
    },
    {
      "id": "49768cd0-7811-43e7-b90e-ec0e0cc599a5",
      "name": "Sticky Note - Step 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1232,
        64
      ],
      "parameters": {
        "color": 7,
        "width": 340,
        "height": 268,
        "content": "### πŸ“€ Step 6: Send Auto-Reply\n\nSends personalized email via Gmail.\n\n**Features:**\n- Uses Gmail OAuth for secure sending\n- Includes customer name in email\n- Professional formatting\n- No n8n attribution footer\n\n**Setup:** Connect your Gmail account via OAuth2"
      },
      "typeVersion": 1
    },
    {
      "id": "0de2f195-b296-43b2-99b5-38c41de47dba",
      "name": "Sticky Note - Step 7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1872,
        528
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 380,
        "content": "### 🚨 Step 7: Team Alerts & Tracking\n\n**High Priority Cases:**\n- Instant Slack notification to team\n- Includes customer details and inquiry\n- Prompts manual follow-up within 1-2 hours\n\n**All Cases:**\n- Logged to Google Sheets tracking sheet\n- Includes: timestamp, urgency, category, sentiment, keywords, summary\n- Creates audit trail and analytics data\n\n**Setup:**\n1. Connect Slack workspace (optional)\n2. Create tracking sheet with proper column headers\n3. Select channel for notifications"
      },
      "typeVersion": 1
    },
    {
      "parameters": {
        "operation": "verify",
        "email": "={{ $json.email }}",
        "additionalOptions": {}
      },
      "type": "n8n-nodes-billionverify.billionVerify",
      "typeVersion": 1,
      "position": [
        1000,
        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": [
        1180,
        352
      ],
      "name": "IF deliverable"
    }
  ],
  "connections": {
    "Is High Priority?": {
      "main": [
        [
          {
            "node": "Alert Team on Slack",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log to Tracking Sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log to Tracking Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Map Form Column Names": {
      "main": [
        [
          {
            "node": "Analyze with AI Triage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze with AI Triage": {
      "main": [
        [
          {
            "node": "Parse AI Analysis Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Priority Level": {
      "main": [
        [
          {
            "node": "Generate Urgent Response",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Generate Standard Response",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Generate Friendly Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Urgent Response": {
      "main": [
        [
          {
            "node": "Extract Email Subject and Body",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Analysis Results": {
      "main": [
        [
          {
            "node": "Route by Priority Level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Data for Tracking": {
      "main": [
        [
          {
            "node": "Is High Priority?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Auto-Reply via Gmail": {
      "main": [
        [
          {
            "node": "Prepare Data for Tracking",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Friendly Response": {
      "main": [
        [
          {
            "node": "Extract Email Subject and Body",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Standard Response": {
      "main": [
        [
          {
            "node": "Extract Email Subject and Body",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Form Responses Trigger": {
      "main": [
        [
          {
            "node": "Map Form Column Names",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Email Subject and Body": {
      "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 Auto-Reply via Gmail",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

Workflow templates with Google Forms

Ready-to-use workflows that verify emails before Google Forms sends.

How it works

  1. 1

    Connect Google Forms to BillionVerify using n8n's BillionVerify community node or via Integrately's 1-click setup.

  2. 2

    A new form response triggers the verification workflow immediately after submission.

  3. 3

    BillionVerify checks the submitted email for syntax validity, MX records, SMTP deliverability, disposable domain use, and catch-all status.

  4. 4

    Based on the result, the contact is either added to your list and CRM, tagged with a status field, or silently excluded.

  5. 5

    All verification results can be logged to a Google Sheet for auditing and reporting.

When to use this

Real-time validation on every form submission

The moment a Google Forms response arrives, trigger BillionVerify to check the email address. If it is invalid or disposable, the contact can be excluded from follow-up sequences automatically, ensuring only genuine subscribers are added.

Protect lead generation campaigns

Forms used for lead magnets and gated content attract a higher share of fake submissions. Verifying each email before passing it to your CRM or email platform means your sales team only works with contacts who provided a real, reachable address.

Event and webinar registration cleanup

Verify registrant emails collected through Google Forms before sending confirmation or reminder emails. This keeps your sending stats accurate and prevents wasted sends to addresses that will bounce.

FAQ

How quickly does verification happen after a form is submitted?

Verification is near-instant. The n8n or Integrately workflow triggers within seconds of a new response, and BillionVerify returns a result typically in under a second per address.

Will respondents know their email was rejected?

That depends on your workflow design. BillionVerify returns a status to your automation, but how you act on that β€” sending a notification, skipping the contact, or flagging them β€” is fully within your control.

Can I verify addresses from older Google Forms responses too?

Yes. You can export historical responses, run the email column through BillionVerify's bulk API, and import the results back to identify which past submissions have valid addresses.

Does BillionVerify catch role-based emails like info@ or contact@?

Yes. Role-based addresses are flagged as a separate category. These inboxes are typically monitored by teams rather than individuals and tend to have lower engagement, so you can choose to exclude them from automated follow-ups.

Verify emails in Google Forms

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

Get started free