Seat Holds and the Checkout Window: Preventing Double-Fills
The Saturday Night Double-Book
Cohort has one seat left. Two phones open registration at 7:02 p.m. Without holds, both might pass a naive capacity check. Without expiry, holds might clog inventory all weekend.
Live seat math — confirmed plus unexpired pending payment — is how software prevents oversell without desk heroics.
Hold Duration
Roughly forty minutes covers a distracted checkout: find wallet, ask spouse, fix autofill. Longer holds punish eager waitlist owners; shorter ones frustrate legitimate payers.
Automatic expiry every few minutes releases ghost seats back to the pool.
One Live Registration Per Pet Per Cohort
Database constraint level: a pet should not have two competing registrations for the same cohort. Prevents duplicate enrollments from refresh spam or double tabs.
Staff Visibility
Roster board shows seat fill including holds so desk can answer "are we full?" without opening Stripe.
Scenario
Seat eight of eight enters pending payment at 6:58. Second owner sees full cohort or waitlist — not a ninth confirmation. First owner abandons cart; hold expires by 7:40; seat reopens; waitlist offer fires.
Platform Note
Dog training class software should treat capacity as a concurrency problem, not a spreadsheet cell. Dog training facility software benefits when the same org runs parallel products without shared accidental caps.