Send product updates that stick
Send product announcements to eligible subscribers with tested templates, unsubscribe handling and duplicate-send protection.
Categories: email, changelog, newsletter, retention
Tools that power the Send product updates that stick stack
Resend — Email delivery
Developer-friendly API for sending reliable transactional and broadcast email
React Email — Email templates
Build responsive email templates with React components
Supabase — User data
Query your user list and trigger emails based on activity
Setup guide
- Resend: Verify a sending domain in Resend and keep the API key on the server. Send a test with resend.emails.send({ from, to, subject, html }) to your own address. For marketing or product announcements sent through the Emails API, manage an eligible audience, visible unsubscribe link and List-Unsubscribe headers yourself; honor suppression before each send. Consider the Marketing product if you need built-in audience and unsubscribe management. (Read official instructions)
- React Email: Build reusable templates using the current React Email setup for your pinned version. The current manual guide installs @react-email/ui for the preview tooling and react-email with React and React DOM, and imports template components from react-email; older @react-email/components examples require their matching version. Add the documented preview script, render a test message and inspect representative inboxes for layout, links and unsubscribe information. (Read official instructions)
- Supabase: Store subscriber preferences and delivery records in Supabase with access controls. Before a scheduled send, select eligible recipients, exclude unsubscribed/suppressed addresses and use a unique campaign-recipient key to prevent duplicate delivery. Test a small internal campaign, including an unsubscribe and a retried job, before enabling production sends. (Open Supabase instructions)
Check: An internal test message renders with working links; unsubscribed recipients are excluded, and retrying the same campaign-recipient job does not send twice.