Start here
Self-paced KoboToolbox course

KoboToolbox for field survey work

Build a school visit form, test it on web and Android, review its submissions, and prepare the files and access plan a field team would need.

14 modulesBeginner to intermediateAbout 18–25 hours with practiceKnowledge checksCourse file works offline
Course author

Aubrey Jolex

Senior Research Associate Β· Innovations for Poverty Action
Estimated commitment

8–10 hours for lessons and knowledge checks
7–10 hours for form and field practice
3–5 hours for the school visit capstone

Allow extra time if this is your first XLSForm or your first Android collection test.

How to use this course

Read the modules in order on your first pass. Each one explains a task, shows a worked example, then asks you to try it. The knowledge check at the end has three attempts. A correct set of answers opens the next module. After the third complete attempt, you can review the answer key and continue.

The lessons, diagrams, quizzes and practice workbook are inside this HTML file. Your browser saves course progress locally. Official documentation links and activities on a KoboToolbox server need internet access.

Practice rule: use invented school names, IDs, staff names and coordinates. The course does not require access to real study data. Do not use a live project for the exercises.

The school visit example

You are preparing a short visit form for a team checking school facilities. The team has a list of school IDs. An enumerator visits a school, records consent from the person providing information, counts usable classrooms, notes water and electricity, and records each classroom in a repeat. A supervisor reviews the submissions, and an analyst exports the data.

Practice fieldExample valueWhy it matters
school_idS001Joins the visit to the sample list
consentyesControls whether the interview continues
classrooms_usable6Needs a whole-number validation
rooms repeatA01, A02, …One record per classroom
school_gpsPractice location onlyTests device and location workflow

You will build this form in stages. Early modules use a few questions. Later modules add logic, repeats, translations, export checks and permissions.

What you need

  • A modern browser and a spreadsheet editor. KoboToolbox access is needed for the live exercises.
  • An Android phone or tablet for the KoboCollect module. If you do not have one, read the device steps and complete the paper test plan.
  • About 60–90 minutes per module if you complete the hands-on work. The capstone takes longer.

The starter contains the first questions. The completed example is an answer key for review, not a substitute for building and testing the form yourself.

Completion evidence

At the end, keep a copy of your XLSForm, a list of test cases and outcomes, an XLS export containing synthetic records, and a short note explaining who may submit or view data. These are more useful than a completion percentage alone.

Official KoboToolbox references

Module 1 Β· Part I Β· Setup

What KoboToolbox does

Platform, servers and accounts

By the end of this module, you can:
  • Describe a KoboToolbox project
  • Choose a server for a team
  • Explain where forms and submissions live

A project has a form and its data

KoboToolbox is a system for designing forms, collecting submissions and reviewing or exporting those submissions. A project contains one form, its versions, settings, media, collaborators and submitted records. A data collector uses either a web form or the KoboCollect Android app to complete that form.

KoboToolbox project, simplified
SUMMARYFORMDATASETTINGS

Form: edit, preview, deploy, obtain collection links.

Data: table, reports, map, gallery and downloads.

Settings: sharing, media and project configuration.

The form is a definition. A submission is one completed record. Editing the definition does not change answers that collectors have already sent, although later edits to older records can be affected by a new form version.

Choose the server before creating team accounts

Current KoboToolbox account guidance describes the Global and European Union public servers. Some organizations have a private server. An account created on Global cannot be used to sign in to EU, and users who collaborate on a project need accounts on the same server.

ServerAddress for the web accountUse when
Globalkf.kobotoolbox.orgYour organization uses Global, or you are making an independent practice account
European Unioneu.kobotoolbox.orgYour organization requires or prefers EU hosting
PrivateURL supplied by your administratorYour organization operates its own KoboToolbox server
Before a team starts: confirm the server, project owner and data policy. Moving a project between servers is not the same as inviting a collaborator; accounts and projects are server-specific.
KoboToolbox Global server sign-up page from the supplied workshop deck
Sign-up screen from the supplied workshop draft. Field labels and plan information can change; use the current sign-up page when creating an account.

From questionnaire to export

  1. Create a project and build or upload the form.
  2. Preview the draft and test each important response path.
  3. Deploy the form, then test a live submission.
  4. Give collectors the correct link or Android setup.
  5. Review submissions and export the format needed for analysis.

β€œUpload” applies when your source is an XLSForm workbook. If you build directly in the Formbuilder, there is no separate workbook to upload before deployment.

Practice 1 Β· account and workflow

Record your setup

  1. Write down the server your team uses. If you do not know, stop before creating a shared project and ask the project owner.
  2. Sign in to your practice account and locate the Projects page.
  3. In your notes, draw the sequence draft β†’ preview β†’ deploy β†’ submit β†’ review β†’ export.
  4. State where a form definition ends and a submitted record begins.
Model response

The form definition contains questions, answer options and logic. A submission contains one set of answers collected with a deployed version of that form.

Mandatory knowledge check

Module 1 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Your team uses the EU server. Where should a new collaborator create the account used for this project?
2. Which action makes a draft form available for submissions?
Module 2 Β· Part I Β· Setup

Your first project

Projects and the Formbuilder

By the end of this module, you can:
  • Create a practice project
  • Find the project tabs
  • Save and preview a form

Read the Projects page

The Projects page lists projects and their status. A draft is still being prepared. A deployed project can accept submissions under its access settings. The left menu also gives access to the question library. The controls for archive, sharing and deletion may appear near the project list; this course does not use them for practice.

KoboToolbox Projects page from the supplied workshop slides
Projects page screenshot from the supplied workshop deck. It shows the New button, draft and deployed filters, and the project table. Project names in this source image are examples from the original deck.

In the current interface, opening a project leads to Summary, Form, Data and Settings. Summary gives links to edit or preview a form and, after deployment, to view the data.

Create the course project

  1. Choose New, then Build from scratch.
  2. Use the title School Visit Checklist β€” Practice.
  3. Describe it as β€œSynthetic training records only.” Choose a country and sector if your server asks for them.
  4. Open the Formbuilder. Add a Text question labelled β€œSchool ID” and an Integer question labelled β€œHow many classrooms are currently usable?”
  5. Save. An asterisk by Save indicates unsaved edits. Preview both questions before continuing.

In the Formbuilder, add a question below an existing question, enter its label and choose a type. Question settings provide required status, hints, skip logic and validation. Once you choose a type, the Formbuilder does not let you convert that question to another type in place; plan the type first.

What a useful first preview proves

Type S001 as the school ID and 6 as the classroom count. A preview should accept both. Next try 0042A as the ID. This is why the ID is Text, even though some IDs contain digits.

Practice 2 Β· form creation

Create and preview two questions

  1. Create the course project on your practice server.
  2. Set the question names to school_id and classrooms_usable.
  3. Make School ID required. Leave classroom count optional for now; you will add a conditional rule later.
  4. Preview with S001, 0042A and an empty classroom count.
  5. Record what the preview accepts and any label or hint that needs clarification.
Expected result

Both IDs are accepted as text. An empty classroom count can continue while the field is optional. Preview does not yet create a server submission.

Mandatory knowledge check

Module 2 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Where do you edit questions in a KoboToolbox project?
2. Which action checks a draft before it is deployed?
Module 3 Β· Part II Β· Form design

Questions and answer codes

Types, labels, names and choices

By the end of this module, you can:
  • Choose types from the answer needed
  • Separate stored names from visible labels
  • Write answer options that can be analyzed

Choose the type from the answer, not the wording

QuestionTypeReason
School IDTextAn ID may have letters or leading zeros
Usable classroomsIntegerA whole-number count
Distance to the school in kmDecimalFractions such as 1.5 are possible
Main electricity sourceSelect OneOne coded category
Facilities observedSelect ManySeveral choices may apply
Visit dateDateA calendar value
School entrance locationGeopointCoordinates and location metadata
Photo of a notice boardImageAn attachment, subject to consent and policy
Read the consent textNoteInstruction with no answer

The source slides say β€œNumber” as a broad category. XLSForm distinguishes integer and decimal. Keep the distinction explicit because it affects input and validation.

Separate three names that learners often mix up

The question label is what the user sees. The question name becomes the stored field name. For a select question, each choice name is the stored answer code, while its choice label is what the user sees.

Example
ItemValuePurpose
Question nameelectricityExport column
Question labelWhat is the school's main source of electricity today?Field question
Choice namegridStored code
Choice labelGrid connectionVisible option

Use clear, unique question names with underscores instead of spaces. Decide choice codes before collecting real data. You can improve a displayed label later, but changing a stored code after collection can change what exported values mean.

Write a question a collector can apply consistently

β€œClassrooms?” is too vague. Use β€œHow many classrooms are currently usable for teaching?” and a hint such as β€œCount rooms that can host a class today; exclude rooms closed for repairs.” State a time reference where it matters. Include β€œDo not know” or refusal options only when the study needs them and the team has agreed how they will be coded.

Making every field required can force guesses. Decide whether the information is essential, whether the respondent can know it, and what a collector should do when it is unavailable.
Practice 3 Β· question review

Program three types

  1. Add electricity as Select One with stored codes grid, solar, generator and none.
  2. Add facilities as Select Many with water, toilet, library and other.
  3. Add school_gps as Geopoint, but use a synthetic or approved practice location.
  4. Preview selecting two facilities, then inspect which codes would be stored.
Stop and check

electricity stores one code. facilities stores the selected codes. The labels can later be translated without changing those codes.

Mandatory knowledge check

Module 3 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. A school code is 0042A. Which question type should store it?
2. A respondent can name several facilities. Which type fits?
3. Which item is stored in the data: choice name or choice label?
Module 4 Β· Part II Β· Form design

XLSForm from the inside

survey, choices and settings

By the end of this module, you can:
  • Read a workbook
  • Connect a select question to its choices
  • Upload and troubleshoot an XLSForm

Why move to a spreadsheet?

The Formbuilder is useful for learning and shorter edits. XLSForm is a spreadsheet definition of the same KoboToolbox form. It lets a team review many rows, edit longer choice lists, add translations and keep a versioned source file. Download a Formbuilder form as XLSForm when spreadsheet editing becomes more efficient, then upload the revised workbook to the project and preview it.

Some advanced XLSForm features do not have matching controls in the Formbuilder. After spreadsheet edits, treat the workbook as the source you review. Do not assume every advanced setting can be edited safely through the visual builder.

Read the three sheets

SheetWhat it holdsKey columns
surveyQuestions, groups, repeats and logictype, name, label, required, relevant, constraint, calculation
choicesRows for option listslist_name, name, label
settingsForm-level informationform_title, form_id, version, default_language

Use the lowercase sheet names shown here. The settings sheet is optional for a simple workbook, but useful once a team manages versions and languages.

Follow the link from a question to its choices

survey sheet
type              name          label
select_one yn     consent       Does the respondent agree to participate?

choices sheet
list_name   name   label
yn          yes    Yes
yn          no     No

The yn in select_one yn matches list_name = yn. The stored answer is yes or no. Logic must compare the stored code, not the visible English label.

Another link

select_multiple facilities uses every choices row whose list name is facilities. If one list name is misspelled, the question may have no options or the workbook may fail validation.

Upload and troubleshoot a workbook

  1. Make a copy of the XLSForm before changing it.
  2. Keep the column headers exactly as KoboToolbox expects.
  3. Upload through New β†’ Upload an XLSForm for a new project, or replace the form in the practice project if that is your planned workflow.
  4. Read any validation error for its row number, question name or expression. Correct one cause, upload again and preview.
  5. Never deploy just because the upload succeeds. Preview and test the paths first.

A common mistake is using a column name from another platform. In KoboToolbox XLSForm the visibility column is relevant.

Practice 4 Β· workbook reading

Find the source of four answers

  1. Download the starter workbook from Start here.
  2. Find school_id, consent and classrooms_usable in survey.
  3. Identify the list used by consent, then locate its choices.
  4. Add a Text row named respondent_role with the label β€œWhat is your role at the school?”
  5. Save the workbook under a new filename and preview after upload.
Model answer

The consent row has type select_one yn. Its choices are the rows with list_name = yn. The new Text row belongs in survey.

Diagnose an XLSForm error from the row that caused it

When an upload fails, first read the named sheet and row in the error message. Do not replace the whole workbook or rename several fields at once. Compare the row with the question immediately before it and with the matching rows in choices.

SymptomWhat to inspectSmallest useful test
A Select One question has no optionsThe list name after select_one and each matching list_name in choicesCorrect the list name, upload, then open that question in preview
A logic expression names an unknown questionThe spelling and case of the referenced nameChange the reference and test both sides of the rule
The form opens but a number cannot be enteredtype, constraint and required statusTry a blank, a valid boundary and an invalid boundary
Export contains two columns for one conceptWhether a question name changed between versionsCompare old and new workbook versions; keep a documented column map

Question names are data column names. Use short, stable names such as classrooms_usable. Avoid putting punctuation, spaces or a changing year in them. Labels can change when wording is improved; changing names during fieldwork needs an explicit data plan.

Mandatory knowledge check

Module 4 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Which sheet contains question rows and expressions?
2. What connects select_one yn to its options?
3. What does the settings sheet hold?

Official KoboToolbox references

Module 5 Β· Part II Β· Form design

Skip logic and validation

relevant, required and constraint

By the end of this module, you can:
  • Write visibility rules
  • Test a select-many condition
  • Test boundary and missing values

Start with the rule in words

Write β€œAsk the respondent's role only when consent is Yes.” Then translate it into a true/false expression on the follow-up question:

relevant
${consent} = 'yes'

${consent} reads the earlier answer. 'yes' is the stored choice name. When the expression is true, the question appears. Put the rule on a begin_group row to control an entire section.

Consent branch

Choose a stored answer to see the branch.

Visibility, required answers and validation do different jobs

Question to askXLSForm columnExample
Should this question appear?relevant${consent} = 'yes'
Must the visible question have an answer?requiredyes
Is the proposed answer in range?constraint. >= 0 and . <= 120
What should the collector see after an invalid answer?constraint_messageEnter a count from 0 to 120.

The dot means the answer to the current question. Do not use ${classrooms_usable} as a substitute for the dot when validating that same question.

Test boundaries and missing values

For a classroom count from 0 to 120, test βˆ’1, 0, 120 and 121. Check whether a blank answer is allowed. If the question is required, blank must stop completion; if it is optional, the range rule should not silently turn blank into zero.

Boundary test
βˆ’1
Reject
0
Accept
120
Accept
121
Reject

In a real project, set a maximum that makes sense for the sample; 120 is only a teaching boundary.

Select One and Select Many need different tests

A Select One answer is one code, so ${electricity} = 'grid' is appropriate. A Select Many answer can contain several codes. Use selected(${facilities}, 'other') to show a text question when Other is selected alongside any other facility.

type       name              label                         relevant
text       facility_other    Describe the other facility   selected(${facilities}, 'other')
A test such as ${facilities} = 'other' is unreliable when the answer includes both water and other.

Expression drill

Write the relevant expression that shows the respondent section when the Select One question consent stores yes. The choices are yes and no.

Practice 5 Β· logic test

Add two rules and test both branches

  1. Place ${consent} = 'yes' on the respondent question or its group.
  2. Put . >= 0 and . <= 120 on the classroom count and add a clear error message.
  3. Add facility_other and show it with selected(${facilities}, 'other').
  4. Preview consent No and Yes; facilities water only, Other only, and water plus Other; all four count boundaries.
Expected results

Respondent questions appear only for Yes. The Other text field appears for either selection containing Other. The count accepts 0 and 120 but rejects βˆ’1 and 121.

Test a change of answer, not only the first answer

A collector may select yes for consent, start the follow-up, then correct consent to no. Preview that exact path. The follow-up must disappear; check whether answers already entered there are cleared or retained in the saved record. Treat the observed behavior as a data issue, not just a screen issue. Repeat the test when editing a submitted record, because a later form version can affect editing differently from new entry.

Four records that reveal different rule errors
  1. consent=no: no respondent or facilities questions should be required.
  2. consent=yes, classrooms_usable=0: zero is a valid count and should not be confused with a blank.
  3. consent=yes, classrooms_usable=121: the constraint should stop submission with an actionable message.
  4. facilities=water other: the Other text should appear; change to water only and confirm the follow-up disappears.

Record the expected and actual outcome for each case. If a rule fails, point to the question name and expression that caused it. That gives a second form designer enough information to reproduce the issue.

Mandatory knowledge check

Module 5 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Which column controls whether a follow-up question appears?
2. What does a dot mean in the age question's constraint?
3. How do you test whether Other was selected in a Select Many answer?
Module 6 Β· Part II Β· Form design

Calculations and form structure

calculate, groups and repeats

By the end of this module, you can:
  • Create a derived value
  • Choose a group or repeat
  • Plan repeat exports

Calculate a value only after defining what it means

A calculate row stores a derived field and normally has no visible label. If a school reports six usable classrooms and two unusable ones, the total is eight. Write the relationship first, then the expression:

type        name                 label                              calculation
integer     classrooms_usable    How many classrooms are usable?     
integer     classrooms_closed    How many are closed?                
calculate   classrooms_total                                        ${classrooms_usable} + ${classrooms_closed}

If either source can be blank, decide whether blank means unknown or zero. Do not silently treat an unanswered count as zero unless the questionnaire specification says so. Test the calculation after changing and clearing each source answer.

Groups organize; repeats multiply rows

A group puts related questions together, such as β€œSchool facilities.” A repeat asks the same block for each item. For a classroom inventory, one repeat instance is one classroom.

type           name        label
begin_repeat   rooms       Classroom inventory
text           room_code   Classroom code
integer        seats       Number of usable seats
select_one yn  in_use      Is this classroom in use today?
end_repeat

If you want exactly the number entered in classrooms_usable, the repeat can use a repeat_count expression. Decide whether that count should be fixed or whether the collector may add and remove rows. Test what happens when the source count decreases after entries have been filled.

Changing or shrinking a repeat after data entry can remove entered rows. In field instructions, explain when a collector should correct the source count and how to verify saved classroom entries afterward.

Read repeated data as a separate level

One school submission can have several classroom rows. In the standard XLS export, the main sheet has one school visit row and the rooms sheet has one row per classroom. The main CSV download does not contain repeat rows. The exported _index and _parent_index fields help link them.

Main sheetrooms sheet
S001, consent yes, 2 classroomsA01, 30 seats, parent S001
A02, 28 seats, parent S001

This table shows the idea; the real export uses system identifiers rather than the school ID alone for the parent-child link. Keep the school ID as a study identifier and preserve the export's system columns during the merge.

Practice 6 Β· repeat and calculation

Record two classrooms

  1. Add classrooms_closed and a calculate row named classrooms_total.
  2. Create the rooms repeat with room_code and seats.
  3. Enter rooms A01 and A02. Change one seat count, then check the saved repeat.
  4. Test the total with two numbers, one blank answer, and a corrected number.
  5. Write down how many main rows and repeat rows you expect from one school visit.
Model check

One completed visit gives one main row and two rooms rows. The intended behavior with blank inputs must be chosen and tested before launch.

Keep summary counts and repeat rows consistent

The school form asks for a summary count of usable classrooms and also has one repeat row per classroom. These answer different questions: the summary is the reported total; the repeat is the inventory actually entered. If the study expects every usable classroom to have an inventory row, define that rule before programming. If only selected rooms are inventoried, say so in the question label and do not compare the two totals as if they must match.

Test recordSummary usable countRepeat rowsSupervisor action
S0022A01, A02Accept if both rows meet the inventory rule
S0033B01, B02Ask whether a third room was missed or the count was wrong
S0040NoneConfirm that zero is plausible for this visit

The completed example lets collectors add repeat rows and leaves this consistency review to the supervisor. It does not force a repeat count from classrooms_usable. A fixed repeat count can prevent accidental omissions, but changing the count after entering rows needs careful testing, especially when the count is reduced.

Mandatory knowledge check

Module 6 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Which row type stores a derived value without asking the respondent?
2. A block must be answered for each classroom. What structure fits?
3. Where do repeat rows appear in a standard XLS download?
Module 7 Β· Part II Β· Form design

Long lists and languages

choice filters, translations and media

By the end of this module, you can:
  • Build a cascading choice list
  • Keep stored codes stable across languages
  • Check GPS and media requirements

Filter a long list from an earlier answer

Suppose a school visit first selects a province, then a municipality. A long municipality list is easier to use when it only shows options for the chosen province. In XLSForm, a column in choices stores the parent code, and choice_filter on the municipality question compares it with the answer.

survey sheet
type                       name           label                    choice_filter
select_one province_list   province       Province                 
select_one muni_list       municipality   Municipality             province_code=${province}

choices sheet
list_name   name   label          province_code
muni_list   m01    Municipality A p01
muni_list   m02    Municipality B p01
muni_list   m03    Municipality C p02

The names p01, m01 and so on are illustrative. Check the exact spelling and codes in both sheets. Test at least two provinces, including one with no matching municipality, to find a blocked path.

Translate the respondent-facing text

Use language-specific columns such as label::English (en) and label::Filipino (fil). Translate choices, hints and error messages too. Stored question names and choice names remain the same across languages.

namelabel::English (en)label::Filipino (fil)
school_idSchool IDID ng paaralan
consentDoes the respondent agree to participate?Pumapayag ba ang respondente na lumahok?

These are examples of the column structure, not approved survey translations. Have the project's qualified translator review consent text and all terms whose meaning affects measurement.

Prepare for location and media questions

A geopoint question depends on device location services and field conditions. Decide where the collector should stand, how long to wait for a fix and what to do when a point cannot be collected. An image or audio question produces a file attachment. Test device storage and upload on the actual field method.

Photos, audio and precise locations may identify people or places. A real project needs approved consent wording, access controls and retention rules. The practice project should use only synthetic records and locations.
Practice 7 Β· lists and language

Test a small cascade

  1. Add two province codes and three municipality choices to a copy of the workbook.
  2. Set choice_filter on municipality. Preview each province and record the options shown.
  3. Add a second language to School ID, consent choices, one hint and one validation message.
  4. Preview every language; check that exported answer codes stay the same.
What should you catch?

A province with no matching municipalities gives the collector no usable option. A missed translation leaves one part of the form in the other language.

Mandatory knowledge check

Module 7 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Which column on the survey sheet narrows district options after province is selected?
2. Which value should stay stable across translations?
Module 8 Β· Part III Β· Fieldwork

Test, deploy and update

Form versions and release checks

By the end of this module, you can:
  • Test the critical response paths
  • Deploy and redeploy deliberately
  • Explain how updates reach devices

Build a test matrix before deployment

A preview that follows one happy path misses most form errors. Make a small table of inputs and expected behavior before you publish. The school visit needs at least these paths:

CaseInputExpected behavior
Consent refusalconsent=noRespondent and facilities section hidden
Consent grantedconsent=yesFollow-up section visible
Count boundaryβˆ’1, 0, 120, 121Reject, accept, accept, reject
Select Manywater plus otherOther text question visible
RepeatTwo roomsTwo rows in repeat export
LanguageSwitch languageLabels and messages translated; codes stable

Use invented answers. Mark each result Pass or Fail and keep the test note with the form version.

Preview, deploy, then test a live submission

  1. Save all edits and preview the draft.
  2. Fix failed paths and preview again.
  3. On the Form page, choose Deploy.
  4. Open the deployed collection form and send one synthetic record.
  5. Confirm the record appears in Data and inspect its exported values.

Preview is a design test. A live submission checks the collection link, authentication, server receipt and export structure.

Understand redeployment

After you edit a deployed form, the Form page offers Redeploy. Saved edits are not public until redeployment. Web forms may ask the collector to refresh. KoboCollect users must download the updated form while connected.

Change after collection startsPossible effect
Change a question's data column nameNew column appears; older values remain under the former name
Reverse choice code meaningsOld and new records become hard to compare
Add a required questionEditing an older submission may demand a new answer
Remove a question or add skip logicEditing an older submission can affect earlier answers
Before redeploying during real fieldwork, test the change on a copy, document the reason and version, and tell collectors how to update their devices.
Practice 8 Β· release decision

Run the pre-deployment test

  1. Use the matrix above and record your results.
  2. Fix every failed critical path. Then deploy the practice form.
  3. Submit one synthetic record through the method you intend to use.
  4. Find the record in Data and check its stored codes.
Release rule

Do not treat a successful upload or preview as proof that the field workflow works. The live test submission must reach the server and export as intended.

Write a release record that a field team can use

For each deployment, keep the form ID, version, deployment time, source workbook filename, change summary, tester, and a link or location for the test results. Add the action collectors must take. β€œUpdated form” is too vague; β€œconnect to the server and download version 20260924 before the next visit” is testable.

Example release entry

Form: school_visit_practice. Change: corrected the consent rule and added a count limit of 0–120. Tests: refusal, Yes branch, βˆ’1, 0, 120 and 121 passed in preview; one synthetic web submission appeared in Data. Collector action: refresh the web form or obtain the updated form in KoboCollect while online. Open issue: Android offline test pending.

When a field team reports a problem, ask which form version was on the device, whether the record was sent, and which test input reproduces the problem. Keep the older workbook so the team can compare behavior across versions.

Mandatory knowledge check

Module 8 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. A form was edited after deployment. What makes the change live?
2. What should be tested after deployment?
3. What can happen if a stored question name changes after submissions exist?

Official KoboToolbox references

Module 9 Β· Part III Β· Fieldwork

Collect with web forms

Browser collection and offline mode

By the end of this module, you can:
  • Choose a web form mode
  • Test authentication and offline behavior
  • Check that a submission reaches the server

Choose the web form mode

KoboToolbox web forms run in a browser on a computer, phone or tablet. They can support online and offline collection, but the specific mode and device must be tested before fieldwork. On the Form page, the Collect data area offers modes including Online-Offline (multiple submission), online-only variants and View only.

ModeWhat it is forTest before use
Online-Offline, multiple submissionsField entry that may lose connectionOpen and cache the form, enter offline, reconnect and confirm upload
Online-Only, multiple submissionsRepeated entries on a connected deviceBehavior after interruption
Online-Only, single submissionOne form at a time via a linkWhether a respondent can reopen or submit again
View onlyReview without sending dataThat no live submission is possible

Older materials call these β€œEnketo forms.” Current KoboToolbox documentation calls them web forms and notes that Enketo powered earlier versions.

Authentication is a project decision

By default, deployed projects require sign-in to open and submit. You can share a project with named users and give Add submissions permission. For a public respondent link, the project owner can allow submissions without a username and password. That setting changes who can send data, so review it deliberately.

Do not confuse access to the form with access to submissions. Public data viewing is a separate setting. Never enable it just to make the collection form easy to open.

What an offline browser test must show

  1. Open the deployed form while online in the intended browser and mode.
  2. Disconnect the device and start a synthetic school visit.
  3. Save or submit according to that mode. Close and reopen the form only if your field procedure requires it.
  4. Reconnect and confirm the submission reaches Data exactly once.
  5. Repeat on the type of device collectors will use. Browser storage and private-browsing behavior can affect offline work.

Write a field instruction from your observed result. β€œWorks offline” is not specific enough to tell a collector what to do when a device has no signal.

Practice 9 Β· browser collection

Test one link and one interruption

  1. Open the practice project's web form in the intended collection mode.
  2. Submit a consent-No synthetic record while online.
  3. In Online-Offline mode, run an offline test with a second synthetic record if your device permits it.
  4. After reconnecting, inspect the Data table for both records and check that the offline record was not duplicated.
What to record

Record the web form mode, browser, device, whether sign-in was required, whether the offline entry survived, and the time it appeared on the server.

When the network returns, verify the result

An offline form may still be stored in the browser after the enumerator presses a button that looks like submission. The collector needs a clear distinction between β€œsaved on this device” and β€œreceived by the server.” After reconnecting, use the mode’s submission queue or status screen, then check the project Data table for the synthetic school ID. Do not enter the same visit again simply because the first upload is slow; that can create a duplicate.

Observed problemCheck next
Form does not open offlineWas it opened and cached while connected, in the same browser and profile?
Entry appears saved but not in DataIs it waiting to send? Did sign-in expire? Is the device connected?
Two records share one school IDCompare submission times and contents before deciding whether one is a duplicate
Collector used private browsingRepeat the offline test in the intended normal browser profile; local storage may not persist as expected

Put the result of these checks in the field guide for the actual device and browser combination. A desktop demonstration does not prove that a shared field tablet has the same storage behavior.

Mandatory knowledge check

Module 9 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Which web form mode is intended to support offline collection?
2. What must you test before using a public respondent link?
Module 10 Β· Part III Β· Fieldwork

Collect with KoboCollect

Android setup and synchronization

By the end of this module, you can:
  • Configure the app
  • Distinguish drafts, finalized records and sent records
  • Test an offline interview

Prepare the Android app

KoboCollect is the Android app for field entry. The app connects to the KoboToolbox server, downloads deployed forms and later sends records. The URL used by KoboCollect is different from the website URL: the Global server uses https://kc.kobotoolbox.org/, while the EU server uses https://kc-eu.kobotoolbox.org/. A private server supplies its own address. The Form page's Android collection instructions show the URL for that project.

  1. Install the current KoboCollect app on a supported Android device.
  2. Configure its project with the KoboCollect URL and an account that has permission to add submissions.
  3. Download the practice form while connected.
  4. Check the form title and version before going offline.

For several devices, a QR code can copy settings from one configured device. Treat that QR code carefully because KoboToolbox documents that it can contain account credentials.

Know where a record is

App stateMeaningNext action
DraftEntered answers can still be changedComplete or correct the interview
Finalized / Ready to sendData entry is complete on the deviceConnect and send
SentThe app reports transferConfirm receipt in the server's Data page

Finalizing on the device and receiving a record on the server are separate events. A field close-out routine should check both.

Test the offline cycle

  1. Download the form while online.
  2. Turn off network connectivity. Start a school visit with invented values and save it as a draft.
  3. Reopen the draft, complete it and finalize it.
  4. Reconnect. Send the finalized record. Check the server Data table.
  5. Change the practice form, redeploy and download the updated form to check how a version change appears on the device.
Do not delete forms or saved records from a field device during this exercise. If the app has an update conflict, stop and document the state before changing anything.
Practice 10 Β· device checklist

Write a collector close-out routine

  1. List the steps from opening a downloaded form through server receipt.
  2. Name the screen where an unsent finalized form waits.
  3. State when the collector needs a connection: first download, updates and sending.
  4. If no Android device is available, write a test plan for a colleague to execute.
Model routine

Download the correct version; complete the interview offline if necessary; review and finalize; send when connected; confirm that the server shows the record. Resolve unsent work before the device is reset or reassigned.

Trace a missing Android submission

Start on the device. A record still in an open form is not finalized. A finalized record may be in Ready to send. After sending, it should appear in Sent; then confirm server receipt in the project Data table. Use the synthetic school ID and the time of completion to match the device record with the server record.

Device stateMeaningNext action
Form still openThe interview is unfinishedComplete and finalize it after reviewing answers
Ready to sendSaved locally; server receipt is not confirmedConnect, send, then check Data
Sent, absent from the expected projectNeeds investigationCheck the app's server and account settings, form ID and project permissions
In Data onceServer received a submissionInspect the stored values and any attachments

If the device reports a send error, preserve the record and error message while troubleshooting. Do not clear app storage or remove forms as a routine fix: locally stored work could be lost. Supervisors should record the device, form version, last successful send and affected school IDs before changing configuration.

Mandatory knowledge check

Module 10 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. When can KoboCollect enter answers without connectivity?
2. A record is finalized but not sent. Where is it?
3. After redeployment, how does the Android app receive changes?
Module 11 Β· Part IV Β· Data and operations

Review and export data

Tables, reports, repeat files and QA

By the end of this module, you can:
  • Choose the right export
  • Link repeat rows to main submissions
  • Run a basic daily QA review

Read the Data page before exporting

The Data area includes a table of submitted records and may offer reports, map and media gallery views. Use the table to check that test submissions arrived, which form answers are blank, and whether unusual values need investigation. A chart or map is a quick view, not a complete quality review.

Three synthetic records
school_idconsentclassrooms_usableFirst check
S001yes6Compare with six room entries if the repeat is complete
S002noblankConfirm the follow-up section stayed hidden
S003yes0Confirm zero is a real observation, not a missing answer

Choose the export for the task

FormatUseLimit to remember
XLS (.xlsx)Spreadsheet review and repeat groupsEach repeat has its own sheet
CSVMain records for statistical tools or databasesMain CSV does not include repeat rows
GeoJSONGIS work with locationsCheck GPS quality and privacy first
Media ZIPCollected images and audioHandle sensitive files under the data plan
SPSS LabelsSyntax for applying labels in SPSSThis is not a native Stata .dta export

Use Data β†’ Downloads, select export settings, click Export and then Download. Record the export date, project version and whether values and headers use names or labels. Do not assume a CSV contains every part of a hierarchical form.

Link a classroom row to its school visit

In an XLS export, the main sheet has one row per submission. The rooms sheet has one row per classroom entry. KoboToolbox documents _index and _parent_index for linking these levels. Retain these columns while checking or merging the data.

Main sheetrooms sheetInterpretation
_index=1, school_id=S001_parent_index=1, room_code=A01A01 belongs to S001
_index=1, school_id=S001_parent_index=1, room_code=A02A02 belongs to S001

A small daily QA review

  1. Compare expected and received visit counts by collector or area.
  2. Check missing IDs, duplicate school IDs and consent paths.
  3. Compare classrooms_usable with the number of room repeat entries.
  4. Review outliers in counts and GPS points that fall far from the sample area.
  5. Document each query, correction and decision. Do not edit a record just to make a chart look plausible.
Reviewing a submitted record and changing it are different permissions and different actions. This course asks you to inspect synthetic records; it does not ask you to alter existing account data.
Practice 11 Β· export audit

Inspect three practice submissions

  1. Export the school visit project as XLS and CSV.
  2. Count main rows and classroom rows. Explain any difference.
  3. Find school_id, consent and the export's parent link columns.
  4. Write three QA checks you would run every field day.
Model checks

For three visits with two rooms in one visit, expect three main rows and at least two room rows. A good check examines missing IDs, consent logic and room-count consistency.

Turn a suspicious export row into a query

Data review should produce specific questions for the field team. β€œBad data” gives no one a way to act. A useful query identifies the record, variable, observed value, expected range or relationship, and the decision needed.

Example daily QA note

S003, visit date 2026-09-24: classrooms_usable=3 but the rooms sheet has two inventory rows. Please confirm whether one room was omitted, whether the summary count is wrong, or whether the inventory was intentionally partial. Do not overwrite the raw export while this is unresolved.

For each export, record the project, export time, selected form version range and format. Compare submission count with the field log, check duplicate school IDs, missing consent, out-of-range counts, and repeat rows without an identifiable main record. A code such as grid is the stored answer; a translated label shown in a report is for reading. Keep those two representations distinct when merging data.

Mandatory knowledge check

Module 11 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Which standard download includes repeat group rows?
2. What should an analyst inspect before calculating indicators?
Module 12 Β· Part IV Β· Data and operations

Sharing and data protection

Permissions and public access

By the end of this module, you can:
  • Map roles to permissions
  • Test row-level access
  • Check public settings before sharing links

Make a permission plan before inviting people

KoboToolbox has project-level settings and permissions for named users. A data collector may need Add submissions without access to all existing records. A supervisor may need View and Validate submissions. An analyst may need View submissions and downloads. A manager may need to edit the form or settings. Give each role the access it needs for its work.

RoleTypical rights to considerWhat to test
EnumeratorView form, Add submissionsCan send a record; cannot browse all records unless intended
SupervisorView and Validate relevant submissionsCan access only the intended area or collectors
AnalystView submissions, exportCan obtain the required fields under the data policy
Project managerManage project, if requiredCan change settings; account ownership remains clear

Permissions can imply other rights, so verify the actual behavior with a second test account. Row-level permissions can restrict access by submitting user or by a condition such as an area code.

Public form access and public data access are different

A form can be configured for submissions without a username and password. Separately, a project can allow anyone to view the form or view submitted data. Public submission access may be suitable for some respondent surveys; public data access is a much larger disclosure. Check both settings before sending any link.

Do not make submissions public to solve a dashboard authentication problem. If the records are private, use an authenticated connection or a controlled export workflow.

Test the effective access

  1. Write down the owner and each collaborator's role.
  2. In a practice project, inspect Settings β†’ Sharing without changing your live projects.
  3. Check the form's anonymous submission setting and the project's public data setting separately.
  4. Use a signed-out browser window or a test account to verify what an outsider or collector can actually see.
  5. Record the results in your launch checklist.

Project history can help trace changes, but it does not replace a permission test. A person with Manage project can alter access, so assign it deliberately.

Practice 12 Β· access matrix

Write and test a sharing plan

  1. Prepare a two-column matrix for one enumerator and one supervisor.
  2. State whether each may add, view, edit, validate or delete submissions.
  3. Decide whether the school visit form needs an anonymous link.
  4. Explain how you would test access without using a real respondent record.
Model principle

The enumerator needs to submit but may not need to see every school's data. The supervisor sees the records they review. Public data viewing stays off unless the study has explicitly approved it.

Test permissions with each role

Write down what each person must do before granting access. For the school pilot, a collector needs to submit records, a supervisor needs to see and resolve assigned data issues, and an analyst needs a controlled export. The project owner should retain authority over form changes and permissions. The exact permission switches depend on the chosen workflow, so test them with separate accounts on the same server.

RoleMust be able to doMust verify separately
CollectorOpen the deployed form and submit a synthetic recordWhether submitted data can be viewed or edited
SupervisorFind the test record and review the fields needed for QAWhether access is to all records or only a defined subset
AnalystDownload the approved exportWhether media and identifying fields are included
Project ownerManage form versions and collaboratorsWhether any public access switch is enabled

A sharing dialog shows intended permissions; a sign-in test shows effective permissions. Have each tester perform the task under their own role and record the outcome. If the form is available without sign-in, test separately whether its submissions can be viewed without sign-in. Recheck after any permission change.

Mandatory knowledge check

Module 12 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. Can making a form public also make submissions public automatically?
2. How can a supervisor see only records from assigned collectors?
Module 13 Β· Part IV Β· Data and operations

Reference data and integrations

CSV lookup, linked projects and API

By the end of this module, you can:
  • Choose a lookup method
  • Explain when data refreshes
  • Protect private exports and credentials

Choose the data source from the update need

NeedKoboToolbox mechanismWhat to check
Look up school details from a prepared listCSV in project media and pulldata()Unique IDs; file version; device refresh
Use answers from another KoboToolbox projectDynamic data attachmentParent submissions; online sync delay; offline download
Refresh an analysis file regularlyNamed synchronous exportAuthentication; repeat format; refresh interval
Send new submissions to another serviceREST ServicesDestination, retries, duplicates and later edits

Look up a school from a CSV

Prepare schools.csv with one row per school and a unique ID. Upload it to the project's media. A calculation can retrieve the school name when the collector enters the ID:

school_id,school_name,province
S001,Example School A,p01
S002,Example School B,p02

pulldata('schools', 'school_name', 'school_id', ${school_id})

Test an ID that matches, one that does not and one that has leading zeros. KoboToolbox treats pulled CSV values as text; convert a value before numeric arithmetic. Updating the CSV or form requires a controlled refresh on field devices.

Linked projects are a different source

Dynamic data attachments use submissions from a KoboToolbox parent project rather than a standalone CSV. This can help a follow-up form use baseline data. It is not instantaneous in every setting. Current documentation describes an online sync delay and requires the child project to download parent data before offline use. Design a fallback for a newly submitted parent record that has not reached the field device yet.

Exports and REST Services solve other problems

A synchronous export provides a configured CSV or XLSX view for Excel, Power BI or another authorized client. Use XLSX if repeat data is needed. The JSON API is for scripts that handle raw records. REST Services can send a newly created submission to an external service; KoboToolbox says later edits to that submission are not sent by this feature. External systems therefore need a reconciliation plan if corrections matter.

An API token or authenticated export URL grants data access. Do not place credentials in a form, field instruction or public page. Keep private submissions private; do not switch on public data access merely because a dashboard cannot authenticate.
Practice 13 Β· choose the integration

Match four field needs to four tools

  1. School list prepared before fieldwork: choose a data source and state when it changes.
  2. Follow-up survey uses last month's submitted records: choose a source and describe the offline refresh.
  3. Daily dashboard needs repeat rows: choose an export format and access method.
  4. A notification system needs new submissions: describe how later edits will be reconciled.
Model choices

Use a CSV lookup, dynamic data attachment, authenticated XLSX synchronous export, and REST Services or a scripted API flow respectively. Test each refresh and failure path before using it with real data.

Plan how reference data reaches offline devices

A school lookup is only useful when the device has the reference file or linked data before the visit. Decide who owns the list, when it changes, and what should happen if an ID is absent. For an XLSForm CSV attachment, check the column headers, the exact filename in the expression, and whether the new file reached the deployed form. Then download or refresh the form on the intended device while online and test an ID that exists and one that does not.

School list update test
  1. Start with S001 and S002 in the practice CSV; confirm both return the expected school name.
  2. Add S003 to the source file and update the project attachment or linked source according to the workflow.
  3. Before refreshing the field device, test whether it still uses the earlier list.
  4. Refresh or redownload as required, then confirm S003 works and S999 shows the planned missing-ID response.

For a dashboard or scheduled extract, define the same timing question: how often does it refresh, how is a failed refresh noticed, and who can access its output? Store credentials outside a shared form workbook and give each integration only the access it needs.

Mandatory knowledge check

Module 13 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. What is a suitable source for pulldata()?
2. What should remain private for a sensitive dashboard?
3. Does REST Services send later edits to a previously created submission?
Module 14 Β· Part V Β· Capstone

Build and test the school visit

Guided practice and final check

By the end of this module, you can:
  • Complete the questionnaire
  • Run a field test and export
  • Prepare a handoff note for a pilot

The specification

A school facilities team will visit a fixed sample of schools. The form must identify the school, record whether the representative agrees to answer, collect facilities information only after consent, inventory classrooms, and produce an XLS export that an analyst can check. Use invented IDs and locations for this capstone.

SectionRequired fieldsRule
Identificationschool_id, visit_dateSchool ID is text and required
ConsentconsentStored codes yes and no
Respondentrespondent_roleAsk only after consent Yes
Facilitieselectricity, facilities, facility_other, school_gpsOther text only when Other is selected
Classroomsclassrooms_usable, classrooms_closed, classrooms_totalCounts 0–120; total derived from answered inputs
Classroom inventoryrooms repeat with room_code and seatsAt least two test entries

The completed example workbook contains one implementation. Review it after your own attempt. Its counts and wording are for training, not an approved study instrument.

Part A: build and preview

  1. Copy the starter XLSForm and give the copy a new filename.
  2. Complete the identification and consent rows. Confirm that select_one yn finds its choices.
  3. Add a group for the respondent and facilities section. Put ${consent} = 'yes' on the begin_group row.
  4. Add electricity and facilities lists with stable codes. Add facility_other with selected(${facilities}, 'other').
  5. Add classroom counts with . >= 0 and . <= 120 and a clear error message.
  6. Add classrooms_total as a calculation. Decide how it behaves when one count is blank and record that decision.
  7. Add the rooms repeat. Keep room_code unique within one school visit.
  8. Save, upload and preview the workbook. Fix any validation error before deployment.
The classroom repeat count and the summary count need a defined relationship. You may let the collector add rows and then validate the final count, or set a repeat count from a source question. Test a correction that reduces the count so no entered room is lost unexpectedly.

Part B: run six test paths

TestInputExpected result
1. RefusalS001; consent NoRespondent, facilities and classroom section hidden
2. Standard visitS002; consent Yes; 2 usable, 1 closedFollow-up visible; total equals 3
3. Other facilitywater and other selectedOther text appears
4. Count boundaryβˆ’1, 0, 120, 121Reject, accept, accept, reject
5. RepeatA01 and A02Two classroom rows in export
6. Change answerChange consent Yes to NoFollow-up disappears; inspect any previously entered answer behavior

Write down actual results. A test case passes only when the displayed form and stored values match the expected result.

Part C: deploy and collect

  1. Deploy the practice form after the preview passes.
  2. Submit at least two synthetic records through the web form, including one refusal.
  3. If Android is available, download the form in KoboCollect, complete a record offline, reconnect, send it and confirm server receipt.
  4. Record the deployed version and collection method for each test.

Do not use existing real projects or submissions. Do not delete anything from your KoboToolbox account to make room for this practice.

Part D: review the export

  1. Download XLS and identify the main sheet and rooms sheet.
  2. Check the number of main submissions and repeat rows against your test log.
  3. Inspect school_id, consent codes, optional blanks and classroom totals.
  4. Use _index and _parent_index to link a classroom row to its visit.
  5. Write one query for any unexpected value or missing row. Keep the unedited export as evidence.
Expected export for the standard visit

If S002 has two room entries, the main sheet has one S002 row and the repeat sheet has two rows linked to it. classrooms_total should equal 3 if the source counts were 2 and 1 and both were answered.

Part E: hand the project to a field team

Write a one-page handoff note with:

  • Project server, owner, form version and date deployed.
  • List of question names and stored codes that must remain stable.
  • Collection mode, authentication method and device update procedure.
  • Permission plan for enumerators, supervisor and analyst.
  • Test matrix with results and open issues.
  • Export procedure and daily QA checks.

A project is ready for a small pilot when the critical paths pass on the intended devices, test submissions reach the server, exports contain the expected structure, and access has been checked with the relevant user roles.

Capstone submission

Keep an evidence pack

  1. Your XLSForm copy or saved Formbuilder source.
  2. Completed six-path test matrix.
  3. Synthetic XLS export with main and repeat sheets.
  4. One-page field handoff note.
Self-review questions

Can another person identify each field and stored code? Can they reproduce your test? Can they tell whether an Android record has reached the server? Can the analyst link the classroom rows? If any answer is No, revise the handoff before a pilot.

Independent extension

When the core capstone works, add a prepared school list with pulldata(), or add a province-to-municipality choice filter. Document how the reference data reaches a collector who will work offline. Test a missing school ID or a province with no matching municipality.

Course complete: the skills transfer to other KoboToolbox projects when you can explain each rule, test it with a counterexample, and find its value in the export.
Mandatory knowledge check

Module 14 check

Attempts remaining: 3

Answer every item. A perfect score opens the next module. After three complete attempts, the course shows the answer key so you can continue.

1. What demonstrates that the offline workflow works?
2. Which files should you inspect when the form has a classroom repeat?
3. Which records belong in this practice project?