This documentation URL will be retired soon. Start using the Ranla API at https://api.ranla.ai. Docs: docs.ranla.ai.

Migration from SendGrid

Move transactional sends from SendGrid to SuperSend TX — receipts, password resets, alerts, and invites still go out over POST /emails with a simpler JSON body than SendGrid's v3 mail send payload.


Why teams switch

  • Straightforward HTTP API — one POST /emails instead of nested personalizations / content arrays
  • Owned transactional mail infrastructure, separate from cold/outbound reputation
  • Sandbox → Pool → Dedicated — test for free, run production on a shared transactional network, isolate on managed servers when you need allowlists

Quick mapping

SendGrid SuperSend TX
SG. API key stx_… API key (Authorization: Bearer)
https://api.sendgrid.com/v3/mail/send https://api.supersendtx.com/emails
personalizations[].to[] to (string or array)
from.email + from.name from (single address string)
content[] with type / value html and/or text
Dynamic templates (template_id) Template alias on send
Event Webhook Webhooks + dashboard activity
ASM / unsubscribe groups Managed unsubscribe + suppressions

Minimal send

SendGrid (v3):

curl -X POST https://api.sendgrid.com/v3/mail/send \
  -H "Authorization: Bearer $SENDGRID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "personalizations": [{ "to": [{ "email": "[email protected]" }] }],
    "from": { "email": "[email protected]" },
    "subject": "Hello",
    "content": [{ "type": "text/html", "value": "<p>It works.</p>" }]
  }'

SuperSend TX:

curl -X POST https://api.supersendtx.com/emails \
  -H "Authorization: Bearer $SUPERSENDTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "[email protected]",
    "to": "[email protected]",
    "subject": "Hello",
    "html": "<p>It works.</p>"
  }'

Node.js

SendGrid:

import sgMail from '@sendgrid/mail'
sgMail.setApiKey(process.env.SENDGRID_API_KEY!)
await sgMail.send({
  to: '[email protected]',
  from: '[email protected]',
  subject: 'Hello',
  html: '<p>It works.</p>',
})

SuperSend TX:

import { SuperSendTX } from 'supersendtx'

const client = new SuperSendTX(process.env.SUPERSENDTX_API_KEY!)
await client.emails.send({
  from: '[email protected]',
  to: '[email protected]',
  subject: 'Hello',
  html: '<p>It works.</p>',
})

Webhooks

SendGrid Event Webhook posts JSON arrays of events. SuperSend TX sends one signed JSON object per delivery with SuperSendTX-Signature (HMAC-SHA256). Map event names as follows:

SendGrid event SuperSend TX
processed email.sent
delivered email.delivered
deferred email.delivery_delayed
bounce email.bounced
dropped email.failed or email.suppressed
open email.opened
click email.clicked
spamreport email.complained

Use Send test event on the dashboard webhooks page (or POST /emails/test) to verify your handler before cutover.


Checklist

  1. Create a SuperSend TX API key (stx_…)
  2. Add and verify your sending domain (SPF, DKIM, return-path)
  3. Swap the client to api.supersendtx.com and map fields per table above
  4. Recreate webhook endpoints and update signature verification
  5. Send from Sandbox, then production after domain verify

Compare

Marketing overview: SendGrid alternative.