Databases and spreadsheets
In developmentSend form submissions to Google Sheets
A spreadsheet is still the fastest way to sort, filter and share a pile of submissions, and everyone on the team already knows how to use one. Google Forms gets you a sheet but not your own markup. This gets you both: your form, your styling, rows appended to your sheet.
The native Google Sheets destination is still being built. The steps below use a webhook, which works today and needs no change to your form once the adapter ships.
What lands in Google Sheets
- One appended row per submission
- Columns matched to your existing header row by name
- New fields appended as new columns rather than silently dropped
- Spam quarantined before it reaches the sheet
Setup
Prepare the sheet
Create a header row whose labels match your form field names. Header matching is what keeps columns aligned as the form evolves.
Add a webhook destination today
Point a WebForms webhook at a Google Apps Script web app or a function using the Sheets API. Sample below.
Switch to the native adapter when it lands
The Google Sheets destination will connect with OAuth, let you pick a spreadsheet and tab, and map headers automatically.
Google Sheets example
Swap in your own endpoint and these run as-is.
Google Apps Script, deployed as a web app with access set to anyone. Paste the deployment URL into a webhook destination.
function doPost(e) {
const body = JSON.parse(e.postData.contents);
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName("Submissions");
const headers = sheet
.getRange(1, 1, 1, sheet.getLastColumn())
.getValues()[0];
// Match on header name so reordering columns never scrambles the data.
const row = headers.map(function (h) {
if (h === "Submitted at") return new Date();
return body.data[h] || "";
});
sheet.appendRow(row);
return ContentService.createTextOutput("ok");
}Worth knowing
- The native Google Sheets destination is in development. This page describes the Apps Script route, which works today.
- Apps Script web apps must be deployed with access set to anyone, or the POST is redirected to a login page and never arrives.
- Matching on header names rather than column index means reordering columns in the sheet does not scramble future rows.
Google Sheets form FAQ
Today, deploy a small Apps Script web app and point a WebForms webhook destination at its URL. A native Sheets adapter with OAuth is in development.
It is your own markup, styling and validation instead of a Google-branded page, with layered spam filtering and delivery to other destinations at the same time. If you are happy with a Google-hosted form, Google Forms is fine.
Add a matching header to the sheet and it populates from the next submission. Fields without a header are stored in the dashboard and never lost.
Other destinations
Send your next form submission to Google Sheets
Free for 300 submissions a month. Endpoint in under a minute, no card required.
Start free