The Google Sheets integration appends each accepted response to a spreadsheet the connected Google account can edit, one row per delivery.
What syncs
A Fillo-created sheet begins with Submitted at, Response ID, and Fillo Event, followed by one column per field. Fillo Event is Created for the first accepted submission and Updated for each later in-place edit. Submitted timestamps and date fields are written as native Sheets date values, and calculated fields as native numbers. Other answers use the same human-readable formatting as the response grid and CSV.
Files stay in connected storage; the sheet gets the formatted file reference, not the file bytes.
Connect a new sheet
- Open Settings > Connections and connect Google.
- Open the form's Settings > Response destinations.
- Choose Google Sheets and create a new spreadsheet.
- Fillo creates
Fillo - <form name>with a Responses tab. - Submit a real test response and open the sheet from form settings.
After setup, Fillo confirms Google Sheets is ready and names the destination where new responses will be added.
One Google connection can also support Google Drive storage, but enabling Sheets doesn't change where uploaded files live.
Use an existing sheet
Choose a spreadsheet the connected account can edit. A supported target has one table whose header row starts in cell A1. When the copied URL includes a tab gid, Fillo writes to that tab; otherwise it uses the first tab.
Fillo matches existing headers to field labels or IDs, ignoring case and repeated spaces. It leaves unrecognized owner-managed columns blank and appends the required Fillo columns after the current header. Renaming the tab is safe — Fillo tracks the stable tab ID. Deleting it isn't.
| Fillo value | Sheet column | Notes |
|---|---|---|
| Submission time | Submitted at | Native date-time value |
| Response ID | Response ID | Used to detect an already committed retry |
| Delivery event | Fillo Event | Created for the original response, Updated for an in-place edit |
| Number, rating, scale | Field label or ID | Formatted numeric value |
| Calculated | Field label or ID | Native numeric cell, so SUM and AVERAGE work; the field's prefix and suffix stay display-only in the grid, CSV, and emails |
| Date | Field label or ID | Native date value |
| Choice | Field label or ID | Visible option label |
| Multi-value or structured field | Field label or ID | Human-readable formatted text |
Change the destination sheet
Open the form's Settings > Response destinations and choose Change sheet. You can create a new spreadsheet or choose a different existing sheet.
Existing rows stay in the old sheet — changing the destination doesn't copy or delete them. New responses, deliveries already queued when you save the replacement, and later replays all go to the replacement sheet. After the change, the ready confirmation names the sheet and tab that will receive new responses.
Code-defined forms
The schema can live in code, but the Google OAuth connection and destination selection are workspace management settings. Sync and publish the form, then connect its sheet in the dashboard. Keep field IDs stable — Fillo captures the column map when the integration is enabled.
Delivery behavior and limits
Sheets delivery is append-only: an update-in-place response appends another row marked Updated instead of editing the first Created row. Existing destinations gain the Fillo Event column automatically on their next delivery; an owner-created column named Event remains untouched. A destination whose persisted Fillo plan already owns the earlier Event marker keeps using it, so this naming hardening doesn't break active sheets. Delivery is at least once. For a failed creation delivery, Fillo checks the Response ID column before another append — but a commit on Google's side followed by an ambiguous network failure can still require duplicate-aware downstream work.
Google account access and API quotas apply independently of the Fillo plan. The integration is available on every Fillo plan. Removing it stops new rows; it doesn't delete the spreadsheet or existing rows.
Troubleshooting FAQ
Why are my fields in new columns?
The existing header didn't match the field label or ID. Either rename the header and reconnect, or keep the appended canonical column.
Why did the connection reject my tab?
The table must start at A1. Move the header to row 1 and column A, or connect a fresh tab.
Why did delivery stop after a sheet edit?
Open the form's Activity page and inspect the Google Sheets error. Choose Manage destinations to reconnect Google or use Change sheet, then return to Activity and choose Retry now. Verify the replacement receives the queued and retried rows before closing the incident.
Related
- Google Sheets sync stopped: Diagnose credentials, deleted tabs, and layout drift.
- Delivery health and replay: Replay only the failed Sheets backlog after repair.
- Exports: Download the same filtered response set as CSV.