Receipts
Turn purchase receipts into a card with the order total and number at a glance.
What a rented inbox can't do
An order email shows the live order. A login shows the code. A shipping notice shows live tracking. A billing question surfaces the account, with the actions right there. Gmail shows you none of this — it shows you text, because it doesn't know your business and can't reach your store. Every card below is the actual component your inbox renders. Hold the question for a second: how is it doing that?
Turn purchase receipts into a card with the order total and number at a glance.
Spot tracking emails and add a track-package button with the carrier and number.
Pull the login code to the top of the email, ready to copy in one tap.
Catch password-reset emails and put the reset button front and center.
Surface a one-click unsubscribe button so leaving a list takes a single tap.
Detect meeting invitations and offer an add-to-calendar card with the time.
And it's already working the queue
The queue is triaged, the live context attached, the routine replies drafted and waiting for your yes. An agent reads your mail the way you would, runs your campaigns, and reaches into the store and CRM you already run — everything that sends parked in an approval queue for your one click. Software can finally operate an inbox. That's two things a hosted mailbox can't give you: a personalized render, and an agent that runs it. They have the same cause.
Chat or schedule. Pull context on a lead, draft the reply, turn your notes into this month's campaign. Or let Autopilot wake on a cadence and work the routine, leaving anything that sends in your Review queue for your one click.
You keep the send button. Every agent send waits in your Review queue — everything on your decision, to approve, edit, or deny with one click. The line is drawn in the code, not a setting, so it holds. And every send is logged in Activity, filterable by who sent it — you, an agent, the API, or an automation — so you can audit the whole trail. See how the agent works your inbox →
Inbox
What's going on with Acme?
email_list · 3 threads
Recent threads from @acme.com
Re: Q3 renewal — 2 days ago · unanswered
Invoice #1042 overdue — 5 days ago
Onboarding follow-up — 2 weeks ago
Open in inbox →
summary
Where the relationship stands
3 open threads with Dana and Raj. The renewal is waiting on your reply; an invoice is overdue. Last inbound was a nudge on pricing.
View thread →
draft
Drafted reply to the renewal thread
Hi Dana — thanks for the patience. Confirming the Q3 renewal at the agreed terms; I'll have the invoice corrected today and sent over by EOD.
Open thread to review & send — a human sends it.
Lists
Turn these release notes into this month's newsletter, schedule it for active subscribers Thursday 9am.
campaign
Drafted: "June product update"
Subject: What shipped in June →
Built from your release notes · 4 sections · 1 CTA
Edit draft →
audience
Segment: active subscribers
1,284 recipients · opened in last 90 days
Manage audience →
campaign · scheduled
Scheduled for Thursday, 9:00am
Throttled, ledger-backed fan-out · open + click tracking on
Approve to send — needs your newsletter:send key.
Send
Did the renewal invoice to ops@acme.com actually go out?
delivery_status
Receipt #1042 → ops@acme.com
delivered · 1 recipient · sent from billing@yourco.com
ledger row led_8f2c · delivered
View in activity →
summary
You get the answer, not a guess
Every send is logged — recipient, from-address, delivered or not — so "did it go out?" has a real answer, pulled straight from the ledger.
The one reason
An email can only render your live order if it runs on your store's data. The whole stack — inbox, sending, newsletters — sits on your own Cloudflare account, not a rented seat on someone else's. That's the fact underneath every scene above.
An agent can only run a mailbox that's legible to software and whose keys you hold. Renting a thin API over someone else's inbox can't get you there; owning the stack can. Open the repo and add the columns, the refund button, the rule for how you actually work.
Owning it isn't a chore: it's one Cloudflare Worker, nothing to patch or keep alive at 2am. Cloudflare runs the metal; you own the data, the keys, and the code — and your coding agent can deploy and operate the whole thing for you.
Perfect to start on
Inbound rides Cloudflare Email Routing; outbound goes through Cloudflare's managed sending pool with SPF, DKIM, and DMARC on your zone — the same authenticated path a hosted sender gives you, correct from day one. Click the button from your browser, paste a prompt to your coding agent, or run npx tinbox yourself — three ways in, all landing in your own account. And because it's standard email on infra you control, you can export it, mirror it, or walk with all of it whenever you like.
Pick how you get there: click Deploy to Cloudflare from your browser, run npx tinbox to scaffold the code yourself, or hand it to your coding agent and approve as it goes. All three land in the same place: your whole stack, live on your own domain.
No terminal required
The Deploy to Cloudflare button clones the project into your GitHub, auto-provisions everything it needs, and deploys it to your account, all from the Cloudflare dashboard. The in-app setup then walks you through attaching your domain and turning on mail.
opens the Cloudflare dashboard
npx tinbox opens an interactive prompt: pick Init and it scaffolds your own deployment.
npx tinboxpnpm deploy:tenant yourdomain.com provisions everything inside your Cloudflare account.
pnpm deploy:tenant yourdomain.comMX points at Cloudflare Email Routing; outbound goes through Email Sending with SPF, DKIM, and DMARC on your zone.
✓ hello@yourdomain.com is liveOr hand it to your agent
Copy the prompt, paste it into Claude Code, Cursor, or any agent with shell access.
Set up Tinbox on my Cloudflare account.
Run `npx tinbox` and choose Init,
then deploy it and wire up Email Routing
+ DNS (SPF/DKIM/DMARC).One domain, one deployment, start to finish. See the full architecture →
Not technical? We'll set it up for you.
Buy a license and we'll help you get started. Want the whole thing handled — domain, DNS, Mailchimp migration? Done-for-you setup starts at $300. For deeper customization or ongoing agent supervision, we work by the hour.
Tell us what you need →The cost
Subscriptions rent you software that rents you AI. Tinbox is one license, and the AI runs on your keys — a cheap model for autocomplete, a frontier one where it matters, no markup on the intelligence. Storage and compute sit in Cloudflare's free tier for a small team; you pay for the stack once and keep it. The last email tool you'll ever buy.
Set your team size and volume below and compare five years, side by side.
Drag to match your team. Both cards update live.
Before
rented · 3 vendorsAfter
owned · 1 deploySame 5 years: $11,220 rented vs. $249 owned — about 45× less, and you keep it.
Bring your own AI keys. You already pay Anthropic or OpenAI — Tinbox uses your key, so you don't pay an AI markup on top of a subscription. And you pick the model per task: a cheap fast model for autocomplete, a frontier model where it matters. No dumb house model you're stuck with.
Rented prices are conservative 2026 list prices for a small team; Tinbox figures are your estimated Cloudflare usage plus the one-time license. Your mileage varies — see full pricing & the license →
Deploy free
$0Self-host, forever
Lifetime license
$149 foundingOne-time, not a subscription
Not a hosted service — there's no Tinbox server in the path. It's ownership of the code, not a seat we rent you.
Lifetime doesn't depend on us.
The license includes the full readable source, and it runs on your account with no Tinbox server in the path — so it keeps sending on its own, and the code's always yours to change.
Who runs on it
Same inbox, any size. A side project that just needs to send a password reset, or a store running support, receipts, and newsletters off one deployment. There's no plan to outgrow and no migration waiting at the next tier.
Just launched — early users are already running it in production, including partners like . Open source on GitHub; wider access is opening by invitation.
Vibe-coded apps
You built the product over a weekend; it still needs to send password resets, magic links, and receipts. One POST /emails from your own domain — no Resend account, no deliverability project. The coding agent that wrote your app can set it up too.
Small startups
Shared support@ and billing@, transactional sending, and a mailing list — one deployment instead of three subscriptions and three logins. The agent drafts replies and triages threads, so a small team keeps up without hiring for it.
E-commerce stores
Connect your Shopify and every support email shows the live order right in the thread — status, items, tracking, one click from the admin. Run support@, send receipts, run your newsletter, all from one place. Not technical? We'll set it up for you.
Indie makers
Three email bills add up faster than the revenue does. Tinbox runs on your own Cloudflare account — usually ~$0/mo on the free tier — so the side project doesn't carry a SaaS stack before it earns one.
The receipts your agent reads
The reveal in code: typed primitives an agent reads natively, which is what lets it deploy and run the whole stack for you. A typed CLI and SDK, an /mcp endpoint, scoped keys on one authorize() gate, an optional git archive of every message, and the lists engine that runs your campaigns. You get the outcome; it does the wiring.
Agents hold scoped, revocable tokens checked by the same authorize() gate as every human action.
Every deployment exposes /mcp. Point Claude, Cursor, or any client at it.
Turn on the archiver and every message mirrors to an append-only file in a git repo.
FTS5 search across every inbox — from the app, the CLI, or an agent, with the same --json results.
npx tinbox search "invoice overdue" --inbox billing --json
→ 3 threads, 2 unanswered
npx tinbox draft create --thread th_8f2c --file reply.md
→ draft v1 created, awaiting human reviewFrom the blog

Here's a pattern you've probably lived through. You start a project. You wire up Resend for transactional email because the DX is genuinely great. You add Mailchimp (or Loops, or Customer.io) for the newsletter. And your team reads support mail in Gmail, because where else would it go?

DKIM (DomainKeys Identified Mail) lets a receiver confirm that mail claiming to be from your domain was signed by someone holding your private key, and that the signed parts were not altered in transit. It is half of what DMARC needs to pass (SPF being the other half), and on a new sending domain it is non-negotiable: Gmail and Yahoo bulk sender rules treat missing DKIM as a reason to throttle or reject. It is one box on the Gmail and Yahoo bulk sender checklist you have to clear before a first campaign.

Email to task automation is the practice of reading each inbound message, deciding whether it implies an action, extracting the fields that action needs, and creating the task (or firing the webhook) without a human retyping anything. The mail is structured data wearing a text costume. The job is to undress it once, reliably, and route it.
Questions
DON'T TAKE OUR WORD FOR IT.
Click a button and see what your favorite AI says about us.
The live render, the agent that runs the queue, the campaigns it sends — all of it traces to one fact: you own the whole stack, on your own Cloudflare account. It runs on your own account, independent of us, and the code's yours to change. The last email tool you'll ever buy.