Typeform integration summary

Stitch’s Typeform integration replicates data using the Typeform Create and Responses APIs. Refer to the Schema section for a list of objects available for replication.

Typeform feature snapshot

A high-level look at Stitch's Typeform (v2) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release status

Released on September 29, 2022

Supported by

Stitch

Stitch plan

Standard

API availability

Available

Singer GitHub repository

singer-io/tap-typeform

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Supported

Table-level reset

Unsupported

Configurable Replication Methods

Unsupported

DATA SELECTION
Table selection

Supported

Column selection

Supported

Select all

Supported

TRANSPARENCY
Extraction Logs

Supported

Loading Reports

Supported

Connecting Typeform

Step 1: Retrieve Typeform form IDs

Stitch’s Typeform will retrieve data only for the forms you specify in the Integration Settings page. In this step, you’ll retrieve the IDs of the forms you want Stitch to replicate.

  1. In your Typeform account, navigate back to your workspaces.
  2. On the workspace page, click on a form you want to include in Stitch. This should open the form’s edit page.
  3. Look at the URL of the page in your browser. It should be similar to https://admin.typeform.com/form/FrZ6iD/create. The string between form/ and /create is the form’s ID. In this example, the ID is FrZ6iD.
  4. Copy the form ID somewhere handy.
  5. Repeat steps 2-4 for every form you want to include in Stitch.

Step 2: Add Typeform as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Typeform icon.

  4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

    For example, the name “Stitch Typeform” would create a schema called stitch_typeform in the destination. Note: Schema names cannot be changed after you save the integration.

  5. In the Forms field, enter a comma-separated list of the form IDs you retrieved in Step 2. For example:
    • Single form: FrZ6iD
    • Multiple forms: FrZ6iD,f8nzFM

Step 3: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your Typeform integration. This means that data equal to or newer than this date will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Typeform’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.

Step 4: Create a replication schedule

In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Typeform integrations support the following replication scheduling methods:

To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.

Step 5: Authorize Stitch

  1. Next, you’ll be prompted to log into your Typeform account and approve Stitch’s access to your data. Note that we will only ever read your data.
  2. Click Authorize.
  3. Sign in with your Typeform account.
  4. Click Accept.

Step 6: Set objects to replicate

The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.

Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.

For Typeform integrations, you can select:

  1. Individual tables and columns

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.

  4. Repeat this process for all the tables and columns you want to replicate.
  5. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. Click the Finalize Your Selections button at the bottom of the page to save your data selections.

Initial and historical replication jobs

After you finish setting up Typeform, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.

Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.


Typeform table reference

answers

The answers table contains info about the answers submitted for the forms specified in the Integration Settings page. Note: There is no replication key for this table, it uses the replication key submitted_at from its parent stream submitted_landings.

Replication Method

Key-based Incremental

Primary Keys

landing_id

question_id

Useful links

Typeform documentation

answers schema on GitHub

Typeform API method

Join answers with on
submitted_landings
answers.landing_id = submitted_landings.landing_id
unsubmitted_landings
answers.landing_id = unsubmitted_landings.landing_id
questions
answers.question_id = questions.question_id

_sdc_form_id

STRING

answer

STRING

data_type

STRING

landing_id

STRING

question_id

STRING

ref

STRING

submitted_at

DATE-TIME

type

STRING

forms

The forms table contains info about the forms (public and private) that are accesible by the user who authorized the integration in Stitch.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

last_updated_at

Useful links

Typeform documentation

forms schema on GitHub

Typeform API method

Join forms with on
questions
forms.id = questions.form_id

_links

OBJECT

created_at

DATE-TIME

id

STRING

last_updated_at

STRING

self

OBJECT

href

STRING

settings

OBJECT

is_public

BOOLEAN

is_trial

BOOLEAN

theme

OBJECT

href

STRING

title

STRING

type

STRING

questions

The questions table contains a list of question titles and IDs that can be used to link to answers.

Replication Method

Full Table

Primary Keys

form_id

question_id

Useful links

questions schema on GitHub

Typeform API method

Join questions with on
forms
questions.form_id = forms.id
answers
questions.question_id = answers.question_id

attachment

OBJECT

href

STRING

properties

OBJECT

description

STRING

scale

NUMBER

type

STRING

field_type

STRING

form_id

STRING

id

STRING

layout

OBJECT

attachment

OBJECT

href

STRING

properties

OBJECT

description

STRING

scale

NUMBER

type

STRING

placement

STRING

type

STRING

name

STRING

options

ARRAY

properties

OBJECT

allow_multiple_selection

BOOLEAN

allow_other_choice

BOOLEAN

alphabetical_order

BOOLEAN

button_text

STRING

choices

ARRAY

attachment

OBJECT

href

STRING

type

STRING

label

STRING

ref

STRING

currency

STRING

default_country_code

STRING

description

STRING

fields

ARRAY

hide_marks

BOOLEAN

labels

OBJECT

center

STRING

left

STRING

right

STRING

price

OBJECT

type

STRING

value

STRING

randomize

BOOLEAN

separator

STRING

shape

STRING

question_id

STRING

ref

STRING

required

STRING

sub_questions

ARRAY

question_id

STRING

ref

STRING

title

STRING

title

STRING

type

STRING

validations

OBJECT

max_length

INTEGER

max_selection

INTEGER

max_value

INTEGER

min_selection

INTEGER

min_value

INTEGER

required

BOOLEAN

submitted_landings

The submitted_landings table contains info about submitted form landings.

Note: Data related to a form landing can be retrieved twice, once in unsubmitted_landings when it is unsubmitted and once in submitted_landings when it is submitted. In this case, they will have different bookmarks.

Replication Method

Key-based Incremental

Primary Key

landing_id

Replication Key

submitted_at

Useful links

submitted_landings schema on GitHub

Typeform API method

Join submitted_landings with on
answers
submitted_landings.landing_id = answers.landing_id
unsubmitted_landings
submitted_landings.landing_id = unsubmitted_landings.landing_id

_sdc_form_id

STRING

browser

STRING

hidden

STRING

landed_at

DATE-TIME

landing_id

STRING

network_id

STRING

platform

STRING

referer

STRING

submitted_at

DATE-TIME

tags

ARRAY

token

STRING

user_agent

STRING

unsubmitted_landings

The unsubmitted_landings table contains info about unsubmitted form landings.

Note: Data related to a form landing can be retrieved twice, once in unsubmitted_landings when it is unsubmitted and once in submitted_landings when it is submitted. In this case, they will have different bookmarks.

Replication Method

Key-based Incremental

Primary Key

landing_id

Replication Key

landed_at

Useful links

unsubmitted_landings schema on GitHub

Typeform API method

Join unsubmitted_landings with on
answers
unsubmitted_landings.landing_id = answers.landing_id
submitted_landings
unsubmitted_landings.landing_id = submitted_landings.landing_id

_sdc_form_id

STRING

browser

STRING

landed_at

DATE-TIME

landing_id

STRING

network_id

STRING

platform

STRING

referer

STRING

response_id

STRING

token

STRING

user_agent

STRING


Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.