Lead Capture
Platform-native lead capture — no API key or setup required. Activate by setting {"type": "leads"} as the action in configure_form. Submissions are stored centrally in papi_leads. Use get-leads to retrieve them, update-status to track follow-up progress.
Try it with your AI assistant
Once WebsitePublisher is connected to your AI assistant, paste one of these into the chat.
@WebsitePublisher add a contact form to my homepage and save every submission as a lead@WebsitePublisher show my latest leads and mark the ones I have already followed upWith WebsitePublisher, add a contact form to my homepage and save every submission as a leadWith WebsitePublisher, show my latest leads and mark the ones I have already followed upWith WebsitePublisher, add a contact form to my homepage and save every submission as a leadWith WebsitePublisher, show my latest leads and mark the ones I have already followed upEndpoints (4)
Store a lead from a form submission.
| Field | Type | Required | Description |
|---|---|---|---|
form_name |
string | No | Form identifier (e.g. "contact", "offerte"). Defaults to "default". |
fields |
array | ✓ Yes | Form field values as key-value object (e.g. {"name": "Jan", "email": "jan@example.nl"}) |
metadata |
array | No | Optional metadata: UTM parameters, IP address, referrer, etc. |
Retrieve leads captured via configure_form with action type "leads". Supports filtering by status, form_name, and date range.
| Field | Type | Required | Description |
|---|---|---|---|
page |
integer | No | Page number (default: 1) |
per_page |
integer | No | Records per page (default: 25, max: 100) |
status |
string | No | Filter by status: new, callback, appointment, quoted, won, rejected |
form_name |
string | No | Filter by form name |
date_from |
string | No | Filter from date (Y-m-d) |
date_to |
string | No | Filter to date (Y-m-d) |
Update the status (and optionally metadata) of a lead.
| Field | Type | Required | Description |
|---|---|---|---|
lead_id |
integer | ✓ Yes | Lead ID to update |
status |
string | ✓ Yes | New status: new, callback, appointment, quoted, won, rejected |
metadata |
array | No | Optional metadata to merge into existing (e.g. {"offerte_bedrag": 4500.00}) |
Permanently delete leads by id: test or spam submissions, or an erasure request. Same scope as update-status: this project plus linked projects. Requires confirm:true; at most 100 ids per call. Cannot be undone. A lead that comes from a Google Sheets sync (google_sync) is created again on the next sync while its row is still in the sheet.
| Field | Type | Required | Description |
|---|---|---|---|
lead_ids |
array | ✓ Yes | Lead IDs to delete (from get-leads), at most 100. |
confirm |
boolean | ✓ Yes | Must be true. |
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 |
|---|---|
| submit-lead | leads_submit_lead |
| get-leads | leads_get_leads |
| update-status | leads_update_status |
| delete-leads | leads_delete_leads |
Website