SMTPfast has received mail on your domains since early September. You could read each message, download it, and get a webhook for it. What you could not do was hold a conversation: a customer's reply and your answer were two unrelated rows.
Inboxes fix that. An inbox turns one address on your own domain, such as [email protected], into a mailbox. Received mail and your replies group into threads, threads live in folders and carry labels, and drafts wait for a person to send them.
Set one up
The address must be on a domain that your team has verified for sending and that has receiving turned on (one MX record, see the Inbound Email docs). Receiving is part of the paid plans.
Then create the inbox on the Inbound page, or with one call:
curl -X POST https://smtpfa.st/api/v1/inboxes \
-H "Authorization: Bearer $SMTPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email_address": "[email protected]", "name": "Customer Support", "from_name": "Ada from Support"}'
Mail that the address received in the last 30 days is filed into threads right away, so the inbox does not start empty.
Threads
A received message joins the thread that its In-Reply-To or References header points to. If the headers are missing, it joins a recent thread with the same subject and the same sender. Otherwise it starts a new thread. Your replies, forwards and sent drafts join the thread they belong to.
Threads live in five folders: inbox, archive, spam, sent and trash. New mail brings an archived thread back to the inbox. A thread in trash is removed 30 days after you move it there, so a mistake can still be undone for a month.
You can mark threads read or unread, label them, and search by subject and label. Long threads open on their newest messages, with a button to load older ones.
Drafts: an agent writes, a person sends
This is the part we built inboxes for.
Many teams now want an AI agent to answer email. Few teams want that agent to send email to customers with nobody checking. Drafts are the middle ground.
Give the agent an API key with inbound:read and without email:send. With that key it can read threads, label and archive them, and write a draft reply. It cannot send anything. The drafts wait under Drafts on the Inbound page, marked as written through the API. A person opens one, reads it, edits it if needed, and sends it.
Two details make this safe in practice:
- The draft that is sent is the draft that was reviewed. Every draft has a revision number. If the agent changes a draft while a person is reading it, the send is refused and the editor shows the new version instead of sending text nobody saw.
- Each message shows its authentication results. Every received message carries its SPF, DKIM, DMARC, spam and virus verdicts, and the draft editor warns when the message you are answering failed one. A message that fails them may not be from who it says, and an agent should not follow instructions in it.
The hosted MCP server has the same tools, so an agent connected through MCP can work the inbox the same way, within the scopes you give it.
Resend-compatible
The Inboxes API follows Resend's Inboxes API: inboxes, threads, thread emails, labels, drafts, reply and forward, with the same field names. Code written for it works with the SMTPfast base URL and an SMTPfast key. The Inboxes docs list the few places where we differ.
The main difference: SMTPfast inboxes are always on your own domain. We do not hand out addresses on a shared SMTPfast domain. A shared domain is easy to abuse, and one bad sender would hurt the reputation of every customer on it.
Get started
Turn on receiving for a domain, create an inbox on the Inbound page, and send a test message to it. Then reply from the thread view. If you plan to let an agent draft replies, create a key with inbound:read only and point the agent at it.
Questions or ideas? Reply to any of our emails.
Ready to get started?
Start sending transactional email today. Free to start, no credit card required.
Get Started for FreeRelated Posts
Hosted email templates: write once, send by id
SMTPfast now stores your email templates. Write one with variables, preview it on desktop, mobile and dark mode, publish it, and send it by id or alias. The API matches Resend's Templates API.
DigitalOcean Blocks SMTP on Droplets: How to Send Email From Your App Anyway
DigitalOcean blocks outbound SMTP ports 25, 465 and 587 on Droplets and advises against running your own mail server. Here is how to tell if the block is what broke your emails, and two ways around it: an HTTPS API on port 443, or SMTP on port 2525.