Skip to content

RSVP deadlines

By default, families can RSVP for an event up until it starts. You can narrow that window per event.

The RSVP deadline fieldset on the event edit form

Three modes

Pick one from the RSVP deadline section on the new/edit event form:

ModeBehavior
Open (default)RSVPs allowed until event starts.
Close N minutes before startCutoff is a relative offset. Useful when the time changes — the deadline moves with it.
Close at a specific date/timeCutoff is an absolute wall-clock time (event’s local tz).

What happens after the cutoff

On the family page, for that event:

  • The Y / M / N buttons render disabled with a ”🔒 RSVPs are closed for this event” note above them.
  • Existing RSVPs are still visible (locked in).
  • A family trying to POST anyway gets a 400 error from the server.

Family page event with disabled RSVP buttons

Coaches can always override

Your /coach/today attendance chips keep working after the deadline. The coach-side endpoint deliberately bypasses the cutoff so you can mark someone present at the last second when they show up unexpectedly.

When the close time uses event tz

The deadline is interpreted in the event’s tz (typically the club’s America/Denver). The DST-correct conversion is done server-side, so a 7am-the-morning-of cutoff really means 7am Mountain even if it’s 6am Pacific.

Automatic reminders are scheduled

Setting a deadline does more than gate the buttons — it schedules two push reminders to families with no RSVP yet:

WhenMessage
24 hours before close”RSVPs close in 24 hours: {event}“
1 hour before close”RSVPs close in 1 hour: {event}”

Only families with at least one athlete in the event’s groups who haven’t RSVP’d are pushed. The pushes go through the same queue as other notifications, so families who have push enabled receive them on their phone like any other update. Families that have already responded get nothing — no spam.

Reminders are durable: even if the worker restarts or a deploy happens, the schedule keeps. They cancel themselves naturally once everyone has RSVP’d.

If you cancel the event, the reminder also skips — when each reminder wakes up, it re-checks the event’s status and aborts if the event has been cancelled or deleted. So if a Sunday practice is cancelled Saturday night, families won’t get a “RSVPs close in 1 hour” buzz at midnight.

Series + bulk creation also schedule reminders. When you set an RSVP deadline in the series defaults, every occurrence created from the series gets its own reminder schedule, anchored to that occurrence’s own deadline.

Adding a deadline to an existing event also works. If you edit an event that originally had Open and switch it to a 60 minutes before start deadline, the reminders are scheduled at that moment — no need to delete and recreate the event.

Bulk-update also schedules. From /coach/events filter rail → select N events → Bulk edit → set RSVP deadline fields and save. Each affected event gets its own reminder schedule. Useful for applying “close 60 minutes before start” to a whole season’s practices in one shot. The bulk path doesn’t fire family notifications about the deadline change itself (it’s a “description” change — banner-only).

Changing an existing deadline re-anchors the reminders automatically. If reminders are already scheduled and you edit the event to shift the lead-minutes or absolute close time (or you move start_local on a “close N minutes before start” event), a fresh reminder schedule is created and the old one self-cancels at fire time. So you can edit the deadline as many times as you want; only the most recent schedule actually pushes.

Tip: use “60 minutes before start” for most cases

Most coaches want some buffer to plan around the actual attendance, so “close 60 minutes before start” is a good default. It also nudges families to RSVP early, and the auto-reminders above give them a 24-hour heads-up + a 1-hour last call.