Certificate Management
Issue, manage, and PDF-generate veterinary certificates and consent forms for patients — from rabies vaccinations to euthanasia consent — with a live-preview editor and customisable templates.
Overview
Certificate Management lets Directors and Veterinarians issue official veterinary certificates and consent forms for any pet registered in the clinic. Each certificate is backed by a reusable template that defines the form fields and default body text, and every issued certificate generates a professionally formatted PDF via TCPDF with the clinic's letterhead.
The system is tightly integrated with the existing pet database — you search by owner phone number to reuse existing records, or register a new pet on the spot. All certificates are scoped to the clinic (director hierarchy), so staff only ever see their own clinic's records.
Linked to pet database
Search by owner phone to instantly pull up existing pets and owner details — no re-entering information.
TCPDF letterhead PDFs
Every certificate generates a server-side PDF with the clinic's letterhead background, pet/owner data, all field values, and the certificate body text.
Editable templates
10 built-in default templates cover the most common certificates. Directors and Vets can edit any template's name and body text at any time.
Custom / Other type
Create a fully freeform certificate with a custom name and message without needing a pre-built template.
Live preview
Step 3 shows a real-time preview of the certificate text with all placeholders substituted as you type.
Draft & Issue workflow
Save a certificate as a draft to complete later, or issue it immediately and generate the PDF in one click.
Roles & Access
Certificate Management is restricted to Directors and Veterinarians. Para Vets and Receptionists do not have access to any certificate pages.
Clinic Director
Full access to all three pages. Can issue, edit, cancel, and delete any certificate in the clinic. Sees all certificates across all vets. Can edit and delete custom templates. Sees all records because director_id matches their own user ID.
Veterinarian
Can issue, view, cancel, and delete certificates. Sees only certificates that they personally issued (filtered by issued_by). Can edit default templates and create/delete custom templates.
Para Vets and Receptionists have no access to Certificate Management pages. Attempting to access the pages returns an "Access denied" error.
| Action | Director | Veterinarian |
|---|---|---|
| Issue new certificate | ✅ | ✅ |
| View certificates | ✅ all in clinic | ✅ own only |
| Cancel a certificate | ✅ | ✅ own only |
| Delete a certificate | ✅ | ✅ own only |
| Generate / download PDF | ✅ | ✅ |
| Share PDF | ✅ | ✅ |
| Bookmark certificates | ✅ | ✅ |
| Edit default templates | ✅ | ✅ |
| Delete custom templates | ✅ | ✅ own only |
| Access Template Manager page | ✅ | ✅ |
The Three Pages
Certificate Management is split across three shortcode pages, each serving a distinct purpose.
| Page | Shortcode | Purpose | Access |
|---|---|---|---|
| 📜 Certificates | | The "Issue Certificate" button that opens the 4-step issue popup. | Director, Veterinarian |
| 📃 All Certificates | | Full list of all issued/draft/cancelled certificates with search, filters, bookmarks, and card actions (View, PDF, Share, Cancel, Delete). | Director, Veterinarian |
| 🗄️ Certificate Templates | | Shows all 10 default templates in a grid. Click ✏️ Edit on any card to edit its name and body text. | Director, Veterinarian |
You can place all three shortcodes on separate pages, or combine the form and all-certificates shortcodes on the same page — both will work together seamlessly.
Certificate ID Format
Every certificate is automatically assigned a unique Certificate ID at the moment it is created. The format is:
CERT-7-001CERT-12-007The sequence is per-user and pads to 3 digits with leading zeros. Each user (vet or director) maintains their own independent counter — so two users can both have CERT-X-001 without conflict.
Certificate IDs are permanent and never recycled, even if a certificate is deleted. The next certificate always gets the next number in the sequence.
Certificate Types
The system ships with 10 built-in certificate types, each backed by a default template with pre-configured form fields and body text. An 11th "Custom / Other" option allows fully freeform certificates.
Rabies Vaccination
Vaccination date, vaccine name, batch number, next due date, vaccination site
Health Certificate
Examination date, health status (with Other option), temperature, weight, clinical findings
Fit for Travel
Examination date, travel destination, travel date, vaccinations current, parasite treatment given
Neutering / Spaying
Surgery date, procedure type (Neutering/Spaying), surgeon name, any complications
Microchip
Implant date, microchip number, implant location, manufacturer
Euthanasia Certificate
Date, time, reason, method used, owner consent obtained
Operation Consent
Consent date, type of operation, scheduled date, risks explained, owner signature
Euthanasia Consent
Consent date, reason, owner understands procedure, preference for remains
Indoor Patient Consent
Admission date, reason for admission, estimated duration, emergency contact, special instructions
Vaccination History
Record date, vaccination records (text/JSON entry)
Other / Custom
No template needed — you write the certificate name and body message directly with placeholder support
Custom / Other Type
Selecting "Other / Custom" reveals an inline form (still on Step 1) where you enter a Certificate Name (required) and a Certificate Message (required) before advancing to Step 2. The message supports all the standard placeholders listed in the Placeholders section.
Custom certificate names are slugified and stored as the type (e.g. "Allergy Test" becomes custom_allergy_test). This lets you filter by custom types in the All Certificates page filters.
4-Step Issue Form
Clicking the Issue Certificate button on the Certificates page opens a full-screen popup with a 4-step workflow. A step indicator at the top shows your progress and marks completed steps.
You can navigate backwards at any step using the ← Back button without losing data. Pressing Esc or clicking outside the popup panel closes it and resets the form.
Step 1 — Select Certificate Type
A grid of 11 certificate type cards is displayed. Click any card to select it. For all standard types (not Custom), the system automatically loads the matching template and advances to Step 2. For Custom / Other, an inline form expands — fill in the Certificate Name and Message, then click Continue → to advance.
Step 2 — Pet & Owner Information
This step is used to identify the pet the certificate is being issued for. You either search for an existing pet or register a new one.
Pet Lookup by Phone
Enter the owner's mobile number and click Search (or press Enter). If pets are found, they appear as selectable pet cards. Click the card for the correct pet — the card highlights as selected, a confirmation panel appears below, and the Continue → button becomes visible.
The search is clinic-scoped — it only returns pets registered under the same director. A vet's search will only show pets belonging to their clinic, not other clinics using the same system.
If no pets are found for the number entered, the form automatically shows the New Pet registration form with the phone number pre-filled.
Registering a New Pet
If the owner already has pets but you want to add a new one, click + Register New Pet. The owner fields are pre-filled from the last search. Fill in the required pet details and click Register & Continue.
| Field | Required? | Notes |
|---|---|---|
| Owner Name | Required | |
| Owner Phone | Required | Used as the lookup key |
| Owner Email | Optional | |
| Owner Address | Optional | |
| Pet Name | Required | |
| Species | Required | Dog, Cat, Bird, Rabbit, Hamster, Guinea Pig, Horse, Other |
| Sex | Required | Male / Female |
| Breed | Optional | |
| Weight | Optional | |
| Birth Date | Optional | Auto-calculates age when entered |
| Age | Optional | Auto-filled from Birth Date; also manually editable |
| Color / Marking | Optional | |
| Microchip Number | Optional | |
| Neutered Status | Optional | Yes / No |
| Rabies Vaccination Status | Optional | Yes / No |
| Pet Image | Optional | Photo upload |
| Custom Fields | Optional | Owner and pet custom fields defined in Case Management appear here automatically |
If you enter a birth date, the age field calculates automatically (e.g. "2 years 3 months" or "45 days"). You can still override it manually.
Step 3 — Certificate Details
This step has three sections:
Pet & Owner Summary (auto-filled)
A read-only panel showing the selected pet's name, ID, species, breed, age, sex, weight, neutered status, and the owner's name and phone. This is for reference only.
Certificate Data (template fields)
The form fields defined by the selected certificate type's template are rendered here. For example, a Rabies certificate shows Vaccination Date, Vaccine Name, Batch Number, Next Due Date, and Vaccination Site fields. Fill in all required fields (marked with a red *).
Certificate Content (editable) + Live Preview
The template's body text is pre-loaded into a textarea. You can edit it freely. Below it, a Live Preview box shows the text with all {{placeholders}} replaced by real values as you type. Also set the Issue Date (required) and optional Internal Notes (not printed on the certificate).
Placeholders
Use these placeholders in the Certificate Content textarea. They are replaced with actual data in the live preview and in the PDF.
In addition, any field from the certificate's template structure can be used as a placeholder by its field name. For example, a Rabies certificate supports {{vaccination_date}}, {{vaccine_name}}, {{next_due_date}}, etc.
The Health Certificate's Health Status field has a special "Other (specify)" option. Selecting it reveals a free-text input, and the typed value is used in the placeholder and live preview instead of "Other".
Step 4 — Review & Issue
A read-only summary of the certificate is shown: type label, pet & owner details, the full rendered certificate content (placeholders replaced), issue date, and any internal notes. Review everything carefully here before issuing.
Three action buttons are available at the bottom of Step 4:
| Button | What it does |
|---|---|
| ← Back | Returns to Step 3 without losing data |
| Save Draft | Saves the certificate with status draft. No PDF is generated. The record appears in the All Certificates list immediately. |
| Issue & Generate PDF | Saves the certificate with status issued, then generates the PDF via TCPDF and shows a success screen with View/Print and Share buttons. |
Draft vs. Issued
A draft certificate is saved but not yet issued. It can be edited and its status can be changed by cancelling or regenerating. An issued certificate is locked — it cannot be edited, only cancelled or deleted. The rule enforced by the system is: issued certificates cannot be updated (the backend rejects edit requests for issued records).
Once a certificate is moved to issued status, its data fields are frozen. If you need to make a correction, cancel the certificate and issue a new one.
PDF & Share
After issuing, the success screen shows two action buttons:
- 🖨️ View & Print — Opens the generated PDF in a new browser tab. From there you can print or save it via the browser's PDF viewer.
- 🔗 Share PDF — On mobile devices with the Web Share API, this shares the PDF file directly to WhatsApp, email, or any other app. On desktop browsers, it downloads the PDF file.
These same buttons are also available on every certificate card in the All Certificates list. Clicking PDF or Share from the list regenerates the PDF on demand each time.
PDFs are generated server-side via TCPDF and include the clinic's letterhead background, a title banner for the certificate type, a pet & owner info block, all filled form field values, the certificate body text, and a signature area.
All Certificates Page
The All Certificates page () displays all certificates accessible to the current user. Directors see all clinic certificates; Veterinarians see only their own issued certificates.
Tabs & Bookmarks
The page has two tabs:
| Tab | Content |
|---|---|
| 📃 All Certificates | The paginated list of all certificates matching the current search and filter criteria. |
| ⭐ Bookmarks | Only certificates you have starred. The count badge on the tab updates live. Removing a star on a bookmarked certificate removes it from this tab immediately. |
To bookmark a certificate, click the ★ star icon on its card. Stars are personal — each user has their own independent bookmark list stored in their profile.
Search & Filters
The search bar at the top right matches against certificate ID, pet name, and owner name. Results update with a 400 ms debounce as you type, or immediately on pressing Enter.
The Filter button opens a popup panel with these options:
| Filter | Options |
|---|---|
| Certificate Type | All Types, Rabies Vaccination, Health Certificate, Fit for Travel, Neutering/Spaying, Microchip, Euthanasia, Operation Consent, Euthanasia Consent, Indoor Patient Consent, Vaccination History |
| Status | All Status, Draft, Issued, Cancelled |
| From Date | Filters by issued date ≥ this date |
| To Date | Filters by issued date ≤ this date |
When any filter is active, a blue dot appears on the Filter button and a label below the page title shows the active filters. Click Reset inside the filter popup to clear all filters and reload the full list.
Certificate Card Actions
Each certificate is displayed as a card showing the Certificate ID, type, pet name, owner name, issue date, and status badge. The action buttons available on each card are:
| Button | Available when | Action |
|---|---|---|
| 🔗 Share | Always | Generates PDF and shares it via Web Share API or downloads it |
| Always | Generates PDF and opens it in a new tab | |
| View | PDF already generated (has a stored path) | Opens the stored PDF directly in a new tab |
| Cancel | Status is issued | Changes status to cancelled — cannot be undone |
| Delete | Always | Permanently deletes the certificate record — cannot be undone |
| ★ Star | Always | Toggles bookmark for this certificate |
The list is paginated at 10 certificates per page. Pagination controls appear below the list when there are more than 10 results.
Certificate Statuses
| Status | Meaning | Can be edited? |
|---|---|---|
| draft | Saved but not yet officially issued. No PDF generated yet. | Not from the list — re-issue from the form |
| issued | Officially issued with a PDF. Data is locked. | ❌ Locked — cancel and re-issue to correct |
| cancelled | Voided after issuance. Kept for audit trail. | ❌ Cannot be changed back |
Cancel vs. Delete
Cancel marks an issued certificate as void but keeps the record for historical reference. The PDF still exists. Delete permanently removes the certificate record from the database entirely. Both actions require confirmation. Neither can be undone.
You can only Cancel a certificate that is currently in issued status. Draft and already-cancelled certificates do not show the Cancel button — use Delete instead if you want to remove them.
Template Manager
The Certificate Templates page () gives Directors and Veterinarians a visual interface to view and edit the default certificate templates used when issuing certificates.
Default Templates
The system ships with 10 default templates (one per standard certificate type). They are displayed as cards in a grid, each showing the template name, type label, a preview of the body text, and the template ID.
Default templates are shared across all clinics using the system. They can be edited (name and body text), but they cannot be deleted — the delete action only works on custom templates. The is_default = 1 flag protects them.
| Template ID | Template Name | Type |
|---|---|---|
TMPL-RABIES-001 | Rabies Vaccination Certificate | rabies |
TMPL-HEALTH-001 | Health Certificate | health |
TMPL-TRAVEL-001 | Fit for Travel Certificate | fit_travel |
TMPL-NEUTER-001 | Neutering/Spaying Certificate | neutering |
TMPL-MICROCHIP-001 | Microchip Certificate | microchip |
TMPL-EUTHANASIA-001 | Euthanasia Certificate | euthanasia |
TMPL-OPERATION-CONSENT-001 | Operation Consent Form | operation_consent |
TMPL-EUTHANASIA-CONSENT-001 | Euthanasia Consent Form | euthanasia_consent |
TMPL-INDOOR-CONSENT-001 | Indoor Patient Consent Form | indoor_consent |
TMPL-VACCINATION-HISTORY-001 | Vaccination History Card | vaccination_history |
Editing a Template
Click ✏️ Edit on any template card to open the Edit Template modal. Two fields are editable:
- Template Name — The display name shown in the issue form and on certificate cards.
- Certificate Content — The body text of the certificate. Use placeholders like
{{pet_name}},{{owner_name}}, or any field name from that template's structure (e.g.{{vaccination_date}}).
The certificate type of the template cannot be changed from the Template Manager — it is determined by the template itself. Click Save Changes to apply. The template grid refreshes automatically after a successful save.
Editing a template's body text affects all future certificates of that type. Previously issued certificates are not retroactively updated — they store a snapshot of the certificate data at the time of issuance.
Template IDs are visible on each card (e.g. TMPL-RABIES-001). These are fixed identifiers used internally — changing the template name does not change the ID.
FAQ
Yes. There is no limit. A pet can have as many certificates as needed — for example, a separate rabies certificate each year, plus health certificates for different travel dates. All are listed on the All Certificates page and can be filtered by pet name or owner.
No. Once a certificate reaches issued status, the backend prevents any further edits to its data. If a correction is needed, cancel the certificate and issue a new one with the correct information. Draft certificates cannot be edited from the list view either — they must be reissued using the form.
The PDF file remains in storage and is still technically accessible via its URL. The certificate record's status changes to cancelled and a visual badge is shown. If you also want to remove the file, delete the certificate record entirely.
The system scopes certificates by issued_by for non-directors. Each vet sees only their own records. The Director sees all records because the filter uses director_id instead, which matches all staff under that clinic.
No. Certificate Management is restricted to Directors and Veterinarians only. Para Vets and Receptionists will see an "Access denied" message if they navigate to any certificate page.
The Certificates page () shows only the "Issue Certificate" trigger button — it's the page you use to create a new certificate. The All Certificates page () shows the list of all existing records with search, filters, and card actions. You can place them on the same page or separate pages.
A draft saves the certificate type, the linked pet, all filled form field values, the certificate body text (with placeholders already replaced), the issue date, and any internal notes. No PDF is generated. The record is immediately visible in the All Certificates list with a draft status badge.
No. The 10 system-supplied default templates are protected by an is_default = 1 flag — the delete action will reject them. You can only delete custom templates (those created with the Custom type and stored with is_default = 0). You can freely edit the name and body text of default templates though.
When you enter a birth date in the Register New Pet form, the age field is automatically populated in human-readable format: for example "2 years 3 months", "5 months", or "12 days" for very young animals. The age field remains editable — if you overtype it, your value is used instead. The calculation uses the current date at the time of registration.
Yes. The PDF generator uses the TCPDF library, which must be installed via Composer inside the plugin directory (composer install --no-dev). If TCPDF is not installed, the PDF action will return an error. Once installed, all PDF generation is handled server-side — no browser-side print dialogs are used.
Custom certificates support all the pet and owner placeholders: {{pet_name}}, {{owner_name}}, {{owner_phone}}, {{species}}, {{breed}}, {{age}}, {{sex}}, and {{weight}}. Template field placeholders (like {{vaccination_date}}) are not available in custom certificates since there are no predefined fields.
On desktop browsers, the Web Share API for files is generally not available. Instead, the Share button fetches the PDF blob and triggers a direct download to the user's computer. On mobile devices (iOS/Android), the native share sheet opens so you can send the PDF directly via WhatsApp, email, or any other app.
No. Bookmarks are stored per user in their WordPress user meta under the key vet_cert_bookmarked_certificates. Each user has their own personal bookmark list and cannot see or affect another user's bookmarks.