Webhook tool

Google Sheets AI voice agents that log every call as a row

The agent takes the call, and a webhook tool sends the caller's name, number and reason to a service of yours, which appends them as a row with the Sheets API.

Call intake agent

Takes the caller's details and logs them to the sheet.

Instructions

Ask for the caller's name and what they are calling about. Before the call ends, log the call with a one-line reason and the outcome, which is answered, callback requested or message taken.

Connected tools

  • Log callWebhook

What a Google Sheets AI voice agent can do

Open one to watch a call. The grey lines are the tools the agent calls mid-sentence.

Name, phone number, reason and outcome go into the columns you choose, one row per call in the order the calls came in.

Tool definitions

Webhook tools go to POST /v1/agents/tools. Transfers are a system tool on the agent. Replace the placeholder values in capitals with your own.

Webhook

Log call

Sends the call details to your service, which appends a row.

Show the JSON definition
log_call
{
  "type": "webhook",
  "name": "log_call",
  "description": "Logs this call as a new row in the call sheet. Call it once, near the end of the call.",
  "pre_tool_speech": "auto",
  "execution_mode": "async",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.your-company.com/sheets/call-log",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "caller_name": {
          "type": "string",
          "description": "The caller's full name, as they gave it."
        },
        "phone": {
          "type": "string",
          "dynamic_variable": "system__caller_id"
        },
        "reason": {
          "type": "string",
          "description": "Why they called, in one line."
        },
        "outcome": {
          "type": "string",
          "enum": [
            "answered",
            "callback_requested",
            "message_taken"
          ],
          "description": "How the call ended."
        }
      },
      "required": [
        "caller_name",
        "reason",
        "outcome"
      ]
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_SERVICE_TOKEN"
      }
    }
  }
}

Set it up

No native connector. The tool calls a service of yours, which signs in to Google with a service account or OAuth and calls the Sheets API. Vendor details read in November 2026.

  1. Create a service account

    In Google Cloud, enable the Google Sheets API and create a service account. Share the spreadsheet with the service account's email address, as you would with a person.

  2. Run the append endpoint

    Your service gets an access token with the spreadsheets scope, then calls spreadsheets.values.append with the sheet's ID, a range such as Calls!A1, and the row as a values array.

  3. Add the tool

    Point the tool at your service with a bearer secret. The phone parameter reads system__caller_id, so the model never sees or fills it.

  4. Test with a real call

    Call the agent and check that the new row appears under the last one.

Before you build

Why not call Google directly

Google access tokens last an hour, and a webhook tool sends the token you stored, so it fails once that expires. Your service gets new ones. API keys only reach public data.

Send RAW and INSERT_ROWS

RAW stores the caller's words as text. USER_ENTERED turns a leading = into a formula and phone numbers into numbers. INSERT_ROWS adds a row; OVERWRITE writes over cells below.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

Google Sheets AI voice agent FAQs

Can an AI voice agent add rows to Google Sheets?

Yes, through a small service of yours. A Cartesia webhook tool sends the caller's name, number and reason to the service, which calls spreadsheets.values.append and adds one row per call. There is no native Google Sheets integration.

Why can't the tool call the Sheets API directly?

Google access tokens last an hour, and a webhook tool sends the token you stored, so the calls start failing once it expires. Your service gets new tokens with a service account. API keys only reach public data, so they cannot write to a private sheet.

Can I skip running a service?

Only by putting something else in the middle. The Zapier, Make and n8n pages show a webhook tool sending call details to an automation, which can add the row for you.

Which valueInputOption should the service send?

RAW, with insertDataOption set to INSERT_ROWS. RAW stores the caller's words as text, while USER_ENTERED turns a leading = into a formula and phone numbers into numbers. INSERT_ROWS adds a new row, and OVERWRITE writes over cells below the table.

How much does a voice agent that logs to Sheets cost?

Agents run at $0.03/min, plus LLM usage and telephony. You also host the small service that appends the row, and the Sheets API calls run under your own Google Cloud project.

Get started today

Talk to an expert.

Connect with a member of our team and learn how Cartesia can help you build world-class voice experiences.

Contact Sales

Start building.

Access our models via API and bring a voice agent into production in minutes.

Try Cartesia