Receive email, not just send it.
Point MX at Unitpost. Any address on your domain becomes a webhook.
How it works
Sending, in reverse.
Mail lands, we parse it, then POST a signed webhook.
Point one MX record
One MX on a domain you already send from. Same auth.
We parse the MIME
Headers, text, HTML, attachments. Catch-all on the domain.
You get one signed event
email.received. Same signing, retries, and log.
One event, one handler
It's just another webhook.
email.received — same signed envelope as every other webhook.
whsec_••••••••- email.delivered1s200
- email.opened2h200
- email.bounced5h429
- email.clicked8h200
Safe by default
Scanned, verified, never in your payload.
Scanned. Verdicts on the event. Bytes stay out of the payload.
Spam & virus
Confirmed viruses rejected at ingest.
Attachments
Metadata on the event. Bytes via signed URLs.
SPF · DKIM · DMARC
Authentication results attached.
Spam
Flagged, never silently dropped
spam_verdictVirus
Confirmed viruses rejected at ingest
virus_verdictSPF
Sender-policy alignment
spf_verdictDKIM
Signature validation
dkim_verdictDMARC
Policy evaluation
dmarc_verdict
Developer-first
Fetch the full message on demand.
Same REST API and keys you send with.
Parsed
Headers, text, HTML, attachment metadata.
Signed downloads
URLs expire. No leaked links.
import { Unitpost } from "unitpost";
const unitpost = new Unitpost(process.env.UNITPOST_API_KEY);
// The webhook carries metadata — fetch the parsed message on demand.
const { data: email } = await unitpost.email.receivedGet("received_email_9f2c…");
console.log(email.subject, email.text, email.spam_verdict);
// Attachments come back as signed, expiring download URLs.
const { data: file } = await unitpost.email.receivedAttachmentUrl(
email.id,
email.attachments[0].id,
);
console.log(file.url); // expires in 5 minutesWhat you can build
Turn inbound mail into product
Every message is a structured event. The inbox is an integration point.
Support inboxes
support@ becomes events. Tickets open in your helpdesk.
Reply handling
Users reply by email. Threads land back in your app.
Parse & extract
Forwarded receipts, orders, forms. Pull the data out.
Email-to-action
Create a task, log an expense, kick off a build.
Attachment intake
Collect files by email. Fetch them over signed URLs.
Conversation history
Full thread next to what you sent. Per contact.
Included free
Send and receive on your domain
$0/ mo
- Included on every plan, including free
- One MX record — catch-all for your domain
- Signed email.received webhooks
- Reuses your verified domain auth
- Parsed headers, bodies & attachments
- Same REST API, dashboard & SDKs
Questions