Skip to main content
A submission is a form response from a visitor on one of your public Pages. The API lets you read submissions, triage them through a status workflow, assign owners, and pull a full activity timeline.
Submissions are created when a visitor submits a form on a public page — never through the API. The API is read-and-update only. To create a submission, point a Page at your form blocks and capture the visitor traffic.

Triage workflow

Submissions move through a five-state status machine, with priority, flag, assignee, and notes layered on top. Priorities are none, low, medium, high. flagged is a separate boolean for “needs attention” callouts. assignee_id is the user owning the row. notes is free-text internal annotation.

The shape of a submission

See the Submission object page for the full field reference.

What you can do

Read

GET /submissions (list, filter, paginate) and GET /submissions/{id} (single record).

Triage

PATCH /submissions/{id} to update status, priority, flagged, assignee, notes.

Audit

GET /submissions/{id}/events returns the full activity timeline — every field change with actor and timestamp.

React

Subscribe to page.submission.created and submission.updated webhooks.

Activity timeline

Every PATCH produces an event row. Read the full history of a submission with GET /submissions/{id}/events.
Event types: created, status_changed, priority_changed, flagged, unflagged, assigned, unassigned, notes_updated. The actor_id is the user (or API key — surfaced via metadata internally) who made the change; null for system-generated events like created.

Webhook events

Submissions don’t have a delete endpoint. The terminal “this isn’t real” state is status: "spam", which hides the record from default views but preserves the audit trail.