List a contact's submissions
Every form response this contact has left, newest first. The answers behind the identity, on the same append-only record the dashboard reads.
Requires the contacts:read scope.
Every form response this contact has left, newest first. A submission is the raw answer set behind the deduplicated contact. One contact can have many, from the signup form, a survey, or any other form on the project.
The submission object#
| Field | Description |
|---|---|
id |
The sub_ handle, the same one the webhooks carry. |
form |
The frm_ handle the response came through. |
data |
The answers, as a flat object of field key to value. |
source |
Where it was captured: page, embed, html, api or platform. |
locked |
true when the overflow lock is withholding this row's data. |
created_at |
When it was submitted, ISO 8601. |
A signup you created through POST /v1/contacts carries
source: "api".
Submissions are read through their contact. There is no endpoint that fetches one submission by its
id or lists them across contacts.
Reading a long history#
limit works here as it does everywhere else, from 1 to 100, default 25, and has_more tells you
whether there is more behind it. To read the next page, pass the last row's sub_ handle as
starting_after, as on every other list (Pagination).
Next#
Common questions
Can I look up one submission by its id?
No. Read submissions through the owning contact. Each one carries a sub_ handle, the same one the signup.created and form.submitted webhooks carry, so you can match a webhook to a row here.
Why is the data object empty on some rows?
The workspace is over its plan's contact limit. The overflow lock withholds the answer data, so the row returns locked true and an empty data object, until the plan is upgraded. Nothing is deleted.