Vet practices have an unusual advantage: owners actively want the reminders. Nobody wants to be the person whose dog missed a vaccination. Recall messages here are useful information rather than marketing, and they get read.
Use the pet's name
It is not a gimmick. 'Milo is due for his booster' is processed instantly and emotionally in a way 'your pet is due for a vaccination' is not. You already have the name in your practice management system, and using it is the single biggest lift available in your templates.
export const clinic = { vaccineDue: (c: Ctx) => `${c.clinic}: ${c.petName} is due for ${c.vaccineType} this month. ` + `Book here: ${c.link} or call ${c.phone}.`, postOp: (c: Ctx) => `${c.clinic}: how's ${c.petName} doing after yesterday? ` + `Reply here — ${c.vetName} will see it.`, refillDue: (c: Ctx) => `${c.clinic}: ${c.petName}'s ${c.medication} is about to run out. ` + `Reply R and we'll have a refill ready.`,};The post-op check-in is worth more than it costs
It catches complications early, which is clinically better and cheaper than an emergency visit. It also generates a level of goodwill that no marketing message can buy — owners remember the practice that asked. Make sure a real person reads the replies: two-way texting.
Refills are the quiet revenue line
Owners on long-term medication routinely run out and then order from whichever online pharmacy appears first. A reminder timed a week before the supply ends, with a one-letter reply to order, keeps that revenue in the practice and keeps the animal on treatment without a gap.
Handle the hard messages carefully
This is a practice where some conversations are grief. Never automate anything touching end-of-life care, and make sure your recall system suppresses reminders for deceased patients — a vaccination reminder for a pet that died last month is a genuinely painful failure, and it happens more often than practices realise.
// Check this before every automated send, not just at import time.export function canSendRecall(patient: Patient) { if (patient.status === "deceased") return false; if (patient.status === "transferred") return false; if (patient.owner.consent.status !== "opted_in") return false; return true;}One more: keep marketing separate. A recall is treatment; a promotion on dental cleaning month is marketing and needs the corresponding consent. Consent scopes.
Next step
Browse the other industry playbooks, compare the services that can send this on the providers page, or tag your links with the UTM builder.