---
title: Google Sheets
description: "Connect Google Sheets via OAuth and import a spreadsheet of contacts with the Google Sheets - Bring Contacts template."
---

Google Sheets connects with **Connect** in the **Connect a CRM** dialog: an OAuth sign-in on
Google Sheets's side, no key to paste. Its category in the dialog is **Productivity**, described as
"Import contacts from Google Sheets spreadsheets".

## Connect

1. **Open Integrations**

    In the sidebar choose **Integrations**, then **Add connection**.

2. **Connect Google Sheets**

    Find **Google Sheets** and choose **Connect**. **Connect to Google Sheets** lists the features
    and permissions; choose **Connect** there, then sign in and approve the requested
    access on Google Sheets's consent page.

3. **Check the counter**

    Back on Integrations, the **Connections** counter reads 1 more and the account is
    listed with the status **Active**. Choose its row to enable its capabilities, see
    [Manage a connection](/operate/integrations/overview#manage-a-connection).

![Google Sheets in the Connect a CRM dialog.](/media/operate/connect-google-sheets.webp)

## Bring records in

**Add Flow**, then the template **Google Sheets - Bring Contacts** under the **Integration** tab. The dialog
**Clone Integration** is pre-filled with a name, a tag and the `access_token`
variable set to `{{access_token}}`, which the connection fills. **Clone
Integration** creates the flow; each run adds the records to **Contacts** with that
tag. Retry and re-execute settings, steps and field mapping are described in
[Automations](/operate/automations).

## Push data out

There are no Google Sheets webhook templates. To write to a sheet, build a custom
webhook against the Sheets API under **Start from Scratch**, see
[Webhooks](/operate/webhooks).

## Sync from the connection

On the connection's page, **Configure** on its sync opens **Configure & Enable**,
which asks for the **Google Sheet URL** (the full URL from your browser) and the
**Sheet Tab Name** (`Sheet1` by default). It then reads the sheet to discover its
columns, and you map them to contact fields.

## Tips

- One row per contact, with a column for the phone number in international format.
  Rows without a phone number cannot be called.
- Extra columns become contact metadata, which a campaign can map to the agent's
  <Term id="Dynamic variable">dynamic variables</Term>. See [Dynamic variables](/build/dynamic-variables).

## Related

- [Integrations overview](/operate/integrations/overview)
- [Automations](/operate/automations)
- [Webhooks](/operate/webhooks)
