Choose a connection path

  • Fastest no-code path: send InstaChime `lead.created` to Zapier or Make, then add a Google Sheets row.
  • Self-owned low-maintenance path: create a Google Apps Script web app that receives the webhook and appends a row.
  • Direct API path: build a small bridge that authenticates to Google Workspace and calls `spreadsheets.values.append`.

Apps Script bridge example

function doPost(e) {
  var payload = JSON.parse(e.postData.contents);
  var lead = payload.lead || payload;
  var sheet = SpreadsheetApp.openById("SPREADSHEET_ID").getSheetByName("Leads");
  sheet.appendRow([
    new Date(),
    lead.id || "",
    lead.customer_name || "",
    lead.email || "",
    lead.phone || "",
    lead.source_platform || lead.source || "",
    lead.campaign || "",
    lead.message || "",
    lead.lead_score || "",
    lead.sentiment || ""
  ]);
  return ContentService.createTextOutput("ok");
}

Direct Sheets API shape

POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Leads!A:J:append?valueInputOption=USER_ENTERED
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{
  "values": [[
    "2026-05-27T05:00:00Z",
    "lead_uuid",
    "Jamie Lee",
    "jamie@example.com",
    "+15555550123",
    "google_ads",
    "Emergency demo campaign",
    "Need pricing today",
    82,
    "urgent"
  ]]
}

Verify

  • Send a sample webhook from `/integrations` and confirm a new row appears.
  • Capture a real sample lead and confirm row values match the InstaChime lead.
  • Confirm phone numbers are preserved as text when needed.
  • Confirm a failed sheet request creates a failed or retryable delivery row.
  • Keep the sheet ID and tab name stable after the integration is live.

Exact Zapier path

  • Create a Google Sheet with a tab named `Leads`.
  • Add a header row with `Created At`, `Lead ID`, `Name`, `Email`, `Phone`, `Source`, `Campaign`, `Message`, `Score`, and `Sentiment`.
  • Create a Zap with Webhooks by Zapier as the trigger and Catch Hook as the event.
  • Copy the Zapier webhook URL.
  • Open InstaChime `/integrations` and create a CRM webhook destination using that URL.
  • Send a sample delivery from InstaChime so Zapier can detect the payload.
  • Add a Google Sheets action: Create Spreadsheet Row.
  • Select the spreadsheet and `Leads` worksheet.
  • Map each `lead.*` field to the matching sheet column.
  • Test the Zap action and confirm a row appears.
  • Turn on the Zap.

Exact Make path

  • Create the Google Sheet and header row first.
  • Create a Make scenario with a Webhooks > Custom webhook trigger.
  • Copy the webhook URL and add it as an InstaChime CRM webhook destination.
  • Run the Make scenario once so it waits for sample data.
  • Send an InstaChime sample delivery.
  • Add Google Sheets > Add a Row.
  • Select the spreadsheet and worksheet.
  • Map `lead.id`, `lead.customer_name`, `lead.email`, `lead.phone`, `lead.source_platform`, `lead.campaign`, `lead.message`, `lead.lead_score`, and `lead.sentiment`.
  • Run once, confirm the row, then schedule/enable the scenario.

Exact Apps Script path

  • Open the target Google Sheet.
  • Go to Extensions > Apps Script.
  • Paste the Apps Script bridge code from this guide.
  • Replace `SPREADSHEET_ID` and sheet tab name with your actual values.
  • Deploy as a web app.
  • Set execution identity and access according to your Google Workspace policy.
  • Copy the deployed web app URL.
  • Add that URL as an InstaChime CRM webhook destination.
  • Send a sample delivery and confirm a row is appended.

Google Sheets troubleshooting

  • If rows do not append, confirm the worksheet tab name matches exactly.
  • If phone numbers lose plus signs, format the phone column as plain text.
  • If Zapier or Make cannot see fields, resend a sample delivery after the trigger is listening.
  • If Apps Script returns an auth page, confirm it is deployed as a web app with the intended access mode.
  • If columns shift, lock the header row and avoid inserting new columns in the middle without updating the mapping.

Official references

These vendor-owned pages explain the controls and requirements referenced in this guide.