Staff Dashboard
The Staff Dashboard is a frontend interface rendered by the [vetcarepress_staff_dashboard] shortcode, giving clinic staff access to manage patients, customers, medical records, measurements, messaging, and sharing without accessing WordPress admin.

Shortcode and Page Setup
- Shortcode:
[vetcarepress_staff_dashboard] - A dedicated page containing this shortcode is auto-created on plugin activation. No manual setup is required.
- Place the shortcode on any WordPress page to render the full dashboard interface.
Access and Permissions
- The dashboard requires the
vcp_manage_patientscapability, which is assigned to the Staff role and Administrator role by default. - Users who are not logged in are shown a standard WordPress login form. After successful login, the user is redirected back to the dashboard page automatically.
- Users who are logged in but lack the required capability will see an access denied message.
Dashboard Layout
The Staff Dashboard is organized into the following sections:
- Clinic Logo Header — Displays the clinic logo configured in plugin settings.
- Welcome Greeting — Personalized greeting using the logged-in user’s display name.
- Quick Action Buttons — Three primary actions in the header area:
- Add Customer — Opens the customer creation modal.
- Add Patient — Opens the patient creation modal.
- Logout — Ends the current session and redirects to the login form.
- Tabbed Search Area — Two search tabs for locating records:
- Customers Tab — Search and browse customer (pet owner) records.
- Patients Tab — Search and browse patient (animal) records.
- Species Catalog Grid — Visual grid of species cards showing patient counts per species.
- Recent Patients — Auto-populated list of recently accessed or created patients.
For details on each section, see:
- Searching & Browsing
- Managing Customers
- Managing Patients
- Medical Records
- Measurements
- Messaging
- Record Sharing
Staff Dashboard vs. WP-Admin
The Staff Dashboard covers the most common day-to-day workflows. Some administrative functions remain available only through WP-Admin.
| Feature | Staff Dashboard | WP-Admin |
|---|---|---|
| Search customers | Yes | Yes |
| Add customers | Yes | Yes |
| Edit/delete customers | No | Yes |
| Search patients | Yes | Yes |
| Add patients | Yes | Yes |
| Upload patient photos | Yes | Yes |
| Edit/delete patients | No | Yes |
| Browse by species | Yes | No |
| View recent patients | Yes | No |
| Create medical records | Yes | Yes |
| Edit/delete medical records | No | Yes |
| Record weight and temperature | Yes | Yes |
| Send/receive messages | Yes | Yes |
| Generate/revoke share links | Yes | Yes |
| Lab configuration (panels) | No | Yes |
| Plugin settings | No | Yes |
| Taxonomy management (full) | No | Yes |
| Role and capability management | No | Yes |
Searching & Browsing
Searching and Browsing
The Staff Dashboard provides multiple ways to locate customer and patient records: tabbed search, species catalog browsing, and a recent patients list.
Customer Search Tab
The Customers tab provides a real-time search field for locating pet owner records.
- Search behavior: Results update automatically as you type, with a 300ms debounce to reduce unnecessary requests. Search is performed via AJAX.
- Searchable fields: Name, email, phone number, and address.
- Result cards display:
- Customer name
- Email address
- Phone number
- Address
- "View Profile" link (navigates to the full customer profile page)
- Expand arrow (reveals associated patients inline)
- Expanding a customer card: Click the expand arrow to view all patients belonging to that customer. Each patient entry shows:
- Patient name
- Species badge
- Sex
- Age
- Deceased status indicator (if applicable)
Patient Search Tab
The Patients tab allows searching across all patient records.
- Searchable fields: Patient name, owner name, phone number, or email address.
- Deceased filter: A "Search deceased patients" checkbox toggles inclusion of deceased patients in results.
- Result cards display:
- Pet icon (or deceased icon if applicable)
- Species badge
- Sex and age badges
- Owner name
- Navigation: Click any patient card to navigate directly to that patient’s profile page.
Species Catalog
The species catalog is displayed as a grid of species cards below the search area.
- Each card shows:
- Species name
- Species color
- Total patient count for that species
- Browsing patients by species: Click a species card to expand it and view a paginated list of patients belonging to that species.
- In-species search: A search field within the expanded species view lets you filter patients within that species.
- Deceased filter: A "Show deceased patients" toggle controls whether deceased patients appear in the species list.
- Pagination: The number of patients displayed per page is configurable in Settings > Advanced via the
vcp_pagination_species_browseoption.
Recent Patients
The Recent Patients section appears at the bottom of the dashboard and is automatically populated.
- Displays a list of recently accessed or recently created patients.
- The number of patients shown is configurable via the
vcp_pagination_recent_patientssetting in Settings > Advanced. - Click any patient in the list to navigate to their profile page.
For related topics, see:
Managing Customers
The Staff Dashboard allows clinic staff to create new customer (pet owner) records and browse existing ones. Customer editing and deletion are handled through WP-Admin.
Adding a Customer
To add a new customer, click the "Add Customer" button in the dashboard header. This opens the Add Customer modal.
Form fields:
- First Name (required)
- Last Name
- Phone (with international country code picker)
- Address Line 1
- Address Line 2
- City
- State/Province
- Postal Code
- Country
- Notes
Validation:
- First Name is required.
- At least one contact method is required: either a Phone number or an Email address must be provided.
On successful creation:
- A success state is displayed showing the new customer’s name.
- Two quick action buttons appear:
- "Add Another" — Resets the form so you can immediately create another customer.
- "Add Patient" — Opens the Add Patient modal with the newly created customer pre-selected as the owner.
Viewing Customer Search Results
Customer records are located using the Customer Search tab. See Searching & Browsing for search details.
Each result card displays:
- Customer name
- Email and/or phone number
- Address (if available)
- "View Profile" button
- Expand arrow
Expanding a Customer Card
Clicking the expand arrow on a customer card reveals all patients belonging to that customer, displayed inline beneath the card. Each patient entry shows:
- Patient name
- Species badge
- Sex
- Age
- Deceased indicator (if applicable)
Click any patient entry to navigate directly to that patient’s profile page.
Customer Profile Page
Click "View Profile" on a customer card to navigate to the full customer profile page. This page displays:
- All customer details (contact information, address, notes)
- Complete list of patients associated with the customer
- Messaging interface (if enabled) — see Messaging
Editing and Deleting Customers
Customer editing and deletion are not available through the Staff Dashboard. These operations are performed in WP-Admin. For instructions, see Managing Customers.
Managing Patients
The Staff Dashboard lets you create patient records, assign owners, and upload photos.
Adding a Patient
Click the "Add Patient" button in the dashboard header to open the Add Patient modal.
Required fields:
- Patient Name
- Species — A Select2 searchable dropdown. Supports inline species creation (see below).
Optional fields:
- Owner — AJAX-powered search by name, phone, or email. Supports inline customer creation (see below).
- Sex — Male, Female, or Unknown.
- Birthdate — Year dropdown with optional Month and Day selectors.
- Color/Markings
- Microchip ID
- Deceased — Checkbox. When checked, a deceased date picker appears.
- Notes
Inline Species Creation
If the species you need does not exist in the system, you can create it directly from the Add Patient modal:
- Type the new species name in the Species dropdown.
- Select2 displays a "+ Add New: {name}" option.
- Click to confirm.
- The API creates the taxonomy term immediately.
- The new species is auto-selected in the dropdown.
Inline Owner/Customer Creation
If the patient’s owner is not yet in the system, you can create a new customer record without leaving the Add Patient modal:
- In the Owner field, choose to add a new customer.
- A nested form appears within the modal with the following fields:
- First Name (required)
- Last Name
- Phone (with international country code picker)
- Validation: At least one of Phone or Email is required.
- On submission, the customer is created via the API and automatically assigned as the patient’s owner.
Patient Photo Upload
Patient photos can be uploaded from the patient view page.
- A circular photo preview (64×64 pixels) is displayed in the patient header area.
- Click "Upload Photo" to open a file selection dialog.
- After selecting a file, the photo is uploaded and the preview updates live.
- The preview updates live to show the new photo.
- A "Remove" button appears after a photo has been uploaded, allowing you to delete the photo.
Patient Search Results
Patient records are located using the Patient Search tab or the Species Catalog. See Searching & Browsing for details.
Each patient result card displays:
- Pet icon (or deceased icon if applicable)
- Species badge
- Sex and age badges
- Owner name
Click any patient card to navigate to that patient’s profile page.
Editing and Deleting Patients
Full patient editing, including all metabox fields, is also available through WP-Admin. Patient deletion is only available in WP-Admin. For instructions, see Creating Patients.
Medical Records
The Staff Dashboard provides a guided workflow for creating medical records directly from a patient’s profile. Six record types are supported, each with a dedicated form.
Creating a Medical Record
- Navigate to the patient’s profile page.
- Click the "Add Medical Record" button in the admin banner. This button is visible only to users with the staff capability.
- A Record Type Selector modal appears with six options:
- Clinical Note
- Diagnosis
- Lab Result
- Medical Imaging
- Treatment
- Vaccination
- Select a record type to open the corresponding form modal.
- Fill in the required and optional fields.
- Click Save. On success, the page reloads to display the new record.
Clinical Note
- Note Type — Taxonomy search field with inline term creation.
- Notes — Free-text textarea.
- Attachment — File upload.
Diagnosis
- Status (required) — Taxonomy select field (e.g., Tentative, Final).
- Diagnosis (required) — Taxonomy multi-select with inline term creation. Multiple diagnoses can be assigned to a single record.
- Notes — Free-text textarea.
- Attachment — File upload.
Lab Result
- Lab Type (required) — Taxonomy select field.
- Bloodwork Panel UI — This conditional section appears when the selected lab type is linked to a bloodwork panel CPT pair. It provides:
- Panel selector dropdown — Filtered by the patient’s species.
- "Load Panel" button — Populates the marker table with all markers defined in the selected panel.
- "Add Marker" button — Adds a single marker from a dropdown selection.
- "Add Custom Marker" button — Adds a blank row for entering a custom marker not defined in any panel.
- Marker Table — Each row contains:
- Name (editable text field)
- Value (number input)
- Unit (select from standard units)
- Reference Range (min and max values)
- Status badge (auto-computed as Low, Normal, High, or Unknown based on the value and reference range)
- Delete button to remove the row
- Lab Results — Free-text textarea for additional result notes.
- Content — Free-text textarea.
- Notes — Free-text textarea.
- Attachment — File upload.
Medical Imaging
- Imaging Type — Taxonomy select field.
- Notes — Free-text textarea.
- DICOM File — File upload accepting
.dcmor.zipfiles. - Attachment — Additional image or document upload.
Treatment
- Treatment Type (required) — Taxonomy select field.
- Treatment(s) (required) — Taxonomy multi-select with inline term creation. Multiple treatments can be assigned.
- Notes — Free-text textarea.
- Attachment — File upload.
Vaccination
- Vaccine Type (required) — Taxonomy select field.
- Vaccine/Product — Taxonomy select field.
- Manufacturer — Taxonomy select field.
- Date Given — Date field.
- Next Due Date — Date field.
- Route — Dropdown selection.
- Site — Dropdown selection.
- Administered By — Text field.
- Notes — Free-text textarea.
- Attachment — File upload.
Shared Features Across All Record Types
Taxonomy fields with inline creation: All taxonomy-based fields use Select2 with AJAX search. To create a new term on the fly:
- Type the desired term name in the field.
- A "+ Add New" option appears in the dropdown.
- Click to confirm. The API creates the taxonomy term and it is automatically selected.
File uploads: All attachment and file fields support file upload. Uploaded files are associated with the record on save.
Save workflow:
- All form data is collected from the active modal.
- The record is submitted to the server.
- On success, the page reloads to display the newly created record.
- Validation errors are displayed inline next to the relevant fields.
For WP-Admin record management, see Medical Records Overview.
Measurements
The Staff Dashboard supports recording, editing, and deleting weight and temperature measurements for patients. Weight data can also be visualized as a line graph.
Adding a Measurement
- Navigate to the patient’s profile page.
- In the admin banner, click "Add Weight" or "Add Temperature".
- A modal or inline form appears with the following fields:
- Value — Numeric input.
- Date/Time — Date and time selector.
- Click Save to record the measurement.
Measurement History Table
Each measurement type displays a history table with the following columns:
- Date
- Time
- Value
- Unit
- Actions — Edit and Delete buttons.
Inline Editing
To edit an existing measurement:
- Click the Edit button on the measurement row.
- The row converts to editable inputs:
- Value field (number input with step 0.01)
- Date/time field (datetime-local input)
- Click Save to confirm changes, or Cancel to discard.
Deleting a Measurement
- Click the Delete button on the measurement row.
- A confirmation prompt appears.
- Confirm to permanently remove the measurement.
Weight Graph
The Weight History tab includes a Chart.js line graph that visualizes weight data over time. The graph data is loaded from a server-rendered canvas data attribute and updates when new measurements are added.
Temperature History
Temperature records are displayed in a table view with the same inline edit and delete functionality as weight measurements. Pagination is supported for patients with extensive temperature history.
Units
- Weight: Kilograms (kg) or pounds (lbs).
- Temperature: Celsius (C) or Fahrenheit (F).
Units are configured globally in Settings > General.
Pagination
The number of entries displayed per page in measurement history tables is configurable via Settings > Advanced using the vcp_pagination_weight_history option.
For additional context on weight and temperature tracking, see Weight & Temperature.
Messaging
The Staff Dashboard includes a built-in messaging interface that allows clinic staff to communicate with pet owners. Messages can optionally trigger email and SMS notifications.
Accessing Messaging
Messaging is available in two locations:
- Customer profile pages — A messaging section appears on the customer’s profile.
- Patient views — A Messages tab within the patient profile provides access to the conversation thread with the patient’s owner.
Thread View
The message thread is displayed as a scrollable list with a bubble-style UI:
- Staff messages are right-aligned.
- Customer messages are left-aligned.
- Each message bubble displays:
- Sender name
- Timestamp
- Unread indicator dot (for messages not yet read)
- Patient badge (in multi-patient threads, indicating which patient the message relates to)
Sending Messages
Below the thread view, a textarea input allows staff to compose and send messages. The following options are available:
- Patient filter — An AJAX autocomplete field that associates the message with a specific patient. This is useful when a customer has multiple patients.
- "Notify via Email" checkbox — When checked, an email notification is sent to the customer upon message delivery.
- "Notify via SMS" checkbox — When checked, an SMS notification is sent to the customer. A character counter is displayed alongside the SMS option, showing a warning when the message exceeds the threshold (default: 160 characters, configurable in Settings > Notifications).
Auto-Mark-Read
When a message thread loads, any unread messages in the thread are automatically marked as read. No manual action is required.
Messaging Modes
The messaging feature behavior is controlled by a global setting in Settings > Features. Three modes are available:
- full — Staff can read and write messages.
- read_only — Staff can view message threads but cannot send new messages.
- disabled — The messaging interface is hidden entirely from the Staff Dashboard.
For related topics, see:
Record Sharing
The Staff Dashboard allows clinic staff to generate shareable links for individual medical records and entire patient profiles. Share links provide external access to records without requiring a WordPress account.
Prerequisites
Staff sharing must be enabled in Settings > Features via the vcp_allow_staff_share option. When disabled, the Share button does not appear on records.
Sharing a Medical Record
- Navigate to the patient’s profile page.
- Locate the medical record you want to share.
- Click the Share button on the record. A Share modal opens.
Share Modal
The Share modal displays:
- Existing active share tokens — A list of all currently active share links for that record.
- "Generate New Link" button — Creates a unique token and displays the shareable URL.
- Copy to clipboard button — Available for each link, copies the full URL to the clipboard.
- Revoke button — Available for each link. Clicking Revoke immediately invalidates the token, revoking access for anyone who has the link.
Token Information
Each share link displays the following details:
- Shareable URL — The full link that can be sent to external parties.
- Expiration date — The date the link will expire, or "Never expires" if
vcp_record_share_expiry_daysis set to 0. - Creation date — When the link was generated.
Patient-Level Sharing
In addition to sharing individual records, entire patient profiles can be shared. This works similarly to record sharing:
- A share link grants access to the patient’s profile and associated records.
- Generated from the share modal on the patient’s profile.
Share Link Expiry
Share link expiration is configured in Settings > Advanced via the vcp_record_share_expiry_days option:
- Default: 30 days from creation.
- Set to 0: Links never expire.
- Expired links automatically become inactive and no longer grant access.
For additional context on sharing and privacy, see Share Links.