Summary of existing Aggregate functionality

As we've been discussing changes to Aggregate (for example, here), I wanted to post a summary of the Aggregate functionality already in place. Feel free to edit this list!

Note that much of the text that follows was copied directly from Aggregate.

Authentication and user management

  • Log in
    ◦ Via an ODK account, with a username and password that a site administrator has configured.
    ◦ Via an Oauth 2.0 token (requires an Email account (e.g., and an Oauth 2.0 token issued by Google with access to (ODK 2.0 only, but and would work on 1.x APIs if they utilized it)
    ◦ Anonymously (i.e., as the anonymousUser)
  • Users can change their own passwords.
  • Administrators can change users’ usernames, passwords, capabilities and full names.
  • Administrators can add add or delete users.
  • Administrators can allow anonymous retrieval of images, audio and video data (needed for GoogleEarth balloon displays).
  • Configure users and capabilities by uploading a CSV file.
  • Download a CSV file that reflects current users and capabilities.
  • Capabilities are as follows:
    ◦ Data Collector - able to download forms to ODK Collect and submit data from ODK Collect to ODK Aggregate. Only ODK accounts and the anonymousUser can be granted Data Collector rights. The anonymousUser must be granted Data Collector rights to accept submissions from unidentified sources (e.g., from ODK Collect 1.1.5 and earlier, or from ODK Collect 1.1.7 and later if not authenticating).
    ◦ Data Viewer - able to log onto the ODK Aggregate website, filter and view submissions, and generate CSV or KML files for download.
    ◦ Form Manager - all the capabilities of a Data Viewer plus the abilities to upload a form definition, delete a form and its data, and upload submissions manually through the ODK Aggregate website.
    ◦ Site Administrator - all the capabilities of a Form Manager plus the ability to add users, set passwords, and grant these capabilities to other users.

Form management

  • Upload a form using an XML file and optional media files.
    ◦ Media files for the form's logo, images, audio clips and video clips (if any) should be in a single directory without subdirectories.
    ◦ If the form definition contains string answers, the string data will be truncated to 255 characters.
    ◦ The file named form_logo.png, if present in the media folder, will be displayed as the form's logo.
  • List uploaded forms, including the uploading user.
  • View a form’s XML.
  • Download a form’s XML.
  • Preview a form in Enketo.
  • Toggle whether a form is downloadable or accepts submissions.
  • Delete an uploaded form.

Submission management

  • Manually upload submission data.
  • List submissions for a single form. (The form can be selected from a dropdown.) There is one row per submission.
  • When listing submissions, repeat groups can be opened in a modal.
  • When listing submissions, submissions’ audio and video values can be opened in the browser.
  • When listing submissions, change how many submissions are shown per page.
  • When listing submissions, show or hide submission metadata (model version, submission time, etc.).
  • List incomplete submissions.
  • Delete a single submission.
  • Purge submission data before a specified date. Incomplete submissions will not be deleted.

Filter submissions

  • Define a simple filter over submissions for a specific form by choosing one of the following:
    ◦ Specify fields to include in the submission list and other places by selecting the field names from a list. In other words, specify a whitelist of fields to include.
    ◦ Specify fields to exclude (blacklist).
    ◦ Specify rows to include (or exclude) by selecting a field, an operator (equals, doesn’t equal, >, >=, <, <=) and a value.
  • Apply a group of filters to the submission list, optionally saving the group with a name. Filters in a group are chained together with an AND operator.
  • Rename a group of filters or delete it.

Export submissions

  • Export a form’s submissions to CSV, KML or JSON with or without a filter.
  • When exporting, optionally skip malformed submissions (ignores corrupted submissions).
  • See list of exports, including the time that the export completed.
  • Delete an export from the list of exports.

Visualize submissions

  • Apply filters to visualizations.
  • Fields in repeat groups cannot be visualized.
  • Use a bar or pie chart to visualize the frequency of each answer to a specified field: count occurrences of answer values from a particular field. For example, how many households are urban vs. rural? Many field types can be visualized, including numeric, text, select and date
  • Bar and pie charts of numeric fields aren't histograms: numeric values are treated as categories.
  • In bar and pie charts, select_multiple responses aren't split before being visualized: each selected combination is its own category in the chart.
  • Use a bar or pie chart to sum the numeric values of a specified field, breaking down the sum by another field. For example, sum the number of children for urban vs. rural households.
  • Map geopoint fields.

Publish submissions

  • Publish submissions to one of the following destinations. Upload existing submission data only, stream new submission data only, or both upload existing and stream new submission data. The user is prompted for the email address that will be granted access to the published data (the “owner”).
    ◦ Google FusionTables
    ◦ Google spreadsheet. Specify workbook name.
    ◦ REDCap server. Specify REDCap URL to publish to and REDCap API key. Designated alpha.
    ◦ JSON server. Specify URL to publish to, authorization token, and whether to (1) include media as links (URLs) to media or (2) embed the media binary. Designated alpha.
    ◦ Ohmage JSON server. Specify URL to publish to, campaign URN, campaign creation timestamp, Ohmage username, and Ohmage hashed password. Designated alpha.
  • When publishing, optionally skip malformed submissions (ignores corrupted submissions).
  • List published data, including the creating user, status and start date.
  • Delete published data.


  • Disable faster background actions (exports, publishing, form deletion) (slows quota usage on Google AppEngine).