React Email
Keep rendering React Email components in your app and send the resulting html, or move stable copy into Sendix templates.
Most of the send body carries over unchanged. Change the base URL and key, rename scheduled_at, and switch webhook verification to X-Sendix-Signature.
- SMTP_HOST=smtp.resend.com+ SMTP_HOST=smtp.sendix.dev- SMTP_PORT=587+ SMTP_PORT=587 # STARTTLS- SMTP_USER=resend+ SMTP_USER=<username from dashboard>- SMTP_PASS=re_••••••••+ SMTP_PASS=<Sendix API key>Verify your domain in Sendix, then change SMTP from smtp.resend.com (user "resend") to smtp.sendix.dev:587, or point POST https://api.resend.com/emails calls at https://sendix.dev/api/v1/emails — both use a Bearer API key and a JSON body with from, to, subject and html/text. Rename scheduled_at to scheduled_for, keep tags as {name, value}, and switch webhook verification from Svix headers to X-Sendix-Signature; email.delivered, email.bounced and email.complained keep their names.
Run Resend and Sendix side by side until the new path is proven.
Publish the Sendix DKIM TXT record (<selector>._domainkey), the bounce CNAME (bounce.<your-domain> → bounce.sendix.dev) and add include:mail.sendix.dev to your SPF record. Resend’s DKIM records can stay while both providers send.
from, to, cc, bcc, subject, html, text, reply_to, attachments and tags keep their meaning; scheduled_at becomes scheduled_for, and stored templates are referenced with template_id and template_data. The Idempotency-Key header works the same way.
Create a Sendix webhook for the events you consumed from Resend, verify X-Sendix-Signature, and map event names with the table below.
Export bounced, unsubscribed and complained addresses from Resend, add them with POST /v1/suppressions, move traffic gradually, then remove Resend’s SPF include.
Where each piece of your current integration lives in Sendix.
| Concept | Resend | Sendix |
|---|---|---|
| SMTP server | Resendsmtp.resend.com:587 | Sendixsmtp.sendix.dev:587 (STARTTLS) |
| SMTP login | ResendUsername "resend", API key as password | SendixUsername from your dashboard, API key as password |
| Send endpoint | ResendPOST https://api.resend.com/emails | SendixPOST https://sendix.dev/api/v1/emails (JSON) |
| API authentication | ResendAuthorization: Bearer <API key> | SendixAuthorization: Bearer <API key> |
| Templates | ResendHTML, or React Email rendered in your app | SendixVersioned {{variable}} templates (template_id + template_data) |
| Delivered event | Resendemail.delivered | Sendixemail.delivered |
| Bounce event | Resendemail.bounced | Sendixemail.bounced |
| Complaint event | Resendemail.complained | Sendixemail.complained |
| Webhook security | ResendSvix headers (svix-id, svix-timestamp, svix-signature) | SendixX-Sendix-Signature (HMAC-SHA256) |
| Suppressions | ResendBounced and complained addresses suppressed automatically | SendixSuppression list API (/v1/suppressions) |
Resend is a trademark of its owner. Its column summarizes public documentation as of September 12, 2026; confirm current details in Resend’s docs before migrating.
Resend features that need a plan, and where they land in Sendix.
Keep rendering React Email components in your app and send the resulting html, or move stable copy into Sendix templates.
Replace the Svix verification with an HMAC-SHA256 check over t + "." + raw body from X-Sendix-Signature.
Contacts and campaigns move to Sendix Audience (contacts, segments, topics) and Broadcasts.
Receiving is built in: enable it on a domain, publish MX records and subscribe to email.received.
Answers for teams moving from Resend.
Yes. Render your React Email components to html in your app as you do today and pass the result in the html field (and text for the plain-text part).
Yes. Each provider signs with its own DKIM selector, and a single SPF record can include both during the transition — keep it to one SPF record and within the 10-DNS-lookup limit. A domain can have only one DMARC record, so keep your existing one if it already has a policy.
The Node SDK and CLI exist as source packages but are not yet published to npm, so most teams integrate over the REST API (plain HTTPS and JSON) or SMTP. Neither needs an extra dependency.
Import them as suppressions with POST /v1/suppressions and a reason of hard_bounce, unsubscribed or complained. Sendix then reports email.suppressed instead of sending to those addresses.
The free plan includes 1,000 emails per month. Paid plans change volume and limits, not your API calls or SMTP settings.
1,000 emails free every month. No credit card required. Upgrade only when you outgrow the free tier — and we will let you know when that time comes.
Managed SaaS platform · Native SMTP engine · SOC 2 in progress