# How to Automate Email Verification & Cold Email Workflows in n8n (HTTP Request & AI Agent Guide)

> Build an automated n8n lead generation and email verification workflow using HTTP Request nodes and the MailVeri MCP server. Keep cold email bounce rates under 2% for $59/100K.

- **Author**: Alex, Co-Founder
- **Published**: 2026-07-16 (Updated: 2026-10-30)
- **Source**: https://mailveri.com/blog/how-to-automate-email-verification-n8n-cold-email-workflow
- **AI Reference**: https://mailveri.com/llms-full.txt

---

**n8n** has become the automation backbone for technical GTM engineers, outbound agencies, and AI-native startups. Because self-hosted and cloud n8n workflows charge per workflow execution rather than per individual task step, you can process 100,000 scraped leads through enrichment, AI personalization, and cold email dispatch for a fraction of Zapier’s cost—provided your email verification step doesn’t break your budget or let invalid emails slip through.

If you pipe raw leads from Apollo, Apify, or LinkedIn scrapers directly into OpenAI/Anthropic personalization nodes and cold email sequencers without an inline verification gate, two things happen: you waste 20% to 30% of your LLM token budget writing personalized icebreakers for dead mailboxes, and your sending domains exceed the **2% hard bounce threshold** on Google Workspace and Microsoft 365.

In this guide, we show how to build a production-grade **n8n Email Verification & Cold Outreach Pipeline** using [MailVeri’s REST API and MCP Server](https://mailveri.com/integrations/n8n) at **$59 per 100,000 credits** (down to $0.0002/email at scale).

## 1. The Optimal n8n Outbound Architecture (Verify Before LLM Personalization)

The golden rule of n8n outbound engineering is **Verify Before You Enrich or Personalize**. Place your MailVeri verification node immediately after lead ingestion and *before* your AI Agent / OpenAI node:

| n8n Pipeline Stage | Node Type | Action & Routing Logic |
| --- | --- | --- |
| 1. Lead Ingestion | Webhook / Apify / Postgres | Ingest raw B2B prospect records containing candidate email addresses. |
| 2. MailVeri Gate | HTTP Request / MCP Tool | Call `POST /v1/verify-mail/` ($0.0002–$0.00059/check; non-expiring credits). |
| 3. Switch / IF Router | n8n Switch Node | Route `VALID` → Stage 4; route `CATCH_ALL` → Low-volume secondary queue; drop `INVALID`, `DISPOSABLE`, `FULL_INBOX`. |
| 4. AI Personalization & Send | OpenAI / Claude + Instantly | Generate personalized icebreakers only for verified `VALID` leads and push to Instantly / Smartlead. |

## 2. Step-by-Step n8n HTTP Request Node Configuration

You can import our ready-to-use [n8n-mailveri-lead-cleaner.json workflow template](https://mailveri.com/templates/n8n-mailveri-lead-cleaner.json) directly into your n8n canvas, or configure an **HTTP Request** node with the following JSON definition:

```json
{
  "nodes": [
    {
      "name": "MailVeri Verify Email",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "parameters": {
        "method": "POST",
        "url": "https://api.mailveri.com/v1/verify-mail/",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {{ $env.MAILVERI_API_KEY }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={ \"email\": {{ JSON.stringify($json.email) }} }"
      }
    }
  ]
}
```

To prevent hitting downstream rate limits when iterating over thousands of rows in n8n, pair the **HTTP Request** node with n8n’s **Loop Over Items (Split in Batches)** node set to batch size `25`, followed by a Code node that filters only confirmed `VALID` contacts:

```javascript
// n8n Code Node: Filter MailVeri verification results before pushing to Instantly / Smartlead
const items = $input.all();
const verifiedLeads = [];

for (const item of items) {
  const status = item.json.status;
  // Route only confirmed VALID contacts into your primary cold outreach sequence
  if (status === 'VALID') {
    verifiedLeads.push({
      json: {
        email: item.json.mail || item.json.email,
        firstName: item.json.firstName,
        company: item.json.company,
        verificationStatus: status,
        remainingCredits: item.json.balance,
      },
    });
  }
}

return verifiedLeads;
```

## 3. Connecting MailVeri to n8n AI Agent Nodes via MCP

If you are using n8n’s **AI Agent (LangChain)** node with an **MCP Client Tool**, your autonomous prospecting agent can invoke [MailVeri’s official MCP server](https://mailveri.com/blog/mailveri-mcp-email-verification-ai-agents) (`mailveri_verify_email`, `mailveri_verify_batch`, and `mailveri_get_balance`) directly during tool-calling loops—ensuring the agent never schedules an outbound email to an unverified or disposable address.

## 4. Frequently Asked Questions

### Should I use single-email HTTP requests or the Bulk File API in n8n?

Use `POST /v1/verify-mail/` for real-time webhook triggers and batches under 5,000 rows. For nightly CRM or scraper dumps between 10,000 and 1,000,000 rows, use `POST /v1/verify-mails/` to upload the CSV and trigger a separate n8n **Webhook** node when MailVeri dispatches the HMAC-signed completion callback.

### What happens if a recipient mail server times out during an n8n workflow run?

MailVeri returns an `UNKNOWN` status when a remote mail server temporarily defers the connection. In your n8n Switch node, route `UNKNOWN` items to a delayed retry queue or suppression table rather than your primary cold email campaign.
