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
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.
API: POST /wp-json/vcp/v1/customers
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
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
API: POST /wp-json/vcp/v1/patients
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 immediately via
POST /wp-json/vcp/v1/patients/{id}/photo. - 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
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 upload via POST /wp-json/vcp/v1/files using FormData. Uploaded files are associated with the record on save.
Save workflow:
- All form data is collected from the active modal.
- A
POST /wp-json/vcp/v1/recordsrequest is sent to the API. - 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
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.
API: PUT /wp-json/vcp/v1/measurements/{meta_id}
Deleting a Measurement
- Click the Delete button on the measurement row.
- A confirmation prompt appears.
- Confirm to permanently remove the measurement.
API: DELETE /wp-json/vcp/v1/measurements/{meta_id}
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
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.
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/wp-json/vcp/v1/messages/customer/{id} |
GET | Retrieve the message thread for a customer. |
/wp-json/vcp/v1/messages |
POST | Send a new message. |
/wp-json/vcp/v1/messages/mark-all-read/{customerId} |
POST | Mark all messages in a customer thread as read. |
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
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 via
POST /wp-json/vcp/v1/shares.
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/wp-json/vcp/v1/record-shares |
POST | Generate a new share link for a medical record. |
/wp-json/vcp/v1/record-shares/{id} |
DELETE | Revoke an existing share link. |
/wp-json/vcp/v1/record-shares/record/{record_id} |
GET | List all share links for a specific record. |
/wp-json/vcp/v1/shares |
POST | Generate a share link for a patient 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.