7–10 min read
Channels
Updated on: 22/12/2025
Connect Twilio Messaging Service for high-volume SMS
If you just need the essentials, follow this quick path:
- Confirm you actually need a Messaging Service (pooling / scale / consistency)
- Create a Messaging Service in Twilio and copy the Service SID
- Add the “Twilio Messaging Service” channel in RapidPro.app (Country + SID)
- Copy the RapidPro.app Request URL
- In Twilio, add senders and set Integrations webhook to the Request URL (POST)
- Test outbound + inbound replies and verify status callbacks
This setup lets one RapidPro.app channel send from a pool of Twilio numbers with smarter delivery behavior.
Step-by-Step Process
Use a Twilio Messaging Service when you want to send at scale or manage multiple numbers as one sending unit. It can also improve delivery consistency with built-in sender and content handling.
Common reasons to use a Messaging Service:
- Pool multiple numbers under one service (one RapidPro.app channel)
- Sticky Sender behavior for consistent conversations (same “From” per recipient)
- Geo-match / local presence patterns (provider-dependent; often US/Canada-focused)
- Smart encoding / concatenation for special characters and long messages
[CAPTURE: Diagram showing “RapidPro.app Channel → Twilio Messaging Service → Multiple Sender Numbers → Recipients”.]
- Log in to your Twilio Console.
- Go to Develop → Messaging → Services.
- Click Create Messaging Service and complete the setup.
- Copy the Messaging Service SID (you’ll paste it into RapidPro.app).
[CAPTURE: Twilio Console → Messaging → Services showing a Messaging Service with its SID visible.]
- Open Workspace Settings (gear icon).
- Click + New Channel.
- Select Twilio Messaging Service.
- Select your Country.
- Paste your Messaging Service SID.
- Submit / Save.
[CAPTURE: RapidPro.app “Add Twilio Messaging Service” screen with Country + Messaging Service SID fields.]
After you submit the channel setup, RapidPro.app will display a Request URL for Twilio to call.
- Find the Request URL shown in RapidPro.app.
- Copy it (you’ll paste it into Twilio Integrations).
[CAPTURE: RapidPro.app confirmation screen showing the Request URL.]
- In Twilio, open your Messaging Service.
- Go to Senders and add/select the phone numbers you want to use.
- Configure sender selection settings (enable the optimizations you want, if available).
- Go to Integrations and choose Send a webhook.
- Paste the RapidPro.app Request URL into the Request URL field.
- Select HTTP POST.
- Set the Callback URL for delivery status to the same Request URL (if that’s your setup).
- Save.
[CAPTURE: Twilio Messaging Service → Integrations showing “Send a webhook” with Request URL + POST selected.]
- Start a simple flow with a Send Message step and send a test SMS to one contact.
- Reply to the message and confirm the inbound reply appears in RapidPro.app.
- Check delivery behavior (sent/delivered/failed) in your workspace logs and/or Twilio logs.
[CAPTURE: RapidPro.app Messages view showing outbound SMS, inbound reply, and delivery/log details.]
Depending on your region and compliance requirements, you may want to review additional Twilio settings such as:
- Content settings (encoding/format behavior)
- A2P & compliance configuration where applicable
- Opt-out management (STOP/HELP keywords, language variants)
[CAPTURE: Twilio Messaging Service settings sections: Content / A2P & Compliance / Opt-Out.]
Common Issues & Quick Fixes
Outbound works but inbound replies don’t appear in RapidPro.app
Problem: Messages send successfully, but replies never show up in the workspace.
Fix:
- Recheck Twilio Integrations → Send a webhook is pointing to the RapidPro.app Request URL.
- Confirm the integration is set to HTTP POST.
- Ensure your sender numbers are actually added under Senders in the Messaging Service.
- Send a fresh inbound test reply and confirm it appears in Messages/contact history.
Twilio doesn’t know where to route messages (duplicate number conflicts)
Problem: The same Twilio number is being used in more than one place (multiple workspaces/services), causing inbound routing conflicts.
Fix:
- Remove the conflicting number from the Messaging Service in Twilio (if it should not be pooled).
- Disconnect the problematic channel in RapidPro.app.
- Reconnect with a clear rule: the number should be used only once (one workspace / one service).
Messages fail when the same Twilio account is used across multiple workspaces
Problem: One Twilio account is shared across environments, and numbers/services overlap across workspaces.
Fix:
- Ensure a phone number is not duplicated across workspaces in conflicting ways (especially if it is also inside a Messaging Service).
- Avoid using the same individual number inside multiple workspaces or multiple Messaging Services.
- Use separate numbers (or separate services) per workspace to keep routing deterministic.
Delivery receipts (status callbacks) aren’t showing correctly
Problem: You can send messages, but delivery states don’t update as expected.
Fix:
- Confirm the Callback URL is configured and points to the expected RapidPro.app endpoint.
- Verify Twilio is enabled/configured to send status callbacks for your Messaging Service.
- Check Twilio logs to confirm callback attempts are being made and whether they succeed.
Nothing sends from the Messaging Service channel
Problem: The channel exists, but no outbound messages are actually sent.
Fix:
- Confirm the Messaging Service has at least one sender number in Twilio Senders.
- Confirm the RapidPro.app channel is enabled/active.
- Check channel/message logs for the first failure point (auth, webhook, or provider response).
