---
title: "Send events to Google Sheets"
locale: en
url: https://tlg.builera.app/en/docs/integrations/google-sheets
verified: 2026-10-24
app_version: "2.0"
---

# Send events to Google Sheets

Use the in-app Google Apps Script guide to turn webhook events into spreadsheet rows.


You can send events to Google Sheets using a webhook and Google Apps Script, following the in-app guide. This is not a two-way Google sync connection or a direct export into a linked spreadsheet.

## Who can do this

You need integration management permissions in Telegram-Auto and permission to edit the spreadsheet and deploy Apps Script on the Google side.

An AI assistant can help configure a webhook within its granted scope. Connecting it to Telegram-Auto does not automatically give it Google permissions.

## Before you start

- A test spreadsheet with no real data.
- Permission to deploy an Apps Script web app.
- A separate secret string for the receiver URL.
- A decision on which events and data fields may be sent to Google.

> [!IMPORTANT]
> The in-app recipe uses a secret in a URL parameter because Apps Script cannot read the signing headers in this deployment method. This is not equivalent to Standard Webhooks signature verification.

If you need full signature verification, use an intermediary service following the [webhook receiver guide](https://tlg.builera.app/en/docs/integrations/webhook-receivers), then have that service write to Sheets.

## Where to start

Open **Settings → Integrations** and choose **Send people to Google Sheets**. The app takes you to **API documentation**, on the **Google Sheets** tab.

![Guide to sending events to a spreadsheet with Apps Script](https://tlg.builera.app/docs-media/en/google-sheets-recipe.webp "Google Sheets recipe")

## Steps

1. Open the test spreadsheet.
2. Open the spreadsheet's Apps Script editor.
3. Copy the code from the **Google Sheets** tab.
4. Replace the sample secret with your own.
5. Deploy the script as a web app that can receive external requests.
6. Copy the deployment URL.
7. Open **Settings → Webhook**.
8. Create a webhook pointing to the deployment URL with the secret parameter.
9. Choose the events you need.
10. Open the webhook and choose **Send test**.
11. Check for a new row in the spreadsheet.

Do not put a URL containing a secret in screenshots, public logs or messages. When sharing configuration for support, hide the query parameters too.

## Result

The sample creates or uses a sheet named `Telegram`, then appends rows from CloudEvents events. Sample columns include time, event type, event ID, person's name, destination stage and message content when available.

The data received depends on the event, content mode and webhook owner's permissions. An empty cell does not by itself prove that the webhook failed.

## Check

Compare both the webhook's **Deliveries** tab and the spreadsheet. HTTP success only means the receiver returned a successful response. You still need to check that the row and its contents were written correctly.

The sample recipe is not a complete sync system. Before using it with real data, add event ID deduplication and spreadsheet write error handling.

## If something goes wrong

- No row: check the deployment URL, access permissions and delivery.
- Duplicate rows: add deduplication, especially for retries or replay.
- Success response but no write: check the script. The sample returns the text `forbidden` when the token is wrong. Do not use response text as proof of successful authentication.
- Redirect error: do not assume the sender will follow redirects from the deployment destination. Check the actual delivery error.

There is no basis for describing this feature as importing people through a public Google Sheet link.

## Do it with the API or MCP

Create a webhook with [webhooks.create](https://tlg.builera.app/en/docs/reference/rest/webhooks.create), test it with [webhooks.test](https://tlg.builera.app/en/docs/reference/rest/webhooks.test), or use MCP `webhooks_create` and `webhooks_test` when available in the profile.

[people.export](https://tlg.builera.app/en/docs/reference/rest/people.export) is a separate operation for exporting people data. It does not write directly to Google Sheets.

