> For the complete documentation index, see [llms.txt](https://docs.dapta.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dapta.ai/dforms/results/export-csv.md).

# Export to CSV

Download the responses to a dForms form as a CSV file: how the export follows your filters and sort, how to export only selected rows, the exact column list, the status values and the date format.

**Download CSV** turns the responses into a spreadsheet file you can open in Excel, Numbers or Google Sheets, or hand to whoever does your reporting. It is the fastest way to run a pivot, share a campaign's leads or archive them.

***

**Step 1:** Open the form's **Submissions** page, stay on **Responses** and click **Download CSV** in the top right corner.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-2a4c825bdcfc079df8cdd5200482f0892ed282b4%2Fforms-export-csv-01-download-button.png?alt=media" alt="The Responses view of the Submissions page with the Download CSV button highlighted in the top right corner"><figcaption><p>One click. The file downloads straight away, no export job to wait for.</p></figcaption></figure>

The file is named after the form's link, in the shape `{form slug}-submissions.csv`. A form published at `/lead-qualification-quiz` downloads as `lead-qualification-quiz-submissions.csv`.

***

**Step 2:** Set your filters and your sort **before** you click. The file holds every response that matches the filters in the column headings (status, date, score and choice answers), in the order the table shows them.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-dc0bf7dc2f6e215f64bda12551d65b29a1684de1%2Fforms-export-csv-02-filtered.png?alt=media" alt="The Responses view with a Status: Completed chip in the filter bar and the Download CSV button highlighted"><figcaption><p>What the filter bar says is what you get: here, only completed responses.</p></figcaption></figure>

Pagination does not limit the export. Even when you are looking at page 1, the file contains every response that matches the filters. See [Filter & sort responses](/dforms/results/filter-and-sort.md).

***

## Export only some rows

To export a handful of responses, tick their checkboxes in the table and click **Export CSV** in the selection bar that appears above it. The file has the same columns as the full export and holds exactly the rows you checked, whatever the filters say. A selection is one page at most, so up to 100 rows. See [Submissions](/dforms/results/submissions.md#select-rows).

***

## What is in the file

The first line is the header. The answers come first, one column per question, and the columns about the response itself come last:

```csv
First name,Last name,What brings you here today?,What is your work email?,How soon do you want to launch?,Submitted at,Status,Score,Submission id,Page URL
Jane,Doe,Book meetings,docs-test+1@example.com,This week,2026-09-24T10:48:51-05:00,Completed,45,de659e7a-7190-4f74-838f-c750192d9a1f,https://www.example.com/pricing
John,Doe,Collect leads,docs-test+2@example.com,,2026-09-24T10:47:02-05:00,Partial,20,fcf4d142-2d8b-48db-b046-f702a1776dc7,https://app.dforms.ai/acme/f/lead-qualification-quiz?utm_source=newsletter
```

| Column                        | What it holds                                                                                                                                                                                                                                                   |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **First name**, **Last name** | Only when the form has a **Name** question with the standard first and last name fields. These two columns come first, wherever the question sits in the form. A **Name** question with other fields gets one column, under its question, instead.              |
| One per question              | The answer, under a header that is the question text. The field key is used only for a question without text. Message and Reveal steps collect nothing and get no column. When two questions have the same text, the second header gets `(2)`, the third `(3)`. |
| **Submitted at**              | When the response was completed, or captured at the partial point when it was not completed. Written in your **Workspace timezone** with its offset, for example `2026-09-24T10:48:51-05:00`.                                                                   |
| **Status**                    | **Completed** or **Partial**.                                                                                                                                                                                                                                   |
| **Score**                     | The total points from the answers. The column only exists when scoring is on for the form.                                                                                                                                                                      |
| **Submission id**             | The identifier of the response, the same as **Response ID** in the response panel.                                                                                                                                                                              |
| **Page URL**                  | The page the form was answered on: your landing page for an embedded form, or the form's own link. Empty for responses saved before September 26, 2026.                                                                                                         |

The headers that are not questions, and the **Status** values, follow the language of the person who downloads the file (their [Preferences](/dforms/account/preferences.md)), else the form's language, else English. In Spanish they read **Nombre**, **Apellido**, **Fecha de envío**, **Estado** (**Completada** or **Parcial**), **Puntaje**, **ID de respuesta** and **URL de la página**.

If the workspace has no timezone set, the dates are written in UTC, with a `+00:00` offset. See [Workspaces](/dforms/account/workspaces.md#workspace-timezone).

### Formats and small print

* A choice answer is written as the option's label, the text people saw. Several picks go in one cell, separated by `;` .
* A **File upload** answer is written as the file's name and nothing else. A link to an uploaded file lives only a few minutes and would be dead by the time anyone opened the spreadsheet, so to read the files, open them from **Submissions**. See [Uploaded files](/dforms/results/uploaded-files.md).
* A booking from a **Scheduler** step is written in your workspace timezone, for example `2026-09-03 09:30 GMT-5`.
* A phone number is written as a small text formula, `="+1 555 000 0000"`, so Excel and Google Sheets show it exactly as typed instead of turning it into a number.
* Answers containing commas, quotes or line breaks are quoted, and an internal quote is doubled, following the usual CSV rules.
* Any other answer that begins with `=`, `+`, `-`, `@`, a tab or a carriage return is prefixed with a single quote, so your spreadsheet treats it as text instead of running it as a formula. Real numbers, such as a negative score or a slider value, are left alone.
* The file starts with an invisible UTF-8 marker so Excel reads accents correctly. If a script reads the file, open it as UTF-8 with a byte order mark (`utf-8-sig` in Python).
* `utm_*` values ride along inside the stored response, reach HubSpot and your webhooks and show in the response panel, but they are not columns in this file.

> **⚠️ Note:** The file contains the email addresses and answers people gave you. Treat it like any other list of personal data: share it deliberately and delete the copies you no longer need.

## What's next

* [Submissions](/dforms/results/submissions.md): read the same rows on screen and delete the ones you do not want.
* [Filter & sort responses](/dforms/results/filter-and-sort.md): decide which responses go into the file.
* [Analytics](/dforms/results/analytics.md): the numbers behind the responses.
* [Webhooks](/dforms/connect/webhooks.md): get each response delivered automatically instead of exporting it by hand.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.dapta.ai/dforms/results/export-csv.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
