Save it once. Spin it up in ten seconds.
Save any finished tournament or league as a reusable blueprint. Every config decision — format, divisions, fees, default times, content sections, league season defaults — copies over. New instances ask for name and start date. That's it.
One bookmark icon, two templates
Every tournament and league admin page surfaces a Save as template button. Click it and pick a name. Templates have two visibility tiers:
Personal
Only you see the template in the library. Your private playbook of proven event setups.
Club-shared
Every admin of the club can use it. A senior operator codifies "how we run our Saturday tournaments" for the rest of the team.
How it actually works
- Build your event the normal way. Set up your weekly league or monthly tournament with all the divisions, fees, content sections, and times you want.
- Click Save as template. The bookmark button on the show page (or the 3-dots menu on the index). Pick a name and visibility.
- Find it in the library. Programs → Templates. Three tabs (Tournaments / Leagues / Events). Each card shows divisions count, usage_count, last-used date.
- Click Use to instantiate. Modal asks for name + start date. Everything else copies from the template — time offsets stay relative to your new start.
- Land on the new event's edit page. All fields pre-filled. Make any last-minute tweaks and save. Player-facing in seconds.
- Update or re-save. Click Save as template again on the source event — the system detects the existing template and asks whether to Update existing or Save as new.
What's built in
- Time offsets are relative. A division that started 2 hours after the earliest in the template stays 2 hours after the new anchor. Different start time, same proportional spacing.
- Caps prevent runaway growth. 100 templates per club. 50 personal templates per user. Plenty of headroom without library bloat.
- "Start from a template" picker on New Tournament. Skip the form entirely. Pick a card, name the event, set the date, done.
- Re-save flow is explicit. If you've saved this event as a template before, the modal asks: Update existing (preserves usage history) or Save as new (creates a second one). No silent duplicates.
- Atomic usage counter. Every instantiation does a single DB-level UPDATE — no Ruby-side race conditions, no callback re-fires. Built for concurrent ops on busy event days.
- Soft-fail on missing references. Templated location no longer exists? The new event is created without one, and you pick a fresh location in the editor. No mysterious errors.
- Platform-owner adoption metrics. /platform_owner/templates_dashboard shows total templates, instantiations, adopting clubs, and the most-used templates across the network.
- Acquirer-grade test coverage. 80+ specs across builder + instantiation services, controller endpoints, render-smoke, system-level Capybara walks. Two end-to-end JS flows verify the Stimulus glue.
Why it matters
Most clubs and organizers run the same event over and over — the Wednesday 3.5 league, the monthly Saturday MLP, the quarterly singles bracket. Rebuilding the setup form every time is the highest-leverage time sink in admin work.
- 10× faster setup for recurring events. What used to be a 15-minute form-fill is now a 30-second name + date entry.
- Fewer setup mistakes. Proven configs get reused. The "wait, I forgot to set the refund policy" rebuild after the first registration disappears.
- Cross-admin consistency. Club-shared templates let a senior admin codify the right way to set up an event — the junior admin gets it right by default.
- Lower onboarding cost. New club admins start with a curated template library instead of a blank form. The platform feels lived-in from day one.
Available on every plan
Tournament & League Templates ship free — no tier gate. Save any event today, spin up tomorrow's instance in seconds.
Open your club admin →