Inbound email → webhook

Receive email as a webhook

Every incoming message parsed into clean JSON and POSTed to your endpoint. No mail server. No MIME parsing. No assembly required.

How it works

Three steps to live

  1. 1

    Add your domain

    Point your domain's MX records at MailKite. We verify DNS and activate the domain in seconds.

  2. 2

    Register a webhook URL

    Tell MailKite where to POST incoming email. Any HTTP endpoint works — your API, a Cloudflare Worker, a Lambda function.

  3. 3

    Receive your first email

    Send a test email to your domain. MailKite parses it and POSTs clean JSON to your webhook. Done — no mail server, no setup.

Show me

This is what hits your endpoint

Clean, pre-parsed JSON — no multipart form decoding, no MIME assembly.

http
POST /your-webhook   Content-Type: application/json
x-mailkite-signature: t=…,v1=… (HMAC-SHA256 — verify locally)

{
"id": "msg_2Hk9…",
"type": "email.received",
"from": { "address": "ada@example.com" },
"to": [{ "address": "support@myapp.ai" }],
"subject": "Re: invoice #1042",
"text": "Looks good — approved!",
"html": "<p>Looks good — approved!</p>",
"threadId": "<a1b2c3@mail.example.com>",
"auth": { "spf": "pass", "dkim": "pass", "dmarc": "pass", "spam": "ham" },
"attachments": [
{ "filename": "po.pdf", "contentType": "application/pdf",
"size": 18213, "url": "https://api.mailkite.dev/att/2Hk9…/0?sig=…" }
]
}
Why teams switch

What you get

Clean JSON, not multipart

Every email arrives as a pre-parsed JSON object — sender, subject, body (text + HTML), thread ID, auth results, and attachments with signed URLs. No MIME re-parsing.

HMAC-signed delivery

Every webhook includes an x-mailkite-signature header (HMAC-SHA256). Verify the payload is authentic before your handler runs.

Built-in threading

threadId resolves In-Reply-To and References headers automatically. Group replies into conversations without parsing headers yourself.

At-least-once delivery

Failed webhooks retry with exponential backoff. Missed deliveries land in a dead-letter queue you can replay from the dashboard.

Unlimited domains, free

Point MX records at MailKite for as many domains as you need. No per-domain charges, no tier gating.

Attachments included

Attachments are extracted, stored, and delivered as signed URLs in the JSON payload. No multipart stream to decode.

In the box

What's included

Questions

What is an email webhook?

An email webhook is a URL that receives incoming email as an HTTP POST request. When someone sends email to your domain, the email provider parses the message and sends the content (sender, subject, body, attachments) as a JSON payload to your webhook URL.

How is this different from SendGrid Inbound Parse?

SendGrid Inbound Parse delivers email as a multipart form POST — you re-parse the MIME structure yourself. MailKite delivers a clean, pre-parsed JSON payload with HMAC signature verification. No multipart handling required.

Do I need to run a mail server?

No. Point your domain's MX records at MailKite and we receive, parse, and deliver every email as a webhook. No Postfix, no IMAP, no mail server to babysit.

Is there a free tier?

Yes. MailKite is free on unlimited domains. No credit card required. You pay only when you need higher volume or premium features.

What about deliverability?

MailKite handles SPF, DKIM, and DMARC authentication on inbound. For outbound, we sign with your domain's DKIM and handle bounce/complaint feedback loops automatically.

Keep reading

Ready to receive?

Point a domain, drop in a webhook URL, receive your first email. Unlimited domains, no credit card.