Skip to Content
IntegrationsGoogle Sheets

Google Sheets

Engine64 can append a row to a Google Sheet every time a lead is captured. There’s no OAuth and no Google API key: you paste a short Apps Script into your sheet, deploy it as a Web App, and give Engine64 the resulting URL. Each lead becomes a row with these columns:

Received At · Name · Email · Phone · Message · Conversation

Setup

  1. Create or open a Google Sheet.
  2. Open Extensions → Apps Script.
  3. Replace the default code with the script below and Save.
  4. Click Deploy → New deployment. Choose type Web app, set Execute as to Me, and set Who has access to Anyone (required so Engine64 can POST without signing in).
  5. Copy the Web app URL (it ends in /exec).
  6. In Engine64, open the agent’s Webhooks page, find the Google Sheets card, paste the URL, and click Connect.
  7. On the new row in the Configured Webhooks list, click Send test to confirm a row appears in your sheet.

Apps Script

function doPost(e) { var body = JSON.parse(e.postData.contents); var sheet = SpreadsheetApp.getActiveSheet(); if (sheet.getLastRow() === 0 && body.columns) { sheet.appendRow(body.columns); } sheet.appendRow(body.values); return ContentService .createTextOutput(JSON.stringify({ ok: true })) .setMimeType(ContentService.MimeType.JSON); }

The script writes a header row the first time it runs (when the sheet is empty), then one row per lead.

Payload

Engine64 POSTs a row-shaped JSON body derived from the standard webhook envelope:

{ "version": "1", "event": "lead_captured", "timestamp": "2026-07-04T00:00:00.000Z", "columns": ["Received At", "Name", "Email", "Phone", "Message", "Conversation"], "values": ["2026-07-04T00:00:00.000Z", "Jo", "jo@example.com", "", "Do you open Sundays?", "https://app.engine64.ai/..."] }

columns and values line up index-for-index. Empty fields are sent as an empty string.

This integration currently logs the lead_captured event only.

Last updated on
Engine64 | Docs