This feature requires a CommCare Software Plan
This feature is only available to CommCare users with a Standard Plan or above. For more details, please see the CommCare Pricing Overview.
If you have a question that is not answered in the documentation, take it to Stack Exchange. This is a great place to have your question answered quickly!
General Troubleshooting
There are a number of reasons that a message may not be sent out from Messaging. Please follow these steps to troubleshoot your application.
Select a Default Gateway
Please make sure you've selected a default gateway for your project (Gateway Options for SMS Projects). To choose a gateway, please go to Messaging -> SMS Connectivity. More details can be found on Setup SMS Connection for Project.
Make Sure Your Phone Number is Supported by your Gateway
Go to the Compose SMS Message page (Messaging -> Compose SMS Message). Type in the phone number you're testing with including a + symbol and the country code. For example, for Canada enter +19051235555 or for India enter +919560187812. Enter a test message and press the Send Message button. Verify that the message appears on your phone. You can also check the Message Log report by going to Messaging -> Message Log.
If the message is not received by your phone, your selected gateway may not be supported by the project. Please try a different gateway or contact Dimagi Support.
Check the Scheduled Messaging Events report
Make sure the reminder is appearing in Scheduled Messaging Events report. If the reminder does not appear, that means it hasn't been setup correctly.
Check the Messaging History Report
Check the Messaging History Report. This will list all events that the system tried to process and whether they succeeded or had an error.
Mobile Worker Message
If the message is intended from a mobile worker, please ensure that the mobile worker is properly setup for (Configure a Mobile Worker for Messaging). Make sure the phone number is in the correct format (includes the country code and phone number. For example, 19058131234 will work for a Canadian number or 919560187612 for an Indian number).
Please note, for the India Unicel gateway, the user will need to opt into messages from Dimagi. Please see this help page for more information.
Case - Ensure Correct Phone Number & Case Name
Please ensure that the case is properly setup for CommCare Messaging (Registering a Case Contact). Make sure that your case has the case property contact_phone_number and the case property name (name should not be null)
Bulk Messaging Regulations
Please note, for Telerivet gateway it's important to check the country's regulations which might limit the amount of messages being sent at a time if sending bulk messages.
CommCare Messaging Frequently Asked Questions
SMS Basics
How is the SMS Export different from the Message Log?
They are not that different. The Message Log can be downloaded to Excel too. The SMS Export is in the same format, but is more scalable for large projects
Can I send SMS reminders over e-mail?
Yes. SMS reminders can be sent to e-mail.
There is no cost and no character limit to send reminders over e-mail.
Go to Message Content, and under the Send* dropdown select e-mail.
Can CommCare Messaging work with USSD?
CommCare Messaging does not support USSD
USSD stands for Unstructured Supplementary Service Data.
If your project requires USSD, consider using a system like Telerivet. Telerivet's USSD Expansion pack enables you to send USSD requests and receive replies via Telerivet, allowing you to check and recharge your phone's balance and interact with mobile banking services.
How do I specify a language for sending messages?
If you have multiple languages in your project, check that all languages appear under the Languages page. To set the language for a mobile worker, use the mobile worker page. To set the language for a case, include the case property “language_code.” English = en, French = fra.
To learn more check out Messaging Translations.
Case Management
How can I use case management in Messaging?
Case properties can be
used as a trigger for an SMS reminder or survey.
loaded to set the send date, send time.
referenced inside message content.
What case properties are useful to set-up a Messaging project?
These are some useful case properties:
Reference | Meaning |
---|---|
contact_phone_number | sets the phone number that receives message. Always include the country code. |
contact_phone_number_is_verified | required case property to activate two way messaging, set to equal 1. |
time_zone | used to adjust the send time for a case |
language_code | sets the default language code for a case (ex. en, fra) |
partial_submission | meta data available in the form export. determines if a survey was complete |
To see the complete list check out https://dimagi.atlassian.net/wiki/pages/resumedraft.action?draftId=2290778113&draftShareId=67b371a5-7deb-4e4d-8067-2d70159718e8.
What is the best process for building complex messaging?
Use SMS best practices and include SMS hidden values inside of your CommCare forms.
Complex triggers can be calculated by using a hidden value that combines several questions into one output.
Can we dynamically trigger a workflow with SMS answers?
Yes. Submitting data through an SMS survey or Keyword can update case properties.
An updated case property can trigger a follow-up SMS reminder.
An update case property can be used to update a case list for a mobile worker.
No. SMS answers cannot directly trigger the submission of a secondary form.
How does CommCare support requests for in-app messaging?
For one off messages, a mobile worker can select a phone number from a case list and type a message using the native Android messaging app.
In CommCare, form submissions can update hidden values. The CommCare Messaging system processes case updates to see if they trigger a rule set up in the configuration.
CommCare does not support directly triggering SMS messages inside of a form.
Can you set a case based triggers to arbitrary phone numbers or users (mobile and web)?
There are ways to set random triggers in a form using advanced CommCare Functions.
The output of that function can be saved as a case property.
Web Users typically do not receive SMS messages. The same person can receive SMS messages if they are enrolled as a mobile worker.
I have a conditional alert which is scheduled to send at 00:01 (midnight), but I don't remember choosing this time. Why is this?
The old way of configuring conditional messaging alerts allowed you to start an alert on a date stored within a case property and also send "Immediately". It might not have been obvious before, but the behavior in the old reminders framework for this type of configuration was to start the alert on the date from the case property and send at 12:01am, so this is the way the alert has always been behaving. The only difference now is that the user interface makes it much clearer what the actual configuration is. If this wasn't the time you wanted the alert to send, you can just update it to a new time.
I see "Interpret send times using GMT when recipient has no preferred time zone" enabled for some of my existing alerts, but I can't set it for new ones. What is this option?
Answer: The old reminders framework used GMT as the default time zone when interpreting send times if a contact didn't have a preferred time zone, so this is how the alert was always behaving. The new framework will use the project's time zone when interpreting send times if a contact doesn't have a preferred time zone, so this option is only shown for old alerts that started off on the old framework in order to preserve the same behavior as before. If you want the alert to interpret the send times in the project's time zone by default, then you can uncheck this option and any new events scheduled from the alert will use the project's time zone by default instead. If a contact has a preferred time zone, that will still be used over the project's time zone.
My alert is a "Custom Immediate" schedule type but I can't seem to add any events or change the times each event waits. Why is that?
Answer: The "Custom Immediate" schedule type is a custom schedule where the events are defined by waiting a certain number of minutes after the last event. This use case has caused some confusion, especially when used with a repeating schedule, so it's use is discouraged and support for this use case is limited. As a result, you can create new alerts of this type but there are some parts of it that will not be editable. You can still edit the message content that is sent, however. If you need a custom schedule type, consider using the Custom Daily schedule which is a much more robust custom schedule type and allows editing of events.
Gateways
When do I need to set up a gateway?
A gateway is essential for international projects to support in-country messaging
To learn more check out https://dimagi.atlassian.net/wiki/x/fCnKfw.
What common risks should I be aware of regarding gateways?
Gateways act as a pass through. Delivery of SMS messages depends on the reliability of the local mobile operator.
Gateways cannot send messages if they are offline.
Gateways cannot guarantee that SMS messages are delivered on time.
How do the established gateways on HQ work?
Twilio gateways use phone numbers maintained by CommCareHQ to send messages inside the US and a limited number of international countries. The per message rates can be high based on the country destination.
To learn more check out Gateway Options for SMS Projects.
Are gateways free?
CommCare HQ has established free Gateways in some countries. Today, we support gateways in Ethiopia, India, Lesotho, Mozambique, South Africa and Uganda.
In most cases, gateways cost money. The primary costs include:
Purchase of the smartphone
Maintenance of a phone number or active SIM card
Assuring the gateway has sufficient credit
And may include subscription costs of the Gateway provider
Each message from CommCareHQ costs $.01/message.
If you have additional questions, reach out to support@dimagi.com to learn more.
Who manages SMS gateways?
SMS Gateways are managed in the SMS Connectivity section of the Messaging Tab
Project staff are responsible for managing SMS gateways.
Project staff are best suited for this, especially if it requires monitoring and maintaining a phone numbers in the field.
Does CommCare have a preferred Gateway provider?
Both Twilio and Telerivet integrate easily with CommCareHQ.
For international SMS projects, many projects use a separate Android phone to create a Telerivet gateway. This requires an active local SIM card.
For U.S. based SMS projects, many projects choose to use Twilio. A web based phone number can be purchased for $1/month.
What is the volume cut-off for a Telerivet gateway versus going to Telecoms?
If the messaging system is meant to deliver messages en masse at a specific time of day.
Telerivet Gateways have an SMS rate limit, of about 600 messages per hour.
Often projects will calculate the daily SMS rate limit, but should actually consider the peak number of messages per hour. The daily limit per Android gateway is 14400 messages a day.
For example, 6,000 cases are all set to receive an SMS survey message at 10h00. The rate limit works such that it would take 10 hours to send out messages in batches of 600 message per hour. The last of these cases would receive their survey message at 20h00.
How do I manage the SMS sending rate limit? Does it depend on my Telerivet subscription level?
The SMS rate limit does not depend on the paid Telerivet subscription.
The SMS rate limit can be increased by downloading Expansion Packs from the Google Play store. Each additional expansion pack raises the rate limit by 60 messages per hour. You can download up to 10 expansion packs.
One way to further increase the SMS rate limit, is to purchase an additional Android phone, and add a local SIM card.
CommCare Messaging supports splitting contacts between gateways.
Is there a difference in Message Loads between inbound and outbound SMS?
Inbound SMS messages do not have rate limits
Outbound SMS message do have rate limits, based on the gateways capacity. Shortcodes do not have the same rate limits.
How do you test an SMS gateway?
To test an SMS gateway, test each of the rules in your SMS system design.
The first priority is to confirm that messages are sent to phones, and incoming messages are received.
To pass gateway tests, there must be an active gateway phone and a working API connection.
How do you test a gateway in multiple countries?
To test an SMS gateway in multiple countries, procure a SIM card for each country mobile operator. Start by sending test messages to each phone. Once received, send in a response to confirm that messages can be sent both ways.
For more information regarding managing your SMS system check out the Telerivet FAQ for helpful tips.
SMS Reminders
How do I reference a case property in an sms reminder?
In the content section of the reminder set-up, you can reference a case property using the syntax {case.name} or {case.phone_number}.
Note: The case property must exist to be output in the SMS message.
Note: It is important to use brackets { } and not parentheses.
What happens when you re-activate a multi-event reminder?
If you re-activate a reminder your Index Day will reset to 0 for all the contacts who receive that reminder.
Do not reactivate a reminder if you have a long sequence of messages.
What is the index day a multi-event reminder?
A multi-event reminder starts at Day 0. Each day thereafter increments by 1.
If your reminder is activated on Monday, Day 1 is a Tuesday, Day 2 is a Wednesday and so on.
QA and Troubleshooting
In what ways does CommCare Messaging most often break?
Phone number configuration issues
The contact_phone_number is incomplete
The contact_phone_number is missing a country code
The contact_phone_number is not verified. Complete verification workflow for mobile workers. For cases, save and update the case property.
Gateway goes offline
Gateway runs out of credit for sending messages
The SIM card is disconnected by the mobile operator for exceeding SMS volume thresholds.
SMS Reminders are not activated
How do you test that the project messaging is set-up correctly?
Message Log: Start by reviewing the message log to review any test data.
Reminder Calendar: Check the reminder’s calendar to see the upcoming messages for your configuration. Select one of the calendar message recipients.
Contact: Review the case data of an active case and any relevant case properties
Reminders: Open up reminders, verify case properties that serve as triggers.
Is testing SMS as difficult as it was a couple years ago?
Testing SMS is difficult. Without close monitoring, SMS systems can fail silently. If you experience an error please reach out to support@dimagi.com.
SMS Pricing
For any SMS pricing questions, please refer to https://dimagi.atlassian.net/wiki/spaces/commcarepublic/pages/2143950358/CommCare+Pricing+FAQs#Fees-for-SMS