> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Typeform as a data source

> Bring data from Typeform to Nekt.

Typeform is a platform for creating online forms, surveys, and quizzes with a user-friendly interface. It provides an interactive way to collect and analyze data from users through customizable forms.

<img height="50" src="https://mintcdn.com/nekt/Vwqdy25WF49yBOFs/assets/logo/logo-typeform.png?fit=max&auto=format&n=Vwqdy25WF49yBOFs&q=85&s=29c9c843e0a1d13aa4c709024560f6c5" data-path="assets/logo/logo-typeform.png" />

## Configuring Typeform as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Typeform option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

You'll need your Typeform Personal Access Token for this connection. You can find it in your [Typeform developer settings](https://www.typeform.com/developers/get-started/personal-access-token/).

The following configurations are available:

* **Access Token**: The personal access token used to authenticate against the API service.

* **Form ID** (optional): The ID of the form to sync. The form ID can be found in the share URL (for example, in the URL `https://form.typeform.com/to/DldPkDcN` the ID is `DldPkDcN`). If not provided, all forms will be synced.
  * **Single Form Mode**: When you provide a Form ID, the connector will only sync data from that specific form.
  * **Multiple Forms Mode**: When no Form ID is provided, the connector will sync all forms and their responses. In this mode, all responses from all forms will be available in a single responses table.

* **Start Date**: The earliest record date to sync. Only responses submitted after this date will be extracted.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync - you can select all streams or pick specific ones that matter most to you.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.

* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** and make this process faster!

* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data - which is good if, for example, you want to keep every record ever fetched.
  * Full table: every time the extraction happens, we'll get the current state of the data - which is good if, for example, you don't want to have deleted data in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/get-started/core-concepts/triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Optionally, you can determine when to execute a [full sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync). This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

# Streams and Fields

Below you'll find all available data streams from Typeform and their corresponding fields:

<AccordionGroup>
  <Accordion title="Forms">
    Stream containing form definitions and configurations.

    **Key Fields:**

    * `id` - Unique identifier for the form
    * `type` - Type of the form
    * `title` - Title of the form
    * `created_at` - Time of the form's creation
    * `last_updated_at` - Time of the last update
    * `published_at` - Time when the form was published

    **Settings:**

    * `settings` object containing:
      * `language` - Form language code
      * `progress_bar` - Progress bar type
      * `is_public` - Whether the form is public
      * `is_trial` - Whether the form is in trial mode
      * `show_progress_bar` - Whether to show progress bar
      * `show_typeform_branding` - Whether to show Typeform branding
      * `are_uploads_public` - Whether uploaded files are public
      * `show_time_to_complete` - Whether to show completion time
      * `show_number_of_submissions` - Whether to show submission count
      * `show_cookie_consent` - Whether to show cookie consent
      * `show_question_number` - Whether to show question numbers
      * `autosave_progress` - Whether to autosave progress
      * `free_form_navigation` - Whether free navigation is enabled

    **Fields:**
    Array of form fields containing:

    * `id` - Field ID
    * `title` - Field title
    * `ref` - Field reference
    * `type` - Field type
    * `properties` - Field configuration including:
      * `randomize` - Whether choices are randomized
      * `allow_multiple_selection` - Whether multiple selections are allowed
      * `allow_other_choice` - Whether custom choices are allowed
      * `choices` - Array of available choices
    * `validations` - Field validation rules

    **Thank You Screens:**
    Array of end screens containing:

    * `id` - Screen ID
    * `ref` - Screen reference
    * `title` - Screen title
    * `type` - Screen type
    * `properties` - Screen configuration

    **Links:**

    * `_links` object containing:
      * `display` - URL for the actual form
      * `responses` - URL for the responses API
  </Accordion>

  <Accordion title="Responses">
    Stream containing form submissions and answers.

    **Key Fields:**

    * `form_id` - ID of the form this response belongs to
    * `response_id` - Unique identifier for the response
    * `landing_id` - Landing ID
    * `token` - Response token
    * `response_type` - Type of response (e.g., completed)
    * `landed_at` - Time when respondent landed on form
    * `submitted_at` - Time when response was submitted

    **Metadata:**

    * `metadata` object containing:
      * `browser` - Browser used
      * `platform` - Platform used
      * `user_agent` - User agent string
      * `network_id` - Network identifier
      * `referer` - Referrer URL

    **Answers:**
    Array of answers containing:

    * `type` - Answer type
    * `field` - Field information:
      * `id` - Field ID
      * `ref` - Field reference
      * `type` - Field type
    * Answer value (one of):
      * `text` - Text response
      * `email` - Email response
      * `number` - Numeric response
      * `boolean` - Boolean response
      * `phone_number` - Phone number response
      * `date` - Date response
      * `file_url` - File upload URL
      * `choice` - Single choice response
      * `choices` - Multiple choice response

    **Variables:**
    Array of variables containing:

    * `key` - Variable key
    * `type` - Variable type
    * `text` - Text value
    * `number` - Numeric value

    **Additional Data:**

    * `hidden` - Hidden field values
    * `calculated` - Calculated values including scores
  </Accordion>
</AccordionGroup>

## Data Model

The following diagram illustrates the relationships between the data streams in Typeform:

```mermaid theme={null}
graph TD;
    Forms("Forms");
    Responses("Responses");

    Responses -- "form_id" --> Forms;
```

## Usage Modes

### Single Form Mode

When configuring the source with a specific Form ID:

* Only data from the specified form will be extracted
* The Forms stream will contain a single record
* The Responses stream will only contain responses for that form
* Useful when you only need data from a specific form

### Multiple Forms Mode

When configuring the source without a Form ID:

* Data from all accessible forms will be extracted
* The Forms stream will contain all your forms
* The Responses stream will contain responses from all forms in a single table
* Each response will have a `form_id` field to link it to its form
* Useful when you need to analyze data across multiple forms

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Typeform skills file" icon="wand-magic-sparkles" href="/sources/typeform.md">
  Typeform connector documentation as plain markdown, for use in AI agent contexts.
</Card>
