Managing Bookings
Once people start booking, you'll want to see them in one place, move them around, and handle no-shows.
Quick Start
- Sidebar → Calendar to see every booking on your team in week, day, month, or agenda view.
- Click a booking to open the side sheet with attendee details and answers.
- Drag a booking on the grid to reschedule.
- Use the side sheet's Cancel / Mark no-show / Refund buttons for non-drag actions.
The Calendar Workspace
Sidebar → Calendar (or visit /calendar).
Views
| View | When to use |
|---|---|
| Day | Your today, hour-by-hour. |
| Week | The default for desktops — Sun–Sat with a time grid. |
| Month | Birds-eye: all-day chips, no time grid. |
| Agenda | The 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
| Status | Meaning |
|---|---|
| Pending | Awaiting payment (Stripe Checkout in progress) or in commit-flight. Should resolve within seconds; bookings stuck pending for >15 min are auto-expired. |
| Confirmed | Active, on-calendar. The default after creation. |
| Rescheduled | The original slot was changed. The booking record keeps the rescheduled-from history. |
| Cancelled | Cancelled by either side. Slot is freed. |
| No-show | Attendee didn't turn up. Slot was held during the meeting; freed retroactively. |
| Completed | Meeting 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:
| Link | What 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):
- The original slot is freed.
- A new slot is held + confirmed.
- The booking's
startTime/endTimeare updated in place — same booking id. - The host's external calendar event is moved (not deleted + re-created), so any meeting-link references stay valid.
- 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).
Related
- Workflows & Reminders — Customise cancel / reschedule / no-show notifications
- Calendar Integrations — Why calendar events disappear on cancel
- Analytics — Cancellation rate, no-show rate, reschedule frequency