Turn incoming email into webhooks
Point an MX record at Postscale. Every message arrives at your app as a signed JSON webhook — headers, body, attachments, and sender metadata all parsed and ready.
Parsed JSON payload
Headers, plain-text body, HTML body, and every attachment delivered as structured fields. No MIME parsing on your end.
Attachments to S3
Files over 1 MB are streamed to S3-compatible storage with a pre-signed URL in the webhook payload. No base64 bloat.
Catch-all or per-address
Route every @yourdomain.com address to one endpoint, or define patterns like support-+ticket@… for routing inside your app.
HMAC-signed webhooks
Every delivery is signed with HMAC-SHA256. Verify authenticity in one line. Retries with exponential backoff for 4 attempts.
Reply detection
Built-in In-Reply-To / References threading. Know which outbound message a reply belongs to without writing your own heuristics.
EU-hosted MX
Your inbound MX record points at EU infrastructure. Traffic never leaves the jurisdiction. GDPR processor agreement included.
{
"id": "in_01HY...",
"to": "support@yourapp.com",
"from": "customer@example.com",
"subject": "Password reset not working",
"text_body": "Hi, I'm trying to reset my password...",
"html_body": "<p>Hi, I'm trying to reset my password...</p>",
"in_reply_to": "msg_01HY...",
"attachments": [
{
"filename": "screenshot.png",
"content_type": "image/png",
"size_bytes": 128432,
"url": "https://storage.postscale.io/att/...?sig=..."
}
],
"received_at": "2026-04-16T11:22:00Z"
}Frequently asked questions
How do I point my domain at Postscale?
Add an MX record pointing at mx.postscale.io with priority 10. We verify ownership via a TXT record. The full setup is four DNS records and takes about five minutes.
What happens to attachments?
Small attachments (≤ 1 MB) are embedded in the webhook payload as base64. Larger ones are uploaded to your configured S3 bucket (or ours) and delivered as pre-signed URLs valid for 24 hours.
Can I filter inbound messages?
Yes. Define rules per domain: block senders, reject by subject pattern, auto-respond, or route to different endpoints. Rules run before the webhook fires.
What's the pricing model?
Pay per processed message. Free tier includes 1,000 inbound/month. See /pricing for paid tiers.
Further reading
How to build a support inbox with an inbound email API
Step-by-step tutorial — MX setup, webhook signing, reply threading, and the edge cases that break production.
DMARC Reporting API
Close the loop: monitor authentication for the domain that receives your inbound mail.
Moving from SendGrid for inbound parsing
SendGrid's Inbound Parse is billed separately. Here's what migrating to a single-key alternative looks like.
Ready to build?
Free tier includes everything you need to evaluate. No credit card required.
Create a free account