Migration guide

How to migrate from SendPulse to Twilio

A developer-focused guide to moving SMS and messaging traffic from SendPulse to Twilio: channel and compliance differences, request-format changes, and a step-by-step cutover checklist.

SendPulse is a multi-channel marketing and messaging platform offering email, SMS, and chat apps through a unified REST API, while Twilio is a customer-engagement platform built around communications APIs for SMS, voice, email, and more. On the messaging.dev Score, SendPulse rates 63/100 and Twilio 88/100. This guide covers what you gain and lose in the move, how the request format changes, and how to cut over cleanly. For a broader side-by-side, see the SendPulse vs Twilio comparison.

What changes when you move

Channels. Both platforms send SMS, WhatsApp, and email. Moving to Twilio you gain MMS, RCS, and voice. You lose three chat channels that SendPulse supports: Viber, Facebook Messenger, and Telegram. Neither provider offers Apple Messages for Business.

Compliance. Both are GDPR-aligned. Twilio additionally holds ISO 27001, SOC 2, and HIPAA — relevant if you handle regulated or health-related data.

Data residency. Both run US and EU servers. Twilio additionally offers a data-residency region choice (plus an Australia region); SendPulse runs in the US and Germany but does not let you pick a region.

Pricing and free credit. SendPulse is pay-as-you-go priced per destination country (from €0.01 per SMS) on top of a free-forever plan (15,000 emails/mo + 10 test SMS). Twilio is pay-as-you-go per message/minute with volume and committed-use discounts (from $0.0079 per US SMS segment, plus carrier fees) and a one-time $15 trial credit.

Tooling. Both ship REST and SMTP APIs, high-quality docs, and SDKs for Node.js, Python, PHP, Java, C#, and Ruby; Twilio adds Go. Twilio also provides a sandbox/test environment, which SendPulse lacks.

How the request format differs

SendPulse quickstart:

curl -X POST https://api.sendpulse.com/sms/send \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sender": "SenderName",
    "phones": ["380931258293"],
    "body": "Hello from SendPulse"
  }'

Twilio quickstart:

curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json' \
  --data-urlencode 'To=+15551234567' \
  --data-urlencode 'From=+15005550006' \
  --data-urlencode 'Body=Hello from Twilio' \
  -u ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token

Three things change:

  • Endpoint. SendPulse posts to a fixed /sms/send path. Twilio posts to an account-scoped resource with your AccountSid embedded in the URL (/Accounts/{AccountSid}/Messages.json).
  • Authentication. SendPulse uses an OAuth2 client_credentials Bearer token — you POST client_id/client_secret to /oauth/access_token for a 1-hour token (or use a static key) and send it as an Authorization header. Twilio uses HTTP Basic auth with your Account SID as username and Auth Token as password (the -u flag), so there is no separate token-fetch step.
  • Payload. SendPulse sends a JSON body; Twilio sends form-urlencoded fields. Map the recipient phones array to a single To value, the sender (an alphanumeric name) to From (a phone number), and body to Body.

Migration checklist

  1. Create a Twilio account and generate an Account SID and Auth Token; provision a sending phone number for the From field. See How to start with Twilio.
  2. Map the request fields: phones[]To, senderFrom, bodyBody, and switch the JSON body to form-urlencoded parameters.
  3. Swap the auth mechanism from an OAuth2 Bearer token to HTTP Basic auth, and delete the token-fetch call.
  4. Re-point your sending code to the Messages.json endpoint, or adopt an official Twilio SDK.
  5. Re-test against Twilio’s sandbox before sending live traffic.
  6. Update delivery webhooks and status callbacks to Twilio’s status-callback format.
  7. Run both providers in parallel and compare delivery results.
  8. Cut over fully, then decommission the SendPulse integration.

Watch out for

  • Lost chat channels. Viber, Facebook Messenger, and Telegram are available on SendPulse but not Twilio — re-platform any flows that use them before cutting over.
  • Sender identity. SendPulse accepts an alphanumeric SenderName; Twilio’s From is a phone number you must provision, so alphanumeric sender IDs may not carry over directly.
  • Free-tier shape. SendPulse’s free-forever plan (15,000 emails/mo + 10 test SMS) becomes a one-time $15 trial credit on Twilio.
  • Carrier fees. Twilio’s per-segment US SMS price is quoted “plus carrier fees,” so budget beyond the headline $0.0079 rate.