Setup & Permissions
The Crew Dashboard ships with the theme but has to be wired up: a page needs to be created with the template applied, and at least one user needs to be added to the Crew Dashboard Managers list. This page covers both the initial setup and the ongoing access management.
Creating the Dashboard Page
The Crew Dashboard is a page template — it doesn't appear automatically. To make it accessible:
- Go to WordPress Admin → Pages → Add New
- Set the page title (e.g. "Crew Dashboard")
- In the right sidebar, find Page Attributes → Template
- Select Crew Dashboard from the dropdown
- Publish the page
- Note the URL — typically
/crew-dashboard/if you used that title
You only do this once per portal. After publishing, the page is reachable at its URL by anyone with permission.
How managers reach the dashboard
ClientCove doesn't use the WordPress Appearance → Menus system for portal navigation. Instead, the Crew Dashboard surfaces automatically for authorized users in the user dropdown menu (the menu that opens from your avatar in the top-right corner).
Specifically, it appears under the Admin Utilities section of that dropdown — alongside other manager tools like Email Campaigns, Agreements, Products & Services, Dashboards, and Invoices.
The link only renders when the user passes can_access_crew_dashboard() AND at least one of the three required features (Tasks / Tickets / Projects) is enabled portal-wide. For everyone else, the entry simply doesn't appear — no broken link, no "this page isn't for you" message.
So once a user is added to the Crew Dashboard Managers list (next section), the dashboard becomes one click away from any page in the portal.
Granting Manager Access
Access to the Crew Dashboard is explicit per-user. You grant it via the Settings → Managers panel.
Steps
- Sign in as an administrator
- Go to Settings → Managers
- Find the Crew Dashboard Managers card
- In the Select Managers multi-select, pick one or more users:
- Hold Ctrl/Cmd to select multiple
- The dropdown shows users with manager-eligible roles (admin, editor, representative)
- Save the settings
Selected users immediately gain Crew Dashboard access. The change is reflected in:
- The sidebar user menu (Crew Dashboard entry appears for them on next page load)
- Direct URL access (no longer redirected away)
- API endpoint permissions (their requests to
/clientcove/v1/crew/*now succeed)
What "manager-eligible" means
The Select Managers dropdown is populated from users with roles:
- Administrator
- Editor
- Representative
Other roles (technicians, contractors, client users) don't appear in the dropdown — even though their workload can be viewed in the dashboard, they themselves can't be granted dashboard access.
If you want to grant access to a user not in those roles, you'd need to either change their role first (in their WordPress user profile) or extend the eligibility list in the theme's manager-functions code.
The Crew Dashboard Managers Setting
The setting is stored in the ACF option field crew_dashboard_managers — an array of user IDs.
From the UI
Settings → Managers → Crew Dashboard Managers card → Select Managers multi-select.
Programmatically
For automated provisioning (e.g. setting up a new portal via a script):
// Set the list of users with crew dashboard access
update_field('crew_dashboard_managers', [3, 7, 12], 'option');
Where [3, 7, 12] are WordPress user IDs.
The function can_access_crew_dashboard() reads this field to determine access.
Why Explicit Access (Not Role-Based)
ClientCove could have made the dashboard "all admins can access". It didn't. The explicit-access model is intentional:
Reasons for the choice
- Privacy — workload data is sensitive; not every admin needs visibility into other team members' work
- Focus — designating specific managers makes responsibility clearer ("Sarah owns workload balancing")
- Compliance — some HR/management contexts require documented authorization for who sees what
- Flexibility — a small portal might have one team lead; a larger one might have several department managers
- Avoids role bloat — adding a
crew_dashboard_managerrole would multiply the role count for one feature
Trade-offs
- Requires a setup step (an admin has to grant themselves access — it's not automatic)
- Easy to miss when onboarding a new manager — has to be added explicitly
- Doesn't follow the typical WordPress capability pattern
For most portals the trade-offs are worth it; if your context wants role-based access, the can_access_crew_dashboard() function can be filtered or overridden.
How Access Is Checked
The can_access_crew_dashboard() function gates the dashboard. Its logic:
- Get the current logged-in user
- Read the
crew_dashboard_managersoption - If the user's ID is in the list → return true
- Otherwise → return false
Where the check fires
- Template top (
template-crew-dashboard.php) — first check; non-managers are redirected to home - REST API endpoints (
/clientcove/v1/crew/membersand/clientcove/v1/crew/workload) —permission_callbackcalls the check; non-managers get a 403 - Sidebar user menu (
sidebar-user-menu.php) — checks before rendering the dashboard menu link
The check is consistent across all three layers — there's no way to backdoor in by guessing a URL.
current_user_can_manage_all_tasks()
A related helper used by the REST permission callbacks:
return is_user_logged_in() && current_user_can_manage_all_tasks();
This typically delegates to can_access_crew_dashboard() or a similar capability check. Both functions resolve to the same end-user list in standard installations.
Feature Flag Requirements
The Crew Dashboard depends on at least one of three features being enabled portal-wide:
- Tasks (
tasksfeature flag) - Tickets (
ticketsfeature flag) - Projects (
projectsfeature flag)
Toggled in Settings → Core Features.
What happens when features are off
- If all three are off → the dashboard redirects to home with
?access=denied&reason=features_disabled - If some are off → the dashboard renders, but the disabled features' sections (stats and accordions) are hidden
- If all three are on → the dashboard renders fully
Most common configurations
| Configuration | Crew Dashboard behavior |
|---|---|
| Tasks ✓ Tickets ✓ Projects ✓ | Full dashboard with all three sections |
| Tasks ✓ Tickets ✓ Projects ✗ | Two sections (Tasks + Tickets) |
| Tasks ✓ Tickets ✗ Projects ✗ | Tasks-only dashboard |
| All disabled | Redirect to home |
The dashboard reads the feature flags via is_feature_enabled() and conditionally renders sections accordingly.
User Dropdown Visibility
The Crew Dashboard link lives in the Admin Utilities section of the user dropdown menu (the menu that opens from your avatar in the top-right corner). The render check is:
if (function_exists('can_access_crew_dashboard') && can_access_crew_dashboard()) {
$any_feature = is_feature_enabled('tasks')
|| is_feature_enabled('tickets')
|| is_feature_enabled('projects');
if ($any_feature) {
$admin_links[] = ['url' => '/crew-dashboard/', 'label' => 'Crew Dashboard'];
}
}
Two conditions both need to pass:
- The user is on the Crew Dashboard Managers list (the
can_access_crew_dashboard()check) - At least one of Tasks / Tickets / Projects is enabled portal-wide
If both pass, the link appears alongside other Admin Utilities entries (Email Campaigns, Agreements, Products & Services, Dashboards, Invoices, Cloud Files). For everyone else, the link simply doesn't render — no broken-link experience, no "you don't have permission" message.
The link appears immediately after access is granted, on the user's next page load. No cache to clear, no logout/login required.
Note: ClientCove deliberately doesn't use the WordPress Appearance → Menus system for portal navigation. All manager links are rendered conditionally from the user dropdown based on per-feature access checks — this keeps the menu accurate to the user's actual permissions instead of relying on an admin to manually update menu items as access changes.
Removing Access
To revoke a user's Crew Dashboard access:
- Go to Settings → Managers
- In the Select Managers multi-select, deselect the user
- Save
The change is immediate:
- Their sidebar user menu loses the Crew Dashboard link on next page load
- Direct URL attempts redirect to home
- Their REST API tokens stop working for crew endpoints
Removed users keep their underlying role and other portal access — only the dashboard-specific access is revoked.
Customizing the Access-Denied Message
By default, non-managers hitting /crew-dashboard/ are redirected to the home page with query params:
/?access=denied&reason=managers_only
If you want to show a friendlier message:
- Edit your home page template (or a custom template that reads
$_GET['access']) - Detect the
access=deniedandreason=managers_onlyparams - Render an explanation: "Crew Dashboard is for designated managers only. Contact your administrator to request access."
The redirect happens at template-crew-dashboard.php line 14-16:
if (!can_access_crew_dashboard()) {
wp_redirect(home_url('/?access=denied&reason=managers_only'));
exit;
}
To change the destination (e.g. redirect to an "Access Denied" page instead of home), edit that line directly or hook into the redirect via a child theme.
API Endpoints
The dashboard uses two REST API endpoints, both gated by current_user_can_manage_all_tasks():
GET /clientcove/v1/crew/members
Returns the list of crew members the manager can oversee.
Query parameters:
include_clients— boolean, when true includes client users in the list
Response:
[
{
"id": 7,
"name": "Jane Doe",
"role": "Editor",
"is_client_user": false
},
...
]
GET /clientcove/v1/crew/workload
Returns aggregated workload for one or more crew members.
Query parameters:
user_ids— comma-separated list of user IDsdate_filter— one ofoverdue,today,tomorrow,week,allinclude_completed— boolean, when true includes completed tasks
Response: array of workload objects, one per requested user, each containing user info, tasks list, tickets list, projects list, and stats summary.
Both endpoints return 403 to non-managers. Both require an authenticated request with the WP REST nonce.
For programmatic integration (custom dashboards, exports, BI tools), these endpoints are the primary integration point.
Plan your manager list before going live. It's easy to grant access to too many people initially and then have to walk it back. Start with one or two designated team leads; expand the list as more people demonstrate need. The Crew Dashboard is most useful when there's a clear ownership model around who's actually doing the workload balancing.