Skip to main content
Jotform is an online form builder used to create forms, surveys, registrations and order forms and to collect their responses. The connector reads your Jotform account through the Jotform API and brings your forms, their questions and settings, every submission with its answers (also as one row per question), reports, labels and sub-users to your Lakehouse.

Configuring Jotform as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Jotform option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

The connector uses a Jotform API key. To create one, sign in to Jotform, open My Account > API, click Create New Key and copy it. Read Access is enough: the connector never changes anything in your account.
Create the key with the account that owns the forms (or an admin of your Jotform Enterprise or Teams workspace). The connector sees only the forms and submissions this account can see.
Every Jotform plan limits how many API calls an account can make per day (1,000 on Starter, 10,000 on Bronze, 50,000 on Silver, 100,000 on Gold and 1,000,000 on Enterprise), and that limit is shared by every integration using your account. The connector is built to spend as little as possible (see API Limits & Performance at the end of this page), checks before reading the rest of the data that today’s remaining calls are enough for the sync, and stops with a clear message when Jotform reports the limit as reached. The limit resets at midnight US Eastern time.
The following configurations are available:
  • API Key: the Jotform API key. Required.
  • API Region: (Default: Standard) where your Jotform account is hosted. Choose EU if you sign in at eu.jotform.com, HIPAA for HIPAA-compliant accounts and Enterprise if your forms are on your company’s own Jotform domain. Required.
  • Enterprise API URL: shown only for Enterprise. The API address of your Enterprise domain, such as https://forms.your-company.com/API or https://your-company.jotform.com/API. Only HTTPS addresses with a domain name are accepted.
  • Team ID: only if your forms live in a Jotform Teams workspace: the ID of that team. Leave it empty for forms in your own workspace. After the first sync, check that the Forms table has as many forms as the team sees in Jotform.
  • Start Date: only submissions received on or after this date are extracted. Leave it empty to extract every submission. It does not apply to forms, reports, labels and sub-users, which are always read in full.
  • Lookback Days: (Default: 3) on every sync, submissions received or edited up to this many days before the previous sync are read again, so late arrivals (for example, submissions made offline in the Jotform mobile app and uploaded later) are not missed.
  • API Time Zone: (Default: America/New_York) Jotform’s API returns dates without a time zone, in Jotform’s server time (US Eastern), regardless of the time zone of your account. The connector converts them to UTC using this setting. Change it only if every date in your tables comes out shifted by the same number of hours.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Form Questions and Form Properties cost one API call per form, but only for forms edited since the previous sync, plus one per form once a week to refresh them. Label Resources costs one API call per label. All the other streams cost a handful of calls per sync.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: use INCREMENTAL for Submissions, Submission Answers, Form Questions and Form Properties: each sync then reads only new and edited submissions and only the forms edited since the previous sync (plus, once a week, every form). Forms, Reports, Labels, Label Resources and Sub-users are FULL_TABLE: each sync reads their current state. Read more about Sync Types here.
A full sync of Submissions reads every submission again, at about one API call per 980 submissions, and is the way to remove from the table submissions that were deleted in Jotform (see Data Quality Considerations). If Submission Answers is set to FULL_TABLE, every submission is read on every sync, because that table is replaced each time.
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, 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). On Jotform plans with a low daily API limit, prefer hourly or less frequent syncs. Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • An Additional Full Sync is only needed if you want submissions deleted in Jotform, or questions removed from forms, to disappear from your tables. Each one costs one API call per form for Form Questions and Form Properties, plus about one call per 980 submissions, so on plans with a low daily limit prefer an occasional manual full sync over a frequent schedule. Check that it finished successfully (see API Limits & Performance).
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Available streams

The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.

Fields by stream

All dates are in UTC. Nested values (answers, question properties, payment settings, permissions) are JSON strings. A submission’s answers are keyed by question ID (question_id), the same ID used in Form Questions.
Every form of the account returned by Jotform (enabled and disabled; forms in the trash appear with status DELETED when Jotform lists them), with submission counters. Read in full on every sync.Primary key: id · Full table
One row per question (field) of each form: label, type, order and every property Jotform returns. A form’s questions are requested again when the form was edited since the previous sync, and at least once a week. Forms in the trash are not read.Primary key: form_id, question_id · Replication key: form_updated_at
One row per form with all of its settings (thank-you page, notification e-mails, limits, styles) as JSON. Refreshed for forms edited since the previous sync, and at least once a week.Primary key: form_id · Replication key: form_updated_at
Every response received by every form of the account, with all its answers as a JSON object.Primary key: id · Replication key: last_updated_at
One row per answered question of each submission, taken from the same response as Submissions (no extra API call). Join with Form Questions on form_id and question_id.Primary key: submission_id, question_id · Replication key: submission_last_updated_at
Reports (Excel, CSV, grid, table, visual…) created on the account’s forms.Primary key: id · Full table
Labels (the folders of your Jotform workspace), one row per label including nested ones.Primary key: id · Full table
What each label contains: forms, workflows, apps and other assets.Primary key: label_id, asset_type, asset_id · Full table
Sub-user accounts and the forms and folders they can access.Primary key: id · Full table

Implementation Notes

Data Quality Considerations

  • Jotform’s API returns dates in Jotform’s server time (US Eastern) whatever the time zone of your account, so dates shown in Jotform’s own screens can differ by some hours from the UTC dates in your tables. They refer to the same moment.
  • Submissions deleted in Jotform are not removed from the Submissions and Submission Answers tables by incremental syncs: Jotform’s API offers no way to list what was deleted. A full sync of these streams (or an Additional Full Sync) brings the tables back in line with Jotform.
  • An edited submission is read again on the next sync and replaces the old version. The new (unread), flag (starred), status and workflow_status columns may change in Jotform without the submission counting as edited, so on rows older than Lookback Days they can show the value of the last time the submission was extracted. A full sync refreshes them.
  • Form Questions and Form Properties are refreshed when the form is edited in Jotform, and every form is read again at least once a week, in case Jotform does not mark the form as edited when only a question changes. A question removed from a form stays in the Form Questions table until a full sync of that stream. Forms in the trash are not read.
  • Late submissions (for example, made offline and uploaded later) are caught as long as they arrive within Lookback Days of the previous sync.

API Limits & Performance

Calls made by each sync, which count toward your Jotform daily API limit:
  • With every stream selected and nothing changed in Jotform, a sync costs about 7 calls plus one per label (and, once a week, one per form for Form Questions and Form Properties). Lists are read in pages of 1,000 that overlap by 20 rows, which is why a page brings about 980 new records. Each sync ends with a line in the run log saying how many calls it made and how many are left for today.
  • Before reading the rest of the data, the connector estimates the calls the sync still needs and compares them with what Jotform reports as left for today. If they are not enough, the sync stops before spending them and without changing any table. If the sync fits but leaves fewer than 20 calls for the day, the run log warns that your other integrations may run out.
  • Everything that is replaced on each sync (Forms, Reports, Labels, Label Resources, Sub-users, and, in a full sync, Form Questions, Form Properties, Submissions and Submission Answers) is read completely before the connector writes anything. If Jotform answers with errors, refuses access or reports the daily limit as reached while that data is being read, the sync stops and those tables stay as they were. Incremental reads that stop midway do not change what is already in your tables, and the next sync picks up from the same point.
  • If a sync is interrupted for another reason while it is writing a table that is replaced on each sync (for example, during a full sync), that table can be left incomplete until the next successful run. Run the sync again until it succeeds.

Troubleshooting