By using our site, you agree to our use of cookies. Cookie Policy
Migrate from Resend

Migrate from Resend to utobo Email

The same clean send call, plus broadcast campaigns, automations and an AI writer on the same platform — so you do not need a second tool when marketing email arrives.

Under an hour for a typical integration.

What stays the same

  • Your sending domain and from addresses
  • Your React Email templates (render with @react-email/render)
  • Your send call shape — from, to, subject, html
  • Your delivery event handling — the same events, delivered by webhook

The steps, from Resend to utobo Email

  1. 1

    Create your account and API key

    Sign up at email.utobo.com and generate an API key (av_live_…). Store it in your application's secure settings, not in source control.

  2. 2

    Verify your domain

    Account → Domains: add the single DKIM record utobo gives you. Verification is automatic and SPF, DKIM and DMARC are kept aligned for you.

  3. 3

    Swap the SDK

    Install the official Node.js SDK (full TypeScript declarations included) and replace the client. The send call keeps the same field names:

    // Before (Resend):
    const resend = new Resend(process.env.RESEND_API_KEY);
    await resend.emails.send({ from, to, subject, html });
    
    // After (utobo Email):
    import { UtoboEmail } from 'utobo-email';
    const client = new UtoboEmail(process.env.UTOBO_EMAIL_API_KEY);
    await client.emails.send({ from, to, subject, html });
  4. 4

    Keep your React Email templates

    Render them to HTML exactly as before and pass the result as html:

    import { render } from '@react-email/render';
    import { WelcomeEmail } from './emails/WelcomeEmail';
    
    const html = await render(<WelcomeEmail name={user.name} />);
    await client.emails.send({ from, to, subject: 'Welcome', html });
  5. 5

    Map webhooks

    Point your webhook endpoint at utobo and handle the delivery events — delivered, opened, bounced and complained. Payloads are HMAC-signed, so verify the signature before you trust an event. Bounces and complaints are also handled for you: affected addresses are suppressed automatically.

  6. 6

    Or change nothing but SMTP

    If your app sends over SMTP, this is the whole migration:

    Host:       smtp.mail.utobo.com
    Port:       587 (STARTTLS) or 465 (implicit TLS)
    Username:   apikey          (the literal word "apikey")
    Password:   your utobo Email API key (av_live_…)
  7. 7

    Add the marketing side when you need it

    Import contacts from a CSV (Contacts → Import), or add them through the API, and run broadcast campaigns and drip sequences against the same contact list your transactional email uses. If you used Resend Broadcasts, export those contacts and import them here.

  8. 8

    Test and cut over

    Send a test through the API and check the delivery logs, respect the per-minute rate limits (the API returns a Retry-After header when you hit one), then move production traffic.

What does not migrate

So there are no surprises on cut-over day.

  • Historical logs and analytics (they stay in Resend)
  • Resend-specific dashboard settings

Common questions

Ready to leave Resend?

Migration help is free — tell us your list size and setup and we will plan the move with you.

Stay in the loop

Get product updates, tips, and company news. No spam, unsubscribe anytime.