Player registration form for a youth sports season

Updated 2026-10-30

Registration season means a pile of messages: a child's age here, an allergy there, a second phone number buried in a comment. I would rather give parents one link and get one row per player, ready to sort into teams.

Before the form opens

I decide the age groups and how many places each team has. I also write down the club rules that parents must accept, because the form includes a tick box for the code of conduct. Then I create the form and share one link in a club email or on the club page.

While it is open

Parents give the child's name and birth date, an age group and two contacts. They add allergies or needs a coach must act on, and a shirt size. They can offer to drive or help. If a parent likes to ask an AI for help with forms, the AI might ask "What is your child's date of birth?" Then "Which age group is it?" Then "Does your child have allergies?" It shows the answers and sends them only after a yes. See agent-fillable forms.

After the deadline

Download the CSV and build teams. Share the final lists with parents yourself, because the form does not email them. If you need a youth soccer registration form, this works the same way. More ideas are in forms for sports clubs and teams. A team registration form suits clubs entering a league, a tournament registration form suits weekend events, and a summer camp registration form suits holiday programmes.

Questions

Does the form take the registration fee?

No. It does not take payments or card details. Collect fees the way your club already does, and use the CSV to tick off who has registered.

How do I build teams from the responses?

Download the CSV and sort by the age group column. Then group by experience and shirt size. The help_offered column shows parents who offered to coach or manage.

Can I stop registrations when the season is full?

Yes. Set max_responses to the number of places, or set close_at to the sign-up deadline. The link stops taking new registrations when either one is reached.

Try the form

Live demo ยท nothing is saved

Register your player

Fill in one form for each child. Please use the details of the parent or guardian who will be at most sessions.

Age group (required)

Someone we can call if we cannot reach you.

Experience so far
Shirt size

Only what a coach would act on. Leave out anything else.

We can sometimes drive other players
I could help with
Photos of my child may be used on the club page
We have read the club code of conduct (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": "Register your player",
  "description": "Fill in one form for each child. Please use the details of the parent or guardian who will be at most sessions.",
  "fields": [
    {
      "id": "player_name",
      "label": "Player's full name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "player_birth_date",
      "label": "Player's date of birth",
      "type": "date",
      "required": true
    },
    {
      "id": "age_group",
      "label": "Age group",
      "type": "single_choice",
      "required": true,
      "options": [
        "Under 7",
        "Under 9",
        "Under 11",
        "Under 13",
        "Under 15",
        "Under 17"
      ]
    },
    {
      "id": "guardian_name",
      "label": "Parent or guardian name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "guardian_phone",
      "label": "Parent or guardian phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "guardian_email",
      "label": "Parent or guardian email",
      "type": "email",
      "required": true
    },
    {
      "id": "second_contact",
      "label": "Second contact name and phone",
      "type": "short_text",
      "help": "Someone we can call if we cannot reach you.",
      "max_length": 200
    },
    {
      "id": "playing_experience",
      "label": "Experience so far",
      "type": "single_choice",
      "options": [
        "First season",
        "A season or two",
        "Several seasons"
      ]
    },
    {
      "id": "shirt_size",
      "label": "Shirt size",
      "type": "single_choice",
      "options": [
        "Youth small",
        "Youth medium",
        "Youth large",
        "Adult small",
        "Adult medium"
      ]
    },
    {
      "id": "allergies_or_needs",
      "label": "Allergies or needs a coach must know",
      "type": "long_text",
      "help": "Only what a coach would act on. Leave out anything else.",
      "max_length": 600
    },
    {
      "id": "can_share_lifts",
      "label": "We can sometimes drive other players",
      "type": "checkbox"
    },
    {
      "id": "help_offered",
      "label": "I could help with",
      "type": "multi_choice",
      "options": [
        "Assistant coach",
        "Team manager",
        "Snack coordinator",
        "Match day setup",
        "Photos and updates"
      ]
    },
    {
      "id": "photo_permission",
      "label": "Photos of my child may be used on the club page",
      "type": "checkbox"
    },
    {
      "id": "code_of_conduct_agreed",
      "label": "We have read the club code of conduct",
      "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":"Register your player","description":"Fill in one form for each child. Please use the details of the parent or guardian who will be at most sessions.","fields":[{"id":"player_name","label":"Player'\''s full name","type":"short_text","required":true,"max_length":150},{"id":"player_birth_date","label":"Player'\''s date of birth","type":"date","required":true},{"id":"age_group","label":"Age group","type":"single_choice","required":true,"options":["Under 7","Under 9","Under 11","Under 13","Under 15","Under 17"]},{"id":"guardian_name","label":"Parent or guardian name","type":"short_text","required":true,"max_length":150},{"id":"guardian_phone","label":"Parent or guardian phone","type":"phone","required":true},{"id":"guardian_email","label":"Parent or guardian email","type":"email","required":true},{"id":"second_contact","label":"Second contact name and phone","type":"short_text","help":"Someone we can call if we cannot reach you.","max_length":200},{"id":"playing_experience","label":"Experience so far","type":"single_choice","options":["First season","A season or two","Several seasons"]},{"id":"shirt_size","label":"Shirt size","type":"single_choice","options":["Youth small","Youth medium","Youth large","Adult small","Adult medium"]},{"id":"allergies_or_needs","label":"Allergies or needs a coach must know","type":"long_text","help":"Only what a coach would act on. Leave out anything else.","max_length":600},{"id":"can_share_lifts","label":"We can sometimes drive other players","type":"checkbox"},{"id":"help_offered","label":"I could help with","type":"multi_choice","options":["Assistant coach","Team manager","Snack coordinator","Match day setup","Photos and updates"]},{"id":"photo_permission","label":"Photos of my child may be used on the club page","type":"checkbox"},{"id":"code_of_conduct_agreed","label":"We have read the club code of conduct","type":"checkbox","required":true}]}'

JSON definition

json
{
  "title": "Register your player",
  "description": "Fill in one form for each child. Please use the details of the parent or guardian who will be at most sessions.",
  "fields": [
    {
      "id": "player_name",
      "label": "Player's full name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "player_birth_date",
      "label": "Player's date of birth",
      "type": "date",
      "required": true
    },
    {
      "id": "age_group",
      "label": "Age group",
      "type": "single_choice",
      "required": true,
      "options": [
        "Under 7",
        "Under 9",
        "Under 11",
        "Under 13",
        "Under 15",
        "Under 17"
      ]
    },
    {
      "id": "guardian_name",
      "label": "Parent or guardian name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "guardian_phone",
      "label": "Parent or guardian phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "guardian_email",
      "label": "Parent or guardian email",
      "type": "email",
      "required": true
    },
    {
      "id": "second_contact",
      "label": "Second contact name and phone",
      "type": "short_text",
      "help": "Someone we can call if we cannot reach you.",
      "max_length": 200
    },
    {
      "id": "playing_experience",
      "label": "Experience so far",
      "type": "single_choice",
      "options": [
        "First season",
        "A season or two",
        "Several seasons"
      ]
    },
    {
      "id": "shirt_size",
      "label": "Shirt size",
      "type": "single_choice",
      "options": [
        "Youth small",
        "Youth medium",
        "Youth large",
        "Adult small",
        "Adult medium"
      ]
    },
    {
      "id": "allergies_or_needs",
      "label": "Allergies or needs a coach must know",
      "type": "long_text",
      "help": "Only what a coach would act on. Leave out anything else.",
      "max_length": 600
    },
    {
      "id": "can_share_lifts",
      "label": "We can sometimes drive other players",
      "type": "checkbox"
    },
    {
      "id": "help_offered",
      "label": "I could help with",
      "type": "multi_choice",
      "options": [
        "Assistant coach",
        "Team manager",
        "Snack coordinator",
        "Match day setup",
        "Photos and updates"
      ]
    },
    {
      "id": "photo_permission",
      "label": "Photos of my child may be used on the club page",
      "type": "checkbox"
    },
    {
      "id": "code_of_conduct_agreed",
      "label": "We have read the club code of conduct",
      "type": "checkbox",
      "required": true
    }
  ]
}