How to migrate from MessageFlow to Twilio
A developer's guide to moving SMS and multichannel sending from MessageFlow to Twilio, covering channel coverage, request-format changes, and a step-by-step migration checklist.
MessageFlow is a Poland-based cross-channel messaging platform from Vercom S.A. that exposes SMS, RCS, WhatsApp, Viber and email through a single REST API and campaign panel. Twilio is a San Francisco-based customer-engagement platform offering SMS, MMS, voice, email and more through its communications APIs. On the messaging.dev Score, MessageFlow rates 59/100 and Twilio 88/100; this guide covers the concrete API and coverage differences a developer hits when moving between them.
What you gain and lose
Channels. You keep SMS, RCS, WhatsApp and email — both providers support all four. You gain MMS and voice, which MessageFlow does not offer. You lose Viber, which MessageFlow supports and Twilio does not. Neither provider offers Facebook Messenger, Telegram or Apple Messages for Business, so nothing changes there.
Compliance. Both are GDPR-, ISO 27001- and SOC 2-aligned. Twilio additionally carries HIPAA, which MessageFlow does not — no certification is lost in the move.
Data residency. MessageFlow runs EU servers only, with no region choice, and states customer data is stored exclusively within the EEA. Twilio operates both US and EU servers (plus Australia) and offers an explicit data-residency choice.
Pricing model. This is a model change, not just a price change. MessageFlow sells monthly subscription tiers priced by contact count (Starter from €69/month) with bundled SMS/email volumes. Twilio is pay-as-you-go per message/minute (from $0.0079 per US SMS segment, plus carrier fees) with volume and committed-use discounts.
Tooling and onboarding. Both offer self-onboarding, a sandbox, a free developer credit, and REST plus SMTP APIs. MessageFlow’s credit is a 30-day trial of 100 SMS + 100 emails; Twilio’s is $15 of trial credit. Twilio ships official SDKs for Node.js, Python, PHP, Java, C#, Ruby and Go and the dataset rates its docs “high”; MessageFlow lists no SDKs and rates “med.” For full setup, see how to start with Twilio, and for the full side-by-side, the MessageFlow vs Twilio comparison.
How the request format differs
Source — MessageFlow:
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"]}'
Target — Twilio:
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. MessageFlow posts to a fixed
https://api.messageflow.com/v2.1/sms. Twilio embeds your Account SID in the path:https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json. - Authentication. MessageFlow uses two custom headers —
Authorization(a 128-character key) andApplication-Key. Twilio uses HTTP Basic auth, passing the Account SID as username and the Auth Token as password (the-uflag). - Payload. MessageFlow sends a JSON body; Twilio sends URL-encoded form fields. Map the fields: recipient
phoneNumbers(a JSON array) becomesTo(a single value); sendersenderbecomesFrom; message bodymessagebecomesBody.
Migration checklist
- Create a Twilio account and copy your Account SID and Auth Token from the dashboard ($15 trial credit to test with).
- Map the request fields:
sender→From,message→Body,phoneNumbers[]→To, and switch the JSON body to URL-encoded form parameters. - Re-point your sending code: change the base URL to the account-scoped
Messages.jsonendpoint and replace the two MessageFlow API-key headers with HTTP Basic auth (SID:token). - Re-test in the sandbox: Twilio provides a test environment, so validate the integration before sending live traffic.
- Update delivery callbacks: re-point any status/delivery-report webhooks to Twilio’s callback format.
- Run both in parallel: keep MessageFlow live while routing a share of traffic through Twilio and comparing delivery.
- Cut over: once delivery and reporting match, move remaining traffic to Twilio and retire the MessageFlow path.
Watch out for
- You lose Viber. MessageFlow supports it; Twilio does not. If you send Viber traffic, you need a separate plan for it.
- Pricing becomes per-message. You move from predictable monthly bundles to pay-as-you-go pricing plus carrier fees, so re-model expected volume before cutover.
- Sender format differs. MessageFlow’s quickstart uses an alphanumeric sender (“YourCompany”); Twilio’s uses a phone-number
From. Confirm sender type and any required registration. - EU residency is a choice, not the default. MessageFlow stores data exclusively in the EEA; on Twilio you must explicitly select the EU region, since it also operates US and Australia servers.