All posts
Turn inbound email into Zapier workflows — no code, no polling
Gabe 3 min read

Turn inbound email into Zapier workflows — no code, no polling

Zapier's email triggers poll an inbox over IMAP — slow, flaky, and broken for high-volume. MailKite pushes inbound email to a Zapier webhook as clean JSON the moment it arrives. This tutorial shows how to set up the webhook trigger, connect it to 5,000+ apps, and build email automation that actually works in real time.

Zapier can trigger workflows from email. But the default path is IMAP polling — Zapier logs into your inbox every 1–15 minutes, checks for new messages, and pulls them down. It’s slow, it’s unreliable for time-sensitive workflows, and it breaks when you need to process attachments or structured headers.

The better path: push inbound email to a Zapier webhook the moment it arrives. MailKite does this. Every message to your domain is parsed, authenticated, and POSTed to your Zapier Catch Hook as clean JSON — from, to, subject, text, html, attachments — within seconds.

Here’s how to set it up, and three workflows that actually work.

Why IMAP polling fails

Zapier’s “New Email” trigger uses IMAP IDLE or polling. Three problems:

  1. Latency. Polling intervals are 1–15 minutes depending on your plan. A support email that needs a response in 5 minutes sits in the queue for 10.

  2. Fragility. IMAP connections drop. Gmail rate-limits polling. Outlook’s IMAP has quirks that break Zapier’s parser. You’ll find workflows silently stopped with no alert.

  3. No structure. IMAP gives you raw MIME. Zapier’s parser extracts basic fields but mangles HTML, loses attachment metadata, and can’t handle nested multipart messages.

MailKite’s webhook gives you structured JSON with zero parsing overhead. The email arrives already decoded — body, headers, auth results, attachments with signed download URLs.

The setup: 5 minutes

1. Add your domain to MailKite

In the dashboard, add a domain (e.g., yourcompany.com). Publish the DNS records — MX, SPF, DKIM, DMARC. Takes under 5 minutes.

2. Create a Zapier webhook trigger

  1. Create a new Zap
  2. Trigger: Webhooks by Zapier → Catch Hook
  3. Copy the webhook URL (looks like https://hooks.zapier.com/hooks/catch/123456/abcdef/)
  4. Paste it into your domain’s webhook URL in the MailKite dashboard

3. Send a test email

Email any address on your verified domain. Zapier detects the hook and shows the payload fields:

from:       "customer@example.com"
to:         "support@yourcompany.com"
subject:    "Need help with my order"
text:       "Hi, I placed order #1234 but haven't received it yet."
html:       "<p>Hi, I placed order #1234...</p>"
attachments: [{ filename: "invoice.pdf", url: "https://..." }]

4. Build your workflow

Connect the webhook trigger to any of Zapier’s 5,000+ app actions. The from, subject, and text fields are ready to map.

Three workflows that actually work

Support email → Trello card

Trigger:  MailKite webhook (Catch Hook)
Filter:   Only continue if "from" is not in your team's domain
Action:   Create Trello card
          Board: Support
          List: New tickets
          Title: {{subject}}
          Description: From: {{from}}\n\n{{text}}

Every inbound support email becomes a Trello card. No manual forwarding, no copy-paste.

Invoice reply → Google Sheets log

Trigger:  MailKite webhook
Filter:   Subject contains "invoice" or "payment"
Action:   Add row to Google Sheets
          Column A: {{from}}
          Column B: {{subject}}
          Column C: {{text}}  (first 200 chars)
          Column D: {{timestamp}}

Track every invoice-related email in a spreadsheet for accounting.

Client email → Slack alert + auto-reply

Trigger:  MailKite webhook
Filter:   From ends with "@important-client.com"
Action 1: Send Slack message to #client-alerts
          "New email from {{from}}: {{subject}}"
Action 2: Send email via SMTP (MailKite)
          To: {{from}}
          Subject: Re: {{subject}}
          Body: "Thanks for reaching out. We'll get back to you within 24 hours."

Alert the team and auto-acknowledge — the customer gets an instant response.

Sending email from Zapier

Zapier also has an SMTP action. Point it at MailKite to send email from your own DKIM-signed domain:

SettingValue
SMTP Serversmtp.mailkite.dev
Port587
Usernamemailkite
PasswordYour API key (mk_live_…)
Use TLSYes

Now your Zapier workflows can both receive inbound email (webhook) and send outbound email (SMTP) — all through MailKite, all on the same domain.

How it compares

Zapier IMAP triggerMailKite webhook trigger
Latency1–15 minutes (polling)Seconds (push)
ReliabilityIMAP connections dropHTTPS webhook, retried
StructureRaw MIME, parser-dependentClean JSON, pre-parsed
AttachmentsLimited metadataFilename, size, signed URL
Auth resultsNot availableSPF, DKIM, DMARC included
SendingSMTP action (any provider)SMTP via MailKite, DKIM-signed

FAQ

Do I need a MailKite paid plan for this? No. The free tier includes inbound email and webhooks. You only need a paid plan if you’re sending high volumes of outbound email.

Can I use this with Zapier’s built-in email triggers? Yes — but the webhook trigger is faster and more reliable. Zapier’s “New Email” (IMAP) trigger works as a fallback, but you’ll see the latency difference immediately.

What about email with attachments? MailKite includes attachment metadata in the webhook payload (filename, contentType, size) and a signed download URL. Download the attachment in a subsequent Zap step or in your app code.

Can I filter emails before they reach Zapier? MailKite doesn’t filter — every inbound email triggers the webhook. Do your filtering in Zapier with a Filter step (e.g., “only continue if subject contains X”). This gives you full control over which emails trigger workflows.


Push inbound email to Zapier the moment it arrives. Start free — unlimited domains, no credit card.

Related: Email to webhook: the complete guide — the full payload reference · Receive email as a webhook in Python — if you’re building custom Zapier alternatives · Set up email once, reuse every project — the architecture

Discuss this post: Hacker News Share on X Share on LinkedIn

Related posts