Back to notes
May 14, 20265 min read

Resend as our single inbox: one provider for every VantLabs product

How VantLabs centralizes transactional email with Resend across vantlabs.io, ReclamaAI and VantFi. Shared templates, verified domains, real costs.

stack-decisionsvantlabs

In a single-founder studio, every stack decision is measured in maintenance hours. Having three different email providers — one per product — sounds easy at first and becomes a pain six months in. You have three dashboards, three duplicated templates, three domains to maintain, and three "pending verification" states when something breaks. The simplest decision at VantLabs was: one Resend for everything.

Why Resend and not Postmark, Sendgrid or Mailgun

I tried all four. Postmark is excellent but its UI feels from 2018. Sendgrid is enterprise and its API shows it — too much config for simple sends. Mailgun breaks too often. Resend was born out of frustration with all of the above, and it shows: the API is minimal, templates can be React Email or plain HTML, webhooks are clear, and the dashboard has a "logs" tab where you see every email sent with its status. In five minutes you know if something broke.

How we organize domains

Each product has its own sending domain, all verified under the same Resend account:

  • hola@vantlabs.io — for the corporate contact form and internal notifications.
  • noreply@reclamaai.co — for ReclamaAI's transactional email (payment confirmation, document ready, filing reminder).
  • cuentas@vantfi.app — for VantFi's (recurring expense receipt, goal alert, login magic link).

Verification happens once per domain (DKIM, SPF, DMARC) and that's it. Resend monitors domain health and warns you if anything changes, which has happened a couple of times when Cloudflare updated its DNS panel and rewrote a record.

Shared templates vs per-product templates

I made a decision when I started that I now appreciate: no visual template is duplicated between products. But the components are. I have an internal package with 5 building blocks: header, footer, button-cta, info-card, divider. Each product composes its templates from those building blocks using React Email, so look-and-feel is consistent without me having to touch 12 files when I want to change a button's padding.

Product-specific templates live in each product's repo. The building-block library lives in a private npm package I update manually when needed. Not elegant for a big company, but for a solo founder it's exactly the right amount of abstraction.

The internal notification email

There's a practice I copied from Resend itself and from Cal.com: when someone submits the contact form on any VantLabs site, an email arrives in my personal inbox. Not a Slack channel, not a ticket system, not a CRM. My inbox. Where I read important things. And the reply goes out from the same email, with reply-to set to the user. To the user, it feels like they got a personal email from me. To me, it's one more job in my inbox, where I know I'll see it.

Real costs

Resend has a free tier of 3000 emails per month, including all domains under the same account. For the three products in their current state (corporate: ~50 emails/month, ReclamaAI: ~400, VantFi: 0 yet), we're on free. When ReclamaAI scales, the next plan is $20 for 50,000 emails, and we go up to 30k per month without paying more than that. For an operation growing at a good pace, it's a negligible cost.

What we haven't solved

Marketing email is out of scope. Newsletters, public launches, and similar I'll handle with another tool when the time comes — Resend is transactional and I prefer not to mix the two on the same domain so I don't stain the reputation. When that time arrives, it'll probably be Buttondown or Resend Audiences (which is in beta). For now: zero marketing email, everything is transactional, and the inbox only rings when something important happens.