Linking Typeform as a source
The Typeform connector can link data from your Typeform account into PostHog.
Linking Typeform
- In Typeform, go to your Account settings, navigate to Personal tokens, and click Generate a new token.
- Give the token a name and select the required scopes: Forms: Read and Responses: Read. Copy the token. For more details, see Typeform's Personal Access Tokens docs.
- In PostHog, go to the Data pipeline sources page, click + New source, and then click Link next to Typeform.
- Paste your Personal Access Token. If your account is on the EU region, set the API base URL to
https://api.eu.typeform.comorhttps://api.typeform.eu. - Click Next, choose the tables you want to sync, and then click Import.
Configuration
| Option | Description |
|---|---|
Personal access tokenType: password Required: True | |
API base URLType: select Required: False | |
Responses to syncType: select Required: False | Completed responses sync incrementally. Including partial and started responses syncs the whole responses table on every run, since Typeform has no cursor for partial responses. To apply this change to an existing source, use 'Delete table and resync' on the responses table. 'Sync now' alone won't backfill the responses you're adding. |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
forms | A Typeform form (survey/quiz) with its questions, theme, and settings. | Incremental, Full refresh | last_updated_at | — |
responses | A single submission to a Typeform form, including the answers given. | Incremental, Full refresh | submitted_at | — |
Available datasets and endpoints
The Typeform source currently supports syncing the following datasets and API endpoints:
| Dataset | Endpoint path |
|---|---|
forms | /forms |
responses | /forms/{form_id}/responses |
The responses dataset is a dependent (fan-out) endpoint — PostHog fetches all your forms first, then retrieves responses for each form individually.
Syncing partial and started responses
By default, PostHog only syncs completed Typeform responses. You can change this using the Responses to sync setting when configuring your Typeform source:
- Completed responses only (default): Syncs only completed form submissions. Uses incremental sync on
submitted_at. - All responses (including partial & started): Syncs completed, partial, and started responses. Uses a full refresh on every sync run.
The "All responses" mode uses full refresh because partial and started responses have no submitted_at timestamp, and Typeform's API doesn't provide a cursor that works across all three response types. This means incremental sync isn't possible when including partial responses.
Note: To apply this change to an existing source, use Delete table and resync on the
responsestable. Sync now alone won't backfill the responses you're adding.
Supported API base URLs
| Region | API base URL |
|---|---|
| Global (default) | https://api.typeform.com |
| EU | https://api.eu.typeform.com |
| EU (alternative) | https://api.typeform.eu |