Google Sheets
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
Open Integrations
In the sidebar choose Integrations, then Add connection.
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.
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.

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.
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.
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 dynamic variablesDynamic variableA placeholder in the prompt, such as {{customer_name}}, filled per conversation.See the glossary. See Dynamic variables.