# Google Sheets

Use a sheet as the source of a contact list: new rows are added and changed rows update the contacts, on a schedule.

## Connect {#connect}

1. In Google Sheets: **Share › Anyone with the link › Viewer** (or File › Share › Publish to the web as CSV). No Google account needed on our side.
2. Portal › Integrations › Google Sheets: paste the link (the tab of the link is used: `#gid=…`).
3. Choose the contact list, map the columns (one must be the phone), the schedule and the country for national numbers. Save, then **Sync now**.

Private sheet? Click **Connect Google** on the connection: read-only access to Sheets (OAuth, token stored encrypted).

## How the sync works {#rules}

- Each sync reads the whole sheet as CSV and runs the normal contact importer: invalid numbers, duplicates, blacklisted and opted-out numbers are skipped and counted (rejects file in Contacts › Imports), existing contacts are updated.
- The mapping is kept by **column name**: moving columns is fine; renaming the phone column stops the sync with a clear error.
- Rows removed from the sheet are not deleted from the list.
- Up to 20 MB per sheet. A sync does not start while the previous one is still importing.
