Skip to main content

Typeform

This page guides you through the process of setting up the Typeform source connector.

Prerequisites

  • Typeform Account

  • Form IDs (Optional) - If you want to sync data for specific forms, you'll need to have the IDs of those forms. If you want to sync data for all forms in your account you don't need any IDs. Form IDs can be found in the URLs to the forms in Typeform Admin Panel (for example, for URL https://admin.typeform.com/form/12345/ a 12345 part would your Form ID)

    For Airbyte Cloud:

  • OAuth

For Airbyte Open Source:

Setup guide

Step 1: Obtain an API token

For Airbyte Open Source: To get the API token for your application follow this steps

  • Log in to your account at Typeform.
  • In the upper-right corner, in the drop-down menu next to your profile photo, click My Account.
  • In the left menu, click Personal tokens.
  • Click Generate a new token.
  • In the Token name field, type a name for the token to help you identify it.
  • Choose needed scopes (API actions this token can perform - or permissions it has). See here for more details on scopes.
  • Click Generate token.

For Airbyte Cloud: This step is not needed in Airbyte Cloud. Skip to the next step.

Step 2: Set up the source connector in Airbyte

For Airbyte Cloud:

  1. Log into your Airbyte Cloud account.
  2. In the left navigation bar, click Sources. In the top-right corner, click + New Source.
  3. On the source setup page, select Typeform from the Source type dropdown and enter a name for this connector.
  4. Click Authenticate your Typeform account by selecting Oauth or Personal Access Token for Authentication.
  5. Log in and Authorize to the Typeform account.
  6. Start date (Optional) - Date to start fetching Responses stream data from. If start date is not set, Responses stream will fetch data from a year ago from today.
  7. Form IDs (Optional) - List of Form Ids to sync. If not passed - sync all account`s forms.
  8. Click Set up source.

For Airbyte Open Source:

  1. Go to local Airbyte page.
  2. In the left navigation bar, click Sources. In the top-right corner, click + New Source.
  3. On the Set up the source page, enter the name for the connector and select Typeform from the Source type dropdown.
  4. Fill-in API Token and Start Date
  5. click Set up source

Supported streams and sync modes

StreamKeyIncrementalAPI Link
FormsidNohttps://developer.typeform.com/create/reference/retrieve-form/
Responsesresponse_idYeshttps://developer.typeform.com/responses/reference/retrieve-responses
WebhooksidNohttps://developer.typeform.com/webhooks/reference/retrieve-webhooks/
WorkspacesidNohttps://developer.typeform.com/create/reference/retrieve-workspaces/
ImagesidNohttps://developer.typeform.com/create/reference/retrieve-images-collection/
ThemesidNohttps://developer.typeform.com/create/reference/retrieve-themes/

Performance considerations

Typeform API page size limit per source:

  • Forms - 200
  • Responses - 1000

Connector performs additional API call to fetch all possible form ids on an account using retrieve forms endpoint

API rate limits (2 requests per second): https://developer.typeform.com/get-started/#rate-limits

Build instructions

Build your own connector image

This connector is built using our dynamic built process. The base image used to build it is defined within the metadata.yaml file under the connectorBuildOptions. The build logic is defined using Dagger here. It does not rely on a Dockerfile.

If you would like to patch our connector and build your own a simple approach would be:

  1. Create your own Dockerfile based on the latest version of the connector image.
FROM airbyte/source-typeform:latest

COPY . ./airbyte/integration_code
RUN pip install ./airbyte/integration_code

# The entrypoint and default env vars are already set in the base image
# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

Please use this as an example. This is not optimized.

  1. Build your image:
docker build -t airbyte/source-typeform:dev .
# Running the spec command against your patched connector
docker run airbyte/source-typeform:dev spec

Customizing our build process

When contributing on our connector you might need to customize the build process to add a system dependency or set an env var. You can customize our build process by adding a build_customization.py module to your connector. This module should contain a pre_connector_install and post_connector_install async function that will mutate the base image and the connector container respectively. It will be imported at runtime by our build process and the functions will be called if they exist.

Here is an example of a build_customization.py module:

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
# Feel free to check the dagger documentation for more information on the Container object and its methods.
# https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/
from dagger import Container


async def pre_connector_install(base_image_container: Container) -> Container:
return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")

async def post_connector_install(connector_container: Container) -> Container:
return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")

Changelog

VersionDatePull RequestSubject
1.1.12023-10-1331377Use our base image and remove Dockerfile
1.1.02023-09-0429916Migrate to Low-Code Framework
1.0.02023-06-2627240Add OAuth support
0.3.02023-06-2327653Add form_id to records of responses stream
0.2.02023-06-1727455Add missing schema fields in forms, themes, images, workspaces, and responses streams
0.1.122023-02-2122824Specified date formatting in specification
0.1.112023-02-2023248Store cursor value as a string
0.1.102023-01-0716125Certification to Beta
0.1.92022-08-3016125Improve metadata.referer url parsing
0.1.82022-08-0915435Update Forms stream schema
0.1.72022-06-2013935Update Responses stream schema
0.1.62022-05-2312280Full Stream Coverage
0.1.42021-12-088425Update title, description fields in spec
0.1.32021-12-078466Change Check Connection Function Logic
0.1.22021-10-116571Support pulling data from a select set of forms
0.1.12021-09-065799Add missed choices field to responses schema
0.1.02021-07-104541Initial release for Typeform API supporting Forms and Responses streams