Stack Tool · comms
Resend
Resend provides a reliable, developer-friendly email API and React Email templating, which is essential for managing both transactional and marketing communications across Total Ventures' brands.
Visit resend.com ↗Resend's core value for Total Ventures is its seamless integration of a robust email API with the React Email templating system, allowing us to manage all email communications as code.
What it is
Resend is an email API and a developer-first platform for sending both transactional and marketing emails. Its standout feature is the native support for React Email, an open-source library that lets you build email templates using React components. This means email layouts, styling, and content can be managed, version-controlled, and tested just like any other part of a web application. It abstracts away the complexities of HTML email rendering across various clients, providing a consistent experience. The platform also includes analytics for delivery rates, opens, and clicks, along with domain verification and dedicated IP options.
How I use it
At Total Ventures, Resend serves as the single source of truth for all outgoing email. For Pregnancy Power Hour (PPH), it powers the onboarding sequences — welcome emails, content drips, and reminders for upcoming live sessions. These are all built as React Email components, making it straightforward to update content or adjust the sequence logic. When a new user signs up, a Firebase Cloud Function triggers a Resend API call with the user's data, populating the React Email template.
For Total Formula 1, I use Resend for the weekly race-week newsletter. This involves segmenting subscribers based on their preferences and sending broadcasts with dynamic content. The content itself is often drafted with assistance from Claude Code and then translated into React Email components. Images and other assets for these emails are stored on Google Cloud Storage and referenced directly within the templates. For Inky, our lapsed user re-engagement product, Resend handles automated sequences designed to bring users back, triggered by inactivity data. Even payment receipts and subscription notifications, which integrate with Stripe, are sent via Resend, ensuring brand consistency across all touchpoints.
Why this over alternatives
The primary differentiator for Resend is the React Email integration. I learned the hard way that visual email builders, while quick for initial drafts, often produce brittle HTML and become a maintenance burden. Managing emails as code allows for proper version control, component reuse, and automated testing. This approach aligns with the agentic engineering principles I apply across the studio. It means a header or footer component can be updated once and propagate across all email types. The API itself is clean and well-documented, making integration with various backend services efficient. The focus on developer experience means less time debugging rendering issues and more time on content and strategy.
Where it falls short
While Resend's analytics are functional for basic tracking, they are not as deep or customizable as dedicated marketing automation platforms. For advanced segmentation logic or complex journey mapping, I typically handle that on the application side before passing the final send instruction to Resend. It also requires a developer to make changes to email templates, which might be a barrier for teams without dedicated engineering resources for marketing. For a solo operator, this is a feature, not a bug, but it's a trade-off to acknowledge.
FAQs
- Is it suitable for both transactional and marketing emails?
- Yes, I use it for both. The React Email templates handle dynamic transactional content and segmented marketing broadcasts efficiently, all through a unified API.
- How does templating work?
- Templates are written in React, allowing for component reuse, version control, and a code-first approach to email design. This means email layouts are managed like any other frontend component.
See how I run a multi-brand studio with this stack.
See the full stack →