01 — Start here
Overview & session lifecycle
Open Play is a drop-in session with a live, self-managing queue. Players register ahead of time, check in when they arrive, and the queue engine calls them to courts, balancing games played and wait time. You steer it from the organizer console; the venue watches a TV display.
Web vs. the app — what runs where
Both surfaces manage the same session in real time. Use whichever is in front of you, but each has strengths:
- App The mobile app is the on-court tool. Check players in, call games, enter scores, swap players — all touch-first. Players can only register, pay, check in, and join the queue in the app; the web listing is read-only for those actions.
- Web The web console is the command center. A wider layout, a Quick Actions bar above the courts, per-court status overrides, mid-session court adds, bulk check-in, and the TV display all live on web.
The session lifecycle
Every session moves through a fixed set of states. You drive the transitions:
- Draft — created but not visible. Fully editable.
- Published — visible in discovery; players can register.
- Check-in open — players can check in (opens automatically before start, or you open it manually).
- Live — the queue engine is active and games can be called. You can Pause ⇄ Resume at any time.
- Completed — the session ends, metrics freeze, and review invites go out.
- Cancelled — a terminal state. Confirmed payments are auto-refunded per your cancellation policy.
Note
02 — Prerequisites
Before you host
You can create a session in a couple of minutes. A few things are worth setting up first if your session is paid.
A court to play on
You link your session to a court in one of two ways:
- A listed venue you manage or were invited to — pick the venue and its courts, and optionally link a confirmed booking so dates auto-fill. Web
- An external venue — type the venue name, address, province/city, and one court label per line. Use this for any court booked elsewhere.
Payout details (only if you charge)
Free sessions need nothing. For paid sessions, add your bank payout details before you expect money to land. Go to Organizer → Revenue and fill in your bank name, account name, and account number. All three are required before you can request a payout.
Organizer verification (optional)
Verification adds a “Verified host” badge that players trust. It’s entirely optional — you can host, charge, and receive payouts without it, with no hold period either way. Apply from /organizer on web or Profile → Organizer Verification in the app.
03 — Hosting
Create a session — every field explained
Open the create form from /open-play/create (web) or Open Play → Create in the app. Web is a four-step wizard (Basics → Venue → Rules → Review); the app is one scrolling form. Every field below is grouped the way you’ll meet it.
Basics
| Field | What it does | Options / default |
|---|---|---|
| Title | The session name shown everywhere. Required. | Up to 255 characters. |
| Sport | The sport for the session. Required. | From your configured sports. |
| Description | Free-text notes — pace, expectations, parking, house rules. | Optional, up to 2000 chars. |
| Visibility | Who can find the session. Public shows in discovery; Private needs a password; Unlisted is reachable only by link. | Default Public. Unlisted is app-only. |
| Private password | Shown only when Visibility is Private. Players enter this code to register — and it also unlocks the private TV display. | 4–20 characters. |
| Password hint | A public hint about how to get the code (e.g. “Join the club to get the passcode”). | Optional, up to 240 chars. |
| Skill bucket | A signpost for the level you expect. It labels the session but does not hard-block anyone by itself. | All Levels · Beginner · Novice · Low Intermediate · High Intermediate · Advanced · Expert · Professional. Default All Levels. |
| Cancellation policy | Governs refunds when a paid session is cancelled. | Flexible · Strict · No Refund. Default Flexible. |
Venue & schedule
| Field | What it does | Options / default |
|---|---|---|
| Venue mode | Toggle between a Listed Venue (one you manage) and an External Venue (typed in manually). | Auto-switches to External if you have no managed venues. |
| Link a booking | Attach a confirmed reservation (and, on web, an Open Play block). Selecting one auto-fills the venue, court, and start/end times. | Web also lists your Open Play blocks; the app lists confirmed bookings. |
| Venue courts / court labels | Which physical courts you’ll use. On a listed venue, tick courts and give each a display label. External sessions take one label per line. | At least one court required. |
| Start / End (date & time) | When play runs. End must be after start. | App also requires a future start time. |
| Repeat weekly | Turns this into a recurring series — upcoming instances are created as drafts on a rolling 8-week horizon. | Web lets you pick which weekdays; the app repeats on the start weekday. Series instances stay drafts (Publish-now is ignored). |
| Close registration when play starts | Off by default so late players can still grab open slots during play. On = registration closes at start. | Default off. |
| Check-in opens (minutes before start) | How early players can check in. Check-in always stays open through the end of the session. | Default 30 (range 0–1440). |
Tip
Capacity & pricing
| Field | What it does | Options / default |
|---|---|---|
| Max players | Reserved-spot capacity. | Default 16 (min 2). App also requires ≥ one full game. |
| Waitlist cap | How many can wait for a spot to free up. Freed spots auto-promote the next in line. | Default 8 (0 = no waitlist). |
| Price (PHP) | Registration fee. 0 = free. There is a single price field — no separate fee line to configure. | Default 0. Currency is PHP. |
Note
Queue rules
| Field | What it does | Options / default |
|---|---|---|
| Rotation mode | How the queue picks who plays next. Four modes — see Rotation modes explained. | Round Robin (default) · Random · King of the Court · Paddle Stack. |
| Max consecutive wins | King of the Court only. After this many wins in a row, the reigning team is forced off. | Shows only for KOTC. Default 3, range 1–20; blank = no cap. |
| Players per side | Team size. 2 = doubles, 1 = singles. A game uses two sides. | Default 2 (range 1–10). |
| Match duration (min) | Target minutes per game — used for wait-time estimates (not auto-enforced). | Default 15 (range 5–120). |
| Call timeout (sec) | How long a called player has to appear. This drives the countdown on the display — but nothing happens automatically when it expires (you decide). | Default 120 (range 30–600). |
| Skill grouping | Groups players by session bracket or rating band before a game is assigned. Use this for bracket-style Open Play where players should stay with their own level. | Off by default. Priority = prefer nearest band. Strict = require one same-bracket group. |
| Allow team play | Lets players request to stay on the same side across rotations. You can also force-group players live. | Default off. |
Access gates (optional)
| Field | What it does | Options / default |
|---|---|---|
| Rating gate | Restrict registration to players whose internal DeeQueue rating falls in a range. Blocked players see a clear message. | Type (Singles/Doubles/Any), min/max (0–10), min reliability (0–100), allow-unrated toggle. |
| Require verified DUPR | Players must have a linked, verified DUPR profile and be verified in the DeeQueue DUPR club. Their DUPR IDs become public in the session. | App-only on the create form. Default off. |
Full detail on how each gate decides who can join is in Access gates & who can join.
Publish
Publish immediately is on by default — the session goes live in discovery right after creation. Turn it off to save a draft you’ll publish later. (Recurring series always create drafts.) On web you finish on a Review step; the app creates directly and then offers “Manage Session” or “View Session.”
04 — The queue engine
Rotation modes explained
The rotation mode decides who’s pulled onto a court next and what happens when a game ends. All four modes share one fairness rule underneath; they differ in how they pick and what they do at game end.
The fairness rule (all modes)
The queue always serves fewest games played first, and breaks ties by who’s been waiting longest. So everyone converges toward an equal number of games, and within the same game-count the earliest arrival goes first. Late joiners automatically carry every game they missed into queue balancing, so arriving late cannot move someone ahead of players who were already participating.
Skill and bracket matching
Skill grouping runs before the final lineup is chosen. The engine loads each waiting player's session bracket or rating band, then tries to build a game from one band at a time. This is separate from the public Skill bucket: the bucket advertises the session, while skill grouping controls the actual game assignment.
- Priority modekeeps the queue moving by preferring the anchor player's band first, then the nearest neighbouring bands if a full game cannot be formed.
- Strict mode only assigns a game when enough players from the same band are available. If a court is free but no same-band group can fill it, the court waits instead of mixing brackets.
- Organizer bracket overrides take precedence over ratings, which is useful when you want manual brackets like Low Intermediate and High Intermediate.
Reading old match history
Round Robin Default
Spreads games evenly and mixes partners and opponents across the whole session. It looks at a wide pool and picks the lineup that minimizes repeat pairings for the entire session.
Best for: social / club play where variety and fairness matter most.
Random
Like Round Robin but shuffled — it only avoids repeats from the last 12 games rather than balancing the whole session. Feels fresh without strict bookkeeping.
Best for: a looser, “just mix us up” vibe.
King of the Court
Winners stay on court; losers rotate to the back and the next challengers are called onto the loser’s side. The reign is capped by Max consecutive wins, after which the kings rotate off into a normal re-queue.
Requires a score
Best for: competitive “beat the king” formats.
Paddle Stack Traditional
Strict paddle-rack order: the next players in line come on together, play, then all return to the back — winners and losers alike. No pairing shuffle, no winner-stays. Maximum predictability.
Best for: replicating the physical paddle rack players already know.
The call timer — the one thing that surprises hosts
When you call a game, each called player gets a countdown (the Call timeout). This countdown shows on the TV display and in the app. But when it expires, nothing happens automatically — the system can’t know which player was missing, so it never auto-penalizes anyone.
You resolve a missed call yourself with any of these live actions:
- Start Game anyway if enough players showed.
- Replace the missing player with someone waiting.
- Cancel the call to return everyone to the queue (no penalty).
- Remove a player from the game (keep their queue position, or send them to the end).
- Mark absent the no-show from the Participants tab.
05 — Who can join
Access gates & who can join
Four independent controls decide who can register. You can stack them or leave them all open.
Skill bucket (a signpost, not a wall)
The skill bucket labels the session (Beginner through Professional, or All Levels) so the right players find it. On its own it’s informational — it doesn’t hard-block registration.
DeeQueue rating gate (a real block)
Turn this on to require players’ internal DeeQueue rating to fall within a range. Set the rating type (Singles, Doubles, or Any Format), a min and/or max (0–10), and a minimum reliability (0–100 — higher demands more recorded matches). The Allow unrated players toggle decides whether players with no match history can slip through. Blocked players see a clear message explaining why.
Verified DUPR requirement
App Set at creation in the app. When on, a player needs a linked DUPR profile, a confirmed ranking, and DeeQueue DUPR-club verification. Their DUPR IDs are shown publicly in that session. Blocked players are prompted to link DUPR.
Private password (invite code)
A private session asks registrants for the password you set. That same code:
- lets players register (they enter it on the session page);
- unlocks the TV display for that session on the Live Displays page (covered under TV display setup);
- is embedded in your Share / QR message so staff and invitees can pull it up.
Copy or share it from the session page (organizer-only “Private Password” card) or the Share / QR action.
06 — Management
Registrations, waitlist & check-in
Between publishing and going live, the Participants tab of the organizer console is your roster. Everything here works on web and in the app unless tagged.
Registration & the waitlist
- Players register (and pay, if it’s a paid session) in the app. There’s no manual “approve” step — registrations are auto-reserved.
- When the session is full, extra players join the waitlist (up to your cap) and see their position. When a spot frees up, the next person is auto-promoted and given a short window to claim it; if they don’t, they drop to the back and the next person is offered the spot.
- A player can transfer their own paid registration to another player by email (before check-in) — you don’t have to intervene.
Per-player actions (the ⋯ menu)
Each participant row has an actions menu:
| Field | What it does | Options / default |
|---|---|---|
| Manual Check-In | Check a player in yourself (e.g. they’re standing in front of you). | |
| Give Free Entry | Waive a player's entry fee and cancel any pending payment. | |
| Re-queue Player | Return a removed or absent player to the waiting queue. | |
| Mark Absent | Record a no-show and pull them out of the queue. | |
| Remove Player | Remove from the session and clear them from any game or queue. | |
| Refund… | For paid, confirmed registrations: issue a full or partial refund with an optional reason. |
Check-in day
- Open Check-In yourself, or let it open automatically at the time you configured. Players self-check-in from the app.
- Web Bulk Check-In All checks in every reserved, paid/free-entry, not-yet-checked-in player at once — handy for a group that arrives together.
- Web A status filter (All / Checked In / Not Checked In / In Queue / Waitlisted / Payment Pending) narrows a big roster; both surfaces have search by name.
Walk-ins
Team play groups
Team grouping affects sides, not brackets. If skill grouping is enabled, the queue still has to find an eligible bracket band first; once grouped players are selected, the side picker keeps accepted group members together whenever the game contains the full group.
If you enabled Allow team play, players can pair up — and you can force-create a group from 2+ ungrouped, checked-in players so they stay on the same side through rotations. Break Group splits them back to individuals. Grouped players show a “Linked” tag on the display.
07 — Controls
Running a live session
Once players are checking in, you drive the session from the organizer console. The console has four tabs — Control (courts and queue, the default), Participants, Matches, and Leaderboard (“Ranks”) — plus a collapsible sidebar for everything you set up once and then leave alone.
Lifecycle buttons
Web These live in the console sidebar, under Session Controls, and appear according to the current state. App In the app they sit on the session header.
| Field | What it does | Options / default |
|---|---|---|
| Publish Session | Draft → Published. Makes it registerable. | |
| Open Check-In | Published → Check-in open. Lets players check in. | |
| Start Open Play | Check-in open → Live. Unlocks game calls. Requires at least one checked-in player. | |
| Pause / Resume | Freeze the queue (with an optional reason players see) and unfreeze it later. | |
| End Session | Live/Paused → Completed. Closes the queue and freezes metrics. | |
| Duplicate | Clone this session’s settings into a fresh draft to run it again. | |
| Announcement | Post a message (up to 500 chars) that shows on player screens and the TV, and is spoken by the announcer. Clear it to remove. |
Quick Actions (web)
Web At the top of the Control tab, directly above the courts, with a contextual hint that explains why a button is unavailable. Its buttons:
- Stage Next Game — build the next lineup without committing it to a court.
- Call Next Game — pull the next group onto the suggested open court.
- Fill All Available Courts — call games onto every free court at once.
- Start Game #N — start a called-but-not-started game directly.
App The app equivalent lives in the Control tab header: Assign All Courts and Stage Next Game.
Per-court controls
| Field | What it does | Options / default |
|---|---|---|
| Add Court | Add capacity mid-session, from the console sidebar under Session Controls. Newly added courts may immediately pull a staged game from the queue. | |
| Call Next Game | Pull the next eligible players onto this specific court. Called players get a push notification. | |
| Start Game | Mark a called game active and start its elapsed timer. | |
| End Game | Open the score modal — enter home/away scores (no ties allowed) and confirm. Feeds the leaderboard and ratings. | |
| Cancel / Cancel Call | Return the called/active players to the waiting queue. | |
| Court status override | On an idle court, set Available / Maintenance / Unavailable to keep it out of rotation. | |
| Remove Court | Drop an idle court; the queue redistributes across the rest. (App needs more than one court to show this.) |
The console sidebar (web)
Web A collapsible rail on the right of the console holds everything you set once rather than tap between games. Collapse it to give the courts the full width — the console remembers that choice on this device. On a tablet or phone it opens as a drawer from the Session Tools button in the header.
- Share — the session QR code and smart link.
- Session Summary — registered, checked in, playing, waiting, waitlisted, and (with team play on) active groups.
- Audio Callouts — an announcer for the console itself, described below.
- Session Controls — Add Court plus every lifecycle button.
Announcer on the console (web)
Web The organizer console can speak callouts itself, so you hear the call at the desk without a TV in the room. Turn it on under Audio Callouts in the sidebar; it speaks court calls, your announcements, and leaderboard callouts as they happen.
- It is separate from the TV display's announcer — switching one on never switches on the other, and each device remembers its own setting.
- Enabling it never replays calls that already happened; you only hear what comes next.
- Leave the persona and voice matching the TV and both reuse the same generated audio. Choosing a different voice here is fine — it just generates its own.
Adjusting a lineup mid-game
Inside a called or active game, each player chip has:
- Replace — swap a player out for someone waiting.
- Remove — pull a player from this game only; choose keep their queue position or send to the end of the queue.
- Fill slot — drop a waiting player into an empty slot.
Stage Next Game lets you pre-build a doubles or singles lineup from the queue and either hold it (“stage only”) or call it straight to a court. Staged games appear under “Up Next” and on the display’s “Next Game” panel.
Scoring & the leaderboard
Ending a game opens the score modal: enter both teams’ scores, confirm the two-step review, and submit. Games can’t end in a tie. Scores build the in-session Leaderboard (Ranks) — win/loss standings since check-in.
The 📣 Announce Top 3 button on the Leaderboard tab fires a spoken PA callout of the current standings on every open TV display (audio only — see Announcer setup). It needs at least one scored game.
08 — On-site screen
Set up the TV display
The TV display is the big-screen view players glance at to see who’s on court, who’s next, and the standings. Run it on a laptop or TV browser at the venue — it’s a web feature.
Open it
- 1In the web organizer console header, click TV Display. It opens /open-play/<id>/display in a new tab so your console stays put.
- 2Drag that tab to the TV / second screen. The display auto-requests fullscreen and fills the screen (no scrolling).
- 3It updates automatically when session activity changes — no need to reload. Leave it running for the whole session.
What’s on screen
- Header — session title, sport, a live-status pill, and the “updated” clock.
- Court grid — shows two courts at a time and rotates pages every ~9 seconds. Each court shows the two teams, a badge (Game #, Calling #, Ready, Maintenance), and a big clock that counts down to the call timeout for a called game or up for an active game.
- Next Game — the confirmed staged lineup (only appears when you’ve staged a game).
- Leaderboard — top players since check-in (podium + a couple of runners-up).
- Queue — the next several waiting players with their positions, plus a “+ N more” chip.
- Announcement banner — when you post an announcement it shows large near the bottom for ~30 seconds.
- A full-screen PAUSED or SESSION ENDED overlay when the session isn’t live.
Browse & pin displays
/open-play/displays (linked as Live Displays) lists every session running right now. Use its Refresh button to reload the directory. Filter by Sport, a City / venue / title search, and Status (All Live, Live Now, Check-In Open, Paused).
Private sessions show as locked 🔒 cards. Tap one, enter the session’s invite code (with the hint you set), and it opens the display. The unlock is remembered on that device, so the board opens straight from its card next time. Share the code with venue staff so they can pull the display up on the venue laptop or TV.
09 — PA voice
Set up the announcer (audio callouts)
The announcer is a spoken PA voice that runs on the TV display — it calls players to courts, escalates a final call, reads out the top 3, and speaks your announcements. It lives on the display screen, so set it up on the same laptop/TV.
Turn it on
- 1On the display, find the small puck at the bottom-left corner. Hover (or tap) to expand it.
- 2Click Enable. Browsers block autoplay audio until you interact, so this click is required — it also speaks “Audio callouts enabled.” to confirm the speakers work.
- 3Once enabled it’s remembered on that device, so it stays on across reloads. A green “A” means it’s on; a red “!” means off or unavailable.
- 4Turn the venue speakers up. Use Test to preview a sample callout.
Voice & persona
In the announcer’s Settings drawer you can pick a persona — Calm, Classic (default, polished arena PA), or Lively — and a voice (Kore, Charon, Aoede — the default, Puck, or Fenrir). Preview with Test selected voice. Your choice is saved per session on that device.
Fine-tune playback with URL parameters on the display: ?volume=0.8 (0–1) and ?rate=1.0 (0.6–1.4). To run a display with no audio at all, add ?audio=off.
What the announcer says
- Court calls — when you call a game: “Now calling {Court}. {Team A} versus {Team B}. Please head to {Court}. Your game is ready.”
- Final call — within the last 30 seconds before the call expires it escalates: “Final call for {Court}… please report now, or your spot may be released.”
- Top 3 callout — when you press 📣 Announce Top 3, it reads the current standings once. Audio only — nothing appears on any banner.
- Your announcements — while the session is live, a posted announcement is spoken (“Open play announcement. …”) and also shown as the on-screen banner.
Good to know
- Clips play one at a time on a single queue and never repeat the same call.
- The Announce Top 3 callout only plays if a display was open and enabled within about a minute of the button press — it won’t replay a stale one when you open a display later.
- If the venue’s network or the voice service hiccups, clips fall back to the browser’s built-in voice automatically; a hung clip is force-stopped so it can’t silence the queue.
10 — Changes & wrap-up
Editing, cancelling & the recap
Editing a session
You can edit while the session is a draft, published, or check-in open. Once it goes live, editing is locked — manage it from the console instead.
- Editable: title, description, announcement, visibility & password, skill, cancellation policy, rating gate, all queue rules, schedule, capacity, and price.
- Locked forever: sport, venue, and courts can’t change after creation.
- Changing price or shrinking capacity below what’s already reserved triggers a “heads-up” confirmation — already-paid players keep their original amount.
- For a recurring series you choose the scope: only this, this + future, or all unstarted sessions.
Cancelling
- Cancel Session notifies affected players, closes the queue, and auto-refunds confirmed payments per your cancellation policy (pending payments are voided). It can’t be undone.
- Cancel Series calls off every upcoming, not-yet-started instance (with auto-refunds); sessions already in progress or completed are left as they are.
The recap
When you End Session, metrics freeze into a post-session summary: attendance, games played, net revenue, no-shows, and top players. The detail page adds fill rate, average games per player, no-show rate, average wait, and (for paid sessions) payment conversion and refund rate. Players get a recap and an invitation to rate you.
11 — Finance
Getting paid (payouts)
For paid sessions, money flows from the player’s payment, through any platform fee, into your disbursable balance, which you cash out with a payout request. Everything below is on the web Organizer → Revenue page.
How the money splits
- Your price is the base amount. The DeeQueue platform fee is set by admin and defaults to 0 unless configured.
- Customer-pays (the usual setting): the fee is added on top, the player pays it as a separate line, and your net is the full base price.
- Host-absorbs: the player pays only your price and the fee comes out of your cut.
- Your net for each confirmed payment = base − (fee only if you absorbed it) − (your share of any refund). A fully refunded payment nets zero.
Requesting a payout
- 1Add your bank payout details (bank name, account name, account number) on Organizer → Revenue. All three are required. (The GCash field isn’t used for disbursement — payouts are bank-only.)
- 2Your disbursable balance = lifetime net minus anything already in a pending/approved/processing/paid request.
- 3Request a payout — leave the amount blank to request the full balance. You can’t request more than your disbursable balance.
- 4An admin processes it. The request moves through pending → approved → processing → paid (or failed / rejected). You can watch the status but can’t process it yourself.
Holds that block a payout
- Missing bank details — you can’t request until all three fields are filled.
- A refund that’s in flight (even before the money leaves) immediately reduces your balance, so you can’t cash out revenue that’s being refunded.
Refunds
Open Play refunds happen in exactly two ways:
- You issue one from a participant’s row — full or partial, with an optional reason. Card-rail refunds go back automatically; manual GCash refunds are queued for the admin to send (1–3 business days).
- Cancelling the session auto-refunds every confirmed payment in full.
There is no automatic refund for a session simply ending, a no-show, a free entry, or a player leaving early — issue those yourself if you want to. Any refund immediately lowers your net for that payment.
12 — Reputation
Ratings & reviews
Players who attended can rate you 1–5 stars and leave a comment. Your average shows next to your name on sessions and on your profile.
How players rate you
- Only players who checked in to a completed session can review, and only within 7 days of it ending.
- When a session completes, checked-in attendees who haven’t reviewed get an invite (“How was your session?”). They can also rate from the session recap.
- One review per player per session; resubmitting updates their existing one. Comments run up to 1000 characters.
- Your public average is hidden until you have at least 3 reviews — before that you show as a “New organizer.”
Disputing an unfair review
On your profile’s reviews section you can Dispute a visible review you believe is unfair, giving a reason. The review stays public and still counts toward your average (marked “Under review”) while an admin arbitrates. The moderator either keeps it (restored to normal) or removes it (hidden, and your rating is recomputed without it).
13 — Cheat sheet
Quick reference & gotchas
Defaults worth remembering
- Max players 16 · waitlist 8 · price 0 (free)
- Check-in opens 30 min before start; stays open to the end
- Rotation: Round Robin · players per side 2 (doubles)
- Match duration 15 min · call timeout 120 s
- King of the Court cap: 3 wins (blank = no cap)
- Platform fee: 0 unless admin sets one
Top gotchas
- Missed calls don’t auto-resolve — the timer is just a countdown; you act.
- King of the Court needs a score each game or winners won’t stay.
- Sport, venue, and courts are locked after creation.
- Editing locks once live — change rules beforehand.
- Announce Top 3 is audio-only and needs a display open within ~1 min.
- Payouts are bank-only — add your bank details before requesting.