Skip to main content
If you have not created a form before, start with Create a form.
form.yaml
version: 1
title: "Event registration"
description: "Register for the conference and confirm your details."

sections:
  - id: contact
    title: "Contact information"
    fields:
      - id: full_name
        type: short_text
        label: "Full name"
        placeholder: "Jane Smith"
        validators:
          - required

      - id: email
        type: email
        label: "Email address"
        placeholder: "jane@example.com"
        validators:
          - required

      - id: confirm_email
        type: email
        label: "Confirm email address"
        placeholder: "jane@example.com"
        validators:
          - required
          # Ensure the confirmation matches the email field above.
          - type: expression
            expression: "data.confirm_email === data.email"
            message: "Email addresses do not match."

    next: schedule

  - id: schedule
    title: "Schedule"
    fields:
      - id: arrival_date
        type: date
        label: "Arrival date"
        validators:
          - required
          - type: min
            value: "2026-06-01"
            message: "The event starts on 1 June 2026."
          - type: max
            value: "2026-06-05"
            message: "The event ends on 5 June 2026."

      - id: departure_date
        type: date
        label: "Departure date"
        validators:
          - required
          # Departure must be on or after the selected arrival date.
          - type: expression
            expression: "data.departure_date >= data.arrival_date"
            message: "Departure date must be on or after the arrival date."

      - id: guests
        type: number
        label: "Number of guests"
        placeholder: "1"
        validators:
          - required
          - type: min
            value: 1
            message: "At least one guest is required."
          - type: max
            value: 10
            message: "No more than 10 guests per registration."

    next: done

connections:
  - type: email
    to: "events@example.com"
    subject: "Registration from {{data.full_name}}"
    include_responses: true
The expression validator can reference any field by its id through the data object. This lets you compare two fields in the same section — like matching email addresses — or validate a field in a later section against one submitted earlier — like ensuring a departure date falls after the arrival date.