RSVP to a Ride
A user indicates their intention to join a ride and selects where they will join from.
Who Can Do This
- Any user who can discover the ride:
- Private ride: users with the ride link.
- Public ride: any authenticated user.
- Group ride: members of the group the ride was created in.
Steps
- Open the ride.
- Select an RSVP status:
yes,no, ormaybe. - If status is
yesormaybe, select a joining location — the breakpoint where you plan to join the ride. - Submit the RSVP.
Rules
joiningLocationIdis required when the status isyesormaybe. Any breakpoint type is valid as a joining location, includingdestination. A participant can update their joining location at any time while the ride isupcomingoron-going(subject to the end-time cutoff).- If the ride has Require RSVP Approval enabled, the RSVP is submitted as pending and must be approved by the creator or an admin before the participant gains full access.
- If
maxRidersis set and the current combined count ofyes,maybe, and pending participants has reached the limit, no furtheryesormaybeRSVPs are accepted. All three statuses consume a slot. A pending RSVP holds the slot until it is approved (converting toyes) or rejected (freeing the slot). LoweringmaxRidersafter RSVPs are in place does not remove or invalidate any existing participant — it only tightens the gate for new submissions. - A
maybeRSVP is automatically upgraded toyeswhen the participant starts the ride. - A user can RSVP or update their RSVP while the ride is
upcomingoron-going. Late RSVPs on anon-goingride are allowed — the participant can join and start navigation immediately. Changing fromyesormaybetono— or withdrawing a pending RSVP by changing tonobefore it is approved — frees the slot immediately, allowing another rider to RSVP. - A
noRSVP is reversible. A user who RSVPdnocan change back toyesormaybeat any time while the ride isupcomingoron-going, subject to the same capacity and access rules as a new RSVP.
What Happens Next
yes: the participant has access to the ride's navigation and intercom features.no: the participant is recorded as not attending. No access to navigation or intercom.maybe: the participant is recorded as tentative. Access to navigation and intercom features is granted. Status upgrades toyesif the participant starts the ride.- Pending (approval required): the RSVP is queued until a creator or admin approves it.
Failure Cases
- Ride has ended: RSVPs cannot be submitted or updated after the ride's scheduled end time has passed.
- Ride is full: the combined count of
yes,maybe, and pending participants has reachedmaxRiders; no moreyesormaybeRSVPs are allowed. - No joining location selected: RSVP cannot be submitted without a joining
location for
yesormaybestatus. - Not discoverable: the user does not have access to the ride (no link for private, not a group member for group rides).
- Ride is a draft: draft rides are visible only to their creator. They cannot be shared, discovered, or RSVPed to by anyone else — including group members for group rides.
- Blocked participant: a user on the ride's block list (previously removed or rejected by the creator or an admin) cannot re-RSVP. The ride is hidden from Discovery for that user. If they follow a direct link, the ride appears as unavailable. The creator can unblock them — see Remove a Participant.
Status: partially-live. Core yes/no/maybe selection with joining location is complete on both backend and frontend. Missing: RSVP approval queue — backend does not create a pending state when
requireApprovalis enabled;maxRiderscapacity not enforced by backend; blocked-participant check absent; draft ride prevention not explicit in backend.