Team registration form for leagues and seasons

Updated 2026-10-30

A new season starts and replies trickle in: a team name in one message, a phone number in another, the division nowhere. I would rather every manager answer the same questions once. Then fixtures can start.

Use it when

You run a league, a club season or a school competition, and a manager enters a whole team. You need the division, the roster size and a contact who answers calls. It also works as a sports sign up form for adult social teams. More ideas are in forms for sports clubs and teams.

Leave it for something else when

You collect fees, signed waivers or medical details from each player. Use a separate form for players, and keep this one to team facts.

What it asks and why

  • Team, division and roster size: to place teams and size the schedule.
  • Manager name, email and phone: one person you can reach.
  • Home ground and kit colours: to avoid double bookings and clashing shirts.
  • Game days and blocked dates: to plan fixtures that teams can really play.
  • Referee box and rules box: a volunteer if you need one, and an agreement to the league rules.

What a manager's AI would ask

"Which division is the team entering?" Then "Where do you play home games?" Then "Which dates can the team not play?" It lists all answers and sends only after a yes. See agent-fillable forms.

Next steps: set close_at to your entry deadline. A tournament registration form suits one-off events, and a team snack schedule helps once the season runs.

Questions

Can I cap the number of teams in a division?

Set max_responses to the number of places and the link stops taking entries when it is reached. For separate caps per division, make one form for each division.

How do I spot kit clashes?

Download the CSV and sort by the kit_colours column. Teams with the same colours in the same division are easy to see, and you can ask one of them to bring bibs.

Do players register on this form too?

No. A manager enters the whole team once. Individual players and parents use a separate player form, so the manager does not collect personal details for everyone.

Try the form

Live demo ยท nothing is saved

Enter your team

One manager fills this in for the whole team. Please check the details, because we build fixtures from them.

Which division is the team entering? (required)

We use this to avoid clashes on match day.

Has the team played in this league before?
Which game days suit you?
Someone from our team can referee a match
The manager has read the league rules (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": "Enter your team",
  "description": "One manager fills this in for the whole team. Please check the details, because we build fixtures from them.",
  "fields": [
    {
      "id": "team_name",
      "label": "Team name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "division",
      "label": "Which division is the team entering?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Under 9",
        "Under 11",
        "Under 13",
        "Under 15",
        "Adult social",
        "Adult competitive"
      ]
    },
    {
      "id": "manager_name",
      "label": "Manager name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "manager_email",
      "label": "Manager email",
      "type": "email",
      "required": true
    },
    {
      "id": "manager_phone",
      "label": "Manager phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "roster_size",
      "label": "How many players are on the roster?",
      "type": "number",
      "required": true,
      "min": 5,
      "max": 40
    },
    {
      "id": "home_ground",
      "label": "Where will you play home games?",
      "type": "short_text",
      "max_length": 200
    },
    {
      "id": "kit_colours",
      "label": "Shirt and shorts colours",
      "type": "short_text",
      "help": "We use this to avoid clashes on match day.",
      "max_length": 150
    },
    {
      "id": "league_history",
      "label": "Has the team played in this league before?",
      "type": "single_choice",
      "options": [
        "No, we are new",
        "One season",
        "Two or more seasons"
      ]
    },
    {
      "id": "preferred_game_days",
      "label": "Which game days suit you?",
      "type": "multi_choice",
      "options": [
        "Weekday evening",
        "Saturday morning",
        "Saturday afternoon",
        "Sunday morning",
        "Sunday afternoon"
      ]
    },
    {
      "id": "cannot_play_dates",
      "label": "Dates your team cannot play",
      "type": "long_text",
      "max_length": 800
    },
    {
      "id": "volunteer_referee",
      "label": "Someone from our team can referee a match",
      "type": "checkbox"
    },
    {
      "id": "team_page_url",
      "label": "Team page or social link",
      "type": "url"
    },
    {
      "id": "league_rules_read",
      "label": "The manager has read the league rules",
      "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":"Enter your team","description":"One manager fills this in for the whole team. Please check the details, because we build fixtures from them.","fields":[{"id":"team_name","label":"Team name","type":"short_text","required":true,"max_length":150},{"id":"division","label":"Which division is the team entering?","type":"single_choice","required":true,"options":["Under 9","Under 11","Under 13","Under 15","Adult social","Adult competitive"]},{"id":"manager_name","label":"Manager name","type":"short_text","required":true,"max_length":150},{"id":"manager_email","label":"Manager email","type":"email","required":true},{"id":"manager_phone","label":"Manager phone","type":"phone","required":true},{"id":"roster_size","label":"How many players are on the roster?","type":"number","required":true,"min":5,"max":40},{"id":"home_ground","label":"Where will you play home games?","type":"short_text","max_length":200},{"id":"kit_colours","label":"Shirt and shorts colours","type":"short_text","help":"We use this to avoid clashes on match day.","max_length":150},{"id":"league_history","label":"Has the team played in this league before?","type":"single_choice","options":["No, we are new","One season","Two or more seasons"]},{"id":"preferred_game_days","label":"Which game days suit you?","type":"multi_choice","options":["Weekday evening","Saturday morning","Saturday afternoon","Sunday morning","Sunday afternoon"]},{"id":"cannot_play_dates","label":"Dates your team cannot play","type":"long_text","max_length":800},{"id":"volunteer_referee","label":"Someone from our team can referee a match","type":"checkbox"},{"id":"team_page_url","label":"Team page or social link","type":"url"},{"id":"league_rules_read","label":"The manager has read the league rules","type":"checkbox","required":true}]}'

JSON definition

json
{
  "title": "Enter your team",
  "description": "One manager fills this in for the whole team. Please check the details, because we build fixtures from them.",
  "fields": [
    {
      "id": "team_name",
      "label": "Team name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "division",
      "label": "Which division is the team entering?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Under 9",
        "Under 11",
        "Under 13",
        "Under 15",
        "Adult social",
        "Adult competitive"
      ]
    },
    {
      "id": "manager_name",
      "label": "Manager name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "manager_email",
      "label": "Manager email",
      "type": "email",
      "required": true
    },
    {
      "id": "manager_phone",
      "label": "Manager phone",
      "type": "phone",
      "required": true
    },
    {
      "id": "roster_size",
      "label": "How many players are on the roster?",
      "type": "number",
      "required": true,
      "min": 5,
      "max": 40
    },
    {
      "id": "home_ground",
      "label": "Where will you play home games?",
      "type": "short_text",
      "max_length": 200
    },
    {
      "id": "kit_colours",
      "label": "Shirt and shorts colours",
      "type": "short_text",
      "help": "We use this to avoid clashes on match day.",
      "max_length": 150
    },
    {
      "id": "league_history",
      "label": "Has the team played in this league before?",
      "type": "single_choice",
      "options": [
        "No, we are new",
        "One season",
        "Two or more seasons"
      ]
    },
    {
      "id": "preferred_game_days",
      "label": "Which game days suit you?",
      "type": "multi_choice",
      "options": [
        "Weekday evening",
        "Saturday morning",
        "Saturday afternoon",
        "Sunday morning",
        "Sunday afternoon"
      ]
    },
    {
      "id": "cannot_play_dates",
      "label": "Dates your team cannot play",
      "type": "long_text",
      "max_length": 800
    },
    {
      "id": "volunteer_referee",
      "label": "Someone from our team can referee a match",
      "type": "checkbox"
    },
    {
      "id": "team_page_url",
      "label": "Team page or social link",
      "type": "url"
    },
    {
      "id": "league_rules_read",
      "label": "The manager has read the league rules",
      "type": "checkbox",
      "required": true
    }
  ]
}