Appearance
Work Reports β Admin Guide β
Work Reports gives your team a structured way to document what they did each shift. As an admin, you control whether the feature is on, what agents fill in, and how you review and follow up on submissions.

Who can do this?
All actions in this guide require the Admin or Owner role. Agents only see their own reports β they cannot access the admin management view.
Overview β
When Work Reports is enabled:
- Agents submit a daily report after each shift using a form you define.
- Admins see every agent's submissions in a central dashboard, sortable and filterable by template, date range, and agent.
- The system detects missed reports and can notify agents automatically via Slack DM or email.
- A Leaderboard ranks agents by weighted performance score across all reported metrics.
- A Calendar View lets you see submission coverage day-by-day across your entire team.
Enabling Work Reports β
Work Reports is disabled by default. You must enable it before agents can see or submit reports.
- In the left sidebar, go to Settings.
- Click Workspace Modules.
- Find the Work Reports toggle.
- Switch it ON.
- Click Save (if a save button appears) or wait for the auto-save confirmation.
πΈ Screenshot: Workspace Modules settings page with Work Reports toggle highlighted in the ON position
Once enabled, Work Reports (labelled My Reports) will immediately appear in the sidebar for all agents in your workspace. Agents can start submitting reports straight away.
Disabling Work Reports
If you toggle Work Reports OFF, existing reports are preserved in the database but the sidebar link disappears for agents. They will not be able to create new reports while the feature is disabled. Re-enabling it restores access to all historical data.
Plan your rollout
Inform your team before enabling Work Reports. If agents don't know what they're supposed to submit or why, you'll get low-quality reports or none at all. A brief team message explaining the purpose and expectations goes a long way.
Report Templates β
Report Templates define the structure of every agent's report. Instead of a fixed form, you can customise exactly what information agents provide when they submit a report.
What Is a Template? β
A template has:
- A Name β an internal label to identify the template (e.g. Standard Daily Report, Weekend Shift Summary)
- Fields β the list of inputs agents see in their report form
Only the active template is used when agents submit new reports. You can have multiple templates saved but only one active at a time.
Default template
Before you create a custom template, agents will see the built-in default form with the standard fields (Date, Hours Worked, Tasks Completed, Blockers / Issues, Notes). Creating and activating a template replaces this with your custom structure.
Creating a Template β
- Go to Work Reports in the sidebar.
- Click the Templates tab (or navigate to Settings β Work Report Templates).
- Click New Template.
- Enter a Template Name (e.g. Level 1 Support Daily Report).
- Add your fields:
- Click Add Field.
- Set the Field Label (e.g. Tickets Resolved, Escalations Made, System Issues).
- Choose the Field Type: Text (single line), Textarea (multi-line), Number, or Dropdown.
- Mark whether the field is Required or optional.
- Repeat for each field you want.
- Drag and drop fields to reorder them.
- Click Save Template.
πΈ Screenshot: New Template form with several fields configured, drag handles visible
Setting the Active Template β
- On the Templates list, find the template you want to use.
- Click Set as Active.
- A confirmation banner appears: "This template is now active. New reports will use this structure."
πΈ Screenshot: Templates list with "Set as Active" button highlighted on one row and an "Active" badge on the current template
Changing the active template
Switching the active template only affects new reports created after the change. Existing submitted reports retain the structure they were created with. Agents currently editing a Draft report will see the new template fields the next time they open or refresh the form.
Editing a Template β
- Open the Templates list.
- Click Edit next to the template you want to change.
- Add, remove, reorder, or rename fields.
- Click Save Template.
Avoid frequent template changes
If you change the active template often, your historical reports will have different structures, making bulk review harder. Try to finalise your template before rolling it out to agents.
Deleting a Template β
- Open the Templates list.
- Click Delete next to the template you want to remove.
- Confirm the deletion.
You cannot delete the active template
To delete a template that is currently active, first set another template as active (or re-enable the default), then delete the one you no longer need.
Reviewing Agent Reports β
The admin Work Reports Dashboard gives you a real-time picture of who has submitted a report and who hasn't β for a given template, date, and time window.
Accessing the Dashboard β
- In the left sidebar, click Work Reports.
- The Dashboard loads automatically, defaulting to today in Day view with the first available template selected.
From the dashboard header you can also jump to:
- π Leaderboard β agent performance ranking
- π Calendar β day-by-day submission heatmap
- π All Submissions β full paginated list of every submission
πΈ Screenshot: Work Reports Dashboard header showing the Leaderboard, Calendar, and All Submissions quick-links
Template Tabs β
At the top of the filter bar, each active report template appears as a tab button. Click a template tab to load submission data for that template only.
- The currently selected template is highlighted in indigo.
- If no templates exist yet, a placeholder message is shown. Go to Settings β Report Templates to create one.
- The first template is auto-selected when you open the dashboard.
πΈ Screenshot: Template tab row with three templates; the first is highlighted as active
Day / Week / Month Toggle β
To the right of the template tabs, a Day / Week / Month toggle controls the reporting period:
| View | What it shows |
|---|---|
| Day | A single calendar day (default: today) |
| Week | MondayβSunday of the selected week |
| Month | The full calendar month of the selected date |
Click any option to switch immediately. The agent panels and stats bar update to reflect the chosen period.
Date Navigation β
Use the β β arrow buttons to step backward or forward through days, weeks, or months (depending on the current toggle). The current range label (e.g. Today, Mar 2 or Mar 2 β Mar 8, 2026) is displayed between the arrows.
When you navigate away from the current period, a Today button appears. Click it to jump back to the current day/week/month instantly.
πΈ Screenshot: Date navigation row showing left arrow, "Today, Mar 2" label, right arrow, and a "Today" jump button
Stats Bar β
Below the filter controls, four stat cards summarise the current period at a glance:
| Card | What it shows |
|---|---|
| β Submitted | Number of agents who have submitted at least one report |
| β³ Not Yet | Number of scheduled agents who have not yet submitted |
| π₯ Scheduled | Total agents scheduled to work in this period |
| Completion % | Submission rate with a colour-coded progress bar (green β₯ 100%, yellow β₯ 70%, orange β₯ 40%, red < 40%) |
πΈ Screenshot: Four stat cards showing submitted=7, not yet=3, scheduled=10, completion=70% with a yellow bar
Submitted and Pending Panels β
The main content area is split into two side-by-side panels:
β Submitted panel β lists every agent who has submitted a report for the selected period.
- Shows agent avatar, name, the work date and time the report was submitted.
- If an agent submitted multiple reports in a week/month view, a count badge appears (e.g. 3 reports).
- Click View β on any agent row to open that agent's full report.
- A π All done! banner appears when the submission rate hits 100%.
β³ Not Submitted Yet panel β lists every scheduled agent who has not yet submitted.
- Shows agent avatar, name, and a label confirming they are scheduled for this period.
- Each row shows an Awaiting badge to distinguish pending agents at a glance.
- When all scheduled agents have submitted, this panel shows π Everyone submitted!
πΈ Screenshot: Two-column layout with Submitted on the left (green header, 7 agents) and Not Submitted Yet on the right (amber header, 3 agents)
Off / Not Scheduled Strip β
Below the two main panels, a compact strip shows agents who are not scheduled to work during the selected period (e.g. they have no working-day configuration or have a day off). These agents are not counted in the submission stats β they are shown purely for reference.
Agents appear as small avatar chips labelled with their name. The strip is only visible when at least one agent falls into this category.
πΈ Screenshot: "Off / Not Scheduled Today" strip showing four agent chips at the bottom of the dashboard
If the dashboard shows "No one is scheduled"
This means no agents are assigned a working schedule that overlaps with the selected period. Check Agents β [Agent Name] β Edit and ensure their working days are configured correctly.
Work Report Leaderboard β
The Leaderboard ranks every agent by a weighted performance score derived from the numbers they report in their work submissions each shift.
Accessing the Leaderboard β
- Go to Work Reports in the sidebar (or the Dashboard).
- Click the π Leaderboard button in the top-right of the dashboard header.
Alternatively, navigate directly via the sidebar: Work Reports β Leaderboard.
πΈ Screenshot: Dashboard header with the "π Leaderboard" button highlighted
What the Leaderboard Shows β
The leaderboard displays all agents assigned to at least one active report template, ranked by their total score for the selected period. Each row shows:
| Column | Description |
|---|---|
| # (rank) | Position, with π₯π₯π₯ medals for the top 3 |
| Agent | Avatar, name, and a relative score bar |
| π Score | Weighted composite score |
| π« Tickets | Total tickets handled (closed + replied) |
| π¬ Chats | Crisp chat replies + Magic Browser outreach |
| β Reviews | Reviews received and requested |
| π Tasks | Cards, Userback tickets, Facebook replies |
| β Rate | Report submission rate (submitted / expected days) |
| π₯ | Current submission streak |
| This Week | Mini strip of daily submission statuses |
A Team Totals row at the bottom aggregates all agents' figures.
πΈ Screenshot: Leaderboard table with top three rows highlighted in gold/silver/bronze tones, team totals at the bottom
Score Formula β
Each agent's score is calculated from the numeric fields in their submitted reports, using these weights:
| Metric | Weight |
|---|---|
| Tickets closed | Γ4 |
| Reviews received (platform + external) | Γ5 each |
| Crisp customer ratings | Γ3 |
| Review requests sent | Γ2 |
| Tickets replied / followed up | Γ1 |
| Chats replied | Γ1 |
| Magic Browser outreach | Γ1 |
| Cards created / followed up | Γ1 each |
| Userback feedback replied | Γ1 |
| Facebook posts replied | Γ1 |
| Submission rate bonus | up to +10 (rate Γ· 10, rounded) |
A 100% submission rate adds the full +10 bonus to the score. An 80% rate adds +8, and so on.
πΈ Screenshot: Score formula explainer bar at the bottom of the Leaderboard page
Range Selector β
Use the This Week / This Month toggle (top-right of the page) to switch between:
- This Week β Monday of the current week through today
- This Month β the 1st of the current month through today
The leaderboard and all stats update immediately.
Sorting β
By default the leaderboard sorts by Score (highest first). Click any column header or use the Sort by button row to re-rank by Tickets, Chats, Reviews, Tasks, or Rate.
Expanding an Agent's Breakdown β
Click any agent row to expand a detailed breakdown panel below it. The breakdown shows every individual metric (tickets closed, tickets replied, chats replied, Magic Browser, reviews received, review requests, Crisp ratings, cards created/followed up, Userback, Facebook, tickets followed up) as individual stat cards.
Click the row again to collapse the breakdown.
πΈ Screenshot: Expanded breakdown panel showing 12 individual metric cards for a single agent
Submissions Calendar View β
The Calendar View gives you a visual, day-by-day picture of every agent's submission history across a week or month β ideal for spotting patterns, persistent missed days, or agents who are consistently on time.
Accessing the Calendar View β
- From the Work Reports Dashboard, click the π Calendar button in the header.
- Alternatively, click π Calendar from the Leaderboard page header.
The calendar opens in Week view by default, showing the current week.
πΈ Screenshot: Calendar View header with "π Submission Calendar" title and "Week / Month" toggle
Week View β
In week view, the calendar displays a grid of agents Γ days (Monday through Sunday):
- Each row is one agent.
- Each column is one day of the week.
- Each cell is colour-coded by submission status.
Cell colour key:
| Colour | Status | What it means |
|---|---|---|
| π’ Green | β Submitted | Agent submitted a report for this day |
| π΄ Red | β οΈ Missed | Agent was scheduled but did not submit |
| π΅ Blue | π΅ Upcoming | Future scheduled day β report not due yet |
| β¬ Grey | β Not scheduled | Agent had no shift on this day |
Click any green cell to jump directly to that agent's submitted report.
πΈ Screenshot: Week view grid with five agents and seven day columns; green, red, blue, and grey cells visible
Month View β
Switch to Month view to see a calendar-style grid for the entire month. Each day cell summarises the team's submission activity for that date:
- The cell background colour reflects the overall status:
- Green β all scheduled agents submitted
- Red β at least one agent missed
- Blue β day is upcoming (future)
- Grey β no reports were due
- A small submitted/total count (e.g. 7/10) appears in the top-right corner of each day.
- A progress bar shows the submission ratio at a glance.
- Emoji counters (β submitted, β οΈ missed, π΅ upcoming) appear inside each cell.
Click any day cell to drill into the week detail view for that day.
A per-agent summary table below the grid lists each agent's scheduled days, submitted count, missed count, and submission rate for the full month.
πΈ Screenshot: Month view showing a full March calendar with colour-coded day cells and summary counts
Navigation β
Use the β β arrows to move between weeks or months. A Today button appears when you navigate away from the current period.
Agent Filter β
Use the All Members dropdown to focus on a single agent. The grid (week or month) updates to show only that agent's data.
Spotting Patterns β
The Calendar View is most useful for:
- Identifying consistent late submitters β a column of red cells on the same weekday each week suggests a scheduling or reminder gap.
- Verifying an agent's claims β if an agent disputes a missed-report flag, you can quickly scan their calendar row.
- Checking onboarding β new agents should turn green within their first scheduled week; a run of grey cells means their working-days config may not be set up.
πΈ Screenshot: Week view with one agent's row showing four consecutive red cells β a clear pattern of missed MondayβThursday reports
Missed Report Detection β
Manage Roster automatically tracks which agents have not submitted a report for days they were scheduled to work.
How It Works β
- At the end of each working day, the system checks every active agent's working-days configuration.
- If an agent has no submitted (or draft) report for a past working day, that date is flagged as Missing for that agent.
- Missing entries are visible in the Calendar View as red cells and in the All Submissions list when filtered by Status = Missing.
- Agents can receive an automatic notification (Slack DM or email) when they miss a report β see Slack DM Missed Report Alerts below.
Missing = no submitted report
A report in Draft status is not counted as submitted. If an agent has only saved a Draft, the system may still flag the date as missing until the agent clicks Submit.
Viewing Missing Reports β
- Go to Work Reports β All Submissions in the sidebar.
- In the filter bar, set Status to Missing.
- The table will show every agent Γ date combination where no submitted report exists for a past working day.
- You can further narrow by Agent or Date Range to focus on specific people or periods.
Missed-Report Notifications β
How Notifications Are Triggered β
When an agent misses a work report, the system dispatches a delayed notification job. Notifications fire 3 hours after the agent's scheduled shift end time. This delay gives agents time to submit before receiving a reminder.
The command that dispatches these jobs is:
bash
php artisan reports:notify-missedRun it daily (typically at the start of your day) via cron or the Laravel Scheduler. The system calculates each agent's shift end time and delays the notification job accordingly β so running the command once per day is sufficient.
Notification Channels β
Admins can configure which channel(s) agents receive missed-report alerts through. The options are:
| Setting | What happens |
|---|---|
| Slack DM (default) | Agent receives a direct message in Slack |
| Agent receives a reminder email | |
| Both | Agent receives both a Slack DM and an email |
See Slack DM Missed Report Alerts below to configure Slack DMs. Email delivery requires only a valid email address on the agent's profile.
Scheduling Automatic Notifications β
Option A β Laravel Task Scheduler (recommended)
In app/Console/Kernel.php, add the command to the schedule method:
php
$schedule->command('reports:notify-missed')
->dailyAt('09:00')
->timezone('Asia/Dhaka'); // adjust to your workspace timezoneThen make sure your server has a single cron entry running Laravel's scheduler:
bash
* * * * * cd /var/www/roster-portal && php artisan schedule:run >> /dev/null 2>&1Option B β Direct cron entry
If you prefer a direct cron entry (without the Laravel scheduler):
bash
0 9 * * * www-data cd /var/www/roster-portal && php artisan reports:notify-missed >> /dev/null 2>&1Adjust the time and timezone to match your team's working hours.
Test before scheduling
Run php artisan reports:notify-missed manually first to confirm notifications are going out correctly before setting up a recurring schedule. Check the log file at storage/logs/laravel.log for any errors.
Slack DM Missed Report Alerts β
In addition to email reminders, Manage Roster can send agents a direct message in Slack when they miss a work report. The DM includes a Submit Now button that takes the agent straight to the report form.
Configuring Alert Notifications β
- In the left sidebar, go to Tools β Integrations.
- Open the Slack integration card.
- Find the Alert Notifications card.
- Set the Missed Report Alert Channel to one of:
- Slack DM β sends a direct message to the agent in Slack (default)
- Email β sends a reminder email only
- Both β sends both a Slack DM and an email
- Save the setting.
πΈ Screenshot: Slack integration page with the Alert Notifications card expanded, showing the Slack DM / Email / Both selector
How Slack DMs Work β
When a missed report is detected and the alert channel includes Slack:
- The system opens a direct message channel with the agent in your connected Slack workspace.
- A short Block Kit message is posted, listing the missed date and report template.
- A Submit Now button in the message links directly to the report submission form.
- The DM is sent approximately 3 hours after the agent's scheduled shift end time.
πΈ Screenshot: Example Slack DM showing "You missed your Work Report for March 1" with a "Submit Now" button
3-hour delay by design
The delay gives agents time to submit their report after their shift ends before the reminder fires. If they submit within 3 hours of shift end, no DM is sent.
Requirements for Slack DMs β
Both of the following must be in place before a Slack DM can be delivered:
| Requirement | Where to configure |
|---|---|
| Agent has a Slack Member ID set | Agents β [Agent Name] β Edit β Slack Member ID |
Workspace Slack integration is active and has the im:write scope | Tools β Integrations β Slack β Connect |
If either requirement is missing, the Slack DM is skipped and a log entry is written to storage/logs/laravel.log. The email fallback fires only if Both is selected as the alert channel.
Finding a Slack Member ID
In Slack, click an agent's profile photo β View full profile β the three-dot menu (β―) β Copy member ID. Paste this value into the agent's Slack Member ID field in Manage Roster.
Slack bot scope
The im:write scope allows the Manage Roster bot to open direct message channels. If your Slack app does not have this scope, re-authorize the integration from Tools β Integrations β Slack β Reconnect and accept the updated permission request.
Bulk View β Agent Γ Day Heatmap β
The Bulk View gives you a bird's-eye picture of your entire team's submission activity for the current month. It displays a matrix (heatmap) where:
- Each row is an agent
- Each column is a day of the current month
- Each cell is colour-coded by submission status
Colour Key β
| Colour | Meaning |
|---|---|
| π’ Green | Submitted or Reviewed |
| π΄ Red | Missing (agent had a working day with no report) |
| π΅ Blue | Draft (started but not submitted) |
| β¬ Grey / Empty | Agent was not scheduled to work that day |
πΈ Screenshot: Bulk View heatmap for a team of 8 agents across the current month, with colour-coded cells
Accessing the Bulk View β
- Go to Work Reports in the sidebar.
- Click the Bulk View tab (or the Monthly Overview button in the top navigation area of the Work Reports section).
- The heatmap loads for the current month automatically.
πΈ Screenshot: Work Reports section header with "All Reports", "Bulk View", and "Templates" tabs visible
Using the Bulk View β
- Hover over a cell to see a tooltip with the agent's name, date, and report status.
- Click a green cell to jump directly to that agent's submitted report for review.
- Click a red cell to see the agent's profile and options for sending a reminder.
- Use the month navigation arrows to move to the previous month (current month is the default and most recent).
πΈ Screenshot: Tooltip appearing on a heatmap cell showing "Jordan Lee β 2026-02-14 β Submitted"
Spot patterns at a glance
The heatmap makes it immediately obvious which agents are consistently submitting and which are falling behind. Red clusters around specific agents or days are a clear signal to follow up.
Bulk View shows the current month only
Historical months can be viewed using the month navigation arrows, but the heatmap generates data based on agents' scheduled working days for that period. Agents added or deactivated during the month will appear with data only for the days they were active.
Managing Agent Working Days β
Missed report detection and notifications rely on each agent's working-days configuration being accurate. If an agent's working days are set incorrectly, they may receive reminders for days they don't actually work β or miss reminders on days they do.
To review or update an agent's working days:
- Go to Agents in the sidebar.
- Click the agent you want to update.
- Click Edit.
- Update the Working Days and Days Off fields.
- Click Save.
πΈ Screenshot: Agent edit form with Working Days checkboxes highlighted
Keep working days accurate
When an agent changes shifts or their schedule changes permanently, update their working-days configuration right away. This ensures missed-report detection stays accurate and avoids false reminders.
Frequently Asked Questions β
An agent says they submitted their report but it still shows as Missing. What's wrong? β
The Missing status only clears when a report is in Submitted (or Reviewed) status. A Draft is not counted as submitted. Ask the agent to open their Draft and click Submit.
Can agents see each other's reports? β
No. Agents can only see their own reports. Admins see all reports from all agents.
Can I export Work Reports to CSV or PDF? β
Exporting is not currently available in the UI. Check with your development team about custom exports, or query the database directly if you need bulk data exports.
How do I stop an agent from receiving missed-report notifications? β
Missed-report notifications are tied to an agent's working-days configuration. If an agent should not be receiving reminders (e.g. they're on extended leave), you can:
- Temporarily clear their Working Days so no days are flagged as missed.
- Or disable their agent profile if they are inactive.
Can agents edit a submitted report if they made a mistake? β
No. Submitted reports are locked. Only an admin can add a Review Note to clarify or correct information contextually. There is no way to unlock a submitted report for agent editing.
What happens to reports when I disable the Work Reports module? β
Existing reports are preserved in the database. They are hidden from agents while the module is off. Re-enabling the module restores full access to all historical data.
Can I delete a report? β
Report deletion is restricted to Owners and is not available through the standard UI. Contact your platform administrator or development team if you need to remove a specific report.
The reports:notify-missed command isn't sending Slack DMs. What should I check? β
- Confirm the Slack integration is connected with the
im:writescope under Tools β Integrations β Slack. - Verify each agent has a valid Slack Member ID set in their profile.
- Check
storage/logs/laravel.logfor skip messages (e.g. "no active Slack integration" or "agent has no slack_member_id"). - Confirm the Alert Notifications channel is set to Slack DM or Both (not Email only).
The reports:notify-missed command isn't sending emails. What should I check? β
- Confirm your application's mail configuration is correct in
.env(MAIL_HOST,MAIL_USERNAME, etc.). - Check
storage/logs/laravel.logfor error messages from the last run. - Verify that agents have valid email addresses in their profiles.
- Confirm the Alert Notifications channel is set to Email or Both (not Slack DM only).
- Run
php artisan config:cacheto ensure environment changes are applied.
The leaderboard shows zero scores even though agents have submitted reports. Why? β
Scores are calculated from numeric fields in report submissions whose field_key matches the weighted metrics (e.g. tickets_closed, xcloud_reviews_received). If your report template uses different field keys, those values won't be picked up. Work with your developer to align template field keys with the scoring system.
Summary: Admin Checklist β
Use this checklist when setting up Work Reports for your workspace:
- [ ] Enable Work Reports in Settings β Workspace Modules
- [ ] Inform your team about the feature and what you expect from submissions
- [ ] Create a Report Template that matches your team's reporting needs (or use the default)
- [ ] Set your custom template as Active
- [ ] Verify each agent's Working Days configuration is accurate
- [ ] Connect the Slack integration (if using Slack DM alerts) under Tools β Integrations β Slack
- [ ] Set each agent's Slack Member ID in their profile (required for Slack DM reminders)
- [ ] Configure the Alert Notifications channel under Tools β Integrations β Slack
- [ ] Test the
reports:notify-missedcommand manually to confirm notification delivery - [ ] Schedule the command in cron or Laravel Scheduler for daily automation
- [ ] Review the Dashboard at the end of the first day/week to check adoption
- [ ] Check the Leaderboard weekly to recognise top performers
- [ ] Use the Calendar View monthly to spot any persistent missed-report patterns
Related β
- Work Reports β Agent Guide β What agents see and how they submit reports
- Workspace Setup β Enabling and configuring workspace modules
- Agents β Managing agents and their working-day configurations
- Invite Members β Giving team members access to the workspace