Documentation · Every feature, explained
CliniCore Help Center
How to set up, import your data, run the day on WhatsApp, and get paid for everything you do. Search below or browse by topic.
Getting Started
Create your account, meet the dashboard, and get your clinic set up.
Go to app.myclinicore.com/register and fill in six fields: clinic name, your name, email, a password (minimum 8 characters), your country, and an optional clinic phone number. That's the whole form.
- Pick your country carefully — it sets your currency, tax labels, and phone number format.
- Click Start Free 14-Day Trial.
- You land directly on your dashboard — no email confirmation wall, no waiting.
Registration creates your clinic, a first branch ("Main Branch"), and your admin login in one step. The 14-day trial requires no credit card and runs on the Revenue plan's feature set, so you can evaluate the AI scribe and revenue capture — not a stripped-down version.
On your first login, a welcome screen offers three ways in:
- Bring your data — jumps straight to the import wizard so you can load owners, pets, and medicines from a spreadsheet.
- Explore with sample data — loads a small, clearly labelled demo dataset so every screen has something on it.
- Start fresh — an empty clinic, ready for real records.
A short guided tour then points out the four things worth knowing on day one: the navigation sidebar, the Quick Add button, the Revenue Leakage page, and your setup checklist. Skip it freely — nothing in it is required.
Admins see a setup checklist in the bottom-left corner with six steps: add your clinic details, connect WhatsApp, add your first pet owner, add their pet, create your first invoice, and see Revenue Capture find money.
The checklist ticks itself off from your real records — you never mark steps done manually, and sample records don't count toward it. When all six are done it disappears for good; you can also dismiss it any time.
Sample data is two owners and two pets prefixed [Sample], one completed visit, and an invoice that deliberately misses two billable items — so the leakage detector has something real to flag on day one. Remove all of it with one click from the checklist.
Both the login and registration pages offer a Google button.
- Sign up with Google (on the register page) creates a new clinic from your Google identity — named "<Your name>'s Clinic" until you rename it in Settings → Clinic Profile.
- Sign in with Google (on the login page) signs you into an existing account. If no CliniCore account matches your Google email, you'll be sent to the registration page instead.
Google sign-in uses only your name and email — CliniCore never sees your Google password. If you registered with Google and later want a password, use Forgot password? on the login page to set one.
Go to Settings → Staff Management (admins only). Click Add Staff User and fill in their name, email, a starting password, and a role:
- Admin — everything, including settings, billing configuration, branches, and staff.
- Vet — clinical work: prescriptions, vaccinations, consultations.
- Receptionist — day-to-day front desk work.
Vets can also record their registration number, which appears on prescriptions. Staff limits follow your plan: Core allows 3 users, Revenue 8, Hospital unlimited. You can deactivate a staff member (they keep their history but can no longer log in), reactivate them later, and reset their password from the same page.
Every clinic starts with one branch, created automatically at signup and named Main Branch. If you operate a single location, you never need to think about branches again.
To add more, go to Settings → Branches (admins only) and click Add New Branch — name, address, phone, and city are all it needs. One branch is always marked Primary; that's where staff land when they log in.
Branch limits follow your plan: Core includes 1 branch, Revenue 2, and Hospital unlimited. See the Multi-branch section of this help center for switching between branches and moving stock between them.
Forgot your password?
- Click Forgot password? on the login page.
- Enter your email — we send a reset link that opens a page where you choose a new password (minimum 8 characters).
For security, the same confirmation appears whether or not the email matches an account, and reset requests are rate-limited.
Changing it while logged in
Open Change Password from your profile menu, enter your current password and the new one. Admins can also reset any staff member's password from Settings → Staff Management.
Importing Your Data
Bring owners, pets, medicines, and vaccination history in from CSV or Excel — self-serve and free.
The import wizard at Settings → Import Wizard (admins only) accepts CSV and Excel files (.csv, .xlsx, .xls) for four record types:
- Pet Owners (Clients) — import these first
- Pets (Patients) — linked to owners by phone number
- Medicines (Inventory) — your medicine catalogue
- Vaccinations — historical vaccination records per pet
Order matters: pets need their owners to exist first, and vaccinations need pets. Import one file per type, in that order.
Imported records go through the same pipeline as records you type in — owner contact details get encrypted, pets get patient IDs, and everything lands in your audit log. There is no charge for importing and no assistance required, though we're happy to help if you get stuck.
Each import walks through four steps:
- Upload — pick the data type, then drag in your file or click to browse. Files up to 10 MB; for Excel workbooks, only the first sheet is read.
- Map Columns — the wizard matches your column headings to CliniCore fields automatically; you verify and fix any it couldn't place.
- Preview — a validation pass shows total rows, how many are valid, errors, and duplicates, with the first rows of your data previewed.
- Import — rows are written with a live progress bar. Invalid rows are skipped, never guessed at.
A history table at the bottom of the page lists your recent imports with their success and failure counts.
You don't need to rename your spreadsheet columns. The wizard normalises your headings (case, spaces, underscores, symbols) and matches them against a synonym list — "Phone Number", "phone_number", "PHONE", and "Phone #" all map to the phone field automatically.
Anything it can't place is marked unmatched, and you assign it from a dropdown. A few fields are required and will block the import until mapped:
- Owners — name and phone
- Pets — name, species, and the owner's phone
- Medicines — name
- Vaccinations — vaccine name and vaccination date
Columns you leave unmapped are simply ignored — nothing is imported from them.
The Preview step lists every problem as a row number, column, and reason — for example a missing required value or an unreadable date. Errors are fixed in your source file, not in the wizard: correct the spreadsheet, then upload it again.
You don't have to fix everything before importing. Valid rows import; invalid rows are skipped and counted, so you can import the clean 95% now and bring in the stragglers later.
The wizard is forgiving about formats: dates work as YYYY-MM-DD or DD/MM/YYYY, species aliases are understood ("canine", "K9", and "puppy" all become Dog), and phone numbers are normalised for your country.
The wizard checks for duplicates in two places: within the file itself, and against records already in CliniCore. Owners are matched by phone number; medicines by name.
On the upload step you choose what happens to them:
- Skip duplicates (the default) — existing records are left untouched and the duplicate rows are not imported.
- Import anyway — every row is imported, duplicates included.
Skip is almost always right, and it makes re-running an import safe: if an import was interrupted, upload the same file again and only the missing rows come in. Pets and vaccinations are not deduplicated, so avoid importing the same pets file twice.
Imports under 500 rows finish while you watch. Larger files run in the background: the wizard shows a live progress bar, and you can leave the page — the import keeps going, and its final status appears in the history table on the import page.
Two limits to know:
- File size — 10 MB per upload.
- Rows — up to 5,000 rows are processed per file. Bigger exports should be split into parts; with skip-duplicates on, overlapping parts are harmless.
If an import shows as Failed in the history table, the error column says why. Fix the cause and upload again — already-imported owner and medicine rows are skipped as duplicates.
Appointments & Scheduling
Book, run, and follow up the day — from the calendar to Today's Queue.
Open Appointments → Schedule Appointment (or click an empty slot on the calendar, which pre-fills the date and time). Choose the appointment type — checkup, vaccination, surgery, follow-up, grooming, emergency, consultation, or your own custom types — then the patient, date, and start time. Appointments default to 30 minutes; set an end time for longer ones.
You can assign a specific veterinarian or leave it as "Any available vet". Tick Make this a recurring appointment for repeat visits — weekly, fortnightly, monthly, quarterly, or yearly, with an optional end date.
Admins and vets can manage the appointment-type list itself under Settings → Appointment Types.
The calendar shows one day at a time on an hourly grid from 8:00 to 19:00. Use the arrows to step between days, the date picker to jump, and the Today button to come back. A veterinarian filter narrows the grid to one vet's schedule.
Appointments are colour-coded by status — scheduled, in progress, completed, cancelled — and clicking an empty slot starts a new booking at that time.
For anything beyond a single day — searching, filtering by status, or scanning a week — use the List View link, which shows appointments as a filterable list.
Today's Queue is the screen your front desk lives on. It lists today's appointments in order and moves each one through the day: Check In → Start → Complete (or Cancel / No Show).
Completed rows earn a billing badge — Billed in green when an invoice exists, No Invoice in red when it doesn't, or an amber count of unbilled items with their estimated value. That's revenue capture working in real time: nothing walks out unbilled without the queue showing it.
The row menu also holds Reschedule, so the whole day is handled from one screen without opening each appointment.
When a client doesn't arrive, mark the appointment from Today's Queue: the No Show button appears on scheduled appointments, with a confirmation before it's recorded.
Only appointments still in the scheduled state can be marked as no-shows — once a visit has been checked in or started, it follows the normal complete/cancel path instead.
No-shows stay in your appointment history with their own status, so you can see repeat offenders on a client's record before offering them another prime slot. The best cure, though, is prevention: automatic WhatsApp reminders the evening before are on by default (see the next article).
From Today's Queue, open the row menu and choose Reschedule. Pick the new date and time, and optionally note why it's being moved.
CliniCore checks the new slot for conflicts before saving — if another appointment already occupies it, you'll be told instead of ending up double-booked.
You can also have the owner notified on WhatsApp when you reschedule, so "your appointment has been rescheduled" reaches them immediately rather than depending on someone remembering to call.
Every evening (around 6 PM), CliniCore automatically sends a WhatsApp reminder for tomorrow's scheduled and confirmed appointments. There's nothing to trigger — it runs on its own once WhatsApp is connected.
- Owners who have opted out of messages are skipped automatically.
- If a send fails, it's retried the next evening rather than silently dropped.
- Turn the whole behaviour off under Settings → Notifications if you don't want it.
Need to nudge someone right now? Every appointment also has a manual Send Reminder action, plus a WhatsApp deep link that opens the message in your own WhatsApp so you can personalise it before sending.
What WhatsApp-native means in practice — reminders, documents, reports, and delivery tracking.
Pet owners read WhatsApp. So instead of bolting messaging on, CliniCore sends the documents and nudges that matter through it:
- Documents — prescriptions, invoices, payment receipts, payment links, and estimates, with PDFs attached.
- Reminders — appointments (evening before), vaccinations (a week before due), and opt-in follow-up and payment reminders.
- For you — an end-of-day summary of collections and activity, and birthday greetings to keep clients warm.
Every message's delivery status is tracked (sent, delivered, read, failed), and CliniCore never meters or charges per message — WhatsApp is part of the product, not a usage bill.
WhatsApp sending is configured under Settings → WhatsApp Provider (admins only). CliniCore sends through the Twilio WhatsApp API; the page holds your sending credentials and number, shows current status, and tracks this month's usage.
Connecting WhatsApp is one of the six setup-checklist steps for a reason: reminders, prescriptions, and reports all wait on it. If you're unsure what to enter here, message us — getting a clinic's WhatsApp sender live is a two-minute conversation and we'll walk you through it.
Until WhatsApp is connected, everything else works normally — you can still run appointments, billing, and records; messages simply aren't sent.
Sent automatically
- Appointment reminders — every evening, for tomorrow's appointments.
- Vaccination reminders — every morning, for vaccinations due in exactly 7 days.
- Birthday greetings — each morning, on the pet's birthday.
- Follow-up and payment reminders — daily at 11 AM, only if you opt in (off by default).
Sent when you click
Prescriptions, invoices, payment receipts, payment links, estimates, and inventory expiry alerts each have a Send via WhatsApp button on their page. Most document types also offer an "Open in WhatsApp" link so you can edit the message personally before it goes.
Each automatic type has its own on/off toggle under Settings → Notifications.
Open Dashboard → End of Day Report for a one-page close of business: total collection with a per-method breakdown (cash, UPI, card, bank transfer, cheque), invoices created and modified, new overdue amounts and total outstanding, visits and new patients, plus what revenue capture flagged and recovered today — your "daily win".
The page keeps the last week of reports, and a Share via WhatsApp box sends the summary to any number — typically the owner's — so the day's numbers arrive on your phone, not in a tab you forgot to open.
Want it delivered automatically at a set time each evening? Message us and we'll switch scheduled delivery on for your clinic.
Messaging preference lives on each owner's record. Owners are opted in by default; to opt someone out, open their profile and use the WhatsApp Messages toggle in the Communication Preferences card (or the checkbox on the edit form). The record shows when consent was last changed.
Opt-out is enforced centrally, at the point of sending — automatic reminders skip opted-out owners, and even a manual Send via WhatsApp click on their prescription or invoice is suppressed rather than sent. Staff can't accidentally override it.
Suppressed sends appear in the message history marked as such, so you can see that the system declined to message someone, and why.
Settings → WhatsApp Message History (admins only) lists every message the system has sent: date, recipient, phone number, message type, current status, and the error text when something failed.
Statuses update by push from the carrier as messages progress — queued, sent, delivered, read, failed, or undelivered — so the log reflects what actually happened on the recipient's phone, not just what left the building.
Filter by status, type, or date range to answer the practical questions: did yesterday's reminders go out, which numbers keep failing, did that invoice reach the client. Each row links back to the prescription, invoice, or appointment it came from.
Two optional automations live under Settings → Notifications → Automated Reminders. Both are off by default — you choose to turn them on.
- Auto-send follow-up reminders — messages owners about upcoming follow-up visits: 3 days before, 1 day before, and on the day.
- Auto-send payment reminders — messages owners about unpaid or partly paid invoices at 7, 14, and 30 days overdue, capped at 3 reminders per invoice.
Both run once daily at 11 AM, respect owner opt-outs, and are careful by design: if an invoice is paid or deleted before its reminder goes out, the reminder is skipped, and failed sends retry the next day instead of vanishing.
AI Scribe & Clinical Notes
Dictate the consult, get structured SOAP notes — and let the note protect your revenue.
On a patient's consultation page you'll find the AI Clinical Scribe card. Tap the record button and speak naturally through the consult — to the owner, to the pet, to yourself. Tap again to stop.
CliniCore transcribes the audio (the speech engine is chosen for accented speech) and drafts a structured SOAP note — Subjective, Objective, Assessment, Plan. You review the draft, click Apply to SOAP Notes to fill the note fields, edit anything, and save. Nothing is ever saved without you seeing it first.
The scribe is deliberately conservative: if something wasn't said, the section stays blank rather than being invented. It flags ambiguities for you instead of guessing. The vet remains the author; the scribe just types faster.
Scribe usage is metered in minutes of audio per calendar month:
- Core — no scribe (notes are typed manually)
- Revenue — 300 minutes per month
- Hospital — unlimited
At 80% usage a banner shows how many minutes remain. The limit is checked before a recording starts, never during — CliniCore will not cut you off mid-consultation, even if that session runs you slightly over.
When minutes run out, only the record button locks; typing notes, and everything else in the product, keeps working. Minutes reset on the 1st of each month.
This is the bridge that makes the scribe more than a typing aid. While drafting your SOAP note, the scribe also extracts the billable facts — medications given, diagnoses, procedures mentioned.
When you save the note, those items are checked against the visit's invoice. Anything unbilled becomes a revenue alert, and the consultation page shows a Scribe Detected Items panel telling you they'll appear as invoice suggestions.
Later, when someone creates the invoice for that visit, a Quick Add Suggestions panel lists the detected items with estimated values — one click adds each to the invoice, and adding one resolves its alert. The note you spoke becomes the invoice you charge.
CliniCore checks prescribed medication combinations against a curated list of veterinary drug interactions — for example NSAID with corticosteroid, or two NSAIDs together — and reports each finding with a severity and a short explanation. When an AI provider is configured, an additional AI pass broadens the check beyond the built-in list.
You'll see interaction results on the consultation page, and there's a dedicated Drug Interactions tool under the AI menu where you can check any set of two or more medications.
Alongside the scribe, plans with AI include a small toolkit under the AI menu:
- Dosage Calculator — weight-based dose calculation from medication, species, and weight in kg. It's a reference you consult; prescription doses are still entered by the vet.
- Symptom analysis and diagnosis suggestions — differential prompts from the presenting signs.
- Emergency protocols — quick-reference guidance for common emergency presentations.
- AI Assistant — free-form clinical questions.
All of these are advisory tools for trained veterinary staff — they inform your decision, they don't make it.
Revenue Capture
The daily scan that finds work you did but never billed — and helps you recover it.
Every night, CliniCore compares the clinical work recorded in each completed visit against what was actually invoiced. Anything that happened but wasn't billed becomes a revenue alert with an estimated value where one can be computed.
The scan covers visits completed that day and the day before (so late-evening visits aren't missed), and looks back further for hospitalisation and boarding stays, where charges accumulate over days.
That's the wedge the Revenue plan is named for: most practices don't have a pricing problem, they have a remembering problem — the sedation that was given at 6 PM and never made the invoice. The scan remembers so nobody has to.
Four checks run against every completed visit:
- No invoice at all — a completed visit with nothing billed.
- Unbilled lab work — lab orders placed but missing from the invoice.
- Unbilled prescriptions — medicines prescribed but not charged.
- Work described in the clinical note — the SOAP note's plan and treatment fields are scanned for dozens of billable procedures (dental work, imaging, surgeries, IV fluids, wound care, hospitalisation and more) that don't appear on the invoice.
The note scan understands negation — "owner declined dental" is not flagged. Items the AI scribe extracted from a dictated consult feed the same alert stream, so the more complete the note, the better the catch rate.
Alerts surface in four places, closest to where you'd act on them:
- Dashboard — a Revenue Alerts card with the pending count and value, and a Revenue Recovered card with this month's recovered total.
- Revenue Leakage page — the full workbench: every pending alert with its type, visit, and estimated value.
- Today's Queue — completed visits carry a live badge: Billed, No Invoice, or a count of unbilled items with the estimated amount.
- Invoice creation — a Quick Add Suggestions panel lists the visit's detected unbilled items; one click adds each to the invoice.
On the Revenue Leakage page each alert offers two paths: Create Invoice (bill the work, which resolves the alert) or Resolve with a reason — including marking it a false positive when the scan got it wrong. Multi-select and Dismiss Selected clears a batch at once.
Alerts also resolve themselves: when the flagged item later appears on an invoice, the alert closes automatically and its value counts toward your Revenue Recovered figure.
Resolving and dismissing are admin actions — vets and reception staff see the alerts read-only, which keeps "just dismiss it" from becoming the path of least resistance.
A leakage detector you stop trusting is worthless, so the scan adapts to your clinic. When you explicitly mark the same item a false positive three times within six months, CliniCore stops flagging that item for your clinic.
Two deliberate boundaries on the learning:
- Bulk dismissals don't teach it — only individually marking an alert as a false positive counts, so lazy clearing can't accidentally blind the scan.
- "Completed visit with no invoice at all" is never suppressed — that one is always worth a look.
Before you ever create an account, you can estimate what leakage costs your practice. The free audit at myclinicore.com/audit asks a handful of questions about your practice — consult volume, pricing, follow-up habits — and estimates your annual loss from unbilled work, no-shows, and lapsed patients.
It's built on published industry benchmarks, not your data; nothing is uploaded and no signup is required. It takes about a minute.
The in-product scan is the precise version of the same idea: instead of benchmarks, it reads your actual visits and invoices every night and shows you the specific items, with names and dates attached.
Billing & Payments
Invoices, taxes, recording payments, and getting paid through links — without a built-in card terminal.
Open Invoices → Create (you'll need a specific branch selected — invoices belong to a branch). Pick the owner and patient, then add line items: consultations, services, procedures, vaccinations, medicines from your catalogue, or free-form items. Each line takes a quantity, price, and optional discount.
If the invoice is for a visit where revenue capture found unbilled work, a Quick Add Suggestions panel appears above the line items — click to add each detected item, or add them all at once.
Invoices can be edited later (every change is kept in an audit trail), downloaded as a PDF, and sent to the owner on WhatsApp.
Invoices are numbered automatically in the pattern PREFIX-YEAR-SEQUENCE — for example INV-2026-0042. The sequence counts up within the calendar year and restarts at 0001 each January.
The prefix defaults to INV and can be changed under Settings → Billing — useful if your accountant wants a series that identifies the clinic or branch. Prescriptions have their own independent prefix (default Rx) with the same year-sequence pattern.
Numbers are assigned when the invoice is created and never reused, so your series stays continuous for accounting purposes even when an invoice is later cancelled.
Tax behaviour follows the country you chose at signup. For Indian clinics, invoices apply GST at 18% by default, shown as a CGST 9% + SGST 9% breakdown; your GSTIN (entered under Settings → Clinic Profile) appears on the invoice. UK clinics get VAT at 20%, EU and UAE clinics their local VAT, and US/Canadian clinics a sales-tax line at the rate you set.
The default rate is adjustable under Settings → Billing, and an individual invoice can be marked tax-exempt as a whole.
On an invoice, click Record Payment and enter the amount, the method — cash, card, UPI, bank transfer, or cheque — the date, and an optional reference number. Tick Send receipt via WhatsApp to message the owner a receipt as you save.
Payments update the invoice's status automatically and feed the day's numbers everywhere they matter: daily collections, the end-of-day report's per-method breakdown, and your revenue reports.
A fully paid invoice can no longer be deleted — a small rule that keeps your books honest. Card payments taken on your own machine are recorded here too; see the payment links article for how card acceptance works.
Clients don't always pay in full, and CliniCore doesn't pretend they do. Record whatever amount was paid; the invoice moves through three states — unpaid → partially paid → paid — and always shows the remaining balance.
Outstanding amounts roll up in two places: the Unpaid Invoices view lists everything with a balance, and the end-of-day report shows new overdue amounts and your total outstanding.
If you enable auto payment reminders (off by default, under Settings → Notifications), owners with a balance get a WhatsApp nudge at 7, 14, and 30 days overdue — at most three per invoice, and never after it's settled.
CliniCore takes a bring-your-own-terminal approach to cards: there's no built-in card-present processing, and your existing card machine keeps working — you record those payments with method "card".
For remote and cashless collection, CliniCore generates hosted payment links you can send on WhatsApp. The link opens a secure checkout run by the payment provider — the client pays online, no card details ever touch CliniCore:
- India — Paytm payment links (0% fee on UPI), configured with your own Paytm merchant account under Settings → Paytm.
- US / Canada — Square checkout links, using your own Square account under Settings → Square.
- A Razorpay-backed link is used as a fallback where no gateway is configured.
Every invoice has a Send via WhatsApp action that messages the owner the invoice with a PDF attached, and payment receipts can be sent the same way as you record the payment.
Delivery is tracked end to end — the WhatsApp Message History (Settings → WhatsApp Message History) shows whether each invoice reached the client, was read, or failed, with the error when it did.
Owners who have opted out of WhatsApp messages are automatically skipped, even on manual sends. For those clients, download the PDF and share it however they prefer — the document is identical.
Pharmacy & Inventory
Batches, expiry, FEFO dispensing, and stock that reconciles — per branch.
The Medicines section is your clinic's drug and product catalogue — names, strengths, forms, categories, and prices. It's available on every plan, because prescriptions draw from it.
All staff can browse and search the catalogue; adding, editing, and retiring medicines is admin-only, which keeps the list from drifting. Medicines can be imported in bulk through the import wizard when you're moving from another system, and exported back out any time.
The catalogue is clinic-wide: one list shared by all branches. What differs per branch is the stock — quantities, batches, and reorder levels — covered in the next articles.
Stock is tracked at the batch level: each batch carries its batch number, expiry date, remaining quantity, unit cost, and the branch it sits in. Batches are created when you receive goods against a purchase order, so the paper trail starts at the moment stock enters the building.
Batch-level tracking is what makes the rest of the pharmacy features possible — earliest-expiry-first dispensing, the expiry dashboard, write-offs with reasons, and movement records that show a running balance per batch.
Inventory features are included on the Revenue plan and above.
When a prescription dispenses a medicine, CliniCore suggests the batch with the earliest expiry date that has enough stock — and when no single batch covers the quantity, it splits the dispense across batches, oldest expiry first.
That's FEFO: the discipline that stops fresh stock going out the door while older stock quietly expires on the shelf. Following it consistently is one of the cheapest reductions in write-off cost a pharmacy can make.
FEFO is a strong default, not a straitjacket — staff can select a different batch when there's a reason to. Every dispense, whichever batch it came from, is deducted and recorded against that specific batch.
Each medicine holds a quantity and a reorder level per branch. When quantity falls to or below the reorder level, the item appears on the Low Stock page, sorted by severity so the most urgent gaps sit on top.
Reorder levels are editable inline — set them once from experience (a busy branch might keep 30 of something a quiet one keeps 5 of) and adjust as reality teaches you.
The low-stock list feeds naturally into purchase orders: check it before ordering, and use the last-price helper on the PO form to see what you paid each vendor previously.
The Expiry Dashboard groups batches by urgency — already expired, then expiring within 7, 15, 30, 60, and 90 days — with a filter to focus on any window.
- Write-offs: expired or damaged stock is written off with a reason and optional partial quantity, keeping your stock figures honest and your wastage measurable.
- Barcode scanner: scan a batch barcode to jump straight to that batch for a quick write-off or check.
- WhatsApp expiry alert: a button sends the critical-expiry list (items nearest expiry) to a WhatsApp number — useful for putting the list in the buyer's pocket before ordering day.
Every stock change is recorded. Dispenses are logged against the specific batch with the quantity, the balance before and after, who performed it, and the prescription it traces back to. The Stock Movements page shows the full ledger — purchases, sales, adjustments, transfers, returns, and expiry write-offs — filterable by type and date.
That gives you a batch-level account of where every unit went, answerable months later.
Purchase orders follow a deliberate lifecycle: create → submit → approve or reject (admin-only) → mark ordered → receive. The approval step means junior staff can draft orders without anyone committing money unreviewed.
Receiving is where inventory truth begins: as you receive a PO you enter each item's batch number, expiry date, and quantity, and those batches enter stock at the receiving branch. Partial receipts are fine — receive what arrived, the rest stays open.
Vendors are managed in their own list, and the last price helper shows what you previously paid a vendor for an item, so price creep is visible at ordering time.
Multi-Branch
Run several locations from one account — separate stock, one view.
Branches live under Settings → Branches (admins only). Each branch has its own name, address, phone, email, and city; one is marked Primary — the default landing branch for staff logins — and you can change which one holds that badge at any time.
Plan limits apply when adding: Core includes 1 branch, Revenue 2, and Hospital unlimited. If you hit your plan's cap, the add form will tell you rather than failing silently.
Operational records — appointments, visits, invoices, stock — belong to the branch where they happen, which is what makes per-branch reporting and inventory work.
Admins get a branch switcher in the top navigation: pick a specific branch to work in it, or All Branches for a consolidated read-only view across the clinic.
All Branches mode is for looking, not doing — creating invoices, appointments, or stock entries requires a specific branch selected, because every operational record must belong somewhere. The create buttons hide themselves in that mode to make this obvious.
Non-admin staff don't switch branches; they work in the clinic's primary branch. Reports respect whichever mode you're in — a specific branch's numbers, or the whole clinic's.
Shared across the clinic
- Staff accounts and roles — one login works at any branch
- Your plan, subscription, and settings
- The medicine catalogue and appointment types
- Owners and patients — a client can visit any branch
Kept per-branch
- Appointments, visits, and invoices
- Stock: quantities, batches, and reorder levels
- Reports, when a specific branch is selected
In short: people and catalogues are clinic-wide; the things that happen each day belong to the branch where they happened.
Stock moves between branches through a proper transfer flow rather than a quiet quantity edit: build the transfer (which batches, what quantities), initiate it, and the receiving branch receives it — partially if the delivery was short. Transfers show as Draft, In Transit, Received, or Cancelled.
Both sides of the movement are recorded against the batches involved, so branch stock counts stay truthful during transit and afterwards.
Admins can also make a direct stock transfer for quick corrections, but the tracked flow is the habit worth building — it's the one that answers "where did those ten vials go" six weeks later.
The best outcome for stock expiring at a quiet branch is a busy branch using it in time. CliniCore looks for exactly that: batches expiring within 60 days at one branch, matched against branches where the same medicine is below its reorder level.
Matches appear as transfer suggestions, ordered by urgency — the soonest-expiring stock first. Each suggestion is a starting point for a real transfer through the normal flow, so nothing moves without being recorded.
It's a small feature with a direct money effect: every suggested transfer that lands is a write-off that didn't happen.
Patients & Owners
Pet records, owner profiles, and vaccinations — the foundation everything else stands on.
Owners come before pets — every patient belongs to an owner. From Owners → Add (or the Quick Add button), enter the owner's name and phone number; email, address, and notes are optional.
There's a separate WhatsApp Number field for the (common) case where the number a client answers WhatsApp on differs from their main phone. When set, messages go there.
The owner's profile is also where messaging preferences live — the WhatsApp opt-in/opt-out toggle — and where all their pets, invoices, and history collect. Owner contact details are encrypted at rest; see the Security section for how.
From Patients → Add, select the owner first, then the pet's name and species (dog, cat, bird, rabbit, hamster, fish, reptile, or other). Everything else is optional but pays for itself later: breed, gender, colour, date of birth, weight in kg, neutered status, microchip ID, known allergies, and medical notes.
Each pet gets an automatic patient ID, and its page becomes the hub for that animal: prescription history, vaccination history, and quick actions to start a new prescription or record a vaccination.
Households have more than one animal, and CliniCore models it that way: any number of pets link to a single owner record.
The owner's page shows a Pets card listing all of them, with an + Add Pet action that pre-selects the owner — so registering the second and third animal takes seconds, not a re-entry of contact details.
Everything client-facing stays consolidated at the owner level: one phone number, one WhatsApp thread, one set of messaging preferences, one place to see every invoice across all their animals. Clinical records stay separate per pet, as they should.
From a patient's page (or Vaccinations → Record), a vet records the vaccine name, the vaccination date (defaults to today), and — the important one — the next due date. Manufacturer, batch number, and vial expiry are there when you want the full record.
The next due date is what powers reminders, so set it as you vaccinate: it's the difference between a client who comes back on time and one who lapses.
Vaccination records are created and edited by vets and admins; the vaccination list and each pet's history are visible to all staff.
Every morning, CliniCore automatically sends a WhatsApp reminder to owners whose pet has a vaccination due in exactly 7 days. It's on by default and can be switched off under Settings → Notifications; opted-out owners are always skipped.
For everything the automatic send doesn't cover, the Vaccination Reminders workspace splits due vaccinations into Overdue and Upcoming, with per-row send actions and a bulk send — so a quiet afternoon can clear the whole overdue list.
Each reminder is tracked in the WhatsApp message history, and manually contacted clients can be marked as reminded so the lists stay accurate.
When a client needs proof of vaccination — for travel, boarding, or a housing society — CliniCore generates a vaccination certificate PDF covering the pet's recorded vaccinations.
Download it from the vaccination record's page and print it or send it on WhatsApp like any other document. The certificate is per pet and draws on the history you've recorded, which is one more reason to log vaccinations with their batch numbers as you give them.
A pet with no recorded vaccinations has nothing to certify, so the option appears once at least one vaccination is on file.
Your Account, Trial & Plan
How the trial works, what the plans include, and how upgrading happens.
Every new account starts a 14-day free trial — no credit card, no sales call, no feature gates hiding the good parts. The trial runs on the Revenue plan's feature set, including the AI scribe (300 minutes) and revenue capture, because those are exactly the things worth evaluating.
Three days before the trial ends you'll get an email reminder with an upgrade link. Nothing is charged automatically at any point — an expired trial simply pauses, it never silently becomes a paid subscription.
Fourteen days genuinely not enough? Write to us — trial extensions are a conversation, not a policy wall.
When the trial expires, your account pauses: you can still log in, but every page redirects to the upgrade screen until a plan is chosen. Nothing is charged, and nothing runs in the background.
Your data is not deleted. Owners, patients, records, invoices — everything stays exactly as you left it, and choosing a plan restores full access immediately, with no re-setup.
If you decide CliniCore isn't for you, you can request an export of your data — see "Is my data mine?" in the FAQ. We'd rather you leave with your records than feel held hostage by them.
Three plans, priced publicly (India / US shown; see myclinicore.com/pricing for all regions):
- Core — ₹1,999 / $49 per month: patients, appointments, billing, WhatsApp reminders, vaccinations. 1 branch, 3 staff, 200 prescriptions/month, no AI scribe.
- Revenue — ₹3,499 / $99 per month (the flagship): everything in Core plus AI revenue capture, AI scribe (300 min/month), end-of-day reports, inventory and expiry tracking, unlimited prescriptions. 2 branches, 8 staff.
- Hospital — ₹4,999 / $199 per month: every limit removed — unlimited scribe, branches, and staff, multi-branch transfers, accounting exports, priority support.
Larger groups can talk to us about Enterprise terms at hello@myclinicore.com. WhatsApp messages are never metered on any plan.
Every plan can be paid monthly or annually. Annual billing costs 10× the monthly price for 12 months of service — two months free, a straight ~17% saving with no other strings.
Choose the billing period with the Monthly/Annual toggle on the upgrade page before checking out. The features are identical either way; only the billing rhythm changes.
Monthly is the sensible default for a new clinic still deciding; annual is the obvious move once CliniCore has earned its place in your workflow.
Go to Settings → Upgrade (admins only). The page shows the three plans in your local currency with your current plan marked; pick one, choose monthly or annual, and complete checkout.
Payment is processed by Razorpay's secure checkout — cards and, for Indian clinics, UPI and net banking. CliniCore never sees or stores your card details.
Your plan activates immediately on successful payment: limits lift, features unlock, and your team keeps working without a restart. You can review your subscription, usage against limits, and plan details any time under Settings → Subscription.
Registered animal-welfare NGOs and shelters can use CliniCore free of charge. The NGO program includes the Revenue plan's working feature set — including the AI scribe — with allowances sized for shelter operations (3 branches, 10 users).
It isn't self-serve, deliberately: we verify each organisation. Email hello@myclinicore.com with your organisation's name and registration details, and we'll enable the program on your account once verified.
Why free? Shelters run on volunteer hours and donated money; software that saves both shouldn't cost either.
CliniCore is priced and localised for six regions — India, the United States, Canada, the United Kingdom, Europe, and the UAE & Gulf. The country you pick at signup sets your currency, tax system and labels (GST vs VAT vs sales tax), phone-number handling, and date formats throughout the product.
You sign in at app.myclinicore.com wherever you are; regional pricing pages live at myclinicore.com (for example /in, /us, /gb).
Security & Privacy
How client data is protected, what's audited, and the GDPR tools built in.
Pet owners' contact details — phone, email, and address — are encrypted at rest with AES-256-GCM, using a master key held outside the database. Alongside the encrypted values, one-way hashes allow lookups (finding an owner by phone) without ever decrypting the stored data for a search.
The same encryption protects the integration credentials your clinic configures — payment gateway keys, WhatsApp credentials, email passwords.
All traffic between your browser and CliniCore runs over HTTPS, sessions are server-side with hardened cookies that expire after 12 hours, and standard web protections (CSRF tokens, strict security headers, login rate limiting) apply throughout.
Settings → Audit Log (admins only) records who did what, when: creates, updates, and deletes across owners, patients, prescriptions, invoices, payments, users, and settings — plus logins, failed logins, logouts, data exports, and anonymizations.
Each entry captures the acting user's email and role, the change itself (old and new values where relevant), the IP address, and the session. Entries survive staff turnover: the log keeps the actor's details even if their account is later removed.
Filter by action or record type to answer questions like "who edited this invoice" or "when did that record disappear" — with evidence, not recollection.
Beyond the simple WhatsApp opt-out toggle, CliniCore keeps a formal consent record per owner covering four consent types: messaging/marketing, email communication, data processing, and data sharing.
Each grant or revocation is stored with its timestamp, source, and who recorded it — so "did we have consent, and when was it given" has a documented answer rather than a shrug.
All staff can check an owner's consent state (vets need it before messaging); managing consents and the wider GDPR tools is admin-only. Consent records are included in an owner's data export.
When a client asks for their data — a right under GDPR and simply good practice everywhere — an admin can generate a complete export from the GDPR tools.
The export is a single JSON file named for the owner, containing their profile, pets, appointments, prescriptions with items, vaccinations, invoices, payments, visits, communications, and consent history. Every export request is itself logged.
JSON is deliberate: it's machine-readable (a new provider can import it) and losslessly complete, rather than a pretty PDF that drops the detail. For your clinic's own full-data export when leaving CliniCore, see "Is my data mine?" in the FAQ.
When a client asks to be forgotten, an admin can anonymize their record: personal identifiers are irreversibly removed while the clinical and financial records your practice must retain stay intact and internally consistent. The action requires a written reason and is permanently logged.
You can also set a retention policy: owners with no activity beyond your chosen retention period are anonymized automatically by a nightly job, so dormant personal data doesn't accumulate forever by default.
Access follows the three roles:
- Admin — everything, plus the areas only admins ever see: settings, branches, staff, upgrade and subscription, audit log, GDPR tools, message history, the import wizard, and resolving revenue alerts.
- Vet — full clinical work: creating and editing prescriptions, vaccinations, and consultations.
- Receptionist — daily operations: appointments, check-ins, owners and patients.
One honest caveat: billing is a whole-team activity by design — any staff member can create invoices and record payments, because in a real clinic the person at the desk does. If that doesn't fit your practice, tell us; we'd like to hear the case.
Troubleshooting
When something doesn't work — the checks that usually fix it.
Work down this list:
- "Too many login attempts" — after 5 failed tries, sign-in pauses for 15 minutes. Wait, or use Forgot password? (the reset link still works during the pause).
- Wrong password — reset it from the login page; the email link lets you set a new one in under a minute.
- "Your account has been deactivated" — a clinic admin deactivated your staff account; ask them to reactivate you from Settings → Staff Management.
- Signed up with Google? — use the Sign in with Google button rather than a password, or set a password via the reset flow.
- Redirected to an upgrade page — your clinic's trial or subscription has ended; an admin can restore access by choosing a plan.
Check in this order:
- The message log — Settings → WhatsApp Message History shows each message's real status. Failed or undelivered entries include the error; suppressed means the owner is opted out.
- The owner's opt-out — on their profile, Communication Preferences must show opted in. Opt-out blocks even manual sends, by design.
- The number — is the phone (or the separate WhatsApp Number field) correct, with the right country? Messages go to the WhatsApp number when both exist.
- WhatsApp configuration — Settings → WhatsApp Provider must show a connected status; if it was never set up, nothing sends.
- Still stuck? Message us with the recipient number and the time — the log usually tells us the rest.
- Seems stuck? Imports of 500+ rows run in the background — the progress bar updates as it works, and the history table on the import page shows the final status even if you left the page.
- Upload rejected? Files must be .csv, .xlsx, or .xls and under 10 MB. Only the first sheet of a workbook is read — move your data there.
- Rows skipped? The preview step lists each skipped row with its reason. Common causes: missing required values (owner phone, pet species), unreadable dates, or the owner a pet references not being imported yet — owners come first.
- Import shows Failed? Fix the reported cause and upload the same file again — with skip-duplicates on, rows that already made it in are not doubled.
- No record button, or "not included in your plan" — the scribe needs the Revenue or Hospital plan (trials include it). Core shows the card locked; notes can still be typed.
- "All minutes used" — you've hit the month's scribe allowance. It resets on the 1st; Hospital removes the cap. Typing notes always works.
- Microphone blocked — your browser must have mic permission for app.myclinicore.com; look for the microphone icon in the address bar and allow it.
- Processing never finishes — very long recordings take a while (uploads are capped at 25 MB). A genuinely stuck session clears itself overnight, and you can record again the next day — or split long consults into shorter recordings.
Different uploads have different caps — if a file is rejected, the limit is usually why:
- Data imports (CSV/Excel) — 10 MB, up to 5,000 rows per file
- Lab reports — PDF only, up to 20 MB
- Scribe audio — up to 25 MB per recording
- Clinic logo — image files up to 2 MB
For oversized imports, split the spreadsheet; for oversized lab PDFs, re-export the report at a lower scan resolution. Uploads are stored durably and served back from your clinic's account only.
CliniCore runs entirely in the browser — there is nothing to install, and updates reach you automatically. Any current version of Chrome, Edge, Firefox, or Safari works, on desktop, laptop, or tablet; phones work too, with layouts best suited to quick lookups rather than long data entry.
If a page misbehaves, the classics genuinely help: reload the page, try a private/incognito window (rules out extensions), and make sure the browser isn't years out of date. The AI scribe additionally needs microphone permission granted to the site.
An internet connection is required throughout — see "Does CliniCore work offline?" in the FAQ.
FAQ
The quick answers, in one place.
No. The 14-day trial asks for a clinic name, your name, an email, a password, and your country — that's all. No card, no billing details, and nothing is charged when the trial ends: an expired trial pauses until you actively choose and pay for a plan. Pricing is public at myclinicore.com/pricing, so you'll never need a demo call to learn a number.
Yes. There's no lock-in contract: trials simply end unless you subscribe, and a paid subscription can be cancelled from your account — you keep access through the period you've paid for, and it doesn't renew after that. If anything about billing looks wrong, write to hello@myclinicore.com and a human will sort it out; the refund policy is published at myclinicore.com/refund.
Yes — unambiguously. Your records belong to your clinic, and you can take them with you. In the product today: per-owner GDPR exports (complete JSON), a medicine catalogue export, and accounting exports. Leaving entirely? Email us and we'll provide a full export of your clinic's data — we'd rather earn your stay than block your exit. Your data is also never sold or shared for advertising.
No — CliniCore is a cloud application and needs an internet connection. That's a deliberate trade: your data is backed up centrally, every branch sees the same live records, and WhatsApp messaging (which is the point) requires connectivity anyway. If your connection drops mid-day, a mobile hotspot from any smartphone is the practical workaround; nothing you saved before the outage is ever lost.
Whatever you already have. CliniCore runs in a modern web browser — no installation, no Windows-only desktop app, no server in a cupboard. A desktop or laptop is most comfortable for billing and records; tablets work well at reception; phones are fine for looking things up. Clients need nothing but WhatsApp, which they already have.
CliniCore never bills you per WhatsApp message — reminders, prescriptions, invoices, and reports are part of the product on every plan, not a usage meter. We think metering the channel your client communication runs on punishes you for using the product well. (WhatsApp's own carrier-side conversation charges, where applicable in your country, are separate from CliniCore's pricing — we're happy to explain how those work for your region.)
Three ways, all reaching the people who actually build CliniCore: the chat button on this page, WhatsApp at +91 63824 13957, or email hello@myclinicore.com. Prefer voice? The founders line, +1 (513) 494-7153, forwards to us for US and international callers. We're a small team — you'll get a person who can fix things, not a ticket number.
Still need help?
Ask us directly — you reach the people who build CliniCore, not a ticket queue.
Prefer to talk? Founders line +1-513-494-7153 (US & international) · +91-6382413957 (India)