Automatic Scheduling
Last updated: August 9, 2026
Once your venue time slots are set, MyCup can place every match by venue and kick-off time for you. Open it from Matches → Schedule.
All of this is optional. Setting kick-off times by hand on the Matches page is a perfectly good way to run a tournament, and for one venue it is usually faster. Use auto-fill when the arithmetic gets tiring — several venues, several days, hundreds of fixtures — and ignore it when it does not. You can also mix the two: set the kick-offs you care about, pin them, and let auto-fill work around them.
The schedule grid shows one day at a time: venues across the top, kick-off times down the side. One slot holds exactly one match. Unplaced matches wait in the rail on the right, in playing order — division, phase, matchday, then the match's own position.
The rail shows the first 60 unplaced matches. If you have more than that, place some or run auto-fill and the rest appear.
Auto-fill#
Auto-fill empty slots places everything it can in one pass. It never writes anything until you approve it — Preview shows what would happen, including everything it could not place and why.
The order it schedules in#
Auto-fill lays the tournament out in the order it is played:
- Phase first — the group stage before the knockout, the final last.
- Then matchday — matchday 1 of every group before matchday 2 of any of them. That is the shape a festival is actually played in; scheduling one group's whole campaign before the next group kicks off is not.
- Then the match's own position.
A match can never be placed before the stage that decides who plays in it has finished. A semi-final will not take an early slot while its own group games are still being played, however much free pitch time there is.
Phase order comes from your structure. If a consolation phase should run before the final, reorder the phases on the Structure page and auto-fill will follow.
The three rules you control#
| Rule | Default | What it does |
|---|---|---|
| Minimum rest between a team's matches | 60 min | Gap between the end of a team's match and the start of its next. Checked for both teams, in both directions — so a slot is refused whether the team's other match is earlier or later, including matches already on the calendar |
| Max matches per team per day | 0 (no limit) | A cap for youth festivals |
| Try to keep each group at one venue | On | Prefers a group's existing pitch so parents and kit stay put |
| Spread matches across all your days | On | Uses every day you have opened, instead of filling the earliest slots and finishing early |
Both of the last two are preferences, not restrictions: if the group's usual pitch is busy, or the day a match was aiming for is full, it goes elsewhere rather than being left unplaced.
Spreading, and why it is on#
Slots are tried in time order, so with spreading off a tournament that has more venue time than matches packs into the first days and leaves the last one empty. A real three-day festival came out as 8 matches, 10 matches, and nothing on the Saturday — correct, but not what anyone books three days for.
With it on, the running order is sliced across the days you have opened: 18 matches over 3 days aim for 6, 6 and 6. Playing order is untouched — matchday 1 still comes before matchday 2 — only the day each match aims at changes.
Turn it off when you want to finish as early as possible and do not mind leaving a booked day unused.
What it always enforces#
These are not options, because they are facts rather than preferences:
- One match per venue slot at a time
- A team is never in two places at once
- Round and phase order, as above
- Any division restriction on a time slot or on the division itself
Why a match could not be placed#
The preview groups everything it could not place, with examples. Each reason points at a different fix:
| Reason | What to do |
|---|---|
| No free slot left | Open more venue time, or add a venue |
| No pitch is open to this division on these days | A time slot's Only these divisions list excludes it |
| The venues this division is assigned to have no free time left | The division is restricted to venues that are full — assign another venue, or open more time there |
| The previous round or stage has not finished yet | There is no time left in the day after the earlier round; add another day or more hours |
| Would not leave enough rest between a team's matches | Lower the minimum rest, or open more time |
| A team has already reached its match limit for the day | Raise or remove the per-day cap |
| A team is already playing at every free time | Genuine congestion — more venue time is the only fix |
Where division restrictions show up#
Under each venue's name the header states that day's settings — for example
60 min + 15 min gap. The division restriction is shown on the slot, not on the
venue: any free slot reserved for particular divisions carries their names in the
grid cell itself.
That is deliberate. A restriction belongs to the time slot, so the same pitch can be U11-only on Thursday and open to everyone on Friday, or reserved all morning and free after lunch. A label on the column would state a rule that does not hold at every hour.
Set these on the time slots page, where the same restriction is listed per row and can be applied to many slots at once.
Reading the grid when you filter by division#
Filtering to one division does not hide the fact that other divisions are using your pitches. A slot another division holds is drawn hatched and greyed, with that division's tag on it, so you can see who has the pitch and at what time.
Those slots are inert on purpose: you cannot drag into them, swap with them, or pin or unschedule them. Acting on them would move a match the filter is hiding from you.
You may also see cells hatched the other way. Those mean the venue is open, but not to the division you are viewing — for one of two reasons, each with its own fix:
| What it means | How to change it |
|---|---|
| The time slot is limited to other divisions | Edit the time slot and change Only these divisions |
| This division is assigned to different venues | Edit the division and change its Venues |
Hover any hatched cell to read which of the two it is. Auto-fill refuses these slots too, so what you see on the grid and what the placer will do agree.
With All selected there is no division to restrict against, so nothing is hatched — you see every match, every venue.
Moving matches by hand#
The grid is fully editable, and every gesture has a keyboard equivalent.
| Action | Mouse | Keyboard |
|---|---|---|
| Move a match | Drag it onto a free slot | Focus it, press Enter, arrow keys, Enter again |
| Swap two matches | Drop one onto the other | Same — drop onto an occupied slot |
| Take off the schedule | Drag onto the Unplaced rail, or use the × on the card | Tab to the × and press Enter |
| Pin / unpin | The pin button on the card | Tab to it and press Enter |
Pinning#
A pinned match stays put. Auto-fill will not move it, regenerating the structure preserves it, and Clear schedule leaves it alone. Pin the fixtures that are already published — the final, the opening game — before you let auto-fill loose.
A pinned match also refuses to be dragged or swapped. Unpin it first.
Keeping a division at certain venues#
On a division's own page (Divisions → edit a division) you can tick the venues it plays at. Auto-fill will not place that division's matches anywhere else.
This is a hard restriction: matches that do not fit at those venues are left unplaced with a reason, rather than quietly spread across the site. That way you can see the shortfall and decide — open more time there, or relax the assignment.
This is the division's view. The Only these divisions setting on a time slot is the venue's view. They answer different questions and you can use either, or both.
Clearing the schedule#
Clear schedule on the grid removes kick-off times and venues; the matches themselves are untouched and return to the unplaced rail. The confirmation offers this day only or every day, with the count for each, and respects the division filter you have on screen.
Pinned matches survive.
Conflicts#
A red-outlined card with a ! means a clash: two matches claiming the same slot, or a team playing twice at once. The Matches page carries a conflict badge too, so you do not have to be looking at the grid to know.
Conflicts can only appear from hand edits or imported data — auto-fill never creates one.
The schedule needs review#
If you regenerate the structure after scheduling, MyCup flags the schedule as needing review rather than silently discarding it. Matches that survived keep their kick-off; the banner tells you what changed so you can re-run auto-fill or fix the gaps by hand.
Was this page helpful?
Let us know if you found this documentation helpful or if you have suggestions for improvement.