How to Send Form Submissions to Google Sheets

7 min read
Static Forms Team

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:

  1. A Static Forms Pro account (Google Sheets integration is a Pro feature). Upgrade here if you're on the Free plan.
  2. A Google account (any Gmail or Google Workspace account).
  3. 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:

  1. Creates a new spreadsheet in your Google Drive titled "StaticForms — (your account name)"
  2. Stores an encrypted refresh token so we can write rows on your behalf
  3. 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:

HTML
<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:

  1. 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_at and submission_id.

  2. Subsequent submissions: Each new submission is appended as a row, aligned to the existing header.

  3. 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 — default
  • April-2026 — for date-based organization
  • Landing-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

  1. Check that the integration is enabled (the toggle should be on).
  2. Verify you're using the correct account's API key — each account has its own connection.
  3. 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.