Migration guide

How to migrate from seven.io to Sinch

A developer-focused guide to migrating from seven.io to Sinch, covering channel and compliance differences, request-format changes, and a step-by-step cutover checklist.

seven.io is a German CPaaS platform (formerly sms77) offering SMS, RCS, WhatsApp and voice APIs on EU-hosted infrastructure. Sinch is a publicly traded cloud communications platform spanning messaging, voice and email across a wider set of channels. On the messaging.dev Score, seven.io rates 42/100 and Sinch 92/100 — this guide covers, as data, what actually changes when you re-point your sending code from one to the other.

What you gain and what you lose

Channels. You keep every channel seven.io offers today — SMS, RCS, WhatsApp and voice all exist on both platforms, so nothing you currently send goes away. Moving to Sinch additionally unlocks MMS, Viber, Facebook Messenger, Telegram, Apple Messages for Business and email. In this direction you lose no channel.

Compliance. Both are GDPR-compliant and ISO 27001 certified. Sinch additionally lists SOC 2 and HIPAA, which seven.io does not.

Data residency. seven.io processes data on German/EU infrastructure only, with no region choice. Sinch offers EU and US servers plus APAC, Australia and Brazil, and supports choosing your data residency — but see the note below about the default endpoint.

Pricing and credit. seven.io is prepaid pay-as-you-go (€0.075 per SMS, no monthly fee). Sinch is pay-as-you-go with volume and committed-use tiers (about $0.0075 per US SMS segment, plus carrier fees). Both provide free developer credit; seven.io states €0.50, while Sinch’s amount is unspecified in our data.

Tooling that stays similar. Both document at “high” quality, both offer a sandbox, and both expose REST, SMPP and SMTP. SDK coverage narrows: seven.io ships 10 SDKs (PHP, JavaScript, Python, Go, Ruby, .NET, Rust, Kotlin, Elixir, Swift); Sinch ships 5 (Java, Python, C#, Node.js, PHP). Python and PHP are common to both.

How the request format differs

seven.io:

curl -X POST https://gateway.seven.io/api/sms \
    -H "X-Api-Key: YOUR_API_KEY" \
    -H "Accept: application/json" \
    -d "to=49176123456789" \
    -d "from=AcmeInc" \
    -d "text=hello world"

Sinch:

curl -X POST 'https://us.sms.api.sinch.com/xms/v1/YOUR_SERVICE_PLAN_ID/batches' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"from":"+15005550006","to":["+15551234567"],"body":"Hello from Sinch"}'

Three things change. The endpoint: seven.io posts to one fixed URL; Sinch’s URL embeds your service_plan_id in the path and a region in the subdomain (us. here). The authentication: seven.io sends the API key in an X-Api-Key header; Sinch uses a Bearer token in the Authorization header. The payload: seven.io uses form-encoded key/value pairs, while Sinch expects a JSON body with Content-Type: application/json. Fields map as follows: to (a single value, 49176123456789) becomes to as an array of E.164 numbers (["+15551234567"]); from (AcmeInc, an alphanumeric sender ID) becomes from; and text becomes body.

Migration checklist

  1. Create a Sinch account (self-onboarding is available) and generate an API token; note your service_plan_id. See the How to start with Sinch guide.
  2. Map the request fields: toto (array), fromfrom, textbody, and switch form-encoding to a JSON body.
  3. Swap auth: replace the X-Api-Key header with Authorization: Bearer.
  4. Re-point your sending code to the Sinch base URL, inserting your service_plan_id and chosen region.
  5. Re-test against Sinch’s sandbox before sending live traffic (Sinch provides one).
  6. Update your delivery/webhook callbacks to Sinch’s format.
  7. Run both providers in parallel and compare delivery.
  8. Cut over once results match.

Watch out for

  • US default region. The quickstart endpoint is us.sms.api.sinch.com. seven.io ran “Pure EU Routing” on German infrastructure; if EU residency matters, explicitly select Sinch’s EU region rather than the US default.
  • Narrower SDK set. If you rely on seven.io’s Go, Ruby, Rust, Kotlin, Elixir or Swift SDKs, Sinch does not ship those.
  • Payload shape. Sinch requires a JSON body and a Bearer token, and to must be an array, not a single value.
  • Free-credit amount is unspecified for Sinch, whereas seven.io states €0.50.

For a full side-by-side, see the seven.io vs Sinch comparison.