Calendar Dashboard
A four-tab command center — overview stats, all your bookings, every event type you've built, and your routing forms.
The /calendar page is the host-side command center for everything scheduling-related in your workspace. It's organized into four tabs so you can move from a quick situational read to deep list management without ever leaving the page.
Screenshot needed — /calendar with the Overview tab showing stats cards and upcoming mini-list
The four tabs
Overview
The default landing tab. Gives you the pulse of your scheduling activity at a glance:
- Stats cards — Total bookings, Completed, Cancelled, and No-show rate over your selected date window
- Upcoming — The next five confirmed meetings across all your links, with attendee name, time, and a Join button when a meeting URL is set
- Event types — Every booking link you've created, shown as a card grid. You can toggle a link on/off directly from here without going into settings
This tab is built for the first thing you do in the morning: scan what's coming up, check the week's numbers, toggle a link off if you're heads-down.
Bookings
The full booking list with search, per-bucket sub-tabs, and inline actions.
Sub-tabs (with live count badges):
| Sub-tab | What it shows |
|---|---|
| Upcoming | Confirmed meetings with starts_at ≥ now, oldest-first |
| Pending | Bookings awaiting your approval (only appears on links with "Requires confirmation" turned on) |
| Past | Confirmed + completed meetings whose starts_at is in the past, newest-first |
| No-show | Meetings you've marked as no-show |
| Cancelled | Meetings cancelled by the attendee or by you |
Search filters across attendee name and email in real time.
Inline actions per row depend on status:
| Status | Available actions |
|---|---|
| Confirmed (upcoming) | Mark no-show |
| Pending | Approve, Decline |
| Past (confirmed/completed) | Mark no-show |
| No-show | — |
| Cancelled | — |
Rescheduled meetings don't appear as ghosts in Past — only the new confirmed row counts. The original rescheduled row is kept in the database for audit but hidden here to avoid double-counting.
Event Types
All your booking links, displayed as a card grid with a colored left accent per event type:
| Color | Event type | What it means |
|---|---|---|
| Sky blue | One-on-one | Solo meeting, your calendar checked |
| Violet | Round-robin | Rotates across a pool of hosts |
| Indigo | Collective | All listed hosts must be free |
| Emerald | Group | One slot, multiple attendees up to a cap |
| Orange | Instant | No slot verification — link fires immediately |
Each card shows the title, slug, duration, and a colored "Active" / "Inactive" badge. The Active toggle switches a link on or off without leaving the tab. The actions menu on each card gives you Copy link, Edit (goes to /settings/booking-links/<id>), and Delete.
Routing Forms
Lists every routing form you've created for the workspace. Each form routes respondents to a specific booking link — or shows a custom message — based on their answers. See Routing Forms for full setup instructions.
Screenshot needed — Routing Forms tab showing two active forms with field/route summary
Other tabs
The dashboard has additional tabs that surface as you enable features:
| Tab | What's there | Docs |
|---|---|---|
| Workflows | Trigger × action automations | Workflows |
| Schedules | Multi-link availability patterns + holidays | Schedules |
| Polls | Open and finalized meeting polls | Meeting Polls |
| One-off | One-time scheduling pages | One-Off Meetings |
| Single-use | Tokenized contact-scoped links | Single-Use Links |
| Recaps | AI Notetaker recaps from past meetings | AI Notetaker & Recaps |
| Analytics | Booking stats, host breakdown, peak-hours heatmap, conversion funnel | — |
Admin toolbar
If you're a workspace admin, the top-right of the dashboard shows an admin toolbar with four buttons:
| Button | Goes to |
|---|---|
| Admin Center | /calendar/admin — KPI tiles, missing integrations, pending invites |
| Managed Events | /calendar/admin/managed-events — admin templates with section locks. See Managed Events. |
| Team Pages | /calendar/admin/team-pages — /team/<slug> landing pages. See Team Pages. |
| User Management | /settings/teams — workspace members, roles, seats |
These don't appear if you're a regular workspace user — only admins and owners.
Shared-via-permissions links
Other workspace members can grant you view or edit permission on their booking links — a Calendly "shared event types" equivalent. Shared links appear on the Event Types tab with a small "Shared" status badge. They're not draggable in your link list (you don't own them) but you can click through to view (and edit, if granted).
Availability insights badge
A chip near the top of the dashboard shows which workload bridges are constraining availability this week. Hover for a breakdown:
3 hosts on PTO this week (alice through Friday, bob through Tuesday, charlie all week) 2 FSM dispatches blocking 5 focus blocks across 3 hosts
Useful as a "why is my schedule so empty?" sanity check. See Availability Bridges for the underlying data sources.
Calendar disconnect banner
If any of your connected calendar tokens have expired or been revoked, a <CalendarDisconnectBanner> surfaces at the top of /calendar and /settings/integrations until you reconnect. Reads as: "Your Google Calendar connection needs reauthorization — bookings on <link> are not syncing to your calendar." Click-through goes to the integration's reconnect flow.
What this page is not
- Not a month-grid calendar — there's no visual timeline view yet (planned for Phase 2 of the scheduling roadmap)
- Not where you configure booking links — the setup wizard lives at
/settings/booking-links - Not a CRM activity log — for contact and deal history, look at the contact or deal detail page in CRM. Bookings auto-create those records, but the source of truth for activity history lives there
Performance
Each bucket is fetched independently with its own Supabase query (status filter applied server-side). Default cap is 200 rows per bucket. The TanStack Query cache slices by workspace + bucket, so flipping between sub-tabs is instant after the initial load. Invalidation on any approve / decline / no-show action is scoped to ["scheduling", "events", workspaceId], which refreshes all open sub-tabs in one pass.
Read next
- Booking Links — create and configure the links that feed this dashboard
- Routing Forms — build multi-step qualification funnels that route to booking links
- Reschedule & Cancel — what the status transitions look like end-to-end
- Google Calendar Integration — how meetings sync out to your real calendar