Comparing On-device vs Server-based SMS in CommCare
Broadly speaking, CommCare supports two ways of sending out SMS messages:
Sending an SMS directly via a CommCare form on a mobile device
Configuring SMS to be sent from CommCareHQ’s servers via an SMS Gateway
See more details on each of these implementation strategies below.
Pros and Cons (when to use each method)
Sending SMS directly from a CommCare form is good for messages that are:
Real-time
Triggered during an app workflow
Time-sensitive -- especially in areas with inconsistent mobile data
Have no privacy concerns associated with sharing a mobile user’s phone number
Using CommCare Messaging is best for:
Asynchronous alerts or reminders
Batch messages sent out to many users at once
Messages that need to be sent from an anonymous or system user
Automated, interactive SMS workflows
Sending an SMS directly via a CommCare form on a mobile device
See documentation Sending an SMS directly from a CommCare form on how to implement this in CommCare form builder.
Level of effort (app-building): ~1 hour to configure your first message, several minutes for each subsequent message
User Experience: User taps on a button that says “Send SMS” inside a CommCare form. They are taken to the SMS interface of their device, where the list of recipients and message content has been pre-populated from hidden variables in CommCare. When the user taps “Send”, they are automatically returned to CommCare.
Requirements: Mobile SMS credit on the user’s phone
Caveats: Can be hard to verify if an SMS message was actually sent or not. Can’t send messages asynchronously. Messages originate directly from the mobile worker’s phone
Configuring SMS to be sent from CommCareHQ’s servers via an SMS Gateway
See extensive linked documentation CommCare Messaging on how to implement this functionality using the CommCare messaging feature and an SMS Gateway provider.
Level of effort (app-building): EXTENSIVE. Requires dev work to set up SMS Gateway compatibility internally, as well as partner-facing negotiations to set up the SMS Gateway externally. Interface is fairly user-friendly, but requires several hours of exposure before app-builders fully grasp all the details.
User Experience: Messages are delivered asynchronously. The messages typically originate from a “short code” assigned by the Telcom involved, and may be configured to accept user responses. The messages can be triggered by:
A specific date
Change in a user case property
A manual broadcast
Requirements: Activation of SMS Messaging Feature Flags (“Outgoing Messaging” and “Incoming Messaging”), Custom Dev Work to configure SMS Gateway internally, selection of SMS Gateway provider that operates within the country you’re working in, Implementation work to configure SMS Gateway externally
Caveats: Time-consuming and expensive to set up. Dimagi adds a surcharge of $0.01 per message sent. Users must sync data with the server in order to trigger SMS messages.