---
title: Forms
description: Form builder, question types, and what each registration mode actually edits.
sidebar:
  order: 8
---

Forms are built in the drag-and-drop form builder. The builder only lists form types that match the current mode:

| Mode | Form class |
| --- | --- |
| Ticketing | `Forms::TicketForm` |
| RSVP | `Forms::RsvpForm` |
| Registration | `Forms::RegistrationForm` |

Buyer/checkout facade forms are internal. They never appear in the builder list.

## Builder surfaces

Each form has questions, design, settings, notifications, and responses. Edit one form at a time. The first 15 question previews render immediately; later questions load lazily so large forms stay fast.

## Question types

These are the types the product allows (the same list the API exposes as `attendee_fields`):

**Identity**

`first_name`, `last_name`, `full_name`, `email`, `contact_phone`, `tel`, `job_title`, `company_name`, `external_id`

**Profile**

`bio`, `headline`, `gender`, `date_of_birth`, `nationality`, `country`, `passport_number`

**Address**

`address`, `home_address`, `work_address`, `shipping_address`

**Choice**

`dropdown`, `radio`, `checkbox`, `consent`, `term_and_consent`

**Text and media**

`short_text`, `long_text`, `text`, `text_area`, `paragraph`, `number`, `date`, `time`, `url`, `file_upload`, `image`

**Social**

`linkedin_account`, `twitter_account`, `facebook_account`, `instagram_account`, `github_account`, `youtube_account`, `social_account`

**Event-specific**

`dietary_requirements`, `accessibility_requirements`, `guest`

**Layout**

`headline`, `section_divider`, `spacer`, `captcha`

Phone answers are normalized to E.164. Country is a dedicated field, not a free-text input.

## Notifications

A form can email organizers on submit and send the registrant a confirmation. Automated emails (reminders, thank-you, cancellation) live under **Communication**, not in the form builder.

## File uploads

Public forms upload files through a dedicated endpoint. Large files are accepted via the form file-upload controller, not as a raw multipart on submit.
