Receive and parse email
right inside your app.
Point a domain at Lettr and every incoming message arrives as clean JSON — sender, subject, body, headers, and attachments — fired to your webhook in real time. No IMAP polling, no MIME parsing. Build support inboxes, reply handling, and email-to-app workflows on the same platform you send from.
Send and receive on one platform. See the email API.
What is an
inbound email API?
An inbound email API lets your application receive and process incoming email programmatically — without running a mail server or polling an IMAP mailbox.
You point a domain or subdomain at the provider with MX records. When mail arrives, Lettr parses it and delivers a structured payload to your app over a webhook, so you work with clean JSON instead of raw MIME.
- 01 Someone emails an address on your inbound domain.
- 02 Their mail server follows your MX records to Lettr.
- 03 Lettr parses the message into JSON — body, headers, attachments.
- 04 A webhook fires to your endpoint and your app takes over.
The inbound API does the receiving and parsing; the email webhook is how the parsed result reaches your code in real time.
Email becomes an
input to your product.
Once incoming mail is structured JSON, anything your code can do with an API request, it can do with an email.
Email-to-ticket support
Route support@ to Lettr and turn every inbound message into a ticket in your help desk — sender, subject, body, and attachments already parsed into JSON.
Reply-to-thread handling
Use variable addressing like reply+ticket_42@inbound.yourdomain.com and read the Message-ID and In-Reply-To headers to thread replies back to the right conversation.
Email-to-app workflows
Let users forward, file, or trigger actions by email. Each inbound message becomes a webhook your app acts on — create records, kick off jobs, or notify a channel.
Parse attachments & data
Receipts, CSVs, signed PDFs, screenshots. Attachments arrive parsed with filename, content type, and size, plus a secure URL to download and store them.
Ticket & CRM sync
Pipe inbound replies straight into your CRM or database. The structured payload maps cleanly to a contact, deal, or case without writing a MIME parser.
Shared & functional inboxes
Back sales@, billing@, or hello@ with code instead of a person refreshing a mailbox. Auto-acknowledge, classify, and assign the moment mail lands.
Three things to set up.
Then it just flows.
Create a route, point your domain, and give Lettr an endpoint. Every email to that domain is parsed and delivered to your app from then on.
Add an inbound route
Create a route for a domain or subdomain like inbound.yourdomain.com and add the MX records Lettr shows you to its DNS.
Lettr parses the email
Incoming mail is received, validated, and parsed into structured JSON — body, headers, and attachments separated out for you.
A webhook hits your app
Lettr POSTs the parsed message to your HTTPS endpoint in real time. Verify the credentials, respond 200, and act on the data.
The shape of a
parsed inbound email.
This is exactly what lands on your endpoint when an email arrives. No MIME, no encoding headaches — just the fields your code needs, ready to read.
- from, to, and friendly sender name
- subject with plain-text and HTML bodies
- full headers for threading and routing
- attachments with type, size, and download URL
{
"event": "inbound",
"timestamp": "2026-06-18T10:30:00Z",
"data": {
"from": "alex@customer.com",
"to": ["support@inbound.yourdomain.com"],
"subject": "Question about my order",
"text": "Hi — is order #1043 shipped yet?",
"html": "<p>Hi — is order #1043 shipped yet?</p>",
"headers": {
"message-id": "<abc123@customer.com>",
"in-reply-to": "<ticket-42@yourdomain.com>"
},
"attachments": [
{
"filename": "receipt.pdf",
"content_type": "application/pdf",
"size": 18234,
"url": "https://…/attachments/…"
}
]
}
}Receiving your first
email in minutes.
Stand up an endpoint, point a route at it, and send a test email. The handler on the right is the whole integration.
Expose a webhook endpoint
Add an HTTPS route in your app that accepts a JSON POST — the handler on the right is all you need.
Create an inbound route
In the dashboard, add a route for your domain, paste your endpoint URL, and add the MX records to your DNS.
Send a test email
Email an address on your inbound domain and watch the parsed payload hit your endpoint within seconds.
- Parsed JSON — from, to, subject, text, HTML, and headers, no MIME parsing
- Credential-verified webhooks so you know each POST came from Lettr
- Attachments extracted with filename, type, size, and a secure download URL
- Message-ID and In-Reply-To headers for reliable conversation threading
- Every received message searchable in your logs alongside your sends
Two-way email.
One platform.
Most providers only send. Lettr does both — so a flow that receives a question and sends a reply lives in one account, with one domain setup, one set of logs, and one bill.
Outbound — send
- Fire transactional email via REST API or SMTP relay
- Webhooks for delivered, opened, clicked, and bounced
- SPF, DKIM, DMARC, and dedicated IPs built in
- Drag-and-drop templates your whole team can edit
Inbound — receive
- Receive inbound email parsed into clean JSON
- Route by address, subdomain, or variable patterns
- Attachments, headers, and bodies extracted for you
- Credential-verified webhooks fired in real time
Already sending with Lettr? Add receiving to the same setup — see the transactional email API and SMTP relay.
Need help deciding?
Talk to our team about your email infrastructure, volume needs, or migration from another provider.
Talk to an expertPro
50K emails · $0.80 / 1,000 extra
- Up to 10 sending domains
- 1 inbound route
- Up to 10 webhook endpoints
- No daily sending limit
- Advanced analytics
- 30-day data retention
- No dedicated IPs
Enterprise
Unlimited emails, dedicated IPs, SLA guarantee, SSO/SAML, and a dedicated account manager.
Compare plans
Swipe to compare →| Feature | Free | Pro | Business | Enterprise |
|---|---|---|---|---|
| Monthly emails | 3,000 | 100K emails | 200K emails | Unlimited |
| Daily limit | 100 / day | No limit | No limit | No limit |
| Sending domains | 1 domain | 10 domains | Unlimited | Unlimited |
| Inbound routes | 1 | 10 | Unlimited | |
| Webhook endpoints | 1 | 10 | Unlimited | Unlimited |
| Email API & SMTP | ||||
| Analytics | Basic | Advanced | Advanced | Advanced |
| Data retention | 7 days | 30 days | 30 days | 90 days |
| Team members | ||||
| Dedicated IPs | Add-on | |||
| Priority support | ||||
| SLA guarantee |
Inbound email questions
Everything developers ask before routing inbound mail through an API.
Start receiving email in your app.
Add an inbound route, point your domain, and get parsed email on your webhook — on the same platform you already send from.