Complaint tracker system

This article is accompanied by sample forms, dataset definitions and sample data saved in this folder.

1. Introduction

No organization is so perfect that they never make a mistake, and every organization has beneficiaries they serve in one way or another. It is only natural that the beneficiaries would have complaints, even against the best organizations. What sets the best organizations apart from the others is that they listen to those complaints, and they find the best way to resolve them. To this end, it is important to have a robust complaint management system to ensure good governance and the well-functioning of projects or programmes.

It is also important to consider the sensitive nature of complaints. Beneficiaries may have genuine, honest feedback, but they fear reprisal or might require a safe space to share it. It is important to ensure their data is well-protected, such as ensuring only authorized managers may view sensitive data, such as the name of the complainant.

This use case covers the following sections:

  1. Deploying the workflow now!
  2. Overview
  3. Workflow components
  4. Customization and improvements

2. Deploy the workflow now!

Click below to view this workflow in the Hub and install it on your server.

Install Workflow

Note: This is a case management workflow. To test it, follow these steps after deploying the workflow. The cases dataset ID is "complaints".

This workflow uses encryption. You can download the private key file to decrypt the data by clicking here. Remember: This is just an example private key, so it is okay to share, but normally, you should NEVER share a private key through an insecure manner. Only share your private keys using secure methods, and only share them with users who are allowed to view the data.

To learn how to set up your own encryption as well as automatic emails, check out 5. Customization and improvements below.

Advanced users can find the sample workflow files in this folder. To better understand how all these workflow components relate to each other, take a look at section 4. Workflow components. For help with manual deployment, check out our support article Deploying form definitions and server datasets.

3. Overview

In this workflow, you will be able to:

surveycto_icon.png Record information about a complaint.
surveycto_icon.png Collect media (e.g. images, audio, other files) related to the complaint.
surveycto_icon.png Encrypt sensitive information, such as personally identifiable information (PII).
surveycto_icon.png Hide sensitive information in the form after it is entered.
surveycto_icon.png Assign complaints to the relevant staff.
surveycto_icon.png Update a complaint.
surveycto_icon.png Send an email after the form is filled out (requires additional setup).


Determine whether sensitive information should be hidden.
Enter complainant information.
Enter complaint information.
Submit form.
Open case from Manage Cases to follow up.
Update the complaint.

3.1 Recording and updating a complaint

Depending on the specifics of your complaint system, you may want to give the complainant the freedom to record, view and update their own complaints, or it might be preferable to assign this responsibility to enumerators or complaint managers. Both scenarios are possible using this workflow. Use the chart below for tips on distributing your forms based on who will fill it out.

Form filled by… Record a new complaint Update a complaint
Complainant Open the web form version of the complaint tracker and record the new complaint. Open the web form version of the complaint tracker using the unique URL to that complaint where the "caseid" value is the id of the complaint.
Enumerator / Complaint manager

1. Mobile forms: Open the complaint tracker from Fill Blank Form of SurveyCTO Collect, or

2. Web forms: Open the web form version of the complaint tracker and record the new complaint.

1. Mobile forms: Open the complaint tracker from Manage cases of SurveyCTO Collect, or

2. Web forms: Open the web form version of the complaint tracker using the unique URL to that complaint where the "caseid" value is the id of the complaint. You can also use the Manage cases of Web Collect.

If you are using web forms, check out 5.3 Make it easier for complainants to review and update complaints below for details on how you can share the unique URL to the form.

Tip: If you would like complainants to create their own complaints (so anyone can create a complaint, instead of needing an enumerator to create the complaint for them), turn on anonymous access for the form, so complainants can fill out the form as a web form without needing to log in. You can learn more in our documentation Using web forms.

3.2 About sensitive data

If the field "new_sensitive" has the choice "Yes" selected, then several fields, such as "display_name", will have a value of "HIDDEN" instead of the actual name of the complainant. The original name of the complainant will be stored in the calculate_here fields "sensitive_name" through "sensitive_gender_label" (rows 23-26). However, that data will be encrypted, and it will not be published to the server dataset. That way, only data managers with the private key file will be able to view the sensitive data. To learn more, check out 5.1 Customize how you handle sensitive data below.

4. Workflow components

This workflow has 1 form and 1 server dataset.

Workflow Component Files
Click on the section to access the files.
Name Complaint tracker

Definition: Form definition - Complaint tracker

Description Form used for entering complaint information.
Cases Datasets
Name Complaints
Files(s) Definition: Cases dataset definition - Complaints
Description Stores information about the complaints, including follow-up information. If the respondent indicates that this is a "sensitive" case, then the personal information will not be published.

5. Customization and improvements

SurveyCTO has endless possibilities, so this workflow is only the beginning. Feel free to modify and expand on this workflow to fit your own needs. Here are some tips on what you can add.

5.1 Customize how you handle sensitive data

  • This form uses encryption, so only authorized data managers can view sensitive data. The form includes a public key, but it is best to use your own public key, so you can use your own private key to decrypt the data. You can learn more about encryption in our support article How to encrypt a form.
  • This workflow hides sensitive information in the form after it is entered. However, if the enumerator being able to go back and edit previous answers is important to you, this is a feature you can easily remove without compromising security. The form will still encrypt sensitive data after the form is finalized (before it is submitted) even if previous answers are not hidden from the enumerator. To set this up, ensure that the group “grp_new_id” is always relevant and all its fields are non-publishable. If you would like PII details for non-sensitive complaints to be available in the cases dataset, you can still publish them using the “display_*” fields (which are not relevant when the complaint is sensitive).

5.2 Improve complaints assignment

This workflow uses a choice list with pre-existing assignees for manual assignment. In a real-life example, other approaches might be best suited:

  • Automatically assign a complaint based on its characteristics (e.g. category) or randomly.
  • Instead of listing case assignees in the choices sheet, you can pre-load the choices from an enumerator dataset. Doing so, you can also filter the assignees available based on key complaint characteristics or other variables (e.g. the assignee "Adnan" can only be assigned complaints that are "Category 1").
  • If your complaints are managed by different organizations, create a user role for each organization and assign complaints to the most appropriate user role.

5.3 Make it easier for complainants to review and update complaints

  • Complainants can review and update their complaints using a unique URL link of the complaint web form. In the current workflow, complainants need to create this unique URL link themselves, but it is possible for SurveyCTO to generate it and share it with the complainants once they record the complaint. In your form, add a calculate field that concatenates the original web form URL with the complaint ID (e.g. concat('', ${id})). You can then:
    • Display this unique URL link in the “thankyou” note field so it will appear after the form has been submitted, and complainants can take a screenshot or copy the link to a safe place.
    • Use the launch-sms field plug-in or launch-whatsapp field plug-in to send the unique URL link to the complainant via SMS or Whatsapp.
    • Set up automatic emails with Zapier to send the unique URL link to the complainant via email.
  • If the complainant doesn’t have access to SurveyCTO but would like to check their complaint status, you can create a separate web form where the beneficiary can enter their complaint ID, and the form displays the complaint status and other relevant, non-sensitive information.

5.4 Set up automations and notifications

  • Currently, the “result_code” field is used to flag the priority level of the case. You can adjust this based on your needs, and even use it with an automated quality check.
  • Use Zapier so an email is sent to data managers whenever the form field "email_trigger" has a value of 1, and retrieve the email address from the form field "email_address". You can update the calculation of the field "email_address" to contain different email addresses. To learn how to set up automatic emails using Zapier, check out our support article Creating automated systems with Zapier.

5.5 Miscellaneous

  • If branding is important for your complaint tracker system, replace the SurveyCTO logo in the upper-left and the intro note field.

Do you have thoughts on this guide? We'd love to hear them! Feel free to fill out this feedback form.


Article is closed for comments.