Skip to content

Managing Bookings

Once people start booking, you'll want to see them in one place, move them around, and handle no-shows.

Quick Start

  1. Sidebar → Calendar to see every booking on your team in week, day, month, or agenda view.
  2. Click a booking to open the side sheet with attendee details and answers.
  3. Drag a booking on the grid to reschedule.
  4. Use the side sheet's Cancel / Mark no-show / Refund buttons for non-drag actions.

The Calendar Workspace

Sidebar → Calendar (or visit /calendar).

Views

ViewWhen to use
DayYour today, hour-by-hour.
WeekThe default for desktops — Sun–Sat with a time grid.
MonthBirds-eye: all-day chips, no time grid.
AgendaThe default for mobile — list of bookings grouped by date.

The view persists per browser via localStorage. The first time you open it on mobile, agenda is selected automatically.

Filters

Top-right of the toolbar:

  • Filters — multi-select event types and hosts.
  • Status — Upcoming (default), Past, Cancelled, No-show, All.
  • External — toggle on to overlay events from your connected external calendars (Google / Outlook). They render with a dashed border so they're visually distinct from Ascend bookings.

Drag to Reschedule

Click and hold a booking, drag to a new time, drop. Ascend POSTs a reschedule, the booker gets an email with the new time, the calendar refreshes. If the new slot is taken or outside availability, the drag is rejected and the booking snaps back.

The Booking Side Sheet

Click any booking to open it. You'll see:

  • Attendee name, email, phone, timezone.
  • Slot start, end, duration, and timezone.
  • Custom-question answers.
  • Status badge (confirmed, pending, cancelled, no-show, completed).
  • Reschedule link the booker can use.
  • Workflow run log (which emails went out, webhook deliveries, etc.).

Action buttons:

  • Cancel — sets status to cancelled, frees the slot, fires the cancel workflow.
  • Mark no-show — for bookings that already passed where the attendee didn't show. Frees the slot retroactively (mostly for analytics) and fires the no-show workflow.
  • Reschedule — opens a date picker to move the booking.
  • Refund — only shown for paid bookings. Issues a Stripe refund (full amount). For partial refunds, do it in the Stripe dashboard.
  • Send message — composes an email to the attendee from your connected mailbox.

Statuses

StatusMeaning
PendingAwaiting payment (Stripe Checkout in progress) or in commit-flight. Should resolve within seconds; bookings stuck pending for >15 min are auto-expired.
ConfirmedActive, on-calendar. The default after creation.
RescheduledThe original slot was changed. The booking record keeps the rescheduled-from history.
CancelledCancelled by either side. Slot is freed.
No-showAttendee didn't turn up. Slot was held during the meeting; freed retroactively.
CompletedMeeting end-time has passed and it wasn't cancelled or marked no-show. Set automatically by the post-meeting sweep.

Bulk Actions

Currently bookings are managed one at a time. Bulk select / bulk cancel is planned for Phase 2 once we see how teams actually use the workspace.


What the Booker Can Do

From the email confirmation, the booker has two tokenised actions:

LinkWhat it does
/b/cancel/{token}Self-cancel. Refund handled per your policy.
/b/reschedule/{token}Pick a new slot from your published availability.

Both pages show the booking summary first, then ask for a reason (optional). The reason is logged on the booking record so you can review trends.


Reschedule Mechanics

When a booking is rescheduled (by either side):

  1. The original slot is freed.
  2. A new slot is held + confirmed.
  3. The booking's startTime / endTime are updated in place — same booking id.
  4. The host's external calendar event is moved (not deleted + re-created), so any meeting-link references stay valid.
  5. The reschedule workflow fires (defaults to a "your meeting has been moved" email to attendee + host).

The booking record keeps the prior slot in its history field — view it on the side sheet under "Reschedule history".


Cancellation Mechanics

Cancellation is hard cancel — there's no soft-delete or restore. Once cancelled:

  • The slot is freed for re-booking.
  • The host's external calendar event is deleted.
  • The cancel workflow fires.
  • For paid bookings: refund is issued per policy.

The booking record stays in the database so analytics still see it. To get it off the calendar workspace view, filter to Status = Upcoming (cancelled bookings are hidden from the default view).


No-Show Marking

Mark a past confirmed booking as no-show from its side sheet. This:

  • Sets the status to no_show.
  • Frees the slot retroactively (mostly analytical — past slots can't actually be re-booked).
  • Triggers the no-show workflow (use this to enforce a "no-shows are charged" policy via webhook to Stripe, or to notify the host's manager).

There's no "auto no-show" — you have to mark them yourself. We deliberately don't infer no-shows because we can't tell whether the meeting actually happened (the meeting tool is outside Ascend).