Reminders feature for ODK-Collect

1. What is the general goal of the feature?

The goal is to remind users of ODK-Collect to fill a form at a given time - maybe daily reminders (for a daily survey), maybe a weekly reminder (for a weekly survey), and maybe at given times every day (either pre-set e.g. 8 am, 12 noon, 4 pm, 8 pm, or randomly throughout the day). This feature should also include a duration, so it will not work indefinitely. For example - 2 weeks, 3 months, a year.

2. What are some example use cases for this feature?

In a prospective study (either observational or randomized controlled study), participants will be asked to install ODK-Collect, download a survey, and fill it daily, weekly, or several times a day.

For example, patients may be asked daily whether they took a medication or not, and whether they suffered side effects. Or they may be asked about their activities and perceived well being. There are many such situation - taking pictures of meals, hand washing habits, mask wearing - that compare morbidity to behavioral aspects (e.g. COVID19 and mask wearing, or social distancing).

3. What can you contribute to making this feature a reality?

I can deploy ODK-Collect in a study, compare response rates with and without reminders, and report back on user experience.

Background: unlike scientists who are highly motivated to use ODK-Collect to report results, participants in studies are notorious for low response rates. For example, in surveys of travelers to risk areas for Malaria or other diseases, a response rate of 10% is not uncommon. I'd like to use reminders (I'll offer another features) to motivate participants to fill their surveys on time.

In addition to helping my own research, this will extend the usefulness of ODK-Collect in fields of research, such as epidemiology.


This is also a feature that I am interested in however there are issues to consider. Your goal is reminders while my goal is to tell ODK-Collect users that there is a new version of a survey.

Now that collect has project management it could be possible to add MQTT features to Collect. A project could listen to a specific MQTT topic and receive notifications about its forms or reminders.

What would be required:

  • Identify each project with a UUID. This UUID could come in the QR or be given by Collect if empty
  • Have an MQTT Websocket address as part of the Collect project configuration. It should come by QR
  • Each project will connect to its MQTT Websocket address and subscribe to a topic using its uuid
  • Receive and show notifications.

The issues are:

  • Notification will arrive only if your device is online.
  • Should we have this in Collect or you better delegate this to a messaging service like Telegram, WhatsApp, FB Messager?

Thanks for posting, I think it is good to start this conversation. However, it is up to ODK Management to determine if it's worthy to venture into this feature.

If you are using Central, form updates are automatically downloaded to the device. Is there a reason why this isn't sufficient?

No, I don't use Central.

But also I did not know it was possible. Does central push the updates to Collect or Collect checks from time to time for new versions?

When you scan the Central QR code, it tells Collect to exactly match the Forms available to that App User including automatically applying updates. Users will not need to manually Get Blank Forms. Additionally, finalized Forms will be sent automatically as soon as a connection is found. Collect checks the server every 15 minutes or so.

I think this is a useful suggestion. It would make ODK Collect usable for studies that want to use "momentary ecological assessments" (EMA; see for a description and one application). Other open source data collection tools have incorporated this as well (see for the REDCap implementation). I'd think that one would want to schedule specific reminder times but also randomized reminders/prompts w/in specified windows of time. It makes the whole thing a bigger project for ODK Central. Unless there was wild enthusiasm (beyond mine) a standalone app that delivers reminders might not be a better way to go -- perhaps programmable SMS using Twilio or Infobip etc.

Yep. I can see the settings under the project.

That will fix the issue of data collectors using the wrong version.

What is your take on reminders? In our projects, we are managing reminders with third-party services like Twilio (SMS / WhatsApp) o Telegram but that adds extra cost or the need to install a third-party App.


In my field, epidemiology applied to diseases of people in new environments (e.g. researchers or volunteers in foreign countries), ODK-Collect has an advantage on daily diaries (which often are filled on the flight back, instead of in real time), let alone surveys after returning to the country of origin, which are prone to recall and other types of bias. One problem with real-time studies is dropouts, and the reminders are meant to improve reporting.

Reminders can be a most useful feature for research that wants to regularly or randomly sample people (e.g. what have you been doing in the last hour, how happy are you this minute), etc.

A cloud-based solution is not helpful, as my study subjects may be offline or avoid using limited and expensive bandwidth on the road. I much prefer a solution that can work offline (by installing an app once prior to travel)

MyCap seems to be a server product, does not mention GPS capabilities (which are crucial to my study), and seem to require connectivity. I also couldn't find whether they require Android or iOs.

Final question, how do we move from a feature idea to code for installation? I'd do it myself, but I am not a programmer, so I can't just check out the code, write an extension and ask for a merge...



@zvig Assuming the core team thinks reminders are a reasonable feature to add (I do) and the technical advisory board doesn't object (I doubt they will), it comes down to when we can fit the feature on the roadmap and what funding is available to design, build, and test it. Given our backlog, it's unlikely we can add reminders before the end of 2022. If you have funding to bear, that can often speed up that timeline. One shorter-term option for you to explore using a reminders/tasking or an automation Android app like Tasker which can launch external apps on a schedule. I've done that in past for studies I've been involved in and had great success.

@qlands Some form of one-way messaging is something that is more likely to be added sooner because some of the infrastructure pieces are there. For example, I can imagine adding a "Status message" option to the Project settings in Central. We could maybe put a :mailbox_with_mail: icon next to the project name in Collect, and if you tap there, we could show you the current status message and maybe other past messages.

Thanks, I take it that I can create a reminder (notification), and maybe also open ODK-Collect for the user.

I'll check with the developer about volume discount, and compatibility with my workflow (I need to install the app on my participants' phones, including the reminder/notification and turning on ODK-collect (whichever is available), and possibly pay for them. Since I need a good few hundreds of participants for the study, it can add up... On the other hand, it may be an incentive for them to participate, at least long enough to get the app...

If I come across funding I'll let you know. Ditto if I find a CS student to do it as part of their education.