Skip to content
All integrations
LiveAutomationSends call data

PyAI x Google Sheets

Every completed call becomes a row. No CRM required.

Share your sheet with a Google service account (a robot email address) and PyAI appends one row per completed call: event, timestamp, call id, status, the TL;DR, summary, next steps, and caller number (or the AMD verdict columns). Filters, pivots, and charts work on call data like any other rows, because they are.

Status
Live
Direction
PyAI to Google Sheets
Setup
Console, no code
Cost
Included

What lands in your sheet

One appended row per completed call, inserted into the tab you name. Recap events carry the summary fields; AMD events carry the verdict fields, so one tab can collect both cleanly.

The row after a rescheduling call

recap.call.completed | 2026-08-01T09:13:20Z | call_8fK2mQ9xR4
completed | support_v1
Customer asked to reschedule Friday's installation
The customer called to move their appointment...
Confirm the new slot by SMS
15551234567

Setup, end to end

  1. 1

    In Google Cloud, create a service account and download its JSON key.

  2. 2

    Share your spreadsheet with the service account's email as an Editor.

  3. 3

    In the PyAI console, open Integrations and choose Google Sheets, then paste the JSON key, the spreadsheet id, and the tab name.

  4. 4

    Press Test; a sample row lands in the tab. From the next completed call, rows append automatically.

Built into every connection

Delivery you can prove

Verified, and never twice

Every delivery carries proof it is really from us (the X-PyAI-Signature header, an HMAC your tools can verify) and a unique receipt id (the Idempotency-Key), so a retry can never post the same call twice.

Retried, then shown to you

If your endpoint hiccups, we retry with backoff (eight attempts over about twenty minutes). Still failing? The exact error waits on the integration card in your console, not in a log you never read.

Your credentials stay yours

Tokens, secrets, and webhook URLs are encrypted at rest and masked everywhere. They never appear in the messages we send.

Included, no extra fees

Integrations come with your Recap or AMD usage. There is no per-connection or per-delivery charge.

FAQ

How is the spreadsheet secured?

Access runs through your own service account: PyAI signs hourly access tokens with its key and calls the Sheets API directly. The JSON key is encrypted at rest, the private key never appears on any read, and you can revoke access any time by unsharing the sheet.

Which columns land per row?

Recap rows: event, occurred_at, call_id, status, pack_id, tldr, summary, next_steps, customer_phone. AMD rows: event, occurred_at, call_id, status, answered_by, answered_by_twilio, confidence, decision_ms, reason, session_label.

What happens when the tab is renamed or the share is removed?

The append fails visibly: the error sits on the integration card with retries already attempted (eight tries over about twenty minutes). Fix the tab or the share and the next delivery succeeds.

What does the Google Sheets integration cost?

It is included with your Recap or AMD usage. There is no per-row or per-connection fee from PyAI.

Connect Google Sheets to PyAI today.

An instant sandbox key lets you test every delivery without billing. Create an account when you want saved projects, and fund a live key for production traffic.

Agents is live in beta. Sandbox keys have daily limits and never touch billing.