n8n + MailOdds
Self-hosted workflow automation with full API access. Open-source, extendable, and developer-friendly.
Prerequisites
- MailOdds account (free tier works)
- API key from dashboard
- n8n instance (cloud or self-hosted)
- Familiarity with n8n expressions
Works with: PostgreSQL MySQL MongoDB Redis Webhook Slack Discord Telegram GitHub GitLab +2 more
Self-Hosted
Run n8n on your own infrastructure with full control over your data.
Open Source
Fully open-source with an active community and extensible architecture.
Secure
Your API keys never leave your server. Full audit trail of all operations.
Workflow Templates
Import directly into n8n. Configure credentials and go.
Google Drive Auto-Validation
PopularDrop CSV/Excel into a folder, get validated + rejected + manual-review files sorted automatically.
Google Sheets Validation
Launch jobs from Sheets via webhook, get results merged back with full statistics.
Single Email Validation
Validate one email via HTTP Request node. Perfect for form submissions.
Bulk Job with Webhook
Submit list, receive webhook when done. For large lists without timeout issues.
Quick Setup
Create MailOdds Credentials in n8n
In n8n, go to Credentials and create a new "Header Auth" credential with your MailOdds API key.
Get your API Key// n8n HTTP Header Auth Credentials Name: MailOdds API Header Auth: Name: Authorization Value: Bearer YOUR_API_KEY
Add HTTP Request Node
Add an HTTP Request node and configure it to call the MailOdds API. Select your credentials and set up the request body.
Process Results
Use IF nodes to route based on validation results. The response includes status, action, and detailed check information.
HTTP Request Node: Validate Email
JSON{
"nodes": [
{
"name": "Validate Email",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.mailodds.com/v1/validate",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "email",
"value": "={{ $json.email }}"
}
]
},
"options": {}
}
}
]
} HTTP Request Node: Create Bulk Job
JSON{
"nodes": [
{
"name": "Create Bulk Job",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.mailodds.com/v1/jobs",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ emails: $json.emails, callback_url: $json.webhook_url }) }}"
}
}
]
} Webhook Node: Receive Job Completion
JSON{
"nodes": [
{
"name": "Job Completed Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "mailodds-job-completed",
"httpMethod": "POST",
"responseMode": "onReceived",
"responseData": "allEntries"
}
}
]
} callback_url when creating bulk jobs.Example Workflow
// Complete n8n Workflow Example
// 1. Trigger: Webhook or Schedule
// 2. Get emails from your data source
// 3. Validate with MailOdds
// 4. Filter/route based on results
// 5. Update your database or send notifications
Workflow Steps:
1. Webhook Trigger (receive form submission)
↓
2. HTTP Request (POST /v1/validate)
↓
3. IF Node (check action === "accept")
├─ True → Add to CRM
└─ False → Send alert to SlackIF Node Conditions
Use these expressions in your IF nodes to route based on validation results:
{{ $json.result.action === 'accept' }}{{ $json.result.action === 'accept_with_caution' }}{{ $json.result.action === 'reject' }}{{ $json.result.sub_status === 'disposable' }}Frequently Asked Questions
Troubleshooting
Need more help?
Can't find what you're looking for? We're here to help you get n8n working.
Ready to Automate?
Get your API key and start building self-hosted email validation workflows.