The Analytics Dashboard gives you a single view of how your salon is performing. It loads automatically when you sign in and pulls data from four reporting endpoints. The dashboard updates in real time over WebSocket. What you see depends on your role: service providers get personal ROVI and panel metrics, while admins and managers also see the salon-wide Health Score.
Click Dashboard in the left sidebar. The analytics page loads with a spinner while it fetches your data.
What you'll see: A grid layout with multiple cards. Service providers see ROVI Metrics and Panel Calculations at the top. Admins and managers see an additional Health Score section. Everyone sees the Leaderboard and Achievements cards at the bottom.
Use the timeframe selector at the top of the dashboard. Four options are available: Week, Month (default), Quarter, and Year.
Changing the timeframe refreshes all cards on the page. The ROVI metrics, panel calculations, health score, and leaderboard all update to reflect the selected period.
What you'll see: Each card header displays the active timeframe label. Data reloads with a brief spinner on each card.
The ROVI (Resource-Out Value-In) Metrics card is the largest card on the dashboard. It spans two columns and is visible only to service providers.
ROVI tracks five key performance indicators:
| Metric | What it measures |
|---|---|
| Clients Served | Total unique clients you served in the period |
| Avg Ticket Value | Average dollar amount per appointment |
| Rebooking Rate | Percentage of clients who rebooked a follow-up |
| Panel Utilization | How fully your available time slots are used |
| Cross-Service | Percentage of clients who booked multiple service types |
Each metric shows the current value, a trend arrow (green up or red down), and percentage change versus the previous period. An overall ROVI Score appears at the bottom. Scores of 75 and above are rated "Excellent."
What you'll see: Five metric rows with icons, labels, values, and trend indicators. Non-provider users see a blue info banner: "ROVI and Panel metrics are available for service providers."
The Panel Calculations card sits next to the ROVI card. It helps service providers understand their client capacity.
| Field | Meaning |
|---|---|
| Current Panel Size | How many active clients you currently manage |
| Optimal Panel Size | Recommended number of clients for your schedule |
| Max Panel Size | Upper limit before service quality drops |
| Utilization Rate | Current panel size as a percentage of optimal |
| Revenue Per Panel Member | Average revenue each panel client generates |
Four adjustment factors influence the calculation: support, space, complexity, and experience. Actionable recommendations may appear at the bottom of the card.
The Health Score Overview card is visible only to users with the Admin or Manager role. It provides a salon-wide performance snapshot.
The overall health score is a number from 0 to 100 calculated from four weighted components:
| Component | Weight | What it tracks |
|---|---|---|
| Financial Health | 30% | Revenue trends, profitability |
| Operational Health | 25% | Appointment efficiency, no-show rates |
| Customer Satisfaction | 25% | Feedback scores, retention rates |
| Staff Performance | 20% | Employee productivity, utilization |
Below the main score you will find trend comparisons (six-month, three-month, month-over-month, week-over-week), a breakdown by revenue, retention, efficiency, and growth, plus alert banners for metrics that need attention.
The Leaderboard widget is visible to all users. It ranks the top 10 service providers by revenue for the selected timeframe.
Each entry shows the provider's name, rank position, and revenue total. If you are a service provider, your own entry is highlighted.
The leaderboard updates in real time through WebSocket. When a colleague completes a high-value appointment, rankings may shift without a page refresh.
What you'll see: A numbered list of providers sorted by revenue. Your row is visually highlighted. The card header shows the category and active timeframe.
The Achievement Notifications card is visible to service providers. It displays badges and milestones you have earned based on your performance data.
Achievements are awarded automatically. Examples include reaching a client-served milestone, hitting a rebooking rate target, or maintaining a high ROVI score over multiple periods. Each achievement shows its name, description, and rarity level.
Non-provider users see a placeholder card: "Achievement tracking is available for service providers."
What you'll see: A list of earned achievement badges. New achievements may appear in real time as the system recalculates scores daily at 2:00 AM or via WebSocket.
| Issue | Solution |
|---|---|
| Dashboard shows "Failed to load dashboard data" | Check your internet connection and refresh. If it persists, the backend may be temporarily unavailable. |
| ROVI card is missing | You are logged in as Admin or Manager without a provider role. ROVI metrics are only shown to service providers. |
| Health Score section is not visible | You need the Admin or Manager role. Ask your salon administrator to update your permissions. |
| All metrics show zero | Your salon does not have enough data yet. Book and complete a few appointments first. |
| Leaderboard is empty | No providers have recorded revenue in the selected timeframe. Try a longer timeframe. |
| Timeframe change does not update data | The WebSocket connection may be lost. Check the connection indicator and refresh. |
| Panel size shows "0" | Your provider profile needs at least one month of appointments to calculate panel size. |
| Achievement card says "available for service providers" | You are not assigned a provider role. Contact your admin to add a stylist or employee role. |
| Trend arrows are missing | Trend data requires at least two periods of history. After your second month, trends appear automatically. |
| Connection indicator stays red | WebSocket may be blocked by your network. Try a different network or contact your IT administrator. |
The dashboard fetches data from four reporting endpoints. All require authentication and filter by salonId automatically.
| Endpoint | Description |
|---|---|
GET /api/reporting/appointments-by-month | Monthly appointment counts for charting |
GET /api/reporting/revenue-by-month | Monthly revenue totals for trend analysis |
GET /api/reporting/top-revenue | Highest-revenue services or providers |
GET /api/reporting/bottom-revenue | Lowest-revenue services or providers |
All responses follow the standard format: { status: "success", data: ... }