The SendGrid Inbound Parse alternative
that sends JSON.
Inbound Parse posts each email to your URL as a multipart form. GhostParse sends clean, typed JSON, signed by default, with the reply already separated from the quoted history and the sender's authentication checked for you.
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 SendGrid Inbound Parse.
From SendGrid's public pages and documentation, October 2026. Plans and prices change: check SendGrid's site for the latest.
- Format
- SendGrid Inbound Parse posts multipart/form-data (fields such as from, to, subject, text, html, envelope, plus each attachment as a file).
- Signing
- SendGrid offers signature verification (ECDSA) and OAuth for Inbound Parse as a security policy you set up.
- Free plan
- SendGrid replaced its permanent free plan with a 60-day trial in 2025.
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 mx.sendgrid.net, or start with a subdomain such as inbound.yourapp.com. Change your endpoint to read JSON instead of the form fields.
Field by field
Where each SendGrid Inbound Parse field is in our webhook payload.
| SendGrid Inbound Parse | GhostParse |
|---|---|
from / to | data.from / data.to (parsed objects, not strings) |
envelope (JSON string) | data.envelope |
subject | data.subject |
text / html | data.text / data.html |
headers (raw text) | data.headers (an object) |
attachments, attachment1… | data.attachments[] (filename, content_type, size, content) |
SPF / dkim | data.authentication (SPF, DKIM, DMARC and an overall verdict) |
(none) | data.reply_text: the reply without the quoted history |
Before you switch.
Can I keep sending with SendGrid?
Yes. Receiving and sending are separate: move only your inbound email (the MX record) and keep sending with SendGrid, 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: Postmark Inbound · Mailgun Routes.