Shift Fulfilment
Note: Screenshots in this article use data from our internal demo organisation. Any organisation IDs or user IDs visible in the screenshots reference our demo dataset, not your or any other customer's data.
🎯 Overview
Track how shifts are being filled across your organisation — whether claimed by workers in the app, posted but still unclaimed, or assigned directly by managers.
This report:
- Surfaces posted vs claimed shifts and hours across your locations, job titles, contract types and shift types
- Breaks down fulfilment status (claimed in app, unclaimed in app, assigned by manager) by the dimension of your choice
- Highlights which workers are picking up open shifts and how recently they last claimed one
Use this dashboard to:
- Measure the impact of self-service shift claiming in the Sona app
- Identify locations or shift types where unclaimed shifts are piling up
- Recognise the workers most actively claiming open shifts
- Compare fulfilment patterns across job titles, contract types and locations
➕ Benefits
- See in one view how much of your roster is being self-filled vs manager-assigned
- Spot unclaimed shifts before they become last-minute scrambles
- Switch instantly between shifts and hours, or between any breakdown dimension, without leaving the dashboard
- Reward and engage the workers most active in the app
🗂️ Dashboard Tabs
This is a single-page dashboard, so all cards live together with no tab navigation.
The page opens with a Latest Data Sync indicator and a headline scalar showing the number of workers who have claimed shifts in the app over the selected period. The remaining cards break the data down in different ways:
- # Workers Who Claimed Shifts In The App — a single count of distinct employees who claimed one or more shifts in the app during the filter window.
- Posted VS Claimed In App By Parameter — a bar chart showing, for shifts posted in the app, how many were posted vs how many ended up claimed, grouped by the dimension you've chosen in the Dynamic Parameter filter. Use it to spot categories where claim rates are lagging.
- Fulfilment Status Distribution — a pie chart splitting all shifts (or hours) into three groups: posted in app and claimed, posted in app and still unclaimed, and assigned directly by a manager.
- Fulfilment Status By Parameter — the same three-way split as the pie chart, broken down by your chosen breakdown dimension so you can compare locations, job titles or shift types side by side.
- Shifts/Hours By Parameter — a table version of the breakdown, with one row per category and columns for Claimed in the app, Unclaimed posted in the app, Assigned by manager, and Total.
- Open Shifts/Hours Claimed By Person — a per-employee leaderboard of claimed shifts (or hours) with the date of their most recent claim, useful for recognising active claimers or following up with quieter ones.
- Claimed Shifts — a detailed row-level table of every claimed shift in the window: employee, shift type, location, start/end and length in hours.
🎛️ Filters
Standard Filters
- Location / Parent Location / Grandparent Location — filter by organisational hierarchy
- Job Title — filter by employee role
- Contract Type — filter by employment contract
- Full Name / Employee ID — find a specific employee
- Status — employee status (Active, Leaver, Left, Starting Soon, Deactivated). Defaults to Active and Leaver.
Report-Specific Filters
| Filter | Default | What it does |
|---|---|---|
| Shift Type | -- | Narrows results to one or more shift types |
| Allocation Status | -- | Filters by how the shift was allocated (e.g. posted in app, assigned) |
| Fulfilment Status | -- | Filters by whether shifts are claimed, unclaimed, or assigned |
| Include Absence Shifts? | Include absence | Choose to include, exclude, or show only absence shifts |
| Include Agency Shifts? | Include agency | Choose to include, exclude, or show only agency shifts |
| Include Sleep Ins? | Include sleep ins | Choose to include, exclude, or show only sleep-in shifts |
| Include Breaks? | Yes | When set to No, break time is deducted from shift length in the hours calculation |
Dynamic Parameters
Two dynamic parameters reshape what the cards display.
Shift or Hours — switches every aggregated card between counting shifts and summing hours. Defaults to Hours. When set to Hours and Include Breaks? is No, break duration is subtracted from each shift's length.
Dynamic Parameter — chooses the breakdown dimension used by the By Parameter cards (Posted VS Claimed, Fulfilment Status By Parameter, Shifts/Hours By Parameter). Defaults to Location. Options are Shift type, Job title, Contract type, Location, Parent location, and Grandparent location.
📅 Date Filtering
The Date Filter controls the time window for every card on the dashboard. Defaults to This week.
❗️ Important Definitions
- Fulfilment status — describes how each shift came to be filled (or not). Posted in app (claimed) means the shift was offered through the Sona app and a worker picked it up. Posted in app (unclaimed) means it was offered through the app but no one claimed it. Assigned by manager means a manager allocated the shift directly to an employee rather than opening it up to be claimed.
- Hours vs shifts — when Shift or Hours is set to Hours, totals sum each shift's length in hours; when set to Shifts, totals count distinct shifts regardless of length. The Include Breaks? filter only affects the Hours view, where it deducts break duration from each shift's length.
❓ Common Questions
Why does the same shift category appear under both "claimed in app" and "assigned by manager"?
Each individual shift has exactly one fulfilment status, but a category (e.g. a location or shift type) groups many shifts together. The breakdown cards show how that category's shifts split across the three fulfilment paths, so a busy location will typically have shifts in all three columns.
Why is the claimed total smaller than the posted total in the Posted VS Claimed card?
Posted shifts are everything offered through the app within the selected period; claimed is the subset workers actually picked up. The gap is your unclaimed-in-app population — useful for spotting where shift offers aren't converting.
🗓️ Data Coverage
-
Data freshness: Refreshes every 30 minutes via the automated data pipeline. Check the
Latest Data Syncindicator on the dashboard for the exact timestamp.
⬇️ Downloading Data
- To download the current view as a PDF, click the download button in the top-right corner of the dashboard.
- To download an individual chart or table as CSV or Excel, click the download button in the top-right corner of that chart.