Migrate from Brevo to Notify

Move transactional sends from Brevo to Notify — api-key header, htmlContent, smaller surface.

Brevo (formerly Sendinblue) bundles marketing and transactional email. Notify is the thin transactional layer: one send API, webhooks, and logs. If you only need password resets, receipts, and app notifications, you can drop the suite surface.

What changes

BrevoNotify
Recommended client@getbrevo/brevo (BrevoClientsendTransacEmail)One fetch — no SDK required
Authapi-key headerx-api-key
EndpointPOST https://api.brevo.com/v3/smtp/emailPOST https://notify.cx/api/email/send
Bodysender, to[], htmlContent (or templateId)Flat to, from, subject, message
Product surfaceCRM, campaigns, automation + transactionalSend + webhooks + logs

Before / after

Brevo (official @getbrevo/brevo SDK)

import { BrevoClient } from '@getbrevo/brevo';

const brevo = new BrevoClient({
  apiKey: process.env.BREVO_API_KEY!
});

await brevo.transactionalEmails.sendTransacEmail({
  sender: { name: 'Acme', email: 'noreply@acme.com' },
  to: [{ email: 'user@example.com' }],
  subject: 'Welcome',
  htmlContent: '<h1>Welcome</h1>'
});

Notify (one fetch — no SDK required)

await fetch('https://notify.cx/api/email/send', {
  method: 'POST',
  headers: {
    'x-api-key': process.env.NOTIFY_API_KEY!,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    from: 'Acme <noreply@acme.com>',
    to: 'user@example.com',
    subject: 'Welcome',
    message: '<h1>Welcome</h1>'
  })
});

Migration checklist

  1. Sign up and copy an API key from Credentials
  2. Verify your domain
  3. Replace BREVO_API_KEY with NOTIFY_API_KEY
  4. Map htmlContent to message (keep owning your HTML)
  5. Point webhooks at Notify (docs) — Pro or Scale
  6. Confirm sends in logs

Where to next?