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
- Open your sheet, then Extensions, then Apps Script, and paste the script below.
- Choose Deploy, New deployment, type Web app. Execute as yourself, with access for anyone. Copy the URL ending in /exec.
- Add that URL to the form's Google Sheets setting and send a test. Check for a new row.
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");
}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"}}}'{
"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.
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.