Google Sheets
The Google Sheets integration appends a new row to a spreadsheet every time your form receives a submission. No code, no Zapier, no middleware.
Each row includes submission metadata and all submitted field values. Deliveries are async and retried automatically if Google is temporarily unavailable.
Plan availability
| Plan | Google Sheets destinations per form |
|---|---|
| Free | Not available |
| Starter | 1 |
| Pro | Unlimited |
See the pricing page for a full plan comparison.
Step 1: Connect your Google account
The Google connection is workspace-level. You connect once, then use it across all your forms.
Open Integrations settings
In the dashboard , go to Settings → Integrations.
Click Connect Google
Click Connect Google. You’ll be redirected to Google’s authorization screen.
Authorize access
Approve the permissions Formtorch requests:
| Permission | Purpose |
|---|---|
| Google Sheets (read/write) | Append rows to your spreadsheets |
| Google Drive (metadata only) | List your spreadsheets so you can pick one — Formtorch cannot read file contents |
After approving, you’ll be redirected back to the integrations page.
That’s it. Your Google account is connected. You can now add Google Sheets destinations to any form.
Step 2: Add a destination to a form
Each form can send to one or more spreadsheets. A destination is a specific sheet tab inside a specific spreadsheet.
Open your form’s Integrations tab
In the dashboard, open the form you want to connect. Click Integrations in the top navigation.
Add a Google Sheets destination
Click Add Destination and select Google Sheets.
Choose a spreadsheet
A picker lists the spreadsheets in your connected Google Drive. Choose the spreadsheet you want submissions to go to.
Choose a sheet tab
After selecting a spreadsheet, choose the sheet tab (the named tab at the bottom of the spreadsheet). Formtorch will append rows to that tab.
Save
Click Save. Formtorch begins delivering submissions immediately.
You can add multiple destinations on Pro. Each destination delivers independently — a failure on one sheet does not block others.
Row format
Each new submission appends one row. The column layout is:
| Column | Value |
|---|---|
submittedAt | ISO 8601 timestamp (UTC) |
submissionId | Formtorch submission ID |
formId | Formtorch form ID |
formName | Form display name |
isTest | true or false |
isSuspicious | true or false |
| (your fields) | One column per submitted field, alphabetically sorted |
Nested objects are flattened with _ as a separator. For example, { "address": { "city": "New York" } } becomes a column named address_city. Underscores in field names are escaped to __ to prevent collisions.
Values are stored as plain text — Google does not evaluate them as formulas, so inputs starting with =, +, or @ are safe.
What gets skipped
Formtorch does not append a row for:
- Spam submissions: detected by TorchWarden and suppressed before delivery
- Test submissions: submitted with
_test=true - Over-quota submissions: stored locked and delivered after a plan upgrade
Suspicious submissions (flagged but not definitively spam) are delivered normally — consistent with how email notifications and webhooks behave.
Delivery status
Google Sheets deliveries use the same async pipeline as webhooks and email notifications. Each delivery is tracked individually.
To check delivery status for a submission:
- Open the submission in the dashboard.
- Look at the Integrations section. It shows the delivery status for each Google Sheets destination.
If a delivery fails, Formtorch retries automatically. After 6 attempts (1 initial plus 5 retries), the delivery is marked permanently failed.
Common transient failures (Google rate limits, temporary outages) are retried automatically. Permanent failures (spreadsheet deleted, permissions removed) stop retrying immediately.
Reconnecting after access is revoked
Google can revoke your connection if you remove Formtorch from your Google account, change your password, or your token expires.
When this happens:
- Settings → Integrations shows a warning badge on the Google row and a Reconnect button.
- Affected form destinations show a warning linking to the reconnect flow.
Click Reconnect and complete the OAuth flow again. Your existing destinations are preserved and resume delivering once the connection is restored.
Disconnecting
To disconnect your Google account, go to Settings → Integrations and click Disconnect on the Google row.
Disconnecting does not delete your form destinations. If you reconnect later, deliveries resume.
Disconnecting stops all Google Sheets deliveries immediately. Pending deliveries that haven’t been processed yet will fail.
Troubleshooting
No rows are appearing in my sheet
Check the delivery status on the submission in the dashboard. If it shows an error, the most common causes are:
- The spreadsheet was deleted or moved to Trash.
- You removed Formtorch’s access in Google account settings.
- The sheet tab was renamed or deleted after the destination was created.
Rows are duplicated
In rare cases where a network timeout occurs after a row is written but before Formtorch records the success, the next retry will write a duplicate. Each row includes submissionId so you can identify and remove duplicates. Full deduplication is on the roadmap.
I can’t see my spreadsheet in the picker
The picker lists spreadsheets from your connected Google account’s Drive. If a spreadsheet is in a shared drive you don’t own, it may not appear. Create the spreadsheet under your own account and use that instead.
I need to send to a different Google account
Go to Settings → Integrations, disconnect the current account, then reconnect with the Google account you want to use.