FormThunder isn't open yet. This site describes the service as it will run at launch. Find out more

FormThunder
Menu

Save form submissions to Google Sheets with a 12-line script

FormThunder adds form submissions to Google Sheets by posting them to an Apps Script web app you deploy from the sheet itself. There's no Google login to grant FormThunder: the script runs in your account, and the form only knows its URL. Each submission becomes a row, and new fields become new columns. It needs the Pro plan.

Updated

Set it up

  1. Open your sheet, then Extensions, then Apps Script, and paste the script below.
  2. Choose Deploy, New deployment, type Web app. Execute as yourself, with access for anyone. Copy the URL ending in /exec.
  3. Add that URL to the form's Google Sheets setting and send a test. Check for a new row.
Apps Script
function doPost(e) {
  var data = JSON.parse(e.postData.contents);
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var width = Math.max(sheet.getLastColumn(), 1);
  var headers = sheet.getRange(1, 1, 1, width).getValues()[0].filter(String);
  Object.keys(data).forEach(function (key) {
    if (headers.indexOf(key) === -1) headers.push(key);
  });
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  sheet.appendRow(headers.map(function (key) { return data[key] === undefined ? "" : data[key]; }));
  return ContentService.createTextOutput("ok");
}
Set it through the API
curl -X PATCH https://formthunder.com/api/v1/forms/YOUR_FORM_ID \
  -H "Authorization: Bearer ft_live_..." \
  -H "Content-Type: application/json" \
  -d '{"integrations":{"sheets":{"enabled":true,"url":"https://script.google.com/macros/s/XXXX/exec"}}}'
What the script receives
{
  "submitted_at": "2026-11-05T09:30:00.000Z",
  "form": "Contact form",
  "name": "Priya Raman",
  "email": "priya@example.com",
  "message": "Do you take on small projects?"
}

What to know about Google Sheets

  • Editing the script doesn't change the live web app. Deploy a new version, or the old code keeps running.
  • Access must be set to anyone, because FormThunder calls the URL without a Google login. The URL is long and unguessable, so keep it private.
  • Apps Script runs under Google's quotas, which show up here as failed deliveries with the error Google returned.

Or ask your AI

An agent connected over MCP can set this up, send a test through it and read the result.

You, to your AI
Send submissions from my contact form to Google Sheets. Send a test and tell me whether it arrived.

Questions

Is this an OAuth connection to my Google account?

No. It's a web app URL you deploy yourself, and FormThunder never sees your Google account or any other sheet.

What happens when I add a field to the form?

The script above adds a new column header the first time that field arrives. Existing rows stay as they are.

Connect your form to Google Sheets

Integrations are on Pro at $12 a month and Agency at $39 a month. The form itself is free to start.