Google Sheets integration

Last updated: May 24, 2026

Auto-append every new survey response to a Google Sheet using a tiny Apps Script webhook. Takes ~3 minutes.

1. Create the Apps Script

Open your target Google Sheet → Extensions → Apps Script → paste:

function doPost(e) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Responses')
             || SpreadsheetApp.getActiveSpreadsheet().insertSheet('Responses');
  const body = JSON.parse(e.postData.contents);
  const data = body.data || body;
  sheet.appendRow([new Date(), JSON.stringify(data)]);
  return ContentService.createTextOutput(JSON.stringify({ ok: true }))
    .setMimeType(ContentService.MimeType.JSON);
}

2. Deploy as a web app

  1. Click Deploy → New deployment.
  2. Type: Web app. Execute as Me. Who has access: Anyone.
  3. Copy the Web app URL (looks like https://script.google.com/macros/s/…/exec).

3. Connect in Softstack Research

Go to Settings → Integrations → Google Sheets, paste the URL, and click Save. Hit Send test to confirm a row appears.

What gets sent

{ "event": "campaign.completed", "data": { ... }, "sent_at": "..." }

Each Softstack Research workspace event (report ready, response milestones) is POSTed to your script. For per-response streaming, use the REST API or a Zapier zap.