Project
PostStack
The email API I built after a year stitching three vendors together. Transactional, marketing, and inbound on one product — typed SDK, real test mode, EU-hosted.
What it is
PostStack is a developer-first email API. One API key, one suppression list, one contact graph — covering transactional sends, marketing broadcasts, and inbound parsing on the same product.
The pitch is the one I wish someone had sold me in 2024: stop pretending the three workloads are different products. They share a contact graph, they share a deliverability story, and the glue you write to keep three vendors agreeing with each other is invariably the worst code in your application.
What it solves
A typical small team in 2026 still buys email in three pieces — Resend for transactional, Mailchimp for broadcasts, Postmark for inbound — and writes ~600 lines of TypeScript and a Postgres table to keep them in sync. PostStack collapses that integration layer to zero.
When the seams go away:
Suppression lists stay consistent across transactional and marketing.
Inbound replies route back to the same contact record without a webhook worker you wrote on a Friday.
Workflows fire on real events from the same platform, not a downstream cron polling three sources.
The bill is one bill, the contract is one contract, the auditor is happier.
What I refused to compromise on
An end-to-end typed SDK. Not "we generated types.d.ts from OpenAPI and hoped". The TypeScript client shaped the API design. Errors are typed unions. Request and response bodies share Zod schemas with the server.
A transparent test mode. Pass a header, the send is simulated end-to-end — webhooks fire, tracking events emit, addresses validate, templates render, nothing leaves the platform, nothing gets billed. Your CI runs against the real API surface.
Deliverability work that isn't a marketing slide. SPF, DKIM, DMARC alignment, DNSBL monitoring, bounce/complaint loop ingestion, warm-up scheduling. The unglamorous parts that decide whether your transactional mail lands in the inbox.
An MCP server. PostStack ships a Model Context Protocol server alongside the SDK, so Claude Code can send mail, inspect deliverability, replay events, and walk through diagnostics without me touching the dashboard.
How it's built
Bun runtime, Hono on the API edge, Postgres for the contact graph + event log, Redis + BullMQ for queue work, NATS for inbound parsing fan-out. Everything runs on hoststack.dev in eu-central-1.
The whole thing is dogfooded — every transactional send micci.dk needs (contact form replies, admin notifications, password rotations) goes through PostStack.
Where to read more
The case for the consolidation, plus the four non-negotiables in full, lives in the blog post Building the email API I wanted but couldn't buy.
React to this project