Certificate Management – User Manual

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.

📜 10 Certificate Types ✏️ Custom Certificates 📄 TCPDF Generation 🔗 Share PDF ⭐ Bookmarks 🗄️ Template Editor
📋

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.

ActionDirectorVeterinarian
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.

PageShortcodePurposeAccess
📜 Certificates
Please log in to access this page.
The "Issue Certificate" button that opens the 4-step issue popup.Director, Veterinarian
📃 All Certificates
Please log in to access this page.
Full list of all issued/draft/cancelled certificates with search, filters, bookmarks, and card actions (View, PDF, Share, Cancel, Delete).Director, Veterinarian
🗄️ Certificate Templates
Please log in to access this page.
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-{UserID}-{Sequence}
CERT-7-001
User ID 7, first certificate
CERT-12-007
User ID 12, seventh certificate

The 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.

1 · Type
2 · Pet
3 · Details
4 · Review
✓ Issued

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.

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.

FieldRequired?Notes
Owner NameRequired
Owner PhoneRequiredUsed as the lookup key
Owner EmailOptional
Owner AddressOptional
Pet NameRequired
SpeciesRequiredDog, Cat, Bird, Rabbit, Hamster, Guinea Pig, Horse, Other
SexRequiredMale / Female
BreedOptional
WeightOptional
Birth DateOptionalAuto-calculates age when entered
AgeOptionalAuto-filled from Birth Date; also manually editable
Color / MarkingOptional
Microchip NumberOptional
Neutered StatusOptionalYes / No
Rabies Vaccination StatusOptionalYes / No
Pet ImageOptionalPhoto upload
Custom FieldsOptionalOwner 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:

A

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.

B

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 *).

C

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.

{{pet_name}} {{owner_name}} {{owner_phone}} {{species}} {{breed}} {{age}} {{sex}} {{weight}}

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:

ButtonWhat it does
← BackReturns to Step 3 without losing data
Save DraftSaves the certificate with status draft. No PDF is generated. The record appears in the All Certificates list immediately.
Issue & Generate PDFSaves 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 (

Please log in to access this 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:

TabContent
📃 All CertificatesThe paginated list of all certificates matching the current search and filter criteria.
BookmarksOnly 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:

FilterOptions
Certificate TypeAll Types, Rabies Vaccination, Health Certificate, Fit for Travel, Neutering/Spaying, Microchip, Euthanasia, Operation Consent, Euthanasia Consent, Indoor Patient Consent, Vaccination History
StatusAll Status, Draft, Issued, Cancelled
From DateFilters by issued date ≥ this date
To DateFilters 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:

ButtonAvailable whenAction
🔗 ShareAlwaysGenerates PDF and shares it via Web Share API or downloads it
📄 PDFAlwaysGenerates PDF and opens it in a new tab
ViewPDF already generated (has a stored path)Opens the stored PDF directly in a new tab
CancelStatus is issuedChanges status to cancelled — cannot be undone
DeleteAlwaysPermanently deletes the certificate record — cannot be undone
★ StarAlwaysToggles 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

draft issued cancelled
StatusMeaningCan be edited?
draftSaved but not yet officially issued. No PDF generated yet.Not from the list — re-issue from the form
issuedOfficially issued with a PDF. Data is locked.❌ Locked — cancel and re-issue to correct
cancelledVoided 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 (

Please log in to access this 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 IDTemplate NameType
TMPL-RABIES-001Rabies Vaccination Certificaterabies
TMPL-HEALTH-001Health Certificatehealth
TMPL-TRAVEL-001Fit for Travel Certificatefit_travel
TMPL-NEUTER-001Neutering/Spaying Certificateneutering
TMPL-MICROCHIP-001Microchip Certificatemicrochip
TMPL-EUTHANASIA-001Euthanasia Certificateeuthanasia
TMPL-OPERATION-CONSENT-001Operation Consent Formoperation_consent
TMPL-EUTHANASIA-CONSENT-001Euthanasia Consent Formeuthanasia_consent
TMPL-INDOOR-CONSENT-001Indoor Patient Consent Formindoor_consent
TMPL-VACCINATION-HISTORY-001Vaccination History Cardvaccination_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

Can I issue more than one certificate for the same pet?

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.

Can I go back to edit a certificate after issuing it?

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.

What happens to the PDF if I cancel a certificate?

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.

Why does a Veterinarian not see certificates issued by other vets?

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.

Can Para Vets or Receptionists issue certificates?

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.

What is the difference between the Certificates page and the All Certificates page?

The Certificates page (

Please log in to access this page.
) shows only the "Issue Certificate" trigger button — it's the page you use to create a new certificate. The All Certificates page (
Please log in to access this 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.

What is saved in a draft certificate?

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.

Can I delete a default template?

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.

How does the pet age auto-calculate from birth date?

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.

Does the PDF generation require any server setup?

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.

What placeholders work in a Custom / Other certificate?

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.

If I share the PDF on desktop, what happens?

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.

Are bookmarks shared between users?

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.