> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chatnorris.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Sheets

> How to connect Google Sheets to a ChatNorris agent and configure the Action that adds a row to your spreadsheet for each confirmed contact, for each Lead Form submission, or when the lead moves to a status, and that can keep the row up to date.

# Google Sheets

With the **Google Sheets** Action, every contact your ChatNorris agent captures is logged in a Google spreadsheet. When a visitor leaves their email or phone (in the chat, in a Lead Form, or from any channel), the agent adds a row with the data you choose: name, email, phone, your Lead Form fields, the channel, and the link to the conversation, among others.

It's the simplest way to have your leads in a place your whole team already knows how to use, without exporting anything by hand or paying for a CRM.

## Requirements

* A ChatNorris account on any plan. Google Sheets is included in all of them, including **Free**. You can see the plans at [chatnorris.ai/pricing](https://chatnorris.ai/pricing).
* At least one agent created in ChatNorris. If you don't have one yet, follow [Create an agent](https://docs.chatnorris.ai/en/guias/crear-agente-wizard.md).
* A Google account (Gmail or Google Workspace).
* The **Owner** or **Admin** role in your ChatNorris organization.

## Connect your Google account

Each agent connects to one Google account. All of that agent's Google Sheets Actions use that same account.

**1. Open the agent's Integrations hub**

In ChatNorris, go to `My agents → [your agent] → Integrations` and choose **Google Sheets** in the catalog.

**2. Click Connect with Google**

Google opens. Choose the account you want to work with.

**3. Accept the permission**

Google asks for access to the Drive files you choose with ChatNorris. Leave that permission checked: if you uncheck it, the connection isn't saved.

**4. Go back to ChatNorris**

Google returns you to the integration page, which shows **Connected as** and your email. With **Test connection** you can check that everything works. Continue with [Configure the Action](#configure-the-action).

> [!NOTE]
>
> ChatNorris only sees the spreadsheets you choose or create from ChatNorris, and in them it only reads the headers and adds rows. It doesn't see the rest of your Drive, and it doesn't change or delete existing rows.

## Configure the Action

Connecting Google doesn't write anything yet. To choose which spreadsheet the contacts go to:

**1. Create the Google Sheets Action**

Go to `My agents → [your agent] → Actions`, click **New action**, and choose **Google Sheets**.

**2. Choose when a row is added**

* **Every confirmed contact:** when the visitor leaves their email or phone, any way (Lead Form, conversation, or channel).
* **Only when a Lead Form is submitted:** you choose a specific Lead Form of the agent. Useful if the agent has several forms and you want each one to go to its own spreadsheet.
* **When the lead moves to a status:** you choose one or more statuses from your [Leads](https://docs.chatnorris.ai/en/guias/leads.md), for example "Qualified". The row is added when someone on your team gives the lead that status (in the list or on the board). If the contact is already in that status when it's confirmed, the row is added too.

In **Channels** you can limit the Action to contacts from some channels, for example only WhatsApp. With all of them checked, it applies to all.

**3. Choose the spreadsheet**

With **Pick a Google spreadsheet** you open the Google picker and choose a spreadsheet from your Drive. If you'd rather start from scratch, **Create a new spreadsheet** creates it in your Drive with the name you want (by default, "\[your agent] leads") and with the headers already written.

Then choose the **Tab** where the rows are added.

**4. Review the columns**

Set which value goes in each column (see [Columns](#columns)).

**5. Send a test row**

In **Test**, click **Send test row**. A row with sample data is added so you can check the spreadsheet and the columns. You can delete it afterwards.

**6. Enable the Action and save**

From then on, every contact that meets the condition you chose adds a row.

> [!TIP]
>
> An agent can have several Google Sheets Actions, each with its own spreadsheet. For example, the quotes Lead Form to one spreadsheet and the complaints one to another.

## Columns

Each column has a **Header** (the title in the first row) and a **Value** (what ChatNorris writes there).

* **If the tab already has headers**, ChatNorris reads them and matches each one with the corresponding value (for example, "Email" with the visitor's email). Review the matching and fix whatever you need.
* **If the tab is empty**, ChatNorris writes the headers in the first row. With **Use suggested columns** you start from: Date, Name, Email, Phone, Agent, Channel, Conversation, and ChatNorris ID.

The values you can choose are grouped like this:

| Group | What it includes |
| - | - |
| **This Lead Form** | The fields of the Lead Form chosen as the trigger. |
| **Contact** | The standard contact fields: name, email, phone, company, and the rest. |
| **Custom fields** | The custom columns you created in your [Leads](https://docs.chatnorris.ai/en/guias/leads.md). |
| **ChatNorris** | Date (in the agent's time zone), Agent, Channel, Conversation (the link to the conversation in ChatNorris), Lead status, and ChatNorris ID. |

At the end of the section is **Keep the row up to date** (see [What gets written and when](#what-gets-written-and-when)).

You can have up to 30 columns. A column with no value (**— Leave empty —**) stays empty in each row, in case you want to use it for your own notes.

> [!NOTE]
>
> The **ChatNorris ID** column is required: if Google fails and the row is retried, ChatNorris uses it to avoid writing the row twice.

Values are written under their header, even if you later reorder the columns or add others in the spreadsheet. Everything is saved as text: if a visitor writes something that looks like a formula (for example, starting with `=`), it's saved as text and isn't run.

## What gets written and when

* **One row per contact.** If the visitor confirms their details again, the row isn't repeated.
* **The row can be kept up to date.** By default it reflects the data at the moment it was added. If you turn on **Keep the row up to date**, when the lead changes status, gets new data in a conversation, or someone edits it in [Leads](https://docs.chatnorris.ai/en/guias/leads.md), ChatNorris rewrites its cells in the row it already added. It finds the row by the **ChatNorris ID** column and doesn't touch that column or your own columns. If you deleted the row by hand, it doesn't add it again.
* **It works on all channels:** web widget, WhatsApp, Instagram, Messenger, Telegram, Email, and the API.
* **Without the full conversation.** The spreadsheet receives the link to the conversation, never its content.

> [!WARNING]
>
> The spreadsheet stays in your Google account with your contacts' data, and anyone with access to it can see that data. Map only the fields you need and review who you share it with.

## Status and retries

The Action form has a **Status** block with the rows added, pending, and failed, the date of the last row, and the reason for the last failure.

* **Pending:** if Google doesn't respond, the row is retried automatically, with increasingly longer waits, up to 6 attempts over a few hours. If the Google account needs to be reconnected, the row waits without using up attempts, for up to 7 days.
* **Failed:** if the row can't be written (for example, because you deleted the spreadsheet or the tab, because ChatNorris lost access, or because the attempts ran out), Owners and Admins get an alert in the notifications bell with the reason.
* **Updated rows:** with **Keep the row up to date** on, the block also shows the date of the last updated row and how many rows have changes waiting to be written.
* **Retry failed rows:** once you fix the problem (for example, by reconnecting the account or restoring access to the spreadsheet), this button puts the failed rows back in the queue, and they're retried within the next 10 minutes. Each row is retried in the spreadsheet and tab it was originally going to.

## Disconnect

In `My agents → [your agent] → Integrations → Google Sheets`, click **Disconnect**. That agent's Google Sheets Actions stop adding rows and keep their configuration.

The spreadsheets and their rows stay in your Drive. To send contacts again, connect Google again.

## Frequently asked questions

> [accordion] Does connecting Google Sheets use credits?
>
> No. Adding rows doesn't use AI, so it doesn't use credits.

> [accordion] I don't see my spreadsheet in the picker
>
> The picker shows the Drive of the Google account connected in ChatNorris. If the spreadsheet belongs to another account, ask for it to be shared with you with edit permission, or create a new one from ChatNorris.

> [accordion] I renamed the tab. Is the configuration lost?
>
> No. ChatNorris remembers the tab even if its name changes. If you delete it, new rows end up as failed and you get an alert: choose another tab in the Action for upcoming contacts. The contacts from the failed rows are still in your [Leads](https://docs.chatnorris.ai/en/guias/leads.md), where you can export them.

> [accordion] I added a column in the spreadsheet. What happens to new rows?
>
> They keep being written under their header. The new column stays empty until you assign it a value in the Action.

> [accordion] I changed the status of many leads at once and the spreadsheet took a while
>
> That's normal. Google limits how many writes can be made per minute, so when you change more than 5 leads at once, the rows are added or updated within the next 10 minutes instead of instantly.

> [accordion] The integration shows as Needs attention
>
> Google stopped accepting the access: for example, because you removed it at [myaccount.google.com/permissions](https://myaccount.google.com/permissions) or changed the account's password. Connect Google again from the Integrations hub and use **Retry failed rows** in each Action.

## Support

Need help with the setup? Write to us at [hola@chatnorris.ai](mailto:hola@chatnorris.ai).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.