API · Custom checkout fields
Custom checkout fields are extra questions you can ask buyers during checkout. They support four field types (text, textarea, select, checkbox) and two scopes:
order: answered once for the whole order. Used for buyer-level questions (dietary preferences, billing notes).attendee: answered once per ticket in the order. Used for per-attendee questions (attendee name, t-shirt size).
Answers are emitted on order webhooks. See the webhooks doc for the answer format.
Custom fields aren’t returned from a top-level list endpoint, they’re embedded in the event show response and can be created, updated, or deleted via the endpoints below.
Required answers, later completion, and the editing deadline are independent settings. For a menu that must be selected at checkout but can still be changed afterwards, use required: true, completable_later: false, and your answers_editable_until deadline. Enabling completable_later lets the buyer leave an answer blank at checkout. All answers remain editable from the order until the deadline, regardless of these two flags. The event start is the latest possible deadline.
POST /admin/events/:slug/custom_fields
Creates a new custom field on the event.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"label": "T-shirt size", "field_type": "select", "per": "attendee", "required": true, "options_text": "S\nM\nL\nXL"}' \
https://app.usetix.io/admin/events/spring-showcase/custom_fields
Body parameters:
| Field | Required | Notes |
|---|---|---|
label |
yes | The question shown to the buyer. |
field_type |
yes | text, textarea, select, or checkbox. |
per |
yes | order or attendee. |
help_text |
no | Optional clarifying text shown under the label. |
details |
no | Plain text in an information popup beside the question, e.g. descriptions of each menu. Line breaks and blank lines are preserved. Send an empty string to remove it. |
required |
no | true to require an answer. Defaults to false. Combined with completable_later, a required answer can be filled in after purchase. |
completable_later |
no | true to show the question at checkout without blocking, so the buyer can answer later from the order. Defaults to false. |
answers_editable_until |
no | ISO 8601 UTC datetime after which buyers can no longer change this answer. Omit or null to use the event start. Must be at or before the event start. |
options_text |
conditional | Required for field_type: select. Newline-separated list of options ("Small\nMedium\nLarge"). |
Response: 201 Created with the custom field JSON.
PATCH /admin/events/:slug/custom_fields/:id
Updates a custom field. Send only the fields you want to change. Omitting answers_editable_until preserves the existing deadline; send null to reset it to the event start.
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"required": false}' \
https://app.usetix.io/admin/events/spring-showcase/custom_fields/43
Response: 200 OK with the updated custom field JSON.
DELETE /admin/events/:slug/custom_fields/:id
Deletes a custom field. Existing order answers for this field remain stored in our database, but stop appearing in webhook payloads going forward, see webhooks → custom field answers.
curl -X DELETE \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/custom_fields/43
Response: 204 No Content.
PATCH /admin/events/:slug/custom_fields/:id/position
Moves a custom field to a new checkout display position. Lower numbers sort first.
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"position": 3}' \
https://app.usetix.io/admin/events/spring-showcase/custom_fields/43/position
Response: 204 No Content.
Custom field fields
| Field | Type | Notes |
|---|---|---|
id |
integer | Internal numeric ID. Path parameter. Stable; safe to use as a key in your integration. |
label |
string | The question. |
help_text |
string | null | Optional clarifying text. |
details |
string | null | Plain text in the buyer-facing information popup, preserving line breaks and blank lines. |
field_type |
string | text, textarea, select, or checkbox. |
per |
string | order or attendee. |
required |
boolean | true if an answer is required. With completable_later, checkout does not block on a blank answer. |
completable_later |
boolean | true if the buyer can skip this at checkout and answer later from the order. |
answers_editable_until |
string | null | ISO 8601 UTC datetime after which buyers can no longer change this answer. null means the event start. |
options |
array | For select fields, the list of options as an array of strings. Empty array for non-select fields. |
position |
integer | Display order at checkout (low to high). |