
Mailchimp + MailOdds
Validate subscriber emails to keep your Mailchimp audience clean. Remove invalid addresses, reduce bounces, and protect your sender reputation.
Prerequisites
- MailOdds account with API key
- Mailchimp account with audience
- Zapier or Make account
How to Connect
Mailchimp Use Cases
New Subscriber Validation
Validate emails as people join your audience. Auto-archive invalid subscribers before they receive campaigns.
Pre-Campaign List Clean
Bulk validate your audience before major sends. Remove invalid addresses to keep bounce rates under 2%.
Disposable Email Detection
Catch disposable and temporary emails that inflate subscriber counts without engagement.
Segment by Email Quality
Tag subscribers by validation status. Send critical campaigns only to verified addresses.
Step-by-Step Setup
Get API Keys
MailOdds API key from dashboard. Mailchimp API key from Account > Extras > API Keys.
Create Zap: New Subscriber
Trigger on "New Subscriber" in Mailchimp. Map email_address to validation Code step.
Validate with MailOdds
Code step validates the email. Returns status, action, disposable flag, and detailed sub_status.
Route by Result
Filter: if invalid, archive the subscriber. If valid, add "verified-email" tag.
Create Segments
In Mailchimp, create segments using tags. Target verified subscribers for important campaigns.
Zapier: Validate Mailchimp Subscriber
JAVASCRIPT// Zapier Code Step - Validate Mailchimp Subscriber 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 // Mapped from Mailchimp subscriber email
})
});
const result = await response.json();
return {
email: result.email,
status: result.status,
action: result.action,
is_valid: result.action === 'accept',
is_disposable: result.disposable || false
}; Make: Mailchimp List Validation
JAVASCRIPT// Make Scenario - Mailchimp List Validation
// 1. Mailchimp: Watch New Subscribers (trigger)
// 2. HTTP Module: POST to https://api.mailodds.com/v1/validate
// Headers: Authorization: Bearer YOUR_API_KEY
// Body: { "email": "{{1.email_address}}" }
// 3. Router: Branch by action
// - "reject" -> Mailchimp: Unsubscribe/Archive Member
// - "accept_with_caution" -> Mailchimp: Add Tag "risky-email"
// - "accept" -> Mailchimp: Add Tag "verified-email"
// 4. Mailchimp: Update Member Merge Fields
// VALIDATION = {{2.data.status}} Zapier: Remove Invalid Subscribers
JAVASCRIPT// Zapier: Remove Invalid Subscribers from Mailchimp
// After validation, clean invalid emails from your audience:
//
// Step 1: Code by Zapier (validation above)
// Step 2: Filter - Only continue if is_valid = false
// Step 3: Mailchimp - Unsubscribe Email
// List: Your Main Audience
// Email: {{trigger.email_address}}
// Status: "cleaned" (permanent removal)
//
// Alternative: Archive instead of unsubscribe
// to keep the record but prevent future sends. Webhook Event Handling
Receive real-time MailOdds events and update Mailchimp subscribers automatically. Route bounces to cleaned status, and use filtered open/click data to update merge fields.
Understanding is_bot and is_mpp in Webhook Events
is_bot = true when the event came from a security scanner, link prefetcher, or corporate email gateway (not a human). Common with Barracuda, Proofpoint, and Mimecast.
is_mpp = true when the event came from Apple Mail Privacy Protection, which pre-fetches all images and inflates open counts. Affects roughly 50% of iOS/macOS mail users.
Both fields are Booleans on engagement events (opened, clicked). Always guard with == true since they may be absent on non-engagement events.
Zapier: Handle MailOdds Webhook Events for Mailchimp
JAVASCRIPT// Zapier Code Step - Handle MailOdds Webhook Event
const event = inputData.event;
const email = inputData.to;
if (event === 'message.bounced') {
// Add to MailOdds suppression list
const suppRes = await fetch('https://api.mailodds.com/v1/suppression', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
entries: [{ type: 'email', value: email, reason: 'hard_bounce' }]
})
});
// Archive member in Mailchimp
// Next Zapier step: Mailchimp - Update Subscriber Status to "cleaned"
}
if (event === 'message.opened' && !inputData.is_bot && !inputData.is_mpp) {
// Real human open - update Mailchimp merge field
// Next step: Mailchimp - Update Subscriber Merge Fields
// LASTOPEN = new Date().toISOString()
}
if (event === 'message.clicked' && !inputData.is_bot) {
// Real click - tag subscriber
// Next step: Mailchimp - Add Tag "engaged-validated"
}
return { event, email, is_bot: inputData.is_bot, is_mpp: inputData.is_mpp }; Suppression Sync
Keep your MailOdds suppression list in sync with Mailchimp. Add bounced emails to your blocklist and check suppression status before sending campaigns.
Zapier: Sync Suppression List with Mailchimp
JAVASCRIPT// Zapier: Sync MailOdds Suppression List with Mailchimp
// Step 1: Check if email is suppressed before sending
const checkRes = await fetch('https://api.mailodds.com/v1/suppression/check', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ email: inputData.email })
});
const check = await checkRes.json();
if (check.suppressed) {
// Email is on blocklist - archive in Mailchimp
// Next step: Mailchimp - Update Subscriber Status to "cleaned"
return { suppressed: true, email: inputData.email, reason: check.reason };
}
return { suppressed: false, email: inputData.email }; Engagement Enrichment
Push validation health metrics into Mailchimp merge fields. Track deliverable rates and validation counts for audience-level reporting.
Zapier: Push Telemetry Data to Mailchimp Merge Fields
JAVASCRIPT// Zapier: Push Validation Health to Mailchimp Merge Fields
const response = await fetch('https://api.mailodds.com/v1/telemetry/summary', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const telemetry = await response.json();
// Update Mailchimp subscriber merge fields with validation health
// Next step: Mailchimp - Update Subscriber Merge Fields
// VALTOTAL = telemetry.totals.validations
// DELRATE = telemetry.rates.deliverable
// BNCRATE = telemetry.rates.undeliverable
return {
total_validations: telemetry.totals.validations,
deliverable_rate: telemetry.rates.deliverable,
undeliverable_rate: telemetry.rates.undeliverable
}; Bulk Audience Validation
Validate your entire Mailchimp audience before a campaign. Submit emails in batch, poll for results, and archive or tag subscribers based on outcomes.
Zapier: Bulk Validate Mailchimp Audience
JAVASCRIPT// Zapier: Bulk Validate Mailchimp Audience Before Campaign
// Step 1: Export Mailchimp audience emails (via API or CSV export)
// Step 2: POST batch to MailOdds
const response = await fetch('https://api.mailodds.com/v1/validate/batch', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
emails: inputData.emails, // Array of emails from Mailchimp audience
depth: 'enhanced'
})
});
const batch = await response.json();
// batch.job_id - poll GET /v1/validate/batch/{job_id} for results
// Then archive or tag subscribers based on validation outcomes
return { job_id: batch.job_id, count: inputData.emails.length }; Frequently Asked Questions
Troubleshooting
Need more help?
Can't find what you're looking for? We're here to help you get Mailchimp working.
Clean Your Mailchimp Audience
Get 1,000 free validations. Remove invalid subscribers and reduce bounces.