The Postmark Inbound alternative
that never keeps your email.
Postmark is a great sending service, and its inbound processing is solid. GhostParse is built around the email that comes in: it starts free, bills only for what you process, signs every webhook, and doesn't store a single message.
Inbound email, done properly.
Starts free
1,000 emails a month on the free plan, then pay as you go: £0 a month and £1.50 per 1,000 emails, so a quiet month costs nothing.
Signed, typed JSON
Every webhook is signed (Standard Webhooks), and every field is always there: null when the email doesn't have it.
The reply, not the thread
reply_text is what the person actually wrote, with the quoted history and signatures removed.
Is the sender real?
SPF, DKIM and DMARC are checked for every email, with one verdict to trust, plus spam and virus checks.
Never stored
Email is parsed in memory and delivered. We keep a short log of metadata, never the message.
Fields, not just text
Pull order numbers, totals and tracking codes out of email with rules or AI, from ready-made parsers or your own.
Route it anywhere
Routing rules send email to your webhook, Slack, Microsoft Teams, Google Sheets, Make or n8n, with up to 100 rules on every plan.
Test on localhost
The CLI streams real email to your laptop, and simulate fires signed test webhooks offline, before you even have a domain.
Attachments to your bucket
Files can go straight to your own S3, R2, B2 or Google Cloud bucket, with download links in the webhook instead of base64.
What to know about Postmark Inbound.
From Postmark's public pages and documentation, October 2026. Plans and prices change: check Postmark's site for the latest.
- Where inbound is available
- Postmark lists inbound processing on its Pro and Platform plans (Pro from $16.50 a month for 10,000 emails, as listed in October 2026), not on Basic.
- Payload
- Postmark posts each inbound email to your webhook as JSON, with the reply text and attachments included.
Move over in an afternoon.
Add your domain
Create a free account, add the domain (or a subdomain), and add the DNS records the dashboard shows you, automatically if you use Cloudflare.
Test locally first
Run npx @wildye/email-parser-cli simulate http://localhost:3000/your-endpoint to see the exact payload your code will get, signed, before any mail moves.
Switch the MX
Point the domain's MX record at us instead of Postmark's inbound server, or start with a subdomain such as inbound.yourapp.com so nothing changes for your main mailbox.
Field by field
Where each Postmark Inbound field is in our webhook payload.
| Postmark Inbound | GhostParse |
|---|---|
FromFull.Email / FromFull.Name | data.from.address / data.from.name |
ToFull[].Email | data.to[].address (and data.recipients[] for your own addresses) |
Subject | data.subject |
TextBody / HtmlBody | data.text / data.html |
StrippedTextReply | data.reply_text |
Headers → Message-ID | data.message_id (headers are also in data.headers) |
Attachments[].Name / ContentType / ContentLength | data.attachments[].filename / content_type / size |
Attachments[].Content | data.attachments[].content (base64), or multipart parts: your choice |
Before you switch.
Can I keep sending with Postmark?
Yes. Receiving and sending are separate: move only your inbound email (the MX record) and keep sending with Postmark, or send with us too.
Can I try it without moving my main domain?
Yes. Use a subdomain such as inbound.yourapp.com, or your account's instant inbox address, which needs no DNS at all. Your main mailbox carries on as it is.
How do I check the webhooks are really from you?
Each webhook carries a webhook-signature header (Standard Webhooks, HMAC-SHA256). Our SDKs for Node.js, Python, PHP, Ruby and Go verify it in one line.
Do you store the emails?
No. Email is parsed in memory and delivered to you; we keep a short log of metadata (who, when, what happened), never the message itself. How we handle data.
Try it on a subdomain today.
Also compared: Mailgun Routes · SendGrid Inbound Parse.