Integrations
Send form responses to Google Sheets
There's no native Google Sheets sync in YeetForm today, but you can get the same result - one spreadsheet row per response, appended automatically - with a small Google Apps Script and a webhook. This page walks through the exact script (about 15 lines), how to deploy it as a web app, and how to point a YeetForm webhook at the resulting URL. It takes a few minutes and needs no server of your own.
Setup
Add a webhook integration
Google Sheets has no native YeetForm connector, so the bridge is a webhook: in the form's Integrations tab, add a Webhooks endpoint pointing at a Google Apps Script web app URL.
Create the Apps Script
In your target Sheet, open Extensions → Apps Script, paste the script below, and deploy it as a web app (Execute as: Me, Who has access: Anyone with the link). Use the deployment URL as your webhook endpoint.
function doPost(e) {
var payload = JSON.parse(e.postData.contents);
if (payload.event !== "response.created") return ContentService.createTextOutput("ignored");
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var labels = {};
(payload.fields || []).forEach(function (f) { labels[f.id] = f.label; });
var row = [payload.response_id, payload.submitted_at];
Object.keys(payload.answers).forEach(function (id) {
row.push(labels[id] || id, payload.answers[id]);
});
sheet.appendRow(row);
return ContentService.createTextOutput("ok");
}Deploy and grab the URL
Deploying creates a URL like https://script.google.com/macros/s/.../exec - paste that into YeetForm's webhook field from step 1.
Send a test response
Submit the form (or use the test button on the webhook integration) and confirm a new row lands in the sheet with the answers in order.
Keep the sheet and form in sync
If you add or remove form fields later, update the script's column mapping - it reads answers by field id, not position, so it won't silently misalign existing columns, but a new field needs a new line in the script.
Tips
- →Use the response's response_id as a dedupe key in the sheet (skip appending a row if one with that id already exists), since a retried webhook delivery resends the same response.
- →Map columns from the payload's fields array (id to label) instead of hardcoding field ids, so the script survives you renaming or reordering fields.
- →This is a webhook recipe, not a native integration - if the Apps Script quota or your account has issues, rows stop appearing silently; check the form's Integrations tab for delivery status instead of only watching the sheet.