Zapier + MailOdds
Connect MailOdds to 5,000+ apps. Validate emails automatically from forms, spreadsheets, CRMs, and more.
Prerequisites
- MailOdds account (free tier works)
- API key from dashboard
- Zapier account (Starter+ for Code steps)
- Basic JavaScript knowledge
Works with: Google Sheets HubSpot Salesforce Typeform Airtable Mailchimp Slack Gmail Pipedrive Notion +2 more
Validate Form Submissions
Automatically validate emails from Typeform, Google Forms, or any form builder before adding to your CRM.
Clean Spreadsheet Data
Validate emails from Google Sheets or Airtable and update rows with validation status.
Enrich CRM Contacts
Validate new contacts in HubSpot, Salesforce, or Pipedrive and tag them based on email quality.
Download Code Snippets
Download all code snippets as a JavaScript file for easy reference. Includes single validation, bulk jobs, status checking, and webhook handling.
Download All SnippetsQuick Setup Guide
Get Your MailOdds API Key
Sign up for MailOdds and create an API key from your dashboard.
Go to API KeysCreate a New Zap
In Zapier, create a new Zap and choose your trigger (e.g., "New Form Submission" from Typeform).
Add a Code by Zapier Step
Add "Code by Zapier" as your action and select "Run JavaScript". Paste the validation code below.
Use Results in Next Steps
Use the validation result (status, action, is_valid) to filter, route, or update records in subsequent steps.
Validate Single Email
JAVASCRIPT// Zapier Code Step - Validate Single Email
const response = await fetch('https://api.mailodds.com/v1/validate', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: inputData.email
})
});
const result = await response.json();
return {
email: result.result.email,
status: result.result.status,
action: result.result.action,
is_valid: result.result.action === 'accept',
reason: result.result.sub_status || null
}; email and map it to your trigger's email field.Create Bulk Validation Job
JAVASCRIPT// Zapier Code Step - Create Bulk Validation Job
const emails = inputData.emails.split(',').map(e => e.trim());
const response = await fetch('https://api.mailodds.com/v1/jobs', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
emails: emails,
callback_url: 'YOUR_WEBHOOK_URL' // Optional
})
});
const result = await response.json();
return {
job_id: result.job.id,
status: result.job.status,
email_count: result.job.email_count
}; Webhook Payload (Job Completed)
JSON{
"event": "job.completed",
"job_id": "job_abc123",
"status": "completed",
"summary": {
"valid": 850,
"invalid": 120,
"catch_all": 25,
"unknown": 5
},
"results_url": "https://api.mailodds.com/v1/jobs/job_abc123/results"
} Response Fields
| Field | Type | Description |
|---|---|---|
| status | string | valid, invalid, catch_all, unknown, do_not_mail |
| action | string | accept, accept_with_caution, reject, retry_later |
| sub_status | string | Detailed reason (e.g., mailbox_not_found, disposable) |
| is_valid | boolean | true if action is "accept" (convenience field) |
Frequently Asked Questions
Troubleshooting
Need more help?
Can't find what you're looking for? We're here to help you get Zapier working.
Ready to Get Started?
Create your free account and start validating emails in minutes.