A yoga class registration form that feels like a hello

Updated 2026-10-30

A new student walks in, rolls out a mat and tells you about a sore back after the class begins. I would rather hear it before. One short form turns that moment into a note on your phone.

Who sees the answers, and who fills it in?

You see the answers, whether you run a studio or teach in a rented hall. The student fills them in at home, or hands the job to their AI. Their email is for class news only.

What does the form ask, and why?

Styles, experience and times show which class suits. The adapt-for list covers back pain, knees, wrists, neck, pregnancy and recent injury, so you can plan options. The mat question tells you how many to bring. Goals tell you what to emphasize. A trial box and a policy box finish the job.

What would the student's AI ask?

"Which styles interest you?" Then "Is there anything I should adapt for?" Then "Do you have a mat?" It shows every answer and sends only after a yes. See agent-fillable forms.

Is this only for yoga?

No. A dance class registration form suits dancers, and a swim lesson registration form suits swimmers. More ideas are in forms for gyms. A student who wants to track practice can keep a workout log.

Questions

Can I use it for Pilates?

Yes. Pilates mat is already in the styles list. You can rename the choices in your own copy of the form, or add reformer classes if you teach them.

How do I plan for people who need adaptations?

Download the CSV and read the adapt_for column before class. Ask only what changes how you teach, and talk in person about anything more.

How do I keep a class to the size of the room?

Set max_responses to the number your room holds, and close_at to the day registration ends. The form stops taking answers at either limit.

Try the form

Live demo ยท nothing is saved

Join a yoga class

Tell me about you and what you would like from class. All levels are welcome, and nothing here is a test.

Which styles interest you? (required)
How long have you practiced?
When could you come?
Anything I should adapt for?
Do you have a mat?
What are you hoping for?
I would like to start with a trial class
I accept the studio policies, including late cancellation (required)

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Join a yoga class",
  "description": "Tell me about you and what you would like from class. All levels are welcome, and nothing here is a test.",
  "fields": [
    {
      "id": "student_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "student_email",
      "label": "Email",
      "type": "email",
      "required": true
    },
    {
      "id": "student_phone",
      "label": "Phone",
      "type": "phone"
    },
    {
      "id": "yoga_styles",
      "label": "Which styles interest you?",
      "type": "multi_choice",
      "required": true,
      "options": [
        "Vinyasa",
        "Hatha",
        "Yin",
        "Restorative",
        "Ashtanga",
        "Prenatal",
        "Pilates mat"
      ],
      "min": 1
    },
    {
      "id": "yoga_experience",
      "label": "How long have you practiced?",
      "type": "single_choice",
      "options": [
        "I am brand new",
        "Under a year",
        "A few years",
        "Many years"
      ]
    },
    {
      "id": "preferred_times",
      "label": "When could you come?",
      "type": "multi_choice",
      "options": [
        "Weekday mornings",
        "Weekday lunch time",
        "Weekday evenings",
        "Weekend mornings"
      ]
    },
    {
      "id": "adapt_for",
      "label": "Anything I should adapt for?",
      "type": "multi_choice",
      "options": [
        "Back pain",
        "Sore knees",
        "Sore wrists",
        "Neck or shoulder tension",
        "Pregnancy",
        "A recent injury",
        "Nothing at all"
      ]
    },
    {
      "id": "mat_situation",
      "label": "Do you have a mat?",
      "type": "single_choice",
      "options": [
        "Yes, I will bring mine",
        "No, I will borrow one"
      ]
    },
    {
      "id": "hoped_for",
      "label": "What are you hoping for?",
      "type": "multi_choice",
      "options": [
        "More flexibility",
        "More strength",
        "Calm and less stress",
        "Better sleep",
        "Community",
        "Recovery after sport"
      ]
    },
    {
      "id": "trial_first",
      "label": "I would like to start with a trial class",
      "type": "checkbox"
    },
    {
      "id": "studio_extra",
      "label": "Anything else I should know?",
      "type": "long_text",
      "max_length": 800
    },
    {
      "id": "emergency_contact_line",
      "label": "Emergency contact: name and phone",
      "type": "short_text",
      "required": true,
      "max_length": 250
    },
    {
      "id": "policy_ack",
      "label": "I accept the studio policies, including late cancellation",
      "type": "checkbox",
      "required": true
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Join a yoga class","description":"Tell me about you and what you would like from class. All levels are welcome, and nothing here is a test.","fields":[{"id":"student_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"student_email","label":"Email","type":"email","required":true},{"id":"student_phone","label":"Phone","type":"phone"},{"id":"yoga_styles","label":"Which styles interest you?","type":"multi_choice","required":true,"options":["Vinyasa","Hatha","Yin","Restorative","Ashtanga","Prenatal","Pilates mat"],"min":1},{"id":"yoga_experience","label":"How long have you practiced?","type":"single_choice","options":["I am brand new","Under a year","A few years","Many years"]},{"id":"preferred_times","label":"When could you come?","type":"multi_choice","options":["Weekday mornings","Weekday lunch time","Weekday evenings","Weekend mornings"]},{"id":"adapt_for","label":"Anything I should adapt for?","type":"multi_choice","options":["Back pain","Sore knees","Sore wrists","Neck or shoulder tension","Pregnancy","A recent injury","Nothing at all"]},{"id":"mat_situation","label":"Do you have a mat?","type":"single_choice","options":["Yes, I will bring mine","No, I will borrow one"]},{"id":"hoped_for","label":"What are you hoping for?","type":"multi_choice","options":["More flexibility","More strength","Calm and less stress","Better sleep","Community","Recovery after sport"]},{"id":"trial_first","label":"I would like to start with a trial class","type":"checkbox"},{"id":"studio_extra","label":"Anything else I should know?","type":"long_text","max_length":800},{"id":"emergency_contact_line","label":"Emergency contact: name and phone","type":"short_text","required":true,"max_length":250},{"id":"policy_ack","label":"I accept the studio policies, including late cancellation","type":"checkbox","required":true}]}'

JSON definition

json
{
  "title": "Join a yoga class",
  "description": "Tell me about you and what you would like from class. All levels are welcome, and nothing here is a test.",
  "fields": [
    {
      "id": "student_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "student_email",
      "label": "Email",
      "type": "email",
      "required": true
    },
    {
      "id": "student_phone",
      "label": "Phone",
      "type": "phone"
    },
    {
      "id": "yoga_styles",
      "label": "Which styles interest you?",
      "type": "multi_choice",
      "required": true,
      "options": [
        "Vinyasa",
        "Hatha",
        "Yin",
        "Restorative",
        "Ashtanga",
        "Prenatal",
        "Pilates mat"
      ],
      "min": 1
    },
    {
      "id": "yoga_experience",
      "label": "How long have you practiced?",
      "type": "single_choice",
      "options": [
        "I am brand new",
        "Under a year",
        "A few years",
        "Many years"
      ]
    },
    {
      "id": "preferred_times",
      "label": "When could you come?",
      "type": "multi_choice",
      "options": [
        "Weekday mornings",
        "Weekday lunch time",
        "Weekday evenings",
        "Weekend mornings"
      ]
    },
    {
      "id": "adapt_for",
      "label": "Anything I should adapt for?",
      "type": "multi_choice",
      "options": [
        "Back pain",
        "Sore knees",
        "Sore wrists",
        "Neck or shoulder tension",
        "Pregnancy",
        "A recent injury",
        "Nothing at all"
      ]
    },
    {
      "id": "mat_situation",
      "label": "Do you have a mat?",
      "type": "single_choice",
      "options": [
        "Yes, I will bring mine",
        "No, I will borrow one"
      ]
    },
    {
      "id": "hoped_for",
      "label": "What are you hoping for?",
      "type": "multi_choice",
      "options": [
        "More flexibility",
        "More strength",
        "Calm and less stress",
        "Better sleep",
        "Community",
        "Recovery after sport"
      ]
    },
    {
      "id": "trial_first",
      "label": "I would like to start with a trial class",
      "type": "checkbox"
    },
    {
      "id": "studio_extra",
      "label": "Anything else I should know?",
      "type": "long_text",
      "max_length": 800
    },
    {
      "id": "emergency_contact_line",
      "label": "Emergency contact: name and phone",
      "type": "short_text",
      "required": true,
      "max_length": 250
    },
    {
      "id": "policy_ack",
      "label": "I accept the studio policies, including late cancellation",
      "type": "checkbox",
      "required": true
    }
  ]
}