How to migrate from Rule to Infobip
A developer-focused guide to moving transactional messaging from Rule to Infobip, covering channels, compliance, request-format changes, and a step-by-step cutover checklist.
Rule is a Swedish marketing automation platform (Rule Communication Nordic AB) built for email, SMS and RCS campaigns, exposing a REST API for transactional sends. Infobip is a global omnichannel communications platform covering SMS, WhatsApp, voice, email and more. On the messaging.dev Score, Rule rates 28/100 and Infobip 96/100 — this guide covers what actually changes at the API level when you move between them.
Channels you gain (and lose)
Both providers cover SMS, RCS and email, so your existing Rule traffic maps across without dropping a channel. Moving to Infobip adds MMS, WhatsApp, Viber, Facebook Messenger, Telegram, Apple Messages for Business and voice. You lose no channels in the move.
Other differences that matter
- Compliance: Both are GDPR-aligned. Infobip additionally holds ISO 27001, SOC 2 and HIPAA; Rule lists none of these.
- Data residency: Rule runs on EU servers only, with no region choice. Infobip offers both EU and US hosting plus data-residency choice, with additional regions across APAC, Latin America, the Middle East and Africa.
- Pricing: Rule publishes subscription tiers by contact-list size plus per-message fees (from €0.04 per SMS). Infobip is primarily quote/contract-based (contact sales), with some pay-as-you-go options; its SMS starting price is not publicly listed.
- Free credit: Infobip includes free developer/trial credit; Rule does not.
- SDKs: Rule ships Node.js and PHP. Infobip adds Java, C#, Python and Go on top of those.
- Sandbox, docs, protocols: Infobip provides a sandbox and high-rated docs; Rule has no sandbox and mid-rated docs. Infobip also exposes SMPP and SMTP alongside REST, where Rule is REST-only.
How the request format differs
Rule (source):
curl -X POST "https://app.rule.io/api/v2/transactionals" \
-H "Authorization: Bearer YOUR-API-KEY" \
-H "Content-Type: application/json" \
-d '{
"transaction_type": "text_message",
"sendout_type": "transactional",
"from": {"name": "Rule"},
"to": {"phone_number": "+46123456789"},
"content": "Hello, world!"
}'
Infobip (target):
curl -X POST 'https://xxxxxx.api.infobip.com/sms/2/text/advanced' \
-H 'Authorization: App YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"messages":[{"from":"InfoSMS","destinations":[{"to":"15551234567"}],"text":"Hello from Infobip"}]}'
Three things change:
- Endpoint / base URL: Rule posts to a fixed
https://app.rule.io/api/v2/transactionals. Infobip posts tohttps://{base_url}.api.infobip.com/sms/2/text/advanced, where{base_url}is the personalized host shown in your account dashboard. - Authentication: Rule sends the API key as
Authorization: Bearer YOUR-API-KEY. Infobip usesAuthorization: App YOUR_API_KEY— same header, different scheme keyword. - Payload mapping: Rule sends one flat object. Infobip wraps everything in a
messagesarray, so batching is native. The recipient moves fromto.phone_numbertodestinations[].to; the sender moves fromfrom.nameto a plainfromstring; and the body moves fromcontenttotext. Rule’stransaction_typeandsendout_typefields have no Infobip equivalent and are dropped.
Migration checklist
- Create an Infobip account and generate an API key; note your personalized
{base_url}. - Map each Rule field to Infobip:
to.phone_number→destinations[].to,from.name→from,content→text. - Re-point your sending code to the Infobip endpoint and swap the auth header to
Authorization: App. - Re-test against Infobip’s sandbox before sending live traffic.
- Update delivery/webhook callbacks to consume Infobip’s delivery-report format.
- Run both providers in parallel and compare delivery.
- Cut over once Infobip matches or beats your baseline.
For a from-scratch walkthrough see how to start with Infobip, or review the full Infobip vs Rule comparison.
Watch out for
- Pricing is quote-based. You move from Rule’s published per-message rates (from €0.04/SMS) to Infobip’s contact-sales model, whose SMS pricing is not publicly listed — budget for a quote before cutover.
- The base URL is account-specific.
{base_url}is not a fixed hostname; copy it from your dashboard or requests will fail. - Phone-number format. Rule’s example uses
+46123456789(leading+); Infobip’s uses15551234567(no+) — confirm the expected E.164 formatting for your numbers.