Email is the most opaque part of every developer's stack
When a payment fails in Stripe, you open the dashboard and see exactly what happened: the request, the network call to the issuer, the decline code, the retry, the webhook delivery โ every step, with timing, with cause.
When an email fails, you getโฆ "bounced." Maybe a status badge. Maybe a hint of a reason. You refresh the logs page, hope something changed, and ping support if it didn't.
We think email observability should look more like Stripe and less like a black box. Live Tail is the first piece of that.
What it is
Open /logs, flip the Live toggle, and every email event in your account streams into the page within ~500ms of happening. Like tail -f for your email pipeline.
It works for every event SMTPfast emits:
queuedโ the API accepted your requestsendingโ the worker picked up the jobsentโ SES accepted the messagedeliveredโ the receiving MTA confirmed deliveryopenedโ the recipient opened the messageclickedโ the recipient clicked a tracked linkbouncedโ the receiving MTA rejected or returned the messagecomplainedโ the recipient marked the message as spamretryingโ a transient failure that the worker will retryfailedโ all retries exhausted
Filter by event type, search by recipient or subject, and the filter applies server-side. You only receive what you asked for.
How it works under the hood
Three pieces, no new infrastructure:
- Every state transition that creates an
EmailEventrow in our database also publishes a tiny JSON payload to a per-user Redis pub/sub channel. - The dashboard opens a Server-Sent Events (SSE) connection to a streaming Next.js route.
- The route subscribes to your channel, replays the last 60 seconds (so you never stare at an empty screen), then forwards live events as they arrive.
We picked SSE over WebSockets on purpose. The data flow is one-way (server to browser), the protocol is plain HTTP, the browser API (EventSource) auto-reconnects, and it traverses corporate proxies cleanly. A 25-second heartbeat keeps idle connections alive.
If you want to wire it up from your own client, the endpoint is documented at /docs/live-tail.
Why we built this first
We've been thinking about what genuinely separates email tooling, and the answer kept coming back to observability. Most providers โ including the big ones โ surface email like a server log file from 2010: pages of text, a 5-minute refresh delay, no signal of what changed.
That gap is most of why developers don't trust their email pipeline. They send a campaign, watch their inbox, refresh. They don't see what's happening. They guess.
Live Tail is the first ship of a broader push to make SMTPfast feel like Stripe-quality observability. Coming next:
- Explain this delivery โ a per-email timeline with raw SMTP responses, retry chains, suggested actions, and webhook delivery details
- Webhook replay โ re-fire any past webhook event to your endpoint with one click
- CLI โ
npx smtpfast tailfrom your terminal
Availability
Live Tail is included on the Growth ($19/month) and Scale ($49/month) plans. Free and Starter accounts continue to use the standard paginated logs page.
If you're already on a Growth or Scale plan, the Live toggle is on your /logs page right now. If not, you can upgrade in billing or start a free account and explore the rest of the platform first.
Try it
Send a test email to a tracked address while the Live toggle is on. Watch queued, sending, sent, delivered, opened cascade down the page in seconds. Once you see your pipeline that clearly, going back to refreshing a static logs page feels strange.
Ready to get started?
Start sending transactional email today. Free to start, no credit card required.
Get Started for FreeRelated Posts
One approval instead of five DNS records: Domain Connect on SMTPfast
If your domain is on Cloudflare, SMTPfast can publish its sending records, and separately the inbound MX, through Domain Connect. You review each set on Cloudflare's screen, approve, and the records are written for you. Here is how it works, what gets written, and what to do when your DNS lives elsewhere.
Logs API and webhook deliveries: answer 'did it send?' without opening the dashboard
Two additions for the debugging side of email: the event log behind the Logs page is now an API, and every webhook has a delivery log with attempts, responses, automatic retries and a retry button.