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
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
EveryPATCH produces an event row. Read the full history of a submission with GET /submissions/{id}/events.
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.
