How to Verify Emails in n8n
n8n workflows move contacts between the forms, databases, and email tools that drive your marketing, which makes them the ideal place to catch bad addresses early. With the HTTP Request node you can call the VeriMails API mid-workflow, verify every contact as it arrives, and use an IF node to route each result. This guide walks through that build, on n8n Cloud or self-hosted.
TLDR
- Place a VeriMails API verification HTTP Request node right after your n8n trigger and before CRM or email-platform writes.
- Route deliverable results through IF or Switch, and hold invalid, disposable, catch-all, and unexpected statuses for review instead of mailing them.
- Use bulk verification for existing lists, then let the n8n workflow keep new webhook and form contacts clean in real time.
n8n Workflow Setup Checklist
Build the workflow so the HTTP Request node becomes a verification checkpoint. The routing nodes should decide what happens next from the VeriMails JSON response.
| Decision | n8n setup | Operator note |
|---|---|---|
| Input node | Use the Webhook node, form trigger, database trigger, or sheet trigger that first exposes the email value. | Verify before any downstream node writes the contact to a CRM or sender. |
| API credentials | Store the VeriMails key as an HTTP Request credential, using header or query authentication according to your API setup. | Credentials keep the key out of plain workflow fields and make rotation easier for self-hosted and Cloud instances. |
| HTTP Request node | Set the method and URL for the VeriMails API, then map the email with an expression from the trigger item. | Run the node once and inspect the output JSON before wiring the routing nodes. |
| Branching node | Use IF for a simple deliverable versus not-deliverable split, or Switch when you want separate outputs for catch-all, disposable, and role-based results. | Switch keeps multi-status routing easier to read and safer to extend later. |
| Failure behavior | Add an error or fallback branch that logs the input and response when the API call fails or returns an unexpected status. | Fail closed so an unverified address does not continue just because a node configuration changed. |
Why Verify Your n8n Contacts
n8n is the automation layer that connects your contact sources to the tools that store and mail them. Adding a verification node there means a bad address is caught once, in one place, before it can propagate across every connected system.
Workflows write contacts into systems that send and bill
A typical n8n workflow takes a new form submission or database row and writes it into an email platform, an ad audience, or a CRM. If that contact is invalid, the bad address now lives in a system that will bill you for it or try to mail it. An HTTP Request node calling VeriMails, placed before the write node, keeps every downstream system clean.
Webhook and form triggers carry the most bad data
The most common n8n triggers, such as the Webhook node receiving a new form submission and polling triggers on databases or sheets, are also the noisiest sources of email data. People mistype and fake addresses constantly. A verification node right after the trigger catches those errors at the entry point of the workflow.
Real-time verification keeps lists clean continuously
Verifying inside a workflow means each contact is checked the moment the webhook fires, not weeks later in a bulk export. Your lists stay clean continuously, your bounce rate has no chance to spike, and you never mail an address that was wrong from the start.
Bad addresses still bounce and damage sender reputation
However many nodes sit between the form and the inbox, an invalid address eventually bounces. Bounce rates above five percent push your campaigns toward spam across the whole list. A VeriMails node in the workflow removes that risk at the source instead of leaving your email platform to absorb it.
What VeriMails Checks
When an HTTP Request node calls the VeriMails API for a contact, VeriMails runs a full chain of checks and returns a structured result your IF or Switch node can branch on. Every address is tested as follows:
Syntax validation confirms the address is correctly formed. MX and DNS records are queried to confirm the domain exists and can receive mail. A live SMTP handshake connects to the receiving mail server to confirm the specific mailbox accepts mail, without sending anything. Catch-all detection identifies domains that accept every address sent to them. Disposable detection flags temporary inbox domains. Role-based detection identifies generic addresses like info@, sales@, and support@.
VeriMails returns clear verification results with fast response times, fast enough to sit inline in a webhook-triggered workflow. Catch-all domains are reported as a clear detection so your IF node logic can treat them deliberately, never as a vague score.
Pricing for n8n Users
A real-time verification workflow draws down VeriMails credits as new contacts arrive, so you pay only for the addresses you verify. Credit packs start at $0.0019 per email, and 10,000 credits cost $19. Larger credit packs scale up to 5 million addresses for $1,499 for high-volume workflows and agencies running n8n for clients.
If you prefer predictable billing for a steady contact flow, monthly subscriptions run from $15 per month to $299 per month. Every new account gets 100 free credits on signup with no credit card required, and credits never expire, so you can build and test your workflow before committing.
Workflow Visual
Use this flow to place VeriMails in the middle of an n8n workflow before contacts reach downstream apps.
- Trigger scope: Verify immediately after the Webhook, database, or form trigger that first exposes the email value.
- API step: Store the API key as a credential and pass the email field with an n8n expression.
- Result action: Use IF or Switch nodes to send valid contacts forward and log invalid, disposable, or catch-all outcomes separately.
Step-by-Step
Add the trigger that receives new contacts
Create a new workflow and add the trigger node, most often the Webhook node, which gives you a URL that external apps call when a contact is created or a form is submitted. You can also use a polling trigger on a database or spreadsheet. The trigger parses the incoming payload into JSON that downstream nodes can read.
Add an HTTP Request node to call VeriMails
Add the HTTP Request node, which is n8n's bridge for calling any external API. Configure it to request the VeriMails verification endpoint, use an expression to pass the email address from the trigger node, and store your VeriMails API key as an n8n credential referenced by the node. The JSON response is parsed for downstream nodes.
Add an IF node to branch on the result
Add an IF node after the HTTP Request node. Configure its condition to evaluate the VeriMails result, so deliverable contacts follow the true branch and undeliverable contacts follow the false branch. If you need to separate disposable and catch-all results too, use a Switch node for more than two outputs.
Route deliverable contacts to your destination
On the true branch, add the node that writes the contact into your email platform, CRM, or database. Only verified, deliverable addresses reach this node, so the lists and audiences in those systems stay clean automatically without any further cleanup.
Handle bad addresses and activate the workflow
On the false branch, add a node that logs undeliverable and disposable addresses to a database or sends a notification so you can review patterns. Execute the workflow with sample data to confirm each branch behaves correctly, then activate it so every new contact is verified the moment it arrives.
What to Do With Each Result
Use verification status as a workflow control field. A clean n8n workflow makes every non-deliverable outcome visible instead of letting it disappear into a generic false branch.
- Deliverable: Continue to the CRM, data table, email platform, or database node and add a verified timestamp where possible.
- Undeliverable: Stop before any sender or CRM write node and log the item to a suppression store.
- Catch-all: Route to a review output or a low-volume sales path, not to broad campaign enrollment.
- Disposable: Drop from nurture workflows and optionally respond to the source form with a durable-email requirement.
- Role-based: Keep for operational use cases where shared inboxes are expected, but exclude from person-level sequences.
- Unexpected status: Send to a diagnostic branch with the raw JSON, execution ID, and source payload for review.
Frequently Asked Questions
Related Guides
Try VeriMails Free
100 free credits on signup. No credit card required. Put this guide into practice today.
Start Free