Exporting an app's data
Where to find it
Open the app and look for the Export section on its overview page (you need the permission to export responses — the same one that controls the ordinary Export button on a single form). A form has the equivalent tucked under its own Exports tab, alongside its instant Export button, for exactly the same reason: past a few thousand responses, the background path is the safer one there too.
Two layouts, because they answer two different questions
An app is records (say, students — optionally each belonging to a school) with steps filled in about them. Whatever you choose, every row says which record it is about: its ID and name, its own details, and — in an app with two levels — the school's code, name and details too. Choices are written as the label people saw (“Bhor”, not a stored code), numbers are real numbers and dates are real dates.
Every entry, one sheet per step, plus the list of students and schools.
The latest entry of each step side by side, with the student's school. A repeating step shows only its most recent entry.
| Choose this | When |
|---|---|
| Full data | You want the raw tables — every step exactly as it was answered, including every entry of a repeating step (say, a monthly check-in visited a dozen times). Nothing is summarised, so nothing is lost. You can limit it to entries between two dates. |
| One row per student | You want to ask a question about a record across its whole history — "did this student’s attendance improve" — and having one row per record, with every step’s answers as columns, is what makes that comparison possible in a normal spreadsheet. |
File types. An Excel workbook is the default: one file with an About sheet (what this is, when it was made, what each sheet holds), a sheet listing the records, then a sheet per step — with a bold frozen header row, filters on every column and sensible column widths. CSV gives a zip with a README, a records/ folder and a steps/ folder (or a single CSV for one row per student), and works for Marathi and Hindi names in Excel. JSON nests each row as record, entry and answers, for developers.
Personal details, the Codebook, and what is in every row
Remove names and personal detailsis on by default. It leaves out each student's name and ID number, free-text answers, phone numbers, emails, locations, signatures, files and dates of birth, any record detail that is not a dropdown choice, and the names of the people who entered the data (they appear as Worker 01, Worker 02…). Record ID stays, so rows still match up across sheets. The school is kept — it is not a person. Turn it off only when you need names and will keep the file secure. Even anonymised, a very small group can be identifiable, so share with care.
Every file ends with a Codebook: one row per field saying what it is called in the file, what question it asked, what kind of answer it holds, what each stored code means, and whether it is in this file. If you build formulas or Power BI reports, use More options for analysts to choose a stable field name as the column heading (it does not change when someone rewords a question) and, if you prefer, the stored code instead of the label.
Edited forms keep their data. If a form was changed after people had already filled it in — a question reworded, or re-created — the answers from every version are in one column. A question since removed from the form keeps its column for the older entries, and the Codebook marks it.
Each entry row says what it is: its status (submitted, flagged as spam or rejected), a Report ID shared by the entries filed in one sitting, its number for that record (the third monthly check), when it was last edited, and which version of the form it was filled on.
Starting an export, step by step
- 1Open the app's Export section and choose Full data or One row per student, then a file type —
Excel,CSVorJSON— and press Prepare export. - 2The job is queued immediately — you'll see a confirmation that it is running in the background. You do not have to keep the tab open; leave the page, close the laptop, come back later.
- 3The job appears in the list below with a live status. If the tab is open, it checks on its own every few seconds while the job is in progress, and immediately refreshes the moment you switch back to the tab if you had wandered off to something else.
- 4Once it says Ready, click Download. This hands you straight to the stored file rather than routing the bytes back through the app itself — the whole reason for the background job in the first place.
Reading the status
| Status | What it means |
|---|---|
| Queued | Accepted, waiting for a worker to pick it up. Normal for the first few seconds. |
| Running | Being built right now. Once the total row count is known you’ll see a percentage and a running count; before that, just the count so far. |
| Ready | Complete. Download it — see below for how long it will stay available. |
| Failed | Something went wrong on the server. A plain-language reason is shown; nothing sensitive about the failure is exposed. |
| Expired | It finished, but nobody downloaded it before the retention window closed, so the file was deleted. Run the export again for a fresh copy. |
How long a finished file lasts
A completed export is a full copy of your app's data sitting in storage, so it is not kept indefinitely — it is deleted automatically after its retention period, and the remaining time is shown right next to the download button rather than being a surprise later. If you bookmark a download link and come back after it has expired, running the export again produces a fresh file in its place.
If you only need one form, not the whole app
A single form already has an instant Export button for its own responses — see Responses — and that stays the faster choice for a form of ordinary size. Once a single form itself holds roughly five thousand responses or more, its own Exports tab offers this same background path, scoped to just that form, for the same reason described above: a direct download of that many rows risks the same silent-timeout problem an app export avoids.