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
- Create or open a Google Sheet.
- Open Extensions → Apps Script.
- Replace the default code with the script below and Save.
- 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).
- Copy the Web app URL (it ends in
/exec). - In Engine64, open the agent’s Webhooks page, find the Google Sheets card, paste the URL, and click Connect.
- 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