# Google Sheets integration

> Add a row to a Google spreadsheet for every form submission. The drive.file permission, choosing a sheet, columns, duplicates and limits.

The Google Sheets integration adds one row for each new submission to a spreadsheet Ikiform creates or one you pick. One Google account can feed any number of forms and spreadsheets.

## Connect Google Sheets

1. In the dashboard, open **Integrations** in the sidebar.
2. Open Google Sheets and choose **Connect Google Sheets**.
3. Choose your Google account and approve Ikiform. You come back to the dashboard when it's done.

You can also start from a form: adding Google Sheets to a form that has no connection yet runs the same flow and brings you back to the form. One connection serves every form in the Ikiform workspace. See [Connect an app](https://ikiform.com/docs/integrations.md#connect).

## Permissions

Ikiform asks Google only for the `drive.file` permission, plus your email address to name the connection. With `drive.file`, Ikiform can open only the spreadsheets it creates and the ones you pick for it in Google Picker. It can't see, open or change any other file in your Drive.

## Create or choose a spreadsheet

| Option | What happens |
| --- | --- |
| **Create a new spreadsheet** | Ikiform creates `<form name> responses (Ikiform)` in your Drive, with a `Responses` tab, a frozen header row and the headers `Submitted at` and `Submission ID` |
| **Choose a spreadsheet** | Pick a spreadsheet in Google Picker, then a tab, or **New tab named Responses**. If row 1 is empty, Ikiform writes the headers there. Existing headers stay, and missing ones are added at the end |

Choose **Change spreadsheet** in the card's **More actions** menu to send a form somewhere else.

## Rows and columns

- Each submission adds one row: `Submitted at` in UTC, like `2026-11-08 14:03:12`, then `Submission ID`, then one column per field.
- Column headers come from the field names, so `first_name` goes in a **First name** column. Fields whose names start with `_` are left out.
- Values are matched to columns by the exact header text, so you can reorder, hide or insert columns and rows keep landing in the right place. If you rename a header, the next submission with that field adds a new column with the original name.
- A field the sheet hasn't seen before gets a new column at the end.
- Values are written as plain text. A value that starts with `=` stays text and is never run as a formula.

## Duplicates

Before a retry or a manual run writes a row, Ikiform looks for the submission's ID in the `Submission ID` column. If the row is already there, the run counts as sent and nothing is added, so a retry never creates a duplicate. Keep the `Submission ID` column for this to work. Test rows use the Submission ID `test`; delete them whenever you like.

## Limits

- Google allows 60 writes a minute for each Google account. When Google slows Ikiform down, the run is retried after the delay Google asks for, so busy forms catch up instead of losing rows.
- Each integration writes one row at a time, so two submissions never race to add the same column.
- If a tab is renamed, Ikiform follows it. If the tab is deleted, Ikiform adds a new `Responses` tab.

## When it stops writing

- If access was revoked in your Google account, the card says **Needs reconnecting**. Choose **Reconnect**.
- If the spreadsheet was deleted or Ikiform lost access to it, choose **Create a new sheet** or **Choose another sheet**. The Google account and other forms keep working.

## Disconnect

Open Google Sheets under **Integrations** and choose **Disconnect** on the connection. Ikiform's access to your Google account is revoked. The spreadsheets stay in your Drive, and so do the rows already written.

## Activity, retries and roles

Runs, retries, **Replay failed**, pausing and who can manage integrations work the same for every app. See [Activity and retries](https://ikiform.com/docs/integrations.md#activity), [Pause and resume](https://ikiform.com/docs/integrations.md#pause) and [Who can manage integrations](https://ikiform.com/docs/integrations.md#roles).

## Step-by-step guide

- [Send form submissions to Google Sheets](https://ikiform.com/blog/form-submissions-to-google-sheets.md): Get one row per submission in a spreadsheet Ikiform creates or one you pick.
