pex

Migrating from SendGrid

SendGrid (Twilio Email) is great at one thing: blasting a lot of email cheaply. It's not a journey platform. If you're using SendGrid Marketing Campaigns for lifecycle workflows, hitting the limits of their Automations product, or watching the Twilio bill scale unfavorably, Apex is a clean upgrade.

This guide focuses on the Marketing Campaigns + Automations path. If you're using SendGrid purely for transactional sends, see the API migration section at the bottom — that's a much smaller change.

Why teams move

  • Automations were never the focus. SendGrid's strength is transactional + bulk; their Automations are second-class. Apex's Adaptive Journeys are the headline product.
  • Real lift measurement. SendGrid's reporting tells you opens and clicks. It doesn't tell you whether the journey caused the conversion vs. would-have-converted-anyway. Apex's global holdout + calibrated impact compute that number directly.
  • One bandit across all surfaces. SendGrid's A/B is per-send, fixed splits. Apex's Adaptive Branches Thompson-sample arms continuously and share the engine with web experiments.
  • AWS-native. Sends go through your own SES under your AWS account. No new vendor relationship for the actual delivery; just orchestration + measurement.

Concept mapping

SendGridApexNotes
Sender Identity / DomainSES domain identityKeep your existing AWS SES setup. Apex doesn't proxy your sends.
Marketing CampaignsCommunicationsOne-shot sends become a journey with a single Send step (or just a transactional API call if it's not lifecycle-shaped).
AutomationsAdaptive JourneysSame shape: trigger on event, sequence of steps, exit conditions.
Automation: Send EmailSend stepReuses your existing comm template via the comm picker.
Automation: WaitWait step (duration)Direct mapping.
Automation: A/B TestBranch step (experiment mode)Becomes Thompson-sampled with goal attribution.
ListsAudiences (or Cohorts for static lists)Dynamic SendGrid segments → Apex audience predicates. Static lists → org-level cohorts.
Single Sendsone-shot CommunicationUse a one-step journey with an immediate trigger, OR call the transactional send API directly.
Contact Custom FieldsEnd-user attributesBackfill via /api/events.
Template Engine (Handlebars)LiquidJSThe few syntax differences flag at preview time. Most templates port verbatim.
Email Activity / StatsCalibrated impact + per-step statsDifferent shape — Apex shows lift vs holdout, not just opens/clicks. Your transactional opens/clicks still come through SES events.

What you can leave as-is

  • SES — keep your domain identity, IPs, configuration sets. SendGrid was sending through SendGrid's IPs; you'll switch to your own SES IPs as part of the migration. Plan for a 2-week IP warm-up if you're sending high volume.
  • Event tracking — if you're tracking signup/activation/etc. via your own analytics already, just point them at /api/events.
  • Contacts data — exportable as CSV from SendGrid; backfill into Apex via a one-time identify call per contact.

Migration steps

1. Provision SES (if you haven't already)

SendGrid handles the SMTP layer for you. Moving to SES means:

  • Add your sending domain to SES (DKIM + DMARC records)
  • Request out-of-sandbox if you're sending to addresses you don't own
  • (Optional) request dedicated IPs and plan a 2-week warm-up if you're doing >10k/day

Apex's onboarding flow walks you through this — it's a one-time setup that takes a couple of days for DNS propagation.

2. Export from SendGrid

Pull from SendGrid's Marketing Campaigns API:

  • A JSON dump of Single Sends, Marketing Campaigns, and Automations
  • A CSV of contacts + custom field values
  • (Optional) recent email-event history for backfill

3. Translate

The migration tool emits:

  • Apex audience predicates from SendGrid dynamic segments
  • Org-level cohorts from SendGrid static lists
  • Adaptive Journey drafts from SendGrid Automations
  • Communications from individual email templates (preserves the Handlebars-to-Liquid conversion where straightforward; flags non-portable filters)

4. Review + publish

Open /dashboard/communications/journeys/[id] for each translated journey. Walk the canvas, dry-run with a test subject, set the journey-level goalEventName if relevant, then publish.

5. Cut over

  • Pause the SendGrid Automation (stops new entrants)
  • Publish the Apex equivalent
  • Wait 1-2 weeks for in-flight SendGrid contacts to drain
  • Update DNS to send through SES if you haven't already
  • Sunset the SendGrid Marketing Campaigns plan; keep Twilio for SMS if you use it (Apex routes SMS through the Webhook step → Twilio)

If you're using SendGrid purely for transactional

Apex doesn't build a separate transactional-only product — every send goes through the same pipeline. If you're using SendGrid solely for password-resets / receipts / 2FA codes, the migration is trivial:

- POST https://api.sendgrid.com/v3/mail/send
+ POST https://api.apex.inc/v1/transactional/send

The payload schema is similar (personalizations, from, subject, content). Apex's transactional API also gives you:

  • Idempotency keys (15-minute window)
  • Sandbox mode (X-Apex-Mode: sandbox)
  • The same delivery + bounce + complaint signals you got from SendGrid

See the transactional API docs for the full schema.

What's NOT in the migration

  • SendGrid IP reputation. Doesn't transfer — you're sending through your own SES under your AWS account. Plan the IP warm-up.
  • SendGrid template editor history. Templates port; revision history doesn't.
  • SendGrid Email Activity feed. Apex's event history is per-end-user (queryable via the dashboard); the bulk Activity API is a different shape.

FAQ

Will my email reputation tank during the move? No, if you do the warm-up right. We recommend ramping volume from 1k → 5k → 25k → full over the first two weeks. Apex's onboarding ships with a sample warm-up plan; SES dedicated-IP customers get IP-pool monitoring per recipient domain.

What about SendGrid Marketing Campaigns' segmentation? Translates cleanly to Apex audiences. Dynamic segments → predicates; static lists → cohorts.

Can I keep SendGrid for transactional? Sure. Pointing Marketing Campaigns at Apex while keeping SendGrid for /v3/mail/send calls is a valid intermediate state.

How long does a typical migration take? Pure transactional: a sprint. Marketing Campaigns + Automations: 1-2 weeks including the SES IP warm-up.

Get migration help

migration@apex.inc — send your SendGrid API key + a quick description of your setup and we'll send back a translated Apex workspace + a tailored cutover plan.