Skip to main content
A card of inputs with a submit button. Answers arrive as form events.
One form per message, and a form cannot share a message with a button_group. Breaking either rule returns FORM_EXCLUSIVITY.
type
string
required
"form"
fields
array
required
1–10 fields.
form_id
string
Your id for the form. We make one if you leave it out.
title
string
Plain text, up to 150 characters.
submit_label
string
default:"Submit"
Up to 40 characters.

The field object

name
string
required
The key used in the submitted values. Must match ^[a-zA-Z0-9_]{1,64}$ and be unique in the form.
type
string
required
text, email, number, select, textarea, or checkbox.
label
string
required
1–80 characters.
required
boolean
default:"false"
For checkbox, this means it must be ticked.
placeholder
string
Up to 100 characters.
help
string
Up to 200 characters. Simple inline markdown only.
default
string | number | boolean
Must match the field’s type.
max_length
integer
1–5,000. Works on text and textarea.
min
number
number fields only.
max
number
number fields only.
options
array
Needed for select. 1–50 entries of { label, value }. Plain strings work too — we expand them.
We check every answer again on our servers. Then the form locks for good — it shows the answers read-only with a “Submitted” badge. It cannot be sent twice. See Interactions for the payload you get.