Portfolio Supported AIs Solutions Tasks Email Archive Bring Your Own Code 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 (pull), or export leads to a Google Sheet (push). Map columns once, then it runs on a schedule you choose or on demand — 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.

Try it with your AI assistant

Once WebsitePublisher is connected to your AI assistant, paste one of these into the chat. Replace the parts in [brackets] with your own details.

@WebsitePublisher keep my leads in sync with my Google Sheet [sheet name] every hour
@WebsitePublisher export all my leads to a Google Sheet once a day
With WebsitePublisher, keep my leads in sync with my Google Sheet [sheet name] every hour
With WebsitePublisher, export all my leads to a Google Sheet once a day
With WebsitePublisher, keep my leads in sync with my Google Sheet [sheet name] every hour
With WebsitePublisher, export all my leads to a Google Sheet once a day

Endpoints (11)

POST set-source

Create or update a sync source (matched by name). PULL (default): Google Sheet tab → leads. field_map maps sheet headers to lead fields, key_column identifies a row (e.g. email; omit to fingerprint the row). Header row is checked before saving. Default schedule every 4 hours. PUSH (direction "push", capability drive_export): leads → a Google Sheet the platform creates. field_map is a list of [lead_field, column] pairs in column order (special fields: _id, _created_at, _status, _form_name); push_mode new_document | append | replace; optional filters. Manual unless schedule is set. schedule is a cron expression (minimum interval per project, see get-config); empty string = manual only.

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 Pull: tab to read (required when creating). Push: tab name in the new sheet (default "Leads").
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 Pull: {"Sheet column header": "lead_field"}. Push: a list of [lead_field, "Column header"] pairs in column order, e.g. [["voornaam", "First name"], ["email", "Email"]] (an object also works, but its order is not guaranteed). 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. Defaults and minimum interval come from get-config.
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) or "push". Cannot be changed on an existing source.
push_mode string No Push: "new_document" (default, a new sheet per run), "append" (only leads not exported before) or "replace" (rewrite the same sheet).
title string No Push: spreadsheet title (default "Leads export").
filter_form_name string No Push: only leads with this form_name. Empty string clears the filter.
filter_status string No Push: only leads with this status. Empty string clears the filter.
created_after string No Push: only leads created on or after this date (YYYY-MM-DD).
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, writes nothing. Pull: header check and how the first rows map (create / update / unchanged). Push: the column header, how many leads match and would be written, and the first rows.

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

Project settings for Google Sync (limits, minimum interval, defaults), which ones were changed, and the platform limits.

No input parameters required.

POST set-config

Change project settings; only the keys you send change, null resets a key to the platform default. Values must stay within the platform limits shown by get-config. Paid plans.

Field Type Required Description
max_sources integer No Max sync sources in this project.
max_rows_per_run integer No Max rows (pull) or leads (push) per run.
min_interval_minutes integer No Minimum minutes between scheduled runs.
new_document_min_interval_hours integer No Minimum hours between runs of push_mode new_document.
default_schedule string No Schedule for new pull sources when none is given.
default_timezone string No Timezone for new sources, e.g. "Europe/Amsterdam".
default_form_name string No form_name for leads from pull sources.
default_push_title string No Spreadsheet title for push sources.
default_push_tab string No Tab name for push sources.
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
get-config google_sync_get_config
set-config google_sync_set_config
reset-state google_sync_reset_state
← Back to all integrations