Bronjoy
Guides

Waitlist

Manage waitlists for fully booked services — queue clients and offer slots when they open up.

Overview

When all slots for a service are booked, clients can join a waitlist. If an appointment is cancelled, the next person in line is offered the slot. Bronjoy manages the queue, offers, and expiration automatically.

How It Works

Client joins waitlist
       ↓
   [Waiting]  ←  position in queue
       ↓
  Slot opens (cancellation)
       ↓
   [Offered]  ←  time-limited offer
    ↙     ↘
[Booked]  [Expired/Declined]
             ↓
       Next person offered

Statuses

StatusMeaning
WaitingIn the queue, waiting for a slot
OfferedSlot offered — client has a time window to accept
BookedOffer accepted, appointment created
ExpiredClient didn't respond before the offer expired
CancelledClient or staff cancelled the entry

Staff Workflow

View the waitlist

GET /api/org/waitlist
Authorization: Bearer your-token

Filter by service, status, or preferred date:

GET /api/org/waitlist?service_id=1&status=Waiting&preferred_date_from=2026-04-01

Search by client name, email, or phone:

GET /api/org/waitlist?search=maria

Add a client to the waitlist

POST /api/org/waitlist
Authorization: Bearer your-token
Content-Type: application/json
{
  "client_id": 42,
  "service_id": 1,
  "staff_id": 3,
  "preferred_date": "2026-04-01",
  "preferred_time_slot": "morning",
  "notes": "Only available before noon"
}

preferred_time_slot options: morning, afternoon, evening

Manually offer a slot

When you know a slot is opening up:

POST /api/org/waitlist/{waitlistEntry}/offer
Authorization: Bearer your-token
Content-Type: application/json
{
  "start_time": "2026-04-01T10:00:00Z"
}

The entry moves to Offered status. The client is notified and has a limited time window to accept (default: 2 hours).

Cancel a waitlist entry

POST /api/org/waitlist/{waitlistEntry}/cancel
Authorization: Bearer your-token

View summary

Get a count of entries by status:

GET /api/org/waitlist/summary

Client Workflow

Clients interact with the waitlist through the booking flow:

Join the waitlist

From the public booking page (works for guests and signed-in clients, same as booking):

POST /api/client/booking/{slug}/waitlist
Content-Type: application/json
{
  "service_id": 1,
  "preferred_date": "2026-04-01",
  "preferred_time_slot": "afternoon",
  "name": "Maria Garcia",
  "phone": "+998901234567"
}

View waitlist entries

GET /api/client/waitlist
Authorization: Bearer client-token

Accept an offer

When a slot is offered:

POST /api/client/waitlist/{waitlistEntry}/accept
Authorization: Bearer client-token

This creates an appointment at the offered time. The waitlist entry moves to Booked.

Decline an offer

POST /api/client/waitlist/{waitlistEntry}/decline
Authorization: Bearer client-token

The slot is offered to the next person in line.

Cancel waiting

POST /api/client/waitlist/{waitlistEntry}/cancel
Authorization: Bearer client-token

Check queue length (public)

No authentication needed — show on the booking page:

GET /api/booking/{slug}/waitlist/count?service_id=1&date=2026-04-01

Auto-Promotion

When enabled, Bronjoy automatically offers slots to the next person in the queue when an appointment is cancelled.

Enable in organization settings:

SettingDescriptionDefault
waitlist_auto_promoteAutomatically offer slots on cancellationfalse
waitlist_promotion_window_hoursHours before an offer expires2

When auto-promote is on:

  1. An appointment is cancelled
  2. Bronjoy finds the next Waiting entry for that service/date
  3. The slot is offered automatically
  4. If the offer expires, the next person is offered

Best Practices

  • Enable auto-promotion for popular services — it fills cancelled slots without staff intervention
  • Set a reasonable promotion window — 2 hours works for same-day; extend to 12–24 hours for advance bookings
  • Monitor the waitlist summary — a long waitlist for a service suggests you need more staff or time slots
  • Add notes when offering slots — include the specific time being offered so clients understand the offer
  • Use preferred_time_of_day — it helps match clients to slots they'll actually accept, reducing decline rates
Copyright © 2026