Your phone rings at 9 PM. A client asks: «I think my dog missed the rabies booster… can I get a copy of the certificate?» You may not know it yet, but that client is already thinking about switching vets. Why? Because you didn't notify them. And they found out on their own.
Vaccination reminders are a key source of customer loyalty and recurring revenue for veterinarians and groomers. A client who brings their dog for the annual shot is a client who returns to your website, buys a dewormer, books a grooming session. Yet most clinics handle reminders manually: sticky notes, hasty WhatsApp messages, paper diaries. Result? 30% of reminders are missed. And with them, the client.
At Meteora Web, we built Zenith PetCare — the management software for groomers and vets — precisely to solve this. Not a simple calendar, but a system that calculates, notifies and tracks every vaccination due date automatically.
In this guide we explain how an automatic reminder system works, what you need technically, and how to implement it in your practice. No code? No problem: the actionable steps are for everyone.
Why an automatic reminder saves you time and clients?
Let's start with numbers. In Italy, the rabies vaccine is mandatory for dogs traveling abroad (EU Regulation 576/2013) and often required by kennels and pet‑sitters. Other vaccines (distemper, parvovirus, leptospirosis) are strongly recommended, with annual or triennial boosters.
If you manage a practice with 500 active animals, you need to schedule about 800 due dates per year (counting polyvalents). Doing it manually means: search for the record, write the date, remember to call. Wasted time: at least 10 minutes per reminder. 800 × 10 min = 133 hours of non‑billable work. A hidden cost of thousands of euros per year.
Sponsored Protocol
An automatic system instead:
- Calculates the next due date based on vaccine type (e.g. annual, triennial) right after administration
- Sends reminders via email, SMS or WhatsApp at 30, 15 and 7 days before the due date
- Logs the client's response (booking, postponement, no reply)
- Generates effectiveness reports and client churn data
The result? Recall rates jump from 60% to 95%. Clients feel cared for and come back. And you stop wasting time and revenue.
How does an automatic reminder system work inside the software?
A management system like Zenith PetCare doesn't just send random notifications. There's a precise data structure and business logic behind it. Let's look at the two building blocks.
Vaccination database: what do you need to record?
Every administered vaccine must be recorded with at least these fields:
CREATE TABLE vaccinations (
id INT AUTO_INCREMENT PRIMARY KEY,
pet_id INT NOT NULL,
veterinarian_id INT NOT NULL,
vaccine_type VARCHAR(50) NOT NULL, -- 'rabies', 'dhpp', 'leptospirosis'
batch_number VARCHAR(50),
administration_date DATE NOT NULL,
next_due_date DATE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (pet_id) REFERENCES pets(id)
);
The next_due_date field is automatically calculated by the software based on the vaccine type:
- Rabies: due in 1 year (or 3 years if authorised triennial vaccine)
- DHPP (distemper, hepatitis, parainfluenza, parvovirus): annual booster
- Leptospirosis: every 6-12 months depending on the strain
Key point: the calculation is not one‑size‑fits‑all. A good management system lets you configure different intervals for each vaccine, and handle exceptions (e.g. postponed due date for animals under therapy).
Sponsored Protocol
The due date calculation logic
Here's a simplified PHP function from Zenith PetCare that computes the next due date:
function getNextDueDate(string $vaccineType, DateTime $adminDate): DateTime {
switch ($vaccineType) {
case 'rabies':
return $adminDate->modify('+1 year');
case 'rabies_3year':
return $adminDate->modify('+3 years');
case 'dhpp':
return $adminDate->modify('+1 year');
case 'leptospirosis':
return $adminDate->modify('+6 months');
default:
return $adminDate->modify('+1 year');
}
}
In reality, we also handle combined vaccines, initial puppy shots (booster at 3‑4 weeks), and legally mandatory vaccines. The database always stores the computed next due date, and a daily cron job compares it with today's date to trigger reminders.
How do you send reminders to clients?
Having the right date is not enough: the client must receive the notification on the right channel at the right time. The channel choice depends on your audience:
- Email: cheap, trackable, good for clients who use email
- SMS: extremely high open rate (>95%), ideal for urgency
- WhatsApp: personal, but requires Business API (cost per message)
We recommend a multi‑channel approach: try email as default, and if the client hasn't opened it within 7 days, send an SMS. Example PHP logic (with cURL for SMS API):
Sponsored Protocol
function sendReminder(array $client, array $vaccination): void {
$subject = 'Vaccination reminder for ' . $client['pet_name'];
$message = 'Hi ' . $client['name'] . ', the ' . $vaccination['vaccine_type'] . ' vaccine for ' . $client['pet_name'] . ' is due on ' . $vaccination['next_due_date'] . '. Book now: ' . SITE_URL . '/book';
// Send email
if (!empty($client['email'])) {
mail($client['email'], $subject, $message, 'From: clinic@yourclinic.com');
}
// If email not opened within 7 days, send SMS (e.g. via Twilio)
$lastEmailOpen = $client['last_email_open'] ?? '0000-00-00';
if ($lastEmailOpen < date('Y-m-d', strtotime('-7 days')) && !empty($client['phone'])) {
// Twilio or other provider API call
}
}
Privacy warning: consent to data processing (GDPR) is mandatory. Include an explicit checkbox in the client registration form.
What technical tools do you need to automate the process?
The heart of automation is a scheduled task (cron job) that every night checks due dates and sends notifications. On a Linux server, set it up like this:
# Add to crontab (crontab -e):
0 8 * * * /usr/bin/php /var/www/zenith/artisan reminders:send >> /var/log/reminders.log 2>&1
This runs every morning at 8 AM the Artisan command that processes reminders (if you use Laravel). In a non‑framework environment, a plain PHP script that queries the database and calls the sending functions works too.
Here's a minimal script to run every hour:
// find_due.php
$pdo = new PDO('mysql:host=localhost;dbname=petcare', 'user', 'pass');
$stmt = $pdo->query("SELECT v.*, p.name as pet_name, c.name, c.email, c.phone
FROM vaccinations v
JOIN pets p ON v.pet_id = p.id
JOIN clients c ON p.client_id = c.id
WHERE v.next_due_date BETWEEN DATE_ADD(CURDATE(), INTERVAL 30 DAY) AND DATE_ADD(CURDATE(), INTERVAL 7 DAY)
AND v.reminder_sent = 0");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
sendReminder($row, $row);
$update = $pdo->prepare("UPDATE vaccinations SET reminder_sent = 1 WHERE id = ?");
$update->execute([$row['id']]);
}
Important: log every send (date, client, channel, outcome) so you can monitor effectiveness and troubleshoot issues.
Sponsored Protocol
How do you measure the effectiveness of reminders?
An automatic system without metrics is just noise. You need to know:
- Delivery rate (how many bounced?)
- Open rate (email only)
- Conversion rate (did the client book?)
- Percentage of clients lost due to missed reminder
Use an email tracking tool (e.g. Mailgun, SendGrid) or, if you send with plain PHP, at least track clicks with trackable links (?ref=reminder&id=123). In Zenith PetCare we integrated a dashboard that shows these metrics in real time. To build it manually:
SELECT
DATE_FORMAT(next_due_date, '%Y-%m') AS month,
COUNT(*) AS total_reminders,
SUM(CASE WHEN appointment_created = 1 THEN 1 ELSE 0 END) AS converted
FROM vaccinations
WHERE reminder_sent = 1
GROUP BY month
ORDER BY month DESC;
If the conversion rate is below 40%, the message may not arrive at the right time or the content may not drive action. Try changing the text, moving the first reminder to 30 days, or adding a «Book Now» button inside the message.
What to do now
You don't need to be a developer to get started. If you already use a system like Zenith PetCare, the automatic reminder feature is already built-in: just enable it and configure the notification timings.
Sponsored Protocol
If you use a custom system or a management tool without this feature, here are the operational steps:
- Check existing data: do you have all vaccination dates recorded? If not, retrieve them from paper files and import them into a database.
- Define due date rules: for each vaccine type, set the recall interval. Include exceptions (e.g. puppies with rapid boosters).
- Choose the notification channel: email, SMS or WhatsApp? Evaluate the cost per message and your audience's open rate. For grooming, SMS works better.
- Implement the sending script: use the code above as a base, or hire a consultant. The key is that it is scheduled and logged.
- Test the flow: create a dummy animal with a due date in 7 days, verify that the notification arrives and the booking gets recorded.
- Monitor for a month: check how many notifications were sent, how many opened, how many converted. Adjust timing if needed.
Automatic reminders are not an extra: they are the difference between a disorganised practice and a professional centre that makes every client feel cared for. And for us, working since 2017 with businesses in Southern Italy, this is the kind of technology that truly changes your bottom line.
Zenith PetCare is the all-in-one platform to run your business — clients, scheduling, deadlines, invoicing and WhatsApp reminders, all from your browser. No installation required.
Discover Zenith PetCare →