MailOdds
Make

Make + MailOdds

Build powerful automation scenarios with visual workflows. Connect to 1,000+ apps with advanced data transformation.

Setup time: 5-10 min
Difficulty: Beginner
1,000 free validations included

Prerequisites

  • MailOdds account (free tier works)
  • API key from dashboard
  • Make account (free plan works)
  • Basic understanding of HTTP requests

Works with: Google Sheets Airtable HubSpot Salesforce ActiveCampaign Mailchimp Webflow Notion Slack Discord +2 more

Multi-Step Scenarios

Build complex workflows with conditional logic, loops, and data transformation.

Database Sync

Validate and sync email data between databases, CRMs, and marketing tools.

Scheduled Validation

Run bulk validation jobs on a schedule and automatically process results.

Download Blueprint Templates

Import these blueprints into Make to get started quickly. Go to Scenarios > Import Blueprint > Upload File.

Example Scenario Flow

1

Trigger

Start with your data source (Google Sheets, Airtable, Webhook, etc.)

2

HTTP Request

Call MailOdds API to validate the email

3

Router

Split flow based on validation status (valid/invalid/catch_all)

4

Actions

Update records, send notifications, or trigger downstream processes

Setup Guide

1

Get Your MailOdds API Key

Create an API key from your MailOdds dashboard. You'll use this in the HTTP module headers.

Go to API Keys
2

Create a New Scenario

In Make, create a new scenario and add your trigger module (e.g., "Watch Rows" from Google Sheets).

3

Add HTTP Module

Add an "HTTP - Make a request" module and configure it with the MailOdds API endpoint.

4

Add Router for Branching

Use a Router module to split the flow based on validation status and take different actions.

HTTP Module: Validate Email

JAVASCRIPT
Try Demo |
// Make HTTP Module Configuration

URL: https://api.mailodds.com/v1/validate
Method: POST

Headers:
  Authorization: Bearer {{your_api_key}}
  Content-Type: application/json

Body (JSON):
{
  "email": "{{email_from_previous_module}}"
}

Parse Response: Yes

HTTP Module: Create Bulk Job

JAVASCRIPT
// Make HTTP Module - Create Bulk Job

URL: https://api.mailodds.com/v1/jobs
Method: POST

Headers:
  Authorization: Bearer {{your_api_key}}
  Content-Type: application/json

Body (JSON):
{
  "emails": {{array_of_emails}},
  "callback_url": "{{your_webhook_url}}"
}

HTTP Module: Fetch Results

JAVASCRIPT
// Make HTTP Module - Fetch Results

URL: https://api.mailodds.com/v1/jobs/{{job_id}}/results
Method: GET
Query String:
  format: json
  per_page: 100
  page: 1

Headers:
  Authorization: Bearer {{your_api_key}}

Router Filter Examples

Use these conditions in your Router filters to branch based on validation results:

Valid Emails
result.action = "accept"
Risky Emails (catch-all)
result.action = "accept_with_caution"
Invalid Emails
result.action = "reject"

Webhook Configuration

Receive real-time event notifications from MailOdds in your Make scenarios. Use a Custom Webhook module as the trigger, then configure the URL in your MailOdds dashboard.

Supported events: message.bounced, message.opened, message.clicked, message.delivered, message.deferred

Webhook Event Fields

FieldTypeDescription
eventstringEvent type (message.bounced, message.opened, message.clicked, etc.)
tostringRecipient email address
message_idstringUnique message identifier
is_botbooleanTrue if event from security scanner/link prefetcher (engagement events only)
is_mppbooleanTrue if event from Apple Mail Privacy Protection (engagement events only)
link_urlstringClicked URL (message.clicked only)
bounce_typestringhard or soft (message.bounced only)
timestampstringISO 8601 event timestamp

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.

Webhook Payload Example

JSON
{
  "event": "message.clicked",
  "to": "user@example.com",
  "message_id": "msg_abc123",
  "link_url": "https://example.com/offer",
  "is_bot": false,
  "is_mpp": false,
  "timestamp": "2026-01-15T10:30:00Z"
}

Webhook Event Routing Scenario

JAVASCRIPT
// Make Scenario - Handle MailOdds Webhook Events
// 1. Webhook: Custom webhook (receive MailOdds event)
//    URL: Copy from Make and paste into MailOdds dashboard
//
// 2. Router: Branch by {{1.event}}
//    Route A: "message.bounced" AND {{1.bounce_type}} = "hard"
//      -> HTTP: POST https://api.mailodds.com/v1/suppression
//         Headers: Authorization: Bearer YOUR_API_KEY
//         Body: { "entries": [{ "type": "email", "value": "{{1.to}}" }] }
//
//    Route B: "message.clicked" AND {{1.is_bot}} != true
//      -> HTTP: POST to CRM or analytics endpoint
//
//    Route C: "message.opened" AND {{1.is_mpp}} != true
//      -> HTTP: Update engagement score in CRM

Suppression Management

Automatically suppress hard-bounced emails to protect your sender reputation. Build a bounce-to-suppression pipeline using webhook events and the POST /v1/suppression endpoint. Check suppressions before sending with POST /v1/suppression/check.

Bounce-to-Suppression Pipeline

JAVASCRIPT
// Make Scenario - Bounce-to-Suppression Pipeline
// 1. Webhook: Catch MailOdds webhook event
// 2. Filter: {{1.event}} = "message.bounced" AND {{1.bounce_type}} = "hard"
// 3. HTTP Module: POST to https://api.mailodds.com/v1/suppression
//    Headers: Authorization: Bearer YOUR_API_KEY
//    Body: { "entries": [{ "type": "email", "value": "{{1.to}}" }] }
//
// Suppression Check (before sending):
// HTTP Module: POST to https://api.mailodds.com/v1/suppression/check
//    Headers: Authorization: Bearer YOUR_API_KEY
//    Body: { "email": "{{previous_module.email}}" }
//    Response: { "suppressed": true/false, "reason": "..." }

Telemetry Dashboard

Monitor validation metrics on a schedule using GET /v1/telemetry/summary with ETag caching. Store the ETag in a Make Data Store to avoid reprocessing unchanged data. Send alerts when deliverability drops below threshold.

Scheduled Telemetry with ETag Caching

JAVASCRIPT
// Make Scenario - Scheduled Telemetry Monitoring
// 1. Schedule trigger: Every hour
// 2. Data Store: Get Record (key: "mailodds_etag")
// 3. HTTP Module: GET https://api.mailodds.com/v1/telemetry/summary
//    Headers:
//      Authorization: Bearer YOUR_API_KEY
//      If-None-Match: {{2.etag}}
//
// 4. Router:
//    Route A: Status code = 304 -> No Op (data unchanged)
//    Route B: Status code = 200
//      -> Data Store: Update Record (key: "mailodds_etag", value: {{3.headers.etag}})
//      -> Google Sheets: Add Row (timestamp, deliverable_rate, total_validations)
//      -> Filter: {{3.rates.deliverable}} < 0.85
//        -> Slack: Send alert message

Two-Tier Depth Optimization

Save SMTP credits by validating in two tiers. Tier 1 uses depth='standard' (syntax + DNS checks, no SMTP credit cost) to filter obviously invalid emails. Tier 2 uses depth='enhanced' (full SMTP verification) only for leads that pass Tier 1. Use a Filter module between the two HTTP modules. Typical savings: 72%.

Two-Tier Depth Optimization Scenario

JAVASCRIPT
// Make Scenario - Two-Tier Depth Optimization
// 1. Trigger: New row in Google Sheets / Webhook / etc.
//
// 2. HTTP Module: POST https://api.mailodds.com/v1/validate
//    Headers: Authorization: Bearer YOUR_API_KEY
//    Body: { "email": "{{1.email}}", "depth": "standard" }
//    (Tier 1: syntax + DNS, no SMTP credit cost)
//
// 3. Filter: {{2.action}} != "reject"
//    (Only continue if email passes basic validation)
//
// 4. HTTP Module: POST https://api.mailodds.com/v1/validate
//    Headers: Authorization: Bearer YOUR_API_KEY
//    Body: { "email": "{{1.email}}", "depth": "enhanced" }
//    (Tier 2: full SMTP verification for qualified leads)
//
// 5. Router: Branch by {{4.action}}
//    Typical savings: 72% fewer SMTP credits

Frequently Asked Questions

Troubleshooting

Need more help?

Can't find what you're looking for? We're here to help you get Make working.

Ready to Build Your Scenario?

Get your API key and start building powerful email validation workflows.