How to Send Form Submissions to Google Sheets
Spreadsheets are the original data tool. Whether you're tracking leads, collecting RSVPs, or logging support requests, having every form submission land in a Google Sheet gives you instant access to filter, sort, chart, and share the data with your team — all without writing a line of code.
Today we're launching a native Google Sheets integration for Static Forms. Connect your Google account with one click, and every submission is appended as a new row in a dedicated spreadsheet. No Zapier. No Make. No Google Apps Script. Just your forms and your sheet.
What You'll Learn
- How to connect Google Sheets to your Static Forms account
- How form fields become spreadsheet columns
- How to manage multiple sheets for different accounts
- Troubleshooting common issues
Prerequisites
Before you begin, make sure you have:
- A Static Forms Pro account (Google Sheets integration is a Pro feature). Upgrade here if you're on the Free plan.
- A Google account (any Gmail or Google Workspace account).
- At least one verified account in your Static Forms dashboard.
Already have all of these? Let's get started.
Step 1: Open the Integrations Page
Log into your Static Forms dashboard and navigate to Settings. Select the account you want to connect, then click the Integrations tab in the account navigation.
You'll see three integrations listed: Webhooks, Google Sheets, and Slack (coming soon). Click on the Google Sheets card to expand it.
Step 2: Connect Your Google Account
Click the Connect Google Sheets button. You'll be redirected to Google's standard OAuth consent screen where you'll be asked to grant two permissions:
- Google Sheets — so we can create a spreadsheet and append rows
- Email address — so we can display which Google account is connected
After you authorize, you'll be redirected back to your integrations page with a success confirmation.
What Happens Behind the Scenes
When you connect, Static Forms:
- Creates a new spreadsheet in your Google Drive titled "StaticForms — (your account name)"
- Stores an encrypted refresh token so we can write rows on your behalf
- Enables the sync — the very next form submission will start populating your sheet
You don't need to create the spreadsheet yourself, share it with a service account, or configure anything in the Google Cloud Console.
Step 3: Verify the Connection
Back on the integrations page, you'll see the Google Sheets card now shows:
- Connected as — the Google email you authorized with
- Open spreadsheet — a direct link to your sheet in Google Drive
- Last synced — timestamp of the most recent row append
- Send test row — a button to push a test submission immediately
Click Send test row to confirm everything works. Open the spreadsheet — you should see a row with test = true and a timestamp.
Step 4: Submit a Real Form
Now submit a form using your account's API key (via your website, a curl command, or any HTTP client). Within seconds, a new row appears in the spreadsheet.
Here's a simple HTML form you can drop into any page. Replace YOUR_API_KEY with your account's API key:
<form action="https://api.staticforms.dev/submit" method="POST">
<input type="hidden" name="apiKey" value="YOUR_API_KEY" />
<input type="hidden" name="redirectTo" value="https://yoursite.com/thank-you" />
<label for="name">Name</label>
<input type="text" id="name" name="name" required />
<label for="email">Email</label>
<input type="email" id="email" name="email" required />
<label for="message">Message</label>
<textarea id="message" name="message" rows="4" required></textarea>
<button type="submit">Send</button>
</form>Submit the form, then check your spreadsheet — you'll see a new row with columns for submitted_at, submission_id, name, email, and message. Every field in the form becomes a column.
How Dynamic Columns Work
One of the best things about our integration is that you never need to configure column mapping. Here's how it works:
First submission: Static Forms reads your form data keys (
name,email,message, etc.) and writes them as the header row. Two meta-columns are always prepended:submitted_atandsubmission_id.Subsequent submissions: Each new submission is appended as a row, aligned to the existing header.
New fields appear: If a later submission includes a field that didn't exist before (say
phone), Static Forms appends it as a new column at the end of the header row. Earlier rows will have blank cells for that column — just like you'd expect.
This means your spreadsheet schema evolves with your form. Add a field to your HTML form, and the column appears on the next submission. No reconfiguration needed.
Managing the Integration
Enable / Disable Sync
Toggle the sync switch on the integration card to pause or resume row delivery. Your spreadsheet stays intact — we just stop writing to it while disabled.
Change the Sheet Tab
By default, rows go to a tab called Submissions. You can change this in the integration card. If the tab doesn't exist yet, Static Forms creates it on the next submission.
This is useful if you want to organize data by month or campaign:
Submissions— defaultApril-2026— for date-based organizationLanding-Page-Leads— for campaign-specific tracking
Disconnect
Click Disconnect to revoke the connection. Your spreadsheet remains in your Google Drive with all existing data — only the live sync is removed. You can reconnect at any time, which creates a new spreadsheet.
Per-Account Connections
Each account in Static Forms has its own independent Google Sheets connection. This means you can:
- Connect different Google accounts to different forms
- Have separate spreadsheets for your contact form vs. your job application form
- Give team members access to specific spreadsheets without sharing your entire dashboard
Navigate to each account's Integrations tab to set up its connection independently.
Common Use Cases
Lead Generation
Connect your landing page form to Google Sheets and share the spreadsheet with your sales team. They see leads the moment they come in, with no dashboard login required.
Event RSVPs
Create a simple RSVP form, connect it to Sheets, and use Google Sheets' built-in COUNTA() function to track attendance in real time.
Support Requests
Log every support request as a row. Use conditional formatting to highlight unresolved tickets, and add a "Status" column manually for your team to update.
Data Export & Analysis
Unlike email-based form submissions, spreadsheet data is instantly sortable, filterable, and chartable. Use Google Sheets' pivot tables, QUERY() function, or connect to Google Data Studio for reporting dashboards.
Troubleshooting
"Last error" appears on the integration card
If a submission fails to sync, the error and timestamp are displayed on the card. Common causes:
- Token expired or revoked: Your Google authorization was revoked (e.g., from Google's security settings). Click Disconnect and then Connect Google Sheets again.
- Spreadsheet deleted: If you deleted the spreadsheet from Google Drive, disconnect and reconnect to create a new one.
- Sheet tab renamed or deleted: If you renamed or deleted the tab in Google Sheets, update the tab name in the integration card to match, or let Static Forms auto-create it.
Errors never block form submission delivery — your email notifications and webhooks continue working normally even if the Sheets sync fails.
Form submissions arrive but no row appears
- Check that the integration is enabled (the toggle should be on).
- Verify you're using the correct account's API key — each account has its own connection.
- Click Send test row to confirm the connection is still active.
I want to use an existing spreadsheet
The current integration auto-creates a new spreadsheet on connect. If you need to write to an existing sheet, you can use our Webhook integration with Zapier or Make instead, which offer full control over the destination.
Google Sheets vs. Webhooks vs. Zapier
Not sure which integration to use? Here's a quick comparison:
| Google Sheets (Native) | Webhooks | Zapier/Make | |
|---|---|---|---|
| Setup time | 30 seconds | 2 minutes | 5-10 minutes |
| Code required | None | Endpoint needed | None |
| Cost | Free (Pro plan) | Free (Pro plan) | Zapier/Make subscription |
| Destination | Google Sheets only | Any HTTP endpoint | 5,000+ apps |
| Column mapping | Automatic | You parse the JSON | Visual mapper |
| Best for | Quick spreadsheet logging | Custom backends | Multi-step workflows |
For most users who just want their form data in a spreadsheet, the native integration is the fastest path.
What's Next
We're continuing to expand our integrations. Slack notifications are next on the roadmap, followed by more native database connectors. If there's an integration you'd like to see, let us know.
Ready to get started? Log in to your dashboard and connect Google Sheets to your first account today.
Google Sheets integration is available on all Pro and Advanced plans. View pricing to learn more about Static Forms plans.
Related Articles
How to Send Form Submissions to Slack in Under 2 Minutes
Step-by-step tutorial to route every form submission straight into a Slack channel. No Zapier, no custom bot, no incoming webhook setup — just connect and go.
Adding Contact Forms to Static Websites Guide
Learn how to easily add fully functional contact forms to your static website without backend code using a form endpoint service.
Getting Started with Static Forms
Learn how to quickly integrate Static Forms into your static website to handle form submissions without any server-side code.