SurveyCTO data quality monitoring: the checks to run on every sync

SurveyCTO data quality monitoring works best in two layers. SurveyCTO itself stops impossible answers with constraints, runs automated quality checks every night (including comparisons between enumerators), and lets reviewers approve and correct submissions with a log. On top of that, run your own checks on every new batch: duplicate IDs, interview length, logic across questions, back-check comparisons and signs of made-up interviews, with every correction recorded so the clean data can be rebuilt from the raw export.

By Mehrab Ali, founder of DataFlow · Updated 2 November 2026

SurveyCTO has more data quality tools than most teams use. They work on the form and on one field at a time, though, so the checks that depend on your survey's own logic are still yours to run, such as one household interviewed twice, or an enumerator whose answers vary too little. Run them on each new batch while the team is still in the field, when a problem can still be fixed with a phone call.

What SurveyCTO gives you

In the form

On the server

SurveyCTO's guide to collecting high-quality data covers each of these, and its page on automated quality checks lists the settings.

What SurveyCTO leaves to you

The automated checks look at one field at a time, against thresholds you set. That covers a lot. Several checks field teams depend on need more than one field, more than one survey, or a decision about the whole interview:

Most teams fill this gap with Stata, often Innovations for Poverty Action's ipacheck, with R scripts, or with a spreadsheet someone updates each morning. The checks themselves are the same whichever tool runs them.

The checks to run on every sync

Run these over all submissions each time new ones arrive, not only over the new batch: a duplicate or an outlier often only shows up against what came before. The high-frequency checks guide explains each one in more depth.

CheckWhat it catchesSurveyCTO fields to use
Duplicate IDsA household interviewed twice, or a form sent twiceYour household or respondent ID
Interview lengthInterviews too short to be real, or left open for hoursduration; text audits for single questions
OutliersValues far from the rest, often a typo or a unit mix-upNumber fields, compared within village or team
RangesValues outside what the form allowsThe form's constraints, run again over all data
Missing answersInformation that should be there and isn'tFields that must have an answer when they're relevant
Don't know and refusalsInterviews where too many answers are a don't-know or refusal codeYour codes, such as -99 and -98
“Other, specify”Typed answers that match an option already on the listThe text field after each “other” choice
Logic rulesAnswers that contradict each otherPairs such as land owned and its size, or age and schooling
GPSMissing or inaccurate points, journeys no one could makegps-Latitude, gps-Longitude, gps-Accuracy
Enumerator patternsInterviews copied or inventedAll answers, grouped by enumerator
Back-checksAnswers that change when someone else asks againThe back-check form, linked by ID

Use the duration field, and know what it measures

duration counts the time the form was open on the device. Subtracting the start time from the end time counts the clock time in between, including any time the form sat saved and closed, so it is usually longer, and can even be negative if a device clock was changed. For a too-short check, use duration; use the start and end times to see when interviews happened.

Set the threshold from your own data rather than a guess. Once a few dozen interviews are in, look at the median length and flag interviews far below it (under 40% of the median, for example). A short interview isn't proof of anything, but several from one enumerator on one day is worth a phone call. Text audits then show where the time went: a 40-minute module answered in four minutes stands out.

Read every check by enumerator

A flag on one interview is a correction. The same flag on a third of one enumerator's interviews is a training or supervision problem. For each check, count flags per enumerator per 100 interviews, and compare each person with the others working in the same area, since a remote village can make honest interviews look unusual. SurveyCTO's group comparisons do this for single fields; near-copies, skipped sections and round numbers need the whole interview.

Send flags back the same day

A flag is only useful while the team can still go back. Send each supervisor a short list with the interview's KEY, the question, the recorded value and what to check, and record what they answer. If you use the review workflow, the comments on each submission are a natural place for that answer.

Decide where corrections live

Decide this before fieldwork starts. If supervisors correct in SurveyCTO's review workflow, the exported data already includes the corrections, and SurveyCTO's correction log file has the history. If you clean after export, never edit the exported file: keep it as the raw data, and write each correction as a line of code or a row in a log with the KEY, the variable, the old and new values, who decided and why. Mixing the two leaves a dataset that no single record explains.

Whichever you choose, the final cleaning code should rebuild the clean dataset from the raw data in one run. That is what a journal or a client will ask for. The Field Data Quality Standard lists what a complete record holds.

Running these checks with DataFlow

DataFlow is a desktop app that runs this routine on every sync. It connects to your SurveyCTO server with the server name (the part before .surveycto.com), the form ID and a SurveyCTO user's username and password. That user has to sign in with a password, not with Google, Microsoft or a second step, and have a role that can download data; if SurveyCTO refuses, DataFlow says why and drafts a note for your admin. For an encrypted form, add its private key. The key and password are kept in your computer's keychain, and the key is sent only to your SurveyCTO server, to decrypt the download.

Each sync asks SurveyCTO's API for the submissions completed since the last one, with an hour of overlap so nothing slips between syncs. A submission that arrives twice replaces the earlier copy instead of being added again. DataFlow reads duration for interview length and, once data arrives, sets the thresholds from the median: under 40% of it or over three times it, both of which you can change. Add your XLSForm and it also sets up range checks from your constraints. DataFlow only reads from SurveyCTO and never changes anything on the server.

One thing to know if you use SurveyCTO's review workflow: SurveyCTO releases held submissions once they are approved, and its API returns approved submissions unless asked for others. DataFlow asks for the default, so on a form that holds every submission for review, interviews reach DataFlow after approval. To check them before review, hold only some submissions. The integrations page lists every connection.

Step by step

  1. Build quality into the form. Add constraints, soft constraints for unlikely answers and an enumerator ID question, keep the duration field, and turn on text audits for at least a share of submissions.
  2. Set up SurveyCTO's automated quality checks. In the Monitor tab, add value and outlier checks for the main numbers and group comparisons by enumerator, and have the nightly report emailed to the field manager.
  3. Decide where corrections live. Either SurveyCTO's review workflow or your cleaning code, not both. Write the choice into the data management plan.
  4. Pull new submissions every day. Export or use the API after each day's uploads, and keep each download unchanged as the raw data.
  5. Run the checks over all submissions. Duplicate IDs, interview length, outliers, ranges, missing answers, don't-know share, "other, specify", logic rules and GPS, over everything received so far.
  6. Read the flags by enumerator. Count flags per enumerator per 100 interviews and compare each person with others in the same area.
  7. Send flags to the field team the same day. For each flag give the KEY, the question, the recorded value and what to check, and record the answer.
  8. Log every correction and compare back-checks. Record who changed what and why, rebuild the clean data from the raw export, and compare back-check answers with the originals each week.

Questions

Does SurveyCTO have built-in data quality checks?

Yes. Automated quality checks in the Monitor tab flag values that are too low, too high or outliers, answers that are too frequent or too rare, means that are too low or too high, and differences between groups such as enumerators. They run nightly or on demand and produce a CSV of warnings. They work one field at a time, so duplicate IDs, logic across questions and back-check comparisons still need checks of your own.

What is the difference between duration and end time minus start time in SurveyCTO?

The duration field counts the time the form was open on the device while being filled or edited. End minus start counts clock time, including time the form sat saved and closed, and a changed device clock can make it negative. Use duration to find interviews that were too short.

Can I run high-frequency checks on SurveyCTO data in Stata?

Yes. Many teams run Innovations for Poverty Action's ipacheck, or their own do-files, on exported data, and SurveyCTO Desktop can run a do-file automatically after each export. Someone has to maintain the code and run it every day.

Should I correct SurveyCTO data in the review workflow or after export?

Either works, but pick one. The review workflow keeps a correction log and releases corrected data. Cleaning after export keeps the raw export untouched with every correction in code. Doing both leaves corrections in two places that no single record explains.

How do I check an encrypted SurveyCTO form?

Without the private key, SurveyCTO's automated checks and Data Explorer see only fields marked publishable. To check every field, decrypt the data with the key, in SurveyCTO Desktop or a tool that sends the key to SurveyCTO's API, and run the checks on your own computer.

Can DataFlow connect to SurveyCTO?

Yes. It connects with the server name, form ID and a SurveyCTO username and password, and with the private key for encrypted forms. It only reads from the server, and pulls new submissions on each sync.

Read next