ShiftPilotUser Manual
Back to app

Dashboard & My Schedule

Everyone lands somewhere different after login, but two things are true for every role: the command-center dashboard is the first thing schedulers and admins see, and every logged-in user with a staff profile gets a personal schedule. This page covers both, plus the header search box that gets you anywhere fast.

The Command-Center Dashboard (/)

Command-center dashboard for a Scheduler, showing coverage tiles, active alerts, on-call, open shifts, pending requests, expiring credentials, and today's activity

The dashboard is a single spot-check for "what needs my attention right now," built by fetching one /api/dashboard payload that pulls live from the eligibility, coverage, alerts, and audit systems described in Getting Started. Nothing here is cached beyond the page load — hit Refresh in the header banner (or reload) and every tile recomputes from current data. Org-wide tiles (coverage, alerts, on-call, open shifts, requests, credentials, activity) only show up for roles with org-level visibility — Scheduler, Charge/Lead, Facility Admin, Enterprise Admin, System Admin, On-Call Coordinator, and Auditor. Every number on the dashboard is clickable: clicking a tile or a count opens a drilldown dialog with the underlying rows.

Coverage status — today

Close-up of the three coverage status tiles: At Target, Below Target, Below Minimum

Three tiles summarize every coverage window generated by the coverage engine for today's date:

TileMeaning
At TargetAssigned headcount meets or exceeds the staffing model's target for that station/service/window.
Below TargetAssigned headcount is at or above the minimum, but below target — a soft shortage (SHORTAGE_WARNING).
Below MinimumAssigned headcount is below the required minimum — a hard shortage (SHORTAGE_CRITICAL).

Clicking a tile opens a table of the specific station/service windows behind that count, each showing assigned/minimum/target as a fraction so you can see exactly how short (or how comfortably staffed) a window is. See Scheduling Grid & Coverage for how these same numbers drive the shortage banner on the grid itself.

Active Alerts

Rolls up every currently-active alert (not snoozed) by type — shortage warnings/criticals, competency violations, credential expirations, double-bookings, overtime risk, time-off conflicts, and on-call gaps — with a snoozed count called out separately. Click any type chip to see the individual alerts: severity, message, where (station/service/staff), and date.

Who's On Call Now

Shows every on-call task that's currently active, with who's covering it (name, tier — Primary/Backup/etc. — and the time window). A task with nobody assigned to the current window is called out in red as "No one on call right now," and rolls into the panel's uncovered count. For the full on-call rotation model and how gaps get filled, see On-Call & Time Tracking.

Today's Gaps & Open Shifts

Lists shifts today that are unassigned (OPEN) or urgently unassigned (HOT) — the same open-shift states you'd see on the scheduling grid. The card shows up to six as badges with a "+N more" link; the drilldown lists every one with its status, station, service, and time.

Pending Requests & Swaps

Splits into two counts — pending time-off requests and pending swap requests — each opening its own drilldown. The swap drilldown shows the swap type and the from-staff → to-staff direction for each item. Approving/denying happens on the Time Off and Swaps pages, not from this panel; this is a "how much is in my queue" view. See Availability, Time Off & Swaps for the approval workflow.

Expiring & Expired Credentials

Counts staff competencies expiring within the next 60 days, split into expired (already lapsed) vs. expiring soon. This is the same underlying data that powers the eligibility engine's credential checks — a station requiring a credential that's expired will start failing eligibility for that person the moment it lapses. See Staff, Credentials & Organization for the credential catalog and expiration handling.

Today's Activity

Two counts: availability changes (added/removed) and call-offs, both scoped to today. Useful as a quick "did anything change since I last looked" check without digging into the audit trail.

Close-up: Active Alerts & Who's On Call

Close-up of the Active Alerts and Who's On Call Now panels

My Upcoming Schedule widget

My Upcoming Schedule widget on the dashboard, showing a provider's next shifts and on-call windows

Right below the command-center banner, every logged-in user with a linked staff profile sees a My Upcoming Schedule card — their own next shifts and on-call windows, merged and sorted by date, capped at six items. This shows up regardless of role: a Provider/Staff account sees their own clinical shifts, an On-Call Coordinator sees their own on-call tasks if they have any, and so on. If the account isn't linked to a staff profile, the card says so instead of showing an empty schedule. A View full schedule button links to /my-schedule for the complete picture.

The My Schedule page (/my-schedule)

The full personal-schedule page has three tabs: Upcoming, Past, and Calendar Sync.

Upcoming

My Schedule page, Upcoming tab, listing shifts and on-call windows with Request time off and Give away actions

Every future shift and on-call window, in date order. Each shift row (on-call rows don't get these actions) has two buttons:

  • Request time off — opens a dialog pre-filled with that shift's date, where you pick a type (Vacation, Sick, Education/CME, Jury Duty, Other), confirm the date range, and optionally add a note. If approved, any shifts in the range are automatically released as open coverage gaps — the release isn't optional or manual.
  • Give away this shift — opens a dialog listing only staff who are actually eligible for that slot (checked live against the eligibility engine), so you can't accidentally offer a shift to someone who isn't qualified for it. Picking a name and submitting creates a one-way swap request awaiting approval.

A Post availability button in the tab bar opens a separate dialog for declaring recurring or one-off availability/unavailability windows — it's not tied to a specific shift row.

For the deep mechanics of eligibility-gated swaps, see Availability, Time Off & Swaps. For how on-call windows show up in this same list, see On-Call & Time Tracking.

Past

My Schedule page, Past tab, showing historical shifts with a read-only notice

A history of completed shifts and on-call windows. This tab is explicitly read-only — no request-time-off or give-away actions appear on past rows, since historical shifts can no longer be changed. It exists purely for your own record-keeping.

Calendar Sync

My Schedule page, Calendar Sync tab, showing the outbound ICS subscription link and the inbound external-calendar import panel

Two independent, one-directional integrations live side by side:

  • Subscribe to your ShiftPilot schedule (outbound) — a personal, secret ICS feed URL you add to Google Calendar ("Other calendars" → "From URL") or Outlook ("Add calendar" → "Subscribe from web"). Once subscribed, your shifts and on-call windows keep appearing there as they change — most calendar apps refresh a subscribed feed every few hours on their own schedule, not instantly. A Regenerate link action invalidates the old URL (useful if it ever leaks) and requires re-subscribing wherever it was added.
  • Import your Google/Outlook availability (inbound) — paste your calendar's secret iCal address and either save it for later or Sync now immediately. This is an on-demand, one-way pull of your busy times into ShiftPilot as Unavailable blocks, so schedulers can see your personal conflicts. It does not push ShiftPilot shifts anywhere — that's what the subscription feed on the left is for.

Full mechanics of the calendar export/import pipeline (ICS format, sync cadence, API details) are covered in Email, Calendar & API.

The two actions, up close

Give away this shift dialog, listing eligible staff for the selected slot

Request time off dialog, with type, date range, and optional note

Global search (⌘K)

Global search palette open with "Emma" typed in, showing matching staff results

The search box in the header — press ⌘K (or Ctrl+K on Windows/Linux) anywhere in the app, or click the box directly — opens a command palette that searches three things at once as you type (after a short debounce, starting at 2 characters):

  • Staff — matched by name, with their role shown as a subtitle.
  • On-Call Schedules — on-call tasks/rotations matching the query.
  • Stations — physical or logical stations matching the query.

Selecting a result navigates straight to it. Note that seed/demo data can include duplicate names across different staff records (e.g., more than one "Emma" with different roles) — the subtitle next to each result is what disambiguates them, not the name alone.

Where this fits

Rest badges & shift handoffs

On My Schedule, each upcoming shift shows how much rest you get since your previous shift — an "Xh rest" badge that turns amber when it's short (under 11h) and red when it's critical (under 8h), so back-to-back shifts and quick turnarounds are obvious at a glance. It handles overnight shifts and is informational only (it never blocks scheduling).

Every shift also has a Handoff note thread: leave a note for the next person on that assignment (or read theirs). The assigned staff member and schedule editors at that station can add notes; everything is timestamped and attributed.

Mobile

ShiftPilot is fully responsive — the navigation collapses to a drawer, tables and the scheduling grid scroll horizontally with a pinned first column, and dialogs fill the screen. On a phone or tablet you manage everything; on the schedule, tap any cell to assign from the suggested-fills list (drag-and-drop is the desktop path). ShiftPilot is also an installable PWA — "Add to Home Screen" gives it an app icon and a standalone window.