Send form responses straight to Google Sheets
Connect a form to Google Sheets once and every submission appends a new row, in order, as it arrives. You authorize your own Google account, pick the spreadsheet and the tab, and stop exporting things by hand. It costs nothing on the free plan, which has no cap on responses.
The short answer
To send a form to Google Sheets with Upform, open the form's Connect panel, authorize Google Sheets with your own Google account, choose a spreadsheet and a sheet tab, then match each question to a column. From the moment you publish, every submitted response appends one row. There is no row cap, no response cap and no upgrade wall in front of it: every integration ships on the free plan, next to unlimited forms, unlimited responses and all 21 question types.
1
New row per response
5
Steps to connect
∞
Responses, free plan
$0
Cost of the integration
How it works
Connect a form to Google Sheets in five steps
No scripts, no add-ons, no spreadsheet ID pasted out of a URL. The whole setup happens in the Connect panel of the form you already built.
Connect your Google account
Open the form, go to the Connect panel and choose Google Sheets. Google asks you to authorize Upform against your own account over OAuth. There is no API key to store and nothing to share with the rest of the team.
Pick a spreadsheet
Choose any spreadsheet the connected account can already open. Upform lists them for you, so a new sheet for a new campaign takes about four seconds to select.
Pick or create a sheet tab
Write into an existing tab or start a clean one. One tab per form keeps the header row honest and keeps two forms from fighting over the same columns.
Map questions to columns
Each question in the form builder becomes a column. Match them to the headers your team already reads, and leave out anything the spreadsheet does not need.
Publish, then forget it
Publish the form on its public link or as an embed. Every new response appends a row at the bottom of the tab, in arrival order, for as long as the form is live.
Connect · Google Sheets
- Per-user OAuth: your account, your spreadsheets
- Disconnect at any time without touching the form
- Stack it with Slack, Notion or a webhook on the same form
The result
What the spreadsheet looks like at 2pm on a Monday
A header row you chose, and one row per response underneath it. Nobody on the team has to log into Upform to read the answers.
Q4 inbound leads · Responses
| Submitted at | Full name | Work email | Team size | Completed |
|---|---|---|---|---|
| 21 Sep 2026, 14:02 | Maya Okonkwo | maya@northgate.io | 11–50 | Complete |
| 21 Sep 2026, 14:26 | Tom Vasquez | tom@brightfold.com | 1–10 | Complete |
Example output. Every extra question you add to the form adds another column, in the order the questions appear in the builder.
What gets written
Every value Upform puts in the row
The mapping is predictable, which matters the moment someone builds a pivot table or a chart on top of the tab.
| Column | What lands in the cell | Example |
|---|---|---|
| Submitted at | The date and time the response was submitted, so the tab sorts by recency on its own. | 21 Sep 2026, 14:02 |
| One column per question | The question title becomes the header, the answer becomes the cell. Text, email, number, phone, date and address questions write plain values. | maya@northgate.io |
| Choice answers | The label the person picked. A multiple choice question puts its selected labels in one cell. | Design, Marketing |
| Rating and scale answers | The number behind the stars or the slider, so you can average the column. | 9 |
| Completion state | Whether the response reached the end of the form. Submissions are what append rows, so the sheet never fills with abandoned drafts. | Complete |
Questions that collect a document use file uploads, which are stored in Upform and scoped to the form that collected them. For anything you want to inspect rather than skim, the responses table has search, a form filter, a date filter and CSV export, and a row opens a side drawer with the full answer set.
Coming from Google Forms
Keep the sheet. Replace the form.
Most people asking how to connect a form to Google Sheets already have the sheet. Google Forms is genuinely good at this one thing: responses land in a linked spreadsheet with no setup at all. What it is not good at is the form, which looks like a Google product and asks every question on one page.
- Import an existing Google Form into Upform, questions and all
- Restyle it with your logo, colors, font and background
- Point it back at the same spreadsheet and carry on
The Google Forms import pulls a form into Upform. It is not a destination: Upform does not write answers back into Google Forms, because there is nothing useful to write them into. If you are weighing the two products rather than migrating, read the Google Forms alternative breakdown, or the longer list of Google Forms limitations that pushes teams to move in the first place.
Beyond the spreadsheet
If you need more than a sheet
A spreadsheet is a great archive and a poor workflow. Every integration below runs on the same free plan and connects with your own account, so you can add one alongside Google Sheets rather than instead of it.
Only Notion databases you explicitly share appear in the picker, and the n8n integration signs every request with an HMAC-SHA256 X-Upform-Signature header. The full list lives in the integrations directory.
Frequently asked questions
Does it update in real time?
Yes. The row is appended at the moment the response is submitted, not on an hourly sync and not when you remember to export. If the spreadsheet is open in a browser tab while someone is filling the form in, the new row appears underneath the last one on its own. There is no refresh button to press and nothing to schedule.
Can I connect more than one sheet?
Yes. Each form carries its own Google Sheets connection, so ten forms can write to ten different spreadsheets, or to ten tabs of the same one. You pick the spreadsheet and the tab per form in the Connect panel, and you can point a form somewhere else later by choosing a different destination. Most teams keep one tab per form so the header row stays meaningful.
What happens to partial responses?
A row is written when a response is submitted, so someone who opens the form and leaves half way through does not append a half-empty row to your sheet. They are still counted in Upform analytics as an incomplete, and the per-question drop-off funnel shows you the exact question they stopped on. That keeps the sheet clean and keeps the diagnosis where it belongs.
Do I need a paid plan for the Google Sheets integration?
No. Every integration is included on the free plan, which is $0 forever and comes with unlimited forms, unlimited responses, all 21 question types and advanced conditional logic. Pro is $12 a month and adds unlimited file storage, removes Upform branding and allows up to five team members. Online checkout is not live yet, so Pro accounts are set up manually and the team replies the same day.
Whose Google account does Upform connect to?
Yours. The connection is per-user OAuth: you authorize Upform against your own Google account, and it can only write to spreadsheets that account can already open. There is no shared service account and no API key to paste. Disconnect it whenever you like and the form keeps collecting responses in Upform, the rows simply stop arriving in the sheet.
Can I still export responses as a CSV?
Yes. The sheet is a live copy, not a replacement for your responses table. Inside Upform every form has a responses view with search, a form filter, a date filter and CSV export, and clicking a row opens a side drawer with every answer laid out in order. Use the sheet for the people who live in spreadsheets and the drawer when you need to read one response properly.
Get started
Build the form. Watch the rows arrive.
Start with a template, connect your Google account, and your spreadsheet fills itself from the first response onward.
No credit card. Unlimited forms and responses on the free plan.