How to Migrate Off of SendGrid

SendGrid is a full ESP — marketing tools, templates, a large console — bundled around the transactional API a lot of teams actually use. Here's what migrating to a purpose-built transactional API like Notify actually involves, step by step.

4 min readRyan Brown

Migrating off SendGrid usually comes down to one realization: SendGrid is a full email service provider — marketing campaigns, dynamic templates, a large console — built around the transactional sending API that a lot of teams only ever touch. If your actual usage is password resets, receipts, and app notifications, most of that surface area is unused weight. Notify is a natural migration target for exactly this situation: a single send endpoint, webhooks, and logs, with nothing else layered on top — Notify's own migration guide walks through the swap in detail.

What Actually Changes

The core differences come down to a handful of things:

  • Client: SendGrid's typical integration uses its @sendgrid/mail SDK (sgMail.send(...)); Notify needs no SDK at all — a single fetch call covers it.
  • Authentication: SendGrid uses a Bearer token (Authorization: Bearer SG...) set via setApiKey; Notify uses a plain x-api-key header.
  • Endpoint: SendGrid's is POST https://api.sendgrid.com/v3/mail/send; Notify's is POST https://notify.cx/api/email/send.
  • Request body: SendGrid's raw API (when not using the SDK) structures a send around a personalizations array and a content array with type/value pairs; Notify's body is flat — to, subject, message.
  • Templates: SendGrid commonly uses its dynamic templates feature; Notify doesn't host a template system at all — you render HTML in your own application (or with a tool like React Email) and pass the result as message.

Before and After

Here's the same welcome email, sent through SendGrid's official SDK, then through Notify:

// SendGrid
import sgMail from '@sendgrid/mail';

sgMail.setApiKey(process.env.SENDGRID_API_KEY);

await sgMail.send({
  to: 'user@example.com',
  from: 'noreply@acme.com',
  subject: 'Welcome',
  html: '<h1>Welcome</h1>'
});
// Notify
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>'
  })
});

Same send, one fewer dependency, and a flatter request body.

What Needs Special Attention

A few parts of a SendGrid setup don't map over one-to-one, and are worth planning for before switching:

  • Dynamic templates don't carry across directly — render the HTML in your own app and pass it as message instead of referencing a template ID.
  • Categories and marketing campaigns are out of scope for Notify entirely, since it's transactional-only. If you're also using SendGrid for campaign sending, that's a separate migration (or a reason to keep both tools for their respective jobs).
  • Event webhooks need to be recreated on Notify's side — available on the Pro or Scale plan, documented in Notify's webhook docs.
  • Multi-recipient sends: Notify's API accepts one to address per call, so a SendGrid integration that batches multiple recipients per request needs to loop or queue individual sends instead.

Migration Checklist

  1. Sign up for Notify and generate an API key.
  2. Verify your sending domain.
  3. Replace SendGrid's mail helper calls with a single fetch to /api/email/send.
  4. Swap the environment variable — SENDGRID_API_KEY becomes NOTIFY_API_KEY.
  5. Update any webhook receivers to handle Notify's event payload shape instead of SendGrid's.
  6. Test password reset and receipt flows against Notify's sandbox before cutting over production traffic.

Pricing After the Move

Notify runs on three flat plans: Free ($0, 1,000 emails/month), Pro ($10/month, 10,000 emails), and Scale ($50/month, 100,000 emails). That's a lower entry price than SendGrid's Essentials plan ($19.95/month), without a separate Marketing Campaigns product bundled in or billed alongside it.

Frequently Asked Questions

What is Notify?

Notify is a lightweight transactional email API for developers. It sends email through a single endpoint, verifies sending domains (SPF/DKIM/DMARC), keeps delivery logs, and offers webhooks on Pro and Scale plans — with no marketing tools, template builder, or bulk-sending features.

Is migrating from SendGrid to Notify difficult?

Not for a typical transactional setup — the main work is replacing SDK calls with a plain HTTP request, updating an API key environment variable, and recreating any webhook subscriptions. Notify's migration guide covers the full mapping, including a before-and-after code comparison.

What happens to my SendGrid dynamic templates if I switch to Notify?

They don't transfer automatically, since Notify doesn't include a template system. The practical path is to render the same HTML in your own application code (or with a templating tool like React Email) and pass the resulting string directly in the message field.

Can I still send marketing campaigns after migrating transactional email to Notify?

Not through Notify — it's built for transactional email only and doesn't include campaign or list-management tools. If you also use SendGrid's Marketing Campaigns product, that's a separate concern from the transactional migration and would need its own tool if you move off SendGrid entirely.

How much does Notify cost compared to SendGrid?

Notify's Pro plan is $10/month for 10,000 emails; SendGrid's Essentials plan starts at $19.95/month. Notify's pricing is a single flat plan per tier, with no separate marketing product to budget for alongside it.

Cubed

Write about the technologies shaping the future.

For developers, founders, and curious minds exploring AI, crypto, Web3, and emerging tech—signal over noise.

One free account across In Plain English, Stackademic, Venture, and Cubed.

How it works
  • AI, crypto & Web3
  • Software & emerging technologies
  • Analysis & practical resources
  • Thoughtful voices, not hype
1

Sign in

Google or GitHub

2

Complete profile

Takes a few minutes

3

Get approved & publish

Start sharing

Why write for Cubed?

The future deserves thoughtful voices, not just louder headlines.

Comments

Loading comments…

Posts Across the Network