Email to Webhook
Turn inbound email into webhooks. Get a unique address, and every message you receive is parsed to clean JSON — sender, subject, text, HTML, headers and attachments — and delivered to your endpoint. A developer-friendly inbound email API and email parser, with no SMTP server to run.
See exactly what your endpoint receives
Pick a sample email — Webhook Relay parses it into the JSON on the right and POSTs it to your endpoint. These are real payload fields, not a mock-up.
{
"from": "[email protected]",
"from_name": "Jon Snow",
"recipient": "[email protected]",
"to": [
"[email protected]"
],
"subject": "Can't log in to my account",
"date": "Fri, 26 Jun 2026 11:27:41 +0400",
"message_id": "[email protected]",
"text": "Hi,\r\n\r\nI've been unable to log in since this morning — it just says 'invalid credentials'.\r\n\r\nThanks,\r\nJon",
"headers": {
"From": "Jon Snow <[email protected]>",
"Subject": "Can't log in to my account",
"Return-Path": "<[email protected]>"
},
"spf": "pass",
"dkim": "pass",
"dmarc": "pass"
}Fields you can use
from/from_name— sender address & namesubject— the email subjecttext/html— body partsto/cc/recipient— recipientsattachments[]— name, content_type, size, base64 contentspf/dkim/dmarc— auth resultsheaders— every raw header
Full payload reference →
Reshape it in flight (optional)
Attach a transform function to turn the email into your own schema — or a Slack/Discord/Teams message:
const e = JSON.parse(r.body);
r.setBody(JSON.stringify({
text: `📧 ${e.subject} — ${e.from}`
}));Build it visually with the Slack/Discord/Teams formatter →
How email-to-webhook works
- Add an email input to a bucket in the dashboard. You get a unique address like
<uuid>@in.webhookrelay-mail.com. - Point mail at it — from a person, an app, a payment provider, an alert, a report.
- Webhook Relay parses each message (sender, subject, text, HTML, headers, attachments, SPF/DKIM/DMARC) and POSTs it as JSON to your endpoint.
- Optionally transform it first, restrict senders, fan out to several destinations, or deliver to a server behind a firewall.
What you can build
A simpler inbound-email API
If you've used SendGrid Inbound Parse, Mailgun Routes, CloudMailin or the Zapier Email Parser, this will feel familiar — but Webhook Relay gives you the parsed JSON and the full delivery pipeline in one place: transforms, fan-out to multiple destinations, delivery to localhost or private servers, retries and an audit log. No DNS or MX setup to receive on the shared in.webhookrelay-mail.com domain, and a free tier to start.
Frequently asked questions
How do I turn an email into a webhook?
Add an email input to a bucket in the Webhook Relay dashboard. You get a unique address like <uuid>@in.webhookrelay-mail.com; every message sent to it is parsed to JSON and POSTed to your endpoint. See the docs.
What does the JSON payload look like?
A flat object with from, from_name, subject, text, html, to, cc, headers, spf/dkim/dmarc and an attachments array (base64 content). See the payload reference.
Do I need to set up DNS or an MX record?
No. You receive on the shared in.webhookrelay-mail.com domain at the address you are given — nothing to configure. Just send mail to it.
Can I restrict who can email the address?
Yes. Add an allowlist of From addresses to an email input and everything else is silently dropped. You also get per-input rate limiting and SPF/DKIM/DMARC results to check. See filtering & policy.
How are attachments delivered?
Inlined into the JSON as base64 in attachments[].content, with name, content_type and size. You can drop attachments or cap their total size per message.
Is it free?
Webhook Relay has a free tier you can start on. Receiving email works the same as any other input, so it uses your normal bucket quota.
