Google Sync
Keep leads in sync with a Google Sheet: map columns to fields once, then it runs on a schedule you choose (or on demand). New rows become leads, changed rows update them — no duplicates. Requires the Google integration. Paid plans.
Endpoints (9)
Create or update a sync source (matched by name). Pull from a Google Sheet tab into leads: field_map maps sheet column headers to lead field names, key_column identifies a row (e.g. an email or ID column; omit to fingerprint the whole row). schedule is a cron expression (minimum interval 1 hour, default every 4 hours); send an empty string for manual runs only. The header row is checked before saving.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes | Unique name for this source, e.g. "sheet-leads". |
spreadsheet |
string | No | Google Sheets URL or ID (required when creating). |
tab |
string | No | Tab name (required when creating). |
header_row |
integer | No | Row number of the column headers (default 1). |
key_column |
string | No | Header of the column that uniquely identifies a row. Omit to use a fingerprint of the mapped values. |
field_map |
array | No | Object: {"Sheet column header": "lead_field"} (required when creating). |
form_name |
string | No | form_name for the leads (default "google-sheet"). |
on_change |
string | No | "update" (default) applies sheet changes to existing leads; "ignore" only adds new rows. |
schedule |
string | No | Cron expression, e.g. "0 */4 * * *". Empty string = manual only. |
timezone |
string | No | Timezone for the schedule (default Europe/Amsterdam). |
enabled |
boolean | No | Pause (false) or resume (true) the schedule. |
direction |
string | No | "pull" (default). "push" arrives later. |
target |
string | No | "leads" (default). "mapi_entity" arrives later. |
One sync source with its config, schedule and last run.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes |
All sync sources of this project with their schedule and last run.
No input parameters required.
Delete a sync source and its schedule. Leads already created stay.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes |
Dry run: shows the header check and how the first rows map, and whether each would be created, updated or left unchanged. Writes nothing.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes | |
limit |
integer | No | Rows to show (default 5, max 25). |
Run a sync source immediately (same logic as the scheduled run). Returns the run summary.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes |
Used by the schedule. Prefer run-now for manual runs.
| Field | Type | Required | Description |
|---|---|---|---|
source_id |
integer | ✓ Yes |
Recent runs of a sync source: counts per run and the first row errors.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes | |
limit |
integer | No | Default 10, max 50. |
Forget which rows were seen, so the next run compares every row again. Does not create duplicate leads.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes |
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| set-source | google_sync_set_source |
| get-source | google_sync_get_source |
| list-sources | google_sync_list_sources |
| delete-source | google_sync_delete_source |
| preview | google_sync_preview |
| run-now | google_sync_run_now |
| run-scheduled | google_sync_run_scheduled |
| get-runs | google_sync_get_runs |
| reset-state | google_sync_reset_state |
Website