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

1

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.

2

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");
}
3

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.

4

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.

5

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.

Build your form with AI in seconds

Start free

FAQ

Is there a native Google Sheets integration?+
No - YeetForm doesn't sync to Sheets directly. This page shows a webhook-to-Apps-Script recipe that gets you the same result: one row per response, appended automatically.
Will this work with Google Forms' 'Sheets destination' feature?+
No, that feature is specific to Google Forms. This recipe uses a Google Apps Script web app as its own endpoint, triggered by YeetForm's webhook, independent of Google Forms.
What if I add a new field to my form later?+
The script maps answers by field id and label, so it keeps working, but a brand-new field needs a line added to the script (or a small tweak) to appear as its own column - see the tips above.
Does this retry if the script fails?+
Yes - it's a normal webhook delivery under the hood, so a failed Apps Script response gets retried up to 3 times like any other webhook.