> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/sources/category/surveys/typeform.md).

# Typeform

Export Typeform survey responses, summaries, and form lists to Google Sheets, BigQuery, or databases via Coupler.io — no code required.

Typeform is a survey and form builder that lets you collect responses through conversational, interactive forms. With Coupler.io, you can automatically export your Typeform data — responses, summaries, and form lists — to spreadsheets, databases, or AI tools without writing any code.

## Why connect Typeform to Coupler.io?

* **Centralize response data** — pull answers from multiple forms into one destination for easier analysis
* **Automate reporting** — schedule regular exports so your dashboards always reflect the latest submissions
* **Combine data sources** — join Typeform responses with CRM or marketing data using Coupler.io's Join and Append transformations
* **Feed AI tools** — send survey data directly to ChatGPT, Claude, Gemini, or other AI destinations for instant analysis

## Prerequisites

* An active Typeform account (any plan)
* At least one published form with responses (required for Form responses and Form summary entities)
* Permission to authorize third-party app access in your Typeform workspace

## Quick start

{% hint style="success" %}
If you want to analyze responses from multiple forms side by side, use the **Append** transformation to stack them into a single table after connecting your first form.
{% endhint %}

## How to connect

{% stepper %}
{% step %}
**Create a new data flow** in Coupler.io and select **Typeform** as your source.
{% endstep %}

{% step %}
**Connect your Typeform account** by clicking the authorization button. You'll be redirected to Typeform to sign in and grant Coupler.io access. Once approved, you'll return to Coupler.io automatically.
{% endstep %}

{% step %}
**Select an entity** — choose from List of forms, Form responses, or Form summary.
{% endstep %}

{% step %}
**Choose a form** (required for Form responses and Form summary). A dropdown will appear with all forms in your connected account.
{% endstep %}

{% step %}
**Choose your destination** — Google Sheets, Excel, BigQuery, Looker Studio, or an AI destination like ChatGPT, Claude, or Gemini.
{% endstep %}

{% step %}
**Run the data flow** manually to confirm everything works. Check that your responses appear correctly before setting up a schedule.
{% endstep %}
{% endstepper %}

## Typeform data overview

Coupler.io gives you access to three Typeform entities, each suited to a different analysis goal. Whether you need raw responses, high-level summaries, or a catalog of your forms, the data is structured and ready to use.

## Entities

| Entity             | Best for                                                                       |
| ------------------ | ------------------------------------------------------------------------------ |
| **List of forms**  | Auditing your form library, tracking creation dates, building form directories |
| **Form responses** | Analyzing individual answers, extracting emails, segmenting respondents        |
| **Form summary**   | Reporting on completion rates, score distributions, and question-level trends  |

## Available fields

#### List of forms

| Field               | Description                       |
| ------------------- | --------------------------------- |
| `id`                | Unique form identifier            |
| `title`             | Form title                        |
| `last_updated_at`   | Timestamp of the most recent edit |
| `created_at`        | Form creation date                |
| `settings.language` | Language the form is set to       |
| `_links.display`    | Public URL of the form            |

#### Form responses

| Field                 | Description                                          |
| --------------------- | ---------------------------------------------------- |
| `response_id`         | Unique ID for each submission                        |
| `submitted_at`        | Date and time of submission                          |
| `landed_at`           | Date and time the respondent opened the form         |
| `calculated.score`    | Calculated score (if scoring is enabled)             |
| `hidden.*`            | Hidden field values passed via URL parameters        |
| `answers.*`           | One column per question with the respondent's answer |
| `metadata.user_agent` | Browser/device info for the respondent               |
| `metadata.network_id` | Network identifier                                   |

{% hint style="info" %}
Email addresses collected in your form appear as individual answer columns (e.g., `answers.email_question_title`). There is no separate top-level email field — look for the column that matches your email question's label.
{% endhint %}

#### Form summary

| Field                  | Description                                                         |
| ---------------------- | ------------------------------------------------------------------- |
| `form_id`              | ID of the form being summarized                                     |
| `total_responses`      | Total number of submissions                                         |
| `completion_rate`      | Percentage of respondents who completed the form                    |
| `fields.id`            | Question identifier                                                 |
| `fields.label`         | Question text                                                       |
| `fields.type`          | Question type (e.g., short\_text, opinion\_scale, multiple\_choice) |
| `fields.responses`     | Number of responses for that question                               |
| `fields.average_value` | Average score (for numeric question types)                          |

## Common field combinations

* **Response analysis**: `submitted_at` + `answers.*` + `calculated.score` — track how scores change over time
* **Respondent segmentation**: `answers.email_*` + `hidden.*` + `submitted_at` — link responses back to known contacts
* **Completion funnel**: `landed_at` + `submitted_at` + `completion_rate` from Form summary — identify where drop-off happens
* **Form audit**: `title` + `created_at` + `last_updated_at` from List of forms — keep track of your form library

## Use cases by role

{% tabs %}
{% tab title="Marketers" %}

* Export lead generation form responses to Google Sheets and enrich them with UTM data stored in hidden fields
* Use Append to combine responses from multiple campaign forms into a single dataset
* Send summary data to ChatGPT or Claude to auto-generate insights reports from survey results
  {% endtab %}

{% tab title="Product teams" %}

* Pull NPS or CSAT form summaries into Looker Studio for a live satisfaction dashboard
* Join Typeform response data with product usage data in BigQuery to correlate feedback with behavior
* Track opinion scale averages over time by scheduling regular Form summary exports
  {% endtab %}

{% tab title="Operations" %}

* Use List of forms to audit all active forms across the workspace and check when they were last updated
* Export intake or request form responses to Excel for workflow tracking
* Use Aggregate transformation to count submissions per form per week for volume reporting
  {% endtab %}
  {% endtabs %}

## Platform-specific notes

* Each question becomes its own column in Form responses — column names reflect the question label, so renaming questions in Typeform will change column names in future exports
* Hidden fields are only included if they were populated when the respondent opened the form
* Form summary data is computed by Typeform at query time; very high-volume forms may show slight delays in aggregation accuracy
* Typeform does not expose partial responses (respondents who left without submitting) via the API, so only completed submissions appear

## Typeform common issues

### Connection issues

<details>

<summary>OAuth authorization fails or redirects to an error page</summary>

Make sure you're logged into the correct Typeform account before clicking the authorization button. If you manage multiple Typeform workspaces, Typeform will authorize whichever account is currently active in your browser. Log out and back in to the right account, then try connecting again.

</details>

<details>

<summary>"Exceeded maximum accounts" error when connecting</summary>

Coupler.io limits the number of source accounts you can connect per workspace. If you've hit this limit, go to your Coupler.io account settings and remove any unused Typeform connections before adding a new one.

</details>

### Missing data

<details>

<summary>Some responses are missing from the export</summary>

Check whether you've set a **Submitted after** or **Submitted before** date filter on the Form responses entity. If those filters are active, only responses within that range will be returned. Use the date picker to widen the range, or clear the filters to pull all available responses.

</details>

<details>

<summary>Email addresses aren't appearing in the output</summary>

Email answers are exported as regular answer columns, not as a separate top-level field. Look for a column named after your email question's label (e.g., `answers.what_is_your_email`). If the column is missing entirely, check that the question was answered by respondents and that it existed in the form at the time of submission.

</details>

<details>

<summary>A form doesn't appear in the form dropdown</summary>

Only forms belonging to the connected Typeform account will appear. If the form lives in a different workspace or was created by a different user, connect that account separately. Also confirm the form hasn't been deleted or moved to a different workspace.

</details>

### Data discrepancies

<details>

<summary>The preview shows different data than what's exported to the destination</summary>

The preview in Coupler.io shows a limited sample of rows and may not reflect all responses or the full column set. Run the data flow manually to get the complete export. If discrepancies persist after a full run, check whether any advanced filters are applied that would exclude certain responses from the export but not the preview.

</details>

<details>

<summary>Response counts in Coupler.io don't match what I see in Typeform</summary>

Typeform's dashboard includes partial (incomplete) responses in some views, but the API only returns fully submitted responses. This is expected behavior — your Coupler.io export will always show a lower count than the Typeform dashboard if any respondents abandoned the form before submitting.

</details>

### Permission errors

<details>

<summary>"Access denied" or "Unauthorized" error when syncing a form</summary>

This usually means the connected Typeform account doesn't have access to the form you selected. If the form is owned by another team member or workspace, you'll need to reconnect using an account that has access. Workspace admin accounts typically have the broadest access.

</details>

## Typeform FAQ

<details>

<summary>Can I export responses from multiple forms at once?</summary>

Each source in a data flow targets one form at a time. To combine responses from multiple forms, add multiple sources to your data flow (one per form) and use the **Append** transformation to merge them into a single output table. Make sure all forms have the same question structure so columns align correctly.

</details>

<details>

<summary>How do I extract email addresses from Typeform responses?</summary>

Email answers are exported as regular answer columns. The column name matches the label of your email question in Typeform (for example, `answers.what_is_your_email_address`). Select the **Form responses** entity and look for the column that corresponds to your email question. If you're not sure of the column name, run the data flow once and check the output headers.

</details>

<details>

<summary>Can I filter responses by date?</summary>

Yes. When using the **Form responses** entity, you'll see **Submitted after** and **Submitted before** fields. Use the date picker in each field to define your date window. This is useful for pulling only recent responses or limiting exports to a specific campaign period.

</details>

<details>

<summary>Why does Coupler.io show fewer responses than my Typeform dashboard?</summary>

Typeform's dashboard counts partial (abandoned) responses in some views, but the API — and therefore Coupler.io — only returns fully submitted responses. The difference you see is the number of respondents who opened the form but didn't submit it. This is expected and not a sync error.

</details>

<details>

<summary>Can I connect more than one Typeform account?</summary>

Yes, but Coupler.io workspaces have a limit on the number of connected source accounts. If you receive an "exceeded maximum accounts" error, go to your account settings and remove any Typeform connections you no longer use before adding a new one.

</details>

<details>

<summary>What happens if I rename a question in Typeform after I've already set up a data flow?</summary>

The renamed question will appear as a new column in future exports, and the old column name will stop receiving data. Any formulas, dashboards, or scripts that reference the old column name will break. Finalize your question labels in Typeform before connecting them to Coupler.io.

</details>

<details>

<summary>Can I send Typeform data to an AI tool for analysis?</summary>

Yes. Coupler.io supports AI destinations including ChatGPT, Claude, Gemini, Perplexity, Cursor, and OpenClaw. This is especially useful for analyzing open-text answers — you can have an AI tool summarize feedback, classify sentiment, or generate a report directly from your exported responses.

</details>

{% hint style="info" %}
For a full list of available fields and metrics, see the [Data Overview](#typeform-data-overview) article. For help with sync errors or missing data, check [Common Issues](#typeform-common-issues).
{% endhint %}


---

# 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.coupler.io/sources/category/surveys/typeform.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.
