Stop manually uploading CSV files and copy-pasting API responses. Build automated validation workflows that screen signups in real-time, clean CRM data continuously, and run pre-campaign checks without touching a spreadsheet. Covers Zapier, n8n, Make, Clay, and AI agent integration patterns.
Most teams validate emails manually—upload a CSV, wait for results, download, re-upload to CRM. That loop is slow, error-prone, and doesn't catch bad data at the point of entry.
Manual email verification—exporting CSVs, uploading to a validator, downloading results, re-importing to your CRM—is a process that wastes hours per week and misses bad data at the point of entry. Automated workflows validate emails at signup, on CRM sync, and before every campaign, without human intervention. This guide covers five real integration patterns using the email-check.app API.
Every workflow in this guide uses the email-check.app REST API. You need:
POST https://api.email-check.app/v1/validate{ "email": "user@domain.com" }# Base API call used in all workflows
curl -X POST "https://api.email-check.app/v1/validate" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "contact@company.com"}'
# Response fields you'll use in automation:
# - status: "deliverable" | "undeliverable" | "unknown" | "accept_all"
# - disposable: true/false
# - roleBased: true/false
# - freeProvider: true/false
# - riskScore: 0-100
# - suggestion: "corrected@domain.com" or nullZapier connects webhooks to CRM updates. Use it to validate every new signup, form submission, or lead capture in real-time, then route valid leads to your CRM and flag invalid ones for review.
https://api.email-check.app/v1/validate with the email from the trigger. Pass your API key in the Authorization header.status = deliverable, proceed to CRM. If disposable = true or status = undeliverable, log to a rejection sheet.// Zapier Webhook payload (what your form sends to Zapier)
{
"email": "john.doe@company.com",
"firstName": "John",
"lastName": "Doe",
"source": "landing_page_v2",
"timestamp": "2026-03-16T10:30:00Z"
}
// Zapier custom request configuration
// Method: POST
// URL: https://api.email-check.app/v1/validate
// Headers:
// Authorization: Bearer YOUR_API_KEY
// Content-Type: application/json
// Body (JSON):
// { "email": "{{trigger_email}}" }
// Routing logic in Zapier Paths:
// Path A (valid): status == "deliverable" && disposable == false
// → Create Salesforce Lead with email_verified = true
// Path B (risky): riskScore > 70 || status == "accept_all"
// → Create Lead with email_verified = "unverified"
// Path C (invalid): status == "undeliverable" || disposable == true
// → Log to Google Sheet "Rejected Signups"When to use Zapier: marketing-led teams that want no-code setup, teams already using Zapier for other automations, and workflows that connect form tools (Typeform, Gravity Forms) to CRMs.
n8n gives you more control than Zapier. Use it for scheduled bulk validation of CRM contacts—running weekly checks that flag decayed emails, remove invalid records, and update risk scores. n8n handles pagination, rate limiting, and error handling programmatically.
// n8n function node — process validation results
// Add this as a Function node after the API call
for (const item of $input.all()) {
const result = item.json;
// Classify validation result
let emailStatus = 'valid';
let crmAction = 'none';
if (result.disposable) {
emailStatus = 'disposable';
crmAction = 'remove';
} else if (result.status === 'undeliverable') {
emailStatus = 'bounced';
crmAction = 'remove';
} else if (result.status === 'accept_all' || result.status === 'unknown') {
emailStatus = 'uncertain';
crmAction = 'flag';
} else if (result.riskScore > 70) {
emailStatus = 'high_risk';
crmAction = 'flag';
}
// Set CRM update fields
item.json = {
email: result.email,
email_status: emailStatus,
email_risk_score: result.riskScore,
email_last_verified: new Date().toISOString(),
crm_action: crmAction,
suggestion: result.suggestion || null
};
}
return $input.all();When to use n8n: engineering teams that want self-hosted automation, workflows that need custom logic or branching, and teams validating large CRM databases on a schedule.
Make excels at data transformation. Use it to connect your email marketing platform (Mailchimp, Klaviyo, SendGrid) to the validation API, automatically cleaning lists before each campaign send.
status = deliverable and disposable = false.// Make (Integromat) HTTP module configuration
// URL: https://api.email-check.app/v1/validate
// Method: POST
// Headers:
// Authorization: Bearer {{emailCheckApiKey}}
// Content-Type: application/json
// Body:
// { "email": "{{1.email}}" }
// Make Filter configuration:
// Condition: AND
// [1.status] Equal to [deliverable]
// [1.disposable] Equal to [false]
// [1.roleBased] Equal to [false]
// [1.riskScore] Less than [70]
// Output: Only clean, deliverable contacts
// proceed to campaign send segmentWhen to use Make: email marketing teams that want visual workflow builders, teams connecting Klaviyo/Mailchimp/SendGrid to validation, and pre-campaign hygiene that runs automatically.
Clay automates B2B prospecting workflows. Use the email-check.app API as an enrichment step that validates prospect emails before they enter your outbound sequence—preventing bounces from killing your sender reputation mid-campaign.
status = deliverable, freeProvider = false, and roleBased = false.// Clay HTTP enrichment column settings:
// API URL: https://api.email-check.app/v1/validate
// Method: POST
// Headers:
// Authorization: Bearer YOUR_API_KEY
// Request body (JSON):
// { "email": "{{Email}}" }
// Clay table columns after enrichment:
// | Name | Email | Status | Disposable | Free | Risk |
// |---------------|--------------------|-------------|------------|------|------|
// | Jane Smith | jane@acmecorp.com | deliverable | false | false | 8 |
// | Bob Johnson | bob@gmail.com | deliverable | false | true | 45 |
// | Fake User | test@mailinator.com| undeliverable| true | true | 95 |
// Clay filter: status = "deliverable" AND roleBased = false AND riskScore < 50
// Only high-quality B2B contacts proceed to outreachWhen to use Clay: B2B sales teams running outbound campaigns, RevOps building prospecting pipelines, and teams that need spreadsheet-style data enrichment with API-powered validation.
AI agents and MCP (Model Context Protocol) servers represent the next layer of automation. An AI agent with access to the email-check.app API can validate emails as part of a larger workflow—enriching leads, updating CRM records, and triggering downstream actions without pre-defined steps.
The agent receives a tool definition for email verification and calls it autonomously when it encounters an email that needs validation during a task. This works in any agent framework that supports tool calling.
// AI Agent tool definition for email verification
const emailVerificationTool = {
name: "verify_email",
description: "Validate an email address. Returns deliverability status, " +
"disposable detection, risk score, and typo suggestions.",
parameters: {
type: "object",
properties: {
email: {
type: "string",
format: "email",
description: "The email address to validate"
}
},
required: ["email"]
}
};
// Agent implementation using the tool
async function verifyEmail(email) {
const response = await fetch(
'https://api.email-check.app/v1/validate',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.EMAIL_CHECK_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ email })
}
);
const result = await response.json();
return {
email: result.email,
isDeliverable: result.status === 'deliverable',
isDisposable: result.disposable,
isRoleBased: result.roleBased,
isFreeProvider: result.freeProvider,
riskScore: result.riskScore,
suggestion: result.suggestion,
recommendation: buildRecommendation(result)
};
}
function buildRecommendation(result) {
if (result.disposable) return 'REJECT: disposable email';
if (result.status === 'undeliverable') return 'REJECT: invalid mailbox';
if (result.riskScore > 80) return 'FLAG: high risk score';
if (result.roleBased) return 'REVIEW: role-based address';
if (result.suggestion) return `CORRECT: typo detected (${result.suggestion})`;
return 'ACCEPT: email verified';
}Agent use cases: an AI sales assistant that validates prospect emails before adding them to outreach sequences, a support bot that checks email validity when users report not receiving messages, or an MCP server that provides email verification as a tool to any connected AI application.
For teams with large lists (100K+ contacts), bulk validation needs to be an automated pipeline, not a manual upload. This pattern combines a scheduled trigger with batch API processing and CRM updates.
// Automated bulk validation script
// Run via n8n, cron, or any scheduler
const API_KEY = process.env.EMAIL_CHECK_API_KEY;
const BATCH_SIZE = 100;
const DELAY_MS = 200; // Rate limiting between batches
async function fetchContactsFromCRM() {
// Fetch all contacts modified in the last 30 days
// that haven't been validated yet
const response = await fetch(
'https://your-crm-api.com/contacts?modifiedSince=2026-02-14&validated=false',
{ headers: { 'Authorization': `Bearer ${process.env.CRM_API_KEY}` } }
);
return response.json();
}
async function validateBatch(emails) {
const response = await fetch(
'https://api.email-check.app/v1/validate',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ emails })
}
);
return response.json();
}
async function updateCRM(results) {
for (const result of results) {
await fetch(
`https://your-crm-api.com/contacts/${result.id}`,
{
method: 'PATCH',
headers: {
'Authorization': `Bearer ${process.env.CRM_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
email_status: result.status,
email_risk_score: result.riskScore,
email_last_verified: new Date().toISOString()
})
}
);
}
}
async function runBulkValidation() {
const contacts = await fetchContactsFromCRM();
const emails = contacts.map(c => c.email);
for (let i = 0; i < emails.length; i += BATCH_SIZE) {
const batch = emails.slice(i, i + BATCH_SIZE);
const results = await validateBatch(batch);
await updateCRM(results);
// Rate limiting: wait between batches
if (i + BATCH_SIZE < emails.length) {
await new Promise(r => setTimeout(r, DELAY_MS));
}
}
console.log(`Validated ${emails.length} contacts`);
}
runBulkValidation();The patterns work with any REST API that accepts an email and returns validation status. Adjust the endpoint URL, authentication method, and response field names to match your provider's API documentation. The routing logic (what to do with deliverable vs undeliverable results) stays the same.
No. Zapier and Make run entirely in the cloud. n8n can be self-hosted or run on n8n Cloud. The bulk validation script needs a runtime (Node.js, Python, or any HTTP client), which can run on a serverless function, a cron job, or a CI/CD pipeline.
Batch API calls in groups of 50-100 with small delays between batches (200-500ms). Most validation providers handle 100+ requests per second. If you hit 429 responses, implement exponential backoff. For very large lists (1M+), spread validation across multiple hours using a scheduler.
email-check.app processes emails for verification and does not store them (SOC 2 Type II and GDPR compliant). When building workflows, ensure that validation results stored in your CRM follow your data retention policies and that email addresses are processed under a legitimate interest basis.
AI agents are better suited for dynamic, decision-driven tasks (e.g., "validate this prospect email and decide whether to add it to the sequence"). Zapier/n8n/Make are better for deterministic, scheduled workflows (e.g., "every Monday, validate all CRM contacts modified in the last 7 days"). Most teams use both.
Each platform has strengths. The right choice depends on your team, your stack, and how much control you need over the validation pipeline.
| Platform | Best For | Complexity | Bulk Support | Real-Time |
|---|---|---|---|---|
| Zapier | Marketing teams, no-code | Low | Limited | Excellent |
| n8n | Engineering, self-hosted | Medium | Excellent | Excellent |
| Make | Email marketing, visual builder | Low | Good | Good |
| Clay | B2B sales, prospecting | Low | Good | Per-enrichment |
| AI Agents / MCP | Dynamic, decision-driven tasks | High | Custom | Excellent |
The email-check.app API supports both request-response and webhook patterns. Use webhooks for async bulk processing and real-time validation for synchronous form checks.
Upload CSV files via API or dashboard for large-scale list cleaning. Process 100K+ emails in under an hour with detailed status reports and downloadable results.
Real-time workflows need fast validation. 25ms response time means zero perceptible delay in signup forms, Zapier flows, and agent tool calls.
Every email gets a 0-100 risk score. Use it to build multi-path routing: accept clean emails, flag risky ones, and reject disposable or undeliverable addresses automatically.
SMTP verification, MX checking, disposable detection, typo correction, and risk scoring all execute in a single API call. No separate endpoints, no extra configuration.
Emails are processed for validation and not stored. SOC 2 Type II, ISO 27001, GDPR, and CCPA compliance make it safe for enterprise automation pipelines.
Get an API key and start building workflows in Zapier, n8n, Make, Clay, or your own agent framework. Plans start at $6.99/month with 6,000 validations included.
All plans include SMTP verification, disposable detection, typo correction, and risk scoring. No feature paywalls. Enterprise pricing available.