Your forms
Google Sheets
Submits.dev can add each submission to a Google Sheet as a new row.
Connect a sheet
- Open your sheet in Google Sheets and press Share.
- Add this address as an Editor: click to copy
- Copy the sheet's URL from your browser.
- On your dashboard, open the form's Settings, paste it into Google Sheet URL and press Save settings.
- Press Test Sheet Connection. A green message means it worked.
Leave Sheet tab name blank to use the first tab, or enter a tab's name. Upper and lower case don't matter.
One sheet, one account
Every Submits.dev account writes through the same submitsdev-sheets@submits-dev.iam.gserviceaccount.com address, so a sheet can
belong to one account only. Your own forms can share a sheet, on the same tab or different tabs.
If you see "connected to another Submits.dev account", someone else's form already uses that
sheet: make a copy and connect the copy instead.
How rows are laid out
On an empty tab, the first row becomes the header:
_submitted_at | email | message | _spam_score | _status
When a submission has a field we haven't seen before, we add a column for it at the end of the header. You can reorder columns freely. If you rename a header, the next submission with that field adds a new column with the original name.
The _status column is VERIFIED for clean submissions and
SUSPECTED_SPAM for likely spam. Blocked spam never reaches the sheet.
Values stay exactly as typed
Every value a visitor sends is stored as text, so a zip code like 02134 keeps its zero, an
answer like 3/4 doesn't turn into a date, and something like =IMPORTXML(...)
is never run as a formula. The _submitted_at and _spam_score columns stay
a date and a number, so you can sort by them.
At most 100 columns
Each new field name adds a column, so a bot sending made-up field names could otherwise fill your sheet.
One submission adds at most 20 new columns, and a
tab stops growing at 100. Fields without a column of their own go into
one _extra column as JSON, and nothing is lost. A field that missed out gets its column the next
time it arrives, if there's room.
If rows stop arriving
Check that the sheet is still shared with submitsdev-sheets@submits-dev.iam.gserviceaccount.com as an Editor and that the tab
still exists, then press Test Sheet Connection. When Google is briefly down or busy, we retry for a
while. When Google says we have no access, or the sheet or tab doesn't exist, we don't retry, because
only you can fix that. Those submissions stay on your dashboard, and you can download them as CSV.
Once it's fixed, new submissions reach the sheet again.