Google Sheets
Send each accepted submission straight into a spreadsheet. It takes about five minutes and needs no account connection — you deploy a tiny Google Apps Script bound to your sheet, and Senduler POSTs each submission to it.
1. Add the script to your sheet
Open your Google Sheet → Extensions → Apps Script, replace the contents with this, and Save:
function doPost(e) {
var lock = LockService.getScriptLock();
lock.waitLock(30000);
try {
var body = JSON.parse(e.postData.contents);
var fields = body.fields || {};
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Submissions') || ss.insertSheet('Submissions');
// Header row = receivedAt + field names (grows as new fields appear).
var headers = sheet.getLastRow() > 0
? sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
: ['receivedAt'];
Object.keys(fields).forEach(function (k) {
if (headers.indexOf(k) === -1) headers.push(k);
});
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
var row = headers.map(function (h) {
if (h === 'receivedAt') return body.receivedAt || new Date();
return fields[h] !== undefined ? fields[h] : '';
});
sheet.appendRow(row);
return ContentService.createTextOutput(JSON.stringify({ ok: true }))
.setMimeType(ContentService.MimeType.JSON);
} finally {
lock.releaseLock();
}
}
2. Deploy it as a Web App
Click Deploy → New deployment → Web app:
- Execute as: Me
- Who has access: Anyone
Authorize when prompted, then copy the Web app URL — it looks like:
https://script.google.com/macros/s/AKfyc.../exec
3. Connect it to your form
On the form's Webhooks tab, choose Google Sheets as the type and paste the Web App URL.
Senduler POSTs { receivedAt, formName, submissionId, fields } to the script, which appends a row.
Keep the URL private — like Slack, it's the shared secret. (A future update will add a native
"connect your Google account and pick a sheet" flow.)