Method 1: the built-in Jotform integration
This is the fastest route and it is free on every Jotform plan. Each new submission appends a row to your sheet, and Jotform creates the header row from your form fields automatically.
- Open your form in the Jotform Form Builder and go to Settings
- Click Integrations in the left sidebar and search for Google Sheets
- Click Authenticate and sign in with the Google account that owns the sheet
- Choose Create a new spreadsheet, or pick an existing one from the list
- Map each form field to a column — Jotform pre-fills this from your field labels
- Click Save, then submit a test entry to confirm the first row lands correctly
What the built-in integration does and doesn't do
It covers the common case well, but there are limits worth knowing before you build a process on top of it.
- New submissions append as new rows, in real time
- Edited submissions update the existing row if you enable that option
- Historical submissions from before you connected are not backfilled automatically
- File uploads appear as links to Jotform-hosted files, not as embedded files
- One sheet per form — it cannot fan out to several destinations
Method 2: route it through an automation tool
Use this when the sheet is not the only destination — for example when the same submission also needs to hit a CRM, trigger a Slack alert or send an email. An automation platform gives you branching and formatting that the direct integration cannot.
- Create a new workflow and choose Jotform as the trigger app
- Select the New Submission trigger and connect your Jotform account with an API key
- Pick the form you want to watch and pull in a sample submission
- Add a Google Sheets action, choose Add Row, and select your spreadsheet and worksheet
- Map each Jotform field to a column, adding formatting steps for dates or currency
- Add further actions — CRM, Slack, email — on the same trigger, then turn the workflow on
Which method to use
Start with the built-in integration. Move to an automation tool only when you hit one of its edges.
- Just need submissions in a sheet: built-in integration, every time
- Need the same data in a CRM or Slack too: automation tool
- Need to reformat, calculate or split data before it lands: automation tool
- Need to write into different sheets based on an answer: automation tool with a router
- Need to backfill old submissions: export a CSV from Jotform and import it once
Fixing the common problems
Nearly every failed Jotform-to-Sheets sync comes down to one of four causes.
- Rows stopped appearing: the Google authentication expired — reconnect the integration
- Columns are misaligned: someone reordered or renamed columns in the sheet manually
- Blank cells: a field was added to the form after the integration was mapped, so remap it
- Nothing arrives at all: check the sheet is owned by the authenticated Google account
- Duplicated rows: two integrations or workflows are watching the same form
Keeping the sheet usable once data flows
A sheet that receives submissions is a data source, not a dashboard. A little structure up front avoids breaking the sync later.
- Never insert or reorder columns in the destination sheet — add them to the right instead
- Build charts and pivots on a second tab that references the raw tab
- Use a filter view rather than sorting the raw sheet, which shifts incoming rows
- Protect the raw tab so collaborators cannot edit it accidentally
