Migration 8 min read Updated April 2026

How to Migrate from SendGrid to Another Email Service

Migrating from SendGrid is straightforward if you follow the right order. This guide covers the complete process — from exporting your data to validating deliverability on the new service.

This guide uses Emitlo as the destination service. Sign up free — 12,000 emails/month, no credit card, setup in 10 minutes.

1. Before you start: export your SendGrid data

Before making any changes, export everything you need from SendGrid:

Suppression list — Suppressions → Global Unsubscribes, Bounces, Spam Reports CSV
Email templates — Email API → Dynamic Templates HTML export
Sending domains — Settings → Sender Authentication Note DNS records
API keys — Settings → API Keys Note which keys are used where
Statistics — Activity → Stats Export for baseline comparison

2. Set up your new email service

Sign up for Emitlo and add your sending domain. Emitlo generates DKIM keys and publishes DNS records automatically. Verification typically completes within 60 seconds.

Generate API credentials or SMTP settings. Keep these ready for the next steps.

3. Update DNS records

You'll need to update your DNS records to point to the new service. Emitlo provides the exact records to add. Key records to update:

  • DKIM CNAME or TXT records (replace SendGrid's with Emitlo's)
  • SPF TXT record (replace include:sendgrid.net with include:emitlo.com)
  • DMARC TXT record (update rua email if needed)

Important: Don't remove SendGrid's DNS records until you've fully switched over. Running both sets of records simultaneously is safe during the transition period.

4. Update your application code

Replace your SendGrid API calls with Emitlo's. The request format is similar:

// Before (SendGrid)
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
await sgMail.send({ to, from, subject, html });

// After (Emitlo REST API)
await fetch('https://api.emitlo.com/v1/messages', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.EMITLO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ to, from: '[email protected]', subject, html }),
});

// After (Emitlo SMTP — drop-in replacement for Nodemailer)
const transporter = nodemailer.createTransport({
  host: 'smtp.emitlo.com',
  port: 587,
  auth: { user: process.env.EMITLO_SMTP_USER, pass: process.env.EMITLO_SMTP_PASS },
});

5. Migrate templates

Emitlo accepts standard HTML. Export your SendGrid Dynamic Templates as HTML and use them directly. If you're using Handlebars variables in SendGrid templates, replace them with your own templating logic (Mustache, Handlebars, or string interpolation) before sending to Emitlo.

6. Import suppressions

Import your SendGrid suppression list to Emitlo before switching traffic. This ensures you don't email addresses that have previously bounced or complained — which would damage your sender reputation on the new service.

7. Test and validate

Before switching all traffic:

  • Send test emails to your own addresses and verify they arrive in inbox
  • Check Emitlo's deliverability dashboard for authentication status
  • Verify DKIM signatures are valid (use MXToolbox)
  • Test all email types (password reset, order confirmation, etc.)
  • Verify webhooks are firing correctly

8. Switch over and monitor

For zero-downtime migration, use a gradual rollout:

  1. 1.Route 10% of traffic to Emitlo. Monitor for 24 hours.
  2. 2.Route 50% of traffic to Emitlo. Monitor for 24 hours.
  3. 3.Route 100% of traffic to Emitlo.
  4. 4.Monitor Emitlo's deliverability dashboard for 48 hours.
  5. 5.Remove SendGrid DNS records and cancel your SendGrid account.

9. Migration checklist

SendGrid data exported (suppressions, templates, stats)
Emitlo account created and domain verified
DNS records updated (DKIM, SPF, DMARC)
Application code updated to use Emitlo
Templates migrated to HTML
Suppression list imported to Emitlo
Test emails sent and verified
Webhooks tested
Traffic gradually switched to Emitlo
Deliverability monitored for 48 hours
SendGrid DNS records removed
SendGrid account cancelled

Migrate from SendGrid in under 2 hours

12,000 emails/month free (400/day) · Transparent pricing · EU hosting · Human support

Frequently Asked Questions

How long does it take to migrate from SendGrid to Emitlo?
Most teams complete the migration in under 2 hours: 10 minutes for domain setup, 30 minutes to update application code, 20 minutes to export/import suppressions, and 30 minutes for testing. You can run both services in parallel during the transition to ensure zero downtime.
Will I lose my sender reputation when migrating?
Your domain reputation transfers with your domain. Your IP reputation does not — Emitlo uses its own IP infrastructure. However, Emitlo's shared IPs are well-maintained with strong reputation. For most teams, deliverability is equivalent or better after migration.
Can I migrate my SendGrid templates to Emitlo?
Emitlo accepts standard HTML email content. Export your SendGrid templates as HTML and use them directly with Emitlo's API. If you're using SendGrid's Dynamic Templates with Handlebars, you'll need to handle template rendering on your side before sending to Emitlo.
What happens to my SendGrid suppression list?
Export your SendGrid suppression list (unsubscribes, bounces, spam reports) from the SendGrid dashboard. Import it to Emitlo before switching traffic. This protects your sender reputation by ensuring you don't email addresses that have previously bounced or complained.
Can I run SendGrid and Emitlo in parallel during migration?
Yes. The safest migration approach is to run both services in parallel: route a small percentage of traffic to Emitlo first, monitor deliverability, then gradually increase until you're fully on Emitlo. This ensures zero downtime and lets you validate deliverability before fully switching.

Related guides: