Migration guide

How to migrate from MessageFlow to Sinch

A developer-focused guide to migrating from MessageFlow to Sinch, covering channel and compliance differences, request-format field mapping, and a step-by-step cutover checklist.

MessageFlow is a cross-channel messaging platform from Polish CPaaS company Vercom S.A., offering SMS, RCS, WhatsApp, Viber and email through a single REST API. Sinch is a larger cloud communications platform spanning messaging, voice and email APIs. On the messaging.dev Score, MessageFlow rates 59/100 and Sinch 92/100; this guide covers what actually changes when you re-point your sending code from one to the other.

What you gain and what you lose

Channels. Both providers support SMS, RCS, WhatsApp, Viber and email, so you lose no channels in the move. You gain MMS, Facebook Messenger, Telegram, Apple Messages for Business and Voice, all of which Sinch supports and MessageFlow does not.

Compliance. Both are GDPR, ISO 27001 and SOC 2 aligned. Sinch additionally carries HIPAA, which MessageFlow does not.

Data residency. MessageFlow runs on EU servers only, with no region choice. Sinch offers EU and US servers plus data-residency choice, with additional regions in APAC, Australia and Brazil.

Pricing. This is a model change, not just a rate change. MessageFlow bills monthly subscription tiers priced by contact count (Starter from €69/month) with bundled volumes. Sinch is pay-as-you-go per message (approximately $0.0075 per US SMS segment) with volume and committed-use pricing.

SDKs, protocols and docs. MessageFlow ships no official SDKs (raw REST/SMTP only). Sinch provides Java, Python, C#, Node.js and PHP SDKs, adds SMPP alongside REST and SMTP, and its documentation is rated high versus MessageFlow’s medium.

Unchanged. Both self-onboard, both provide a sandbox, and both include free developer credit (MessageFlow’s is a 30-day trial of 100 SMS + 100 emails; Sinch’s amount is not published in our data).

How the request format differs

MessageFlow (source):

curl -X POST https://api.messageflow.com/v2.1/sms \
  -H "Authorization: YOUR_API_KEY" \
  -H "Application-Key: YOUR_APPLICATION_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sender":"YourCompany","message":"Hello world!","phoneNumbers":["+48111222333"]}'

Sinch (target):

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"}'

Endpoint / base URL. MessageFlow posts to a fixed path, https://api.messageflow.com/v2.1/sms. Sinch posts to https://us.sms.api.sinch.com/xms/v1/{service_plan_id}/batches — the host changes, the versioned path differs, and you must embed your Service Plan ID in the URL. The us. region prefix is selectable.

Authentication. MessageFlow uses two custom headers: a 128-character Authorization key plus an Application-Key header. Sinch collapses this to a single Bearer token in the Authorization header, so drop the Application-Key header entirely.

Payload fields. Map senderfrom, phoneNumbersto, and messagebody. Recipients remain a JSON array in both.

Migration checklist

  1. Create a Sinch account and generate an API token, then note your Service Plan ID from the dashboard. Onboarding is self-service and trial credit is included — see how to start with Sinch.
  2. Map the request fields: senderfrom, phoneNumbersto, messagebody, and switch from two key headers to a single Bearer token.
  3. Re-point your sending code to the /batches endpoint, inserting your Service Plan ID and chosen region into the URL.
  4. Re-test in Sinch’s sandbox (it has one) before sending live traffic.
  5. Update delivery/webhook callbacks: Sinch’s status payloads differ, so re-map your delivery-report handler.
  6. Run both providers in parallel, comparing delivery on real numbers.
  7. Cut over once parity holds, then decommission your MessageFlow credentials.

Watch out for

  • Country coverage. Sinch lists 150 countries versus MessageFlow’s 190. Confirm every destination you send to is covered before cutover.
  • Default region is US. The quickstart endpoint is us.sms.api.sinch.com. Because MessageFlow stored data exclusively in the EEA, EU teams should select a Sinch EU region using its data-residency choice.
  • Billing shape. Moving from bundled monthly subscription to per-message pay-as-you-go changes cost forecasting; re-model against your real volumes.
  • Trial credit amount. Sinch offers free trial credit, but the amount is not published in our data, unlike MessageFlow’s stated 100 SMS + 100 emails.

For a field-by-field view, see the MessageFlow vs Sinch comparison.