Skip to main content

Forms

Micropage includes built-in form handling. No custom backend or third-party service is required.

Markup​

Add a form to any page section:

form: Contact

input: Name*
input: Email*
textarea: Message

submit: Send

Fields ending in * are required. The * is not part of the label text: it sets the field's required attribute and renders as a red asterisk after the label on the published page. A form with at least one required field also renders a * indicates a required field key above its fields. The form name (e.g. Contact) is used to identify submissions.

The per-field asterisk is aria-hidden, since the required attribute already announces the field to screen readers; the key is plain text and is read out. checkboxes and radios associate their group label with the group via role="group" and aria-labelledby, so the group label is announced along with its options.

Supported field types​

ElementAliasesDescription
input:textfield:Single-line text field
textarea:text:Multi-line text field
select:–Dropdown
checkboxes:multichoice:, multi-choice:Multiple choice (all aliases fully supported)
radios:choice:, singlechoice:, single-choice:Single choice (all aliases fully supported)
submit:save:Submit button

All aliases above are supported and not deprecated. Use the canonical names in new markup for consistency.

Success message​

After a successful submission the form is replaced by a confirmation message. Set your own with success::

form: Contact

input: Name*
input: Email*
textarea: Message

submit: Send
success: Thanks — we'll reply within one business day.

success: is optional. The text is trimmed and capped at 300 characters, and the same text is used both on the JavaScript path and on the no-JavaScript fallback page. It may appear anywhere in the form's field run; the convention is after submit:.

Without success:, a form shows Thank you. Your message was sent. and a newsletter form shows Thank you. You're subscribed.. Regular forms also show a Submit again button under the confirmation; newsletter forms don't. Which of the two applies is set by the form's newsletter status — see Newsletter copy in markup.

The confirmation stays on screen; it is not faded or auto-hidden. It carries role="status", and removing it on a timer would cut off the screen-reader announcement.

Spam protection​

Forms include:

  • a hidden honeypot field
  • server-side validation: only fields defined in markup are accepted, and required fields (label ending with *, including on select, checkboxes, and radios) must be present on submit
  • Cloudflare Turnstile verification on the published page
  • an automatic content check for common spam patterns

Submissions that fail Turnstile or look like spam are kept in a separate Spam view instead of the inbox. They don't send notifications or webhooks and don't create newsletter subscribers. Nothing is deleted automatically: you can move a submission back with Not spam, or flag one yourself with Mark as spam.

Using the Web App​

Add a form block in the Edit tab and publish. Submissions appear in the Form Submissions tab automatically.

Using the CLI​

View submissions:

micropage submissions list

Show a single submission:

micropage submissions show <id>

Notifications​

Micropage can notify you when a submission is received.

PlanNotification type
ProDaily email digest of submission counts
Pro+Instant email per submission + daily digest
Pro+Webhook — POST to a URL you configure

Webhook notifications (Pro+)​

Configure a webhook URL in Settings → Forms. When a submission is received, Micropage sends a POST request to that URL with the submission data as JSON.

Payload:

{
"id": "uuid",
"project_id": 123,
"form_name": "Contact",
"page_url": "/",
"form_index": 0,
"payload": {
"fields": [
{ "name": "name_0", "label": "Name", "value": "Jane" },
{ "name": "email_1", "label": "Email", "value": "[email protected]" }
]
},
"submitted_at": "2026-04-02T12:00:00Z"
}

fields is ordered like the form markup. Integrations can key off name (stable wire name); label is for display.

The request includes an X-Micropage-Submission-Id header containing the submission UUID, which you can use to verify the request or deduplicate retries.

Limits and plans​

CapabilityFreeProPro+
Submissions per project per month1001,00010,000
CSV exportnoyesyes
Daily email digestnoyesyes
Instant email per submissionnonoyes
Webhooknonoyes

Limits apply per project, per calendar month (UTC) on every plan. Submissions flagged as spam don't count toward the limit.