Inbound email API

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.

The basics

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.

From mailbox to your code
  1. 01 Someone emails an address on your inbound domain.
  2. 02 Their mail server follows your MX records to Lettr.
  3. 03 Lettr parses the message into JSON — body, headers, attachments.
  4. 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.

What you can build

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.

How it works

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.

01

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.

02

Lettr parses the email

Incoming mail is received, validated, and parsed into structured JSON — body, headers, and attachments separated out for you.

03

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.

Webhook payload

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
POST your-app.com/webhooks/inbound
{
  "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/…"
      }
    ]
  }
}
Quick start

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.

1

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.

2

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.

3

Send a test email

Email an address on your inbound domain and watch the parsed payload hit your endpoint within seconds.

What you get out of the box
  • 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
Send + receive

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 expert
How many emails do you send per month?
3K50K100K200K500K1M2M+

Pro

$15 /mo

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
Get started

Enterprise

Unlimited emails, dedicated IPs, SLA guarantee, SSO/SAML, and a dedicated account manager.

Contact sales

Compare plans

Swipe to compare →
FeatureFreeProBusinessEnterprise
Monthly emails3,000100K emails200K emailsUnlimited
Daily limit100 / dayNo limitNo limitNo limit
Sending domains1 domain10 domainsUnlimitedUnlimited
Inbound routes110Unlimited
Webhook endpoints110UnlimitedUnlimited
Email API & SMTP
AnalyticsBasicAdvancedAdvancedAdvanced
Data retention7 days30 days30 days90 days
Team members
Dedicated IPsAdd-on
Priority support
SLA guarantee
FAQ

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.