Portfolio Supported AIs Solutions Tasks Email Archive Integrations Pricing

Get Started

ChatGPT

ChatGPT

Start directly →

Ready
Claude

Claude

Directory Connector →

Ready
Mistral

Mistral

Directory Connector →

Ready

Dashboard Always available
Google Sync

Google Sync

⚡ Built-in — Platform Built-in

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.

⚡ Built-in — No Setup Required This integration is built into the WebsitePublisher platform. All endpoints are available immediately — no API key needed.

Endpoints (9)

POST set-source

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.
GET get-source

One sync source with its config, schedule and last run.

Field Type Required Description
name string ✓ Yes
GET list-sources

All sync sources of this project with their schedule and last run.

No input parameters required.

POST delete-source

Delete a sync source and its schedule. Leads already created stay.

Field Type Required Description
name string ✓ Yes
GET preview

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).
POST run-now

Run a sync source immediately (same logic as the scheduled run). Returns the run summary.

Field Type Required Description
name string ✓ Yes
POST run-scheduled

Used by the schedule. Prefer run-now for manual runs.

Field Type Required Description
source_id integer ✓ Yes
GET get-runs

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.
POST reset-state

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:

EndpointMCP 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
← Back to all integrations