Partner interface / v1 API v1 stable

Instant leads.
Explicit permissions.

The PageCompose Partner API powers native instant triggers for Zapier and Make. Every connection belongs to one project and can access leads only when that permission was granted explicitly.

Connection

Authentication

In PageCompose, open Site Center > MCP and create a connection with the Zapier or Make profile. The key is shown once, is bound to the current project and grants lead access only.

Authorization: Bearer pagecompose_...

Revoking or expiring the key immediately stops API access and removes its active subscriptions.

Surface

Endpoints

GETGET /connection

Validates the key and returns the connected project identity.

GETGET /trigger-options

Returns labelled events and source keys for dynamic provider fields.

GETGET /sources

Returns forms, form fields and CRM lists for dynamic output schemas.

GETGET /leads

Returns up to 20 recent redacted samples for the selected event and source.

GETGET /subscriptions

Lists only subscriptions created by the current connection key.

POSTPOST /subscriptions

Registers one provider callback for an event and source.

DELETEDELETE /subscriptions/:id

Removes a subscription owned by the current connection key.

`GET /leads` accepts `event`, `sourceKey` and `limit`. Source keys are `all`, `form:ID` or `list:ID`. Older clients may use `sourceKind` and `sourceId`, but the two formats cannot be mixed.

Lifecycle

Subscribe and detach

Register the callback URL generated by the provider. PageCompose accepts only official Zapier or Make webhook hosts and returns a stable subscription ID for the later detach request.

POST /subscriptions
Content-Type: application/json

{
  "provider": "zapier",
  "event": "lead.completed",
  "sourceKey": "list:newsletter",
  "targetUrl": "https://hooks.zapier.com/hooks/standard/..."
}
`lead.completed` after a complete submission `lead.verified` after every configured verification Latest three samples recommended during setup

Contract

Event payload

The event ID remains stable across delivery retries. Form values stay inside `fields`, while `fieldLabels` preserves the human labels used in the published form.

{
  "id": "lead.completed:submission-...",
  "event": "lead.completed",
  "occurredAt": "2026-08-09T08:00:00.000Z",
  "projectId": "project-...",
  "projectName": "North Studio",
  "leadId": "submission-...",
  "formId": "contact",
  "formName": "Contact",
  "listIds": ["newsletter"],
  "listNames": ["Newsletter"],
  "path": "/contact",
  "status": "new",
  "fields": { "email": "ada@example.com" },
  "fieldLabels": { "email": "Email" }
}

Boundary

Security and errors

Scoped access

Keys cannot list workspaces or select another project.

Protected callbacks

Targets use HTTPS, public DNS checks and AES-256-GCM encrypted storage.

Predictable delivery

Jobs are idempotent and retry temporary failures with a bounded backoff.

The API returns `401` for invalid keys, `403` without lead permission, `404` for unknown resources, `415` for invalid subscription content types and `429` when the connection limit is exceeded. Responses are never cached.

Implementation support

Building a native connector?

Contact the PageCompose team for a provider test project and review coordination.

Contact support