How to leave

Every software company writes about switching to them. Almost none write about switching away, which tells you something about how confident they are that you will not want to.

The export

Your data, on demand

Ask, and you get a ZIP: one CSV per dataset, every uploaded file, and an index saying which patient each belongs to.

Each file carries its row count and a checksum, so you can check nothing was lost or changed. If one table fails to read we refuse the whole archive rather than ship it short. An export that quietly reports zero appointments is worse than none.

Coverage

What comes out, and what does not

Three lists below: what the export holds today, what it is missing, and what we hold back on purpose. If we add something to Vetmira and forget to export it, it turns up under Not included on its own, and we cannot publish the site until that is fixed.

Last verified . Generated from the exporter itself, not written by hand. The same list is machine-readable at export-coverage.json.

Included in the current export

63 files, plus a manifest and every uploaded document.

Every file, with what is in it
Every file in the archive today, with the exporter's own description of it. On a narrow screen, scroll the table sideways to see every column.
Dataset File What is in it
Patientspatients.csvPatient demographics, contact details, and animal identity: species, breed, sex, sterilization, color and markings, microchip number, and date of death. This is the record that identifies the animal, and without it a successor system has a name and a date of birth
Owner access to patientspatient_guardians.csvWhich login may act for which patient (family/guardian links)
Client profilesclient_profiles.csvHow each client wants to be contacted, and their marketing consent
Householdshouseholds.csvHouseholds: the account money is owed against
Household membershousehold_members.csvWho is in each household, and who may authorize or collect
Locationslocations.csvThe practice's sites. Every appointment, invoice and stock movement names one, so an export without them cannot be read
Veterinariansproviders.csvClinicians and their configuration
Provider locationsprovider_locations.csvWhich sites each clinician works at
Services and pricesservices.csvBookable services, durations, and prices
Productsproducts.csvThe catalog: medications, vaccines, food, supplies and retail items, with their prices, stock rules and whether they are restricted to particular species
Product speciesproduct_species.csvWhich species each catalog item may be used for, so a dog is not offered something meant for a horse
Appointmentsappointments.csvAll appointments, past and future, in UTC
Forms and consents due at an appointmentappointment_requirements.csvForms and consents attached to specific appointments
Clinical notesclinical_notes.csvSOAP notes. JSON columns (diagnoses, orders, prescriptions) are embedded as JSON text within the cell
Note addendanote_addenda.csvCorrections to signed notes. A signed note is immutable, so an addendum is the only record of what was changed and why: without these the exported notes are the uncorrected versions
Vitalsvital_signs.csvRecorded vitals
Diagnoses and problem listdiagnoses.csvProblem list and per-encounter diagnoses
Allergies and reactionsallergies.csvAllergies and reactions
Alertsalerts.csvHandling and care alerts. These are the warnings staff see before touching an animal, so losing them in a migration is a safety matter
Medication listmedications.csvMedication list recorded on the chart
Prescriptionsprescriptions.csvPrescriptions, with the weight each dose was calculated from and the date that weight was taken. The only record of what was prescribed
Prescription dispensesprescription_dispenses.csvEvery fill, with its own lot number. This is what a recall is answered from: which lot went out, to whom, and when
Vaccinationsvaccinations.csvVaccination history, including rabies tag numbers. A legal record in most jurisdictions and irreplaceable once lost
Orders and resultsclinical_orders.csvLab, imaging, referral, and procedure orders with their results
Order result valuesorder_result_values.csvIndividual laboratory values on an order, including superseded uploads
Tasksstaff_tasks.csvInternal work queue items
Form templatesform_templates.csvIntake form definitions
Completed formsform_submissions.csvCompleted intake forms; answers are JSON text within the cell
Consent documentsconsent_documents.csvConsent document text by version, with who approved each one, on what basis, for which jurisdiction and when
Consent signaturesconsent_signatures.csvWho signed which consent version, and when. The signature image and the exact text signed are both included: a consent without the wording it was given against proves nothing
Record disclosuresrecord_disclosures.csvRecords-release history: what left this practice, to whom, and on what basis. The practice's own evidence of its disclosures
Message threadsmessage_threads.csvSecure message conversations
Messagessecure_messages.csvIndividual messages within those conversations
Message attachmentsmessage_attachments.csvFiles attached to messages; the files are under documents/
Document indexdocuments.csvDocument index; the files themselves are under documents/
Estimatesestimates.csvEstimates. Amounts are integer minor units (cents)
Estimate versionsestimate_versions.csvEach revision of an estimate, and when the owner was sent and opened it
Estimate linesestimate_lines.csvWhat each estimate version proposed, line by line
Estimate approvalsestimate_approvals.csvThe owner's approval: who agreed, how, when, and the ceiling they agreed to. The practice's evidence that treatment was authorized
Estimate line decisionsestimate_line_decisions.csvWhich individual lines the owner accepted or declined, and why. A declined line is a clinical and legal fact, not an absence
Invoicesinvoices.csvInvoices. Amounts are integer minor units (cents)
Invoice linesinvoice_line_items.csvInvoice breakdown
Paymentspayments.csvPayment attempts. Card brand and last four only, no card data exists anywhere in this system to export
Payment refundspayment_refunds.csvRefunds, one row each with its own status. A refund is a row rather than a subtraction because some settle later and some fail
Ledger entriesledger_entries.csvThe household money ledger, append-only. Every balance in this system is derived from these rows, so a balance without them cannot be explained or audited
Payment allocationspayment_allocations.csvWhich payment settled which invoice, and for how much
Inventory lotsinventory_lots.csvStock lots, per product and site, with expiry and supplier
Inventory movementsinventory_movements.csvThe stock ledger, append-only. Every on-hand figure is derived from these rows, and each names the clinical event that caused it
Inventory stock snapshotinventory_stock_snapshot.csvOn-hand balances as calculated at the moment of export. Derived from inventory_movements and included alongside them so the recipient can check their own arithmetic against ours
Recall rulesrecall_rules.csvRecall rule configuration
Recall historyrecall_sends.csvRecall contact history
Waitlistwaitlist.csvWaitlist entries and slot offers
Time offprovider_time_off.csvProvider time off
Schedule blocksprovider_blocks.csvBlocked periods in the schedule
Staff accountsusers.csvStaff accounts. Password hashes, TOTP secrets, and recovery codes are deliberately excluded
Notification historynotification_log.csvOutbound notification history (reminders, confirmations, alerts). Sign-in link messages are excluded, their payloads are credentials
Reminder logappointment_reminders.csvReminder scheduling log
No-showsno_show_log.csvRecorded no-shows
Processor event logpayment_events.csvPayment processor webhook log (event ids and types; no card data exists)
Intake forms (legacy)intake_forms.csvLegacy intake form definitions
Intake responses (legacy)patient_intake_responses.csvLegacy intake responses; answers are JSON text within the cell
Retention policiesdata_retention_policies.csvConfigured retention periods
Audit logaudit_log.csvAccess and change history

Not included

What a practice would look for and not find. 3 known gaps. This is the list to read before you rely on the export. On a narrow screen, scroll the table sideways to see every column.
Dataset Status What this means
Species and breed listsNo plan to addReference lists a practice can edit. Named here because they are editable and therefore yours, not because a successor system would want ours.
Migration historyNo plan to addWhat a previous import read, row by row, and how it matched records. Useful for auditing a migration into Vetmira, not for one out of it.
Vendor exchange logNo plan to addHow a requisition reached a laboratory and how its result came back: attempts, errors, and the vendor's own event ids. The orders and the results are exported in full. This is the transport underneath them, and it describes our queue rather than your record.

Left out on purpose

Sign-in credentials, and only those: password hashes, two-factor secrets, recovery codes, sign-in links, live sessions and internal authorization state. They belong to the system rather than to your practice, and no system you move to has any use for them.

Or just take one

A complete export of our demonstration practice, produced by the same code that would produce yours: 63 CSV files, the manifest, the README, and an uploaded document in its patient folder. Every checksum in it is the checksum of the file beside it.

The clinic in it does not exist. Every address is on example.com and no real person or animal appears anywhere. Nothing was removed to make it publishable.

Cancelling

Thirty days' notice, no exit fee, no ransom

Billing is monthly or yearly, and stopping takes 30 days' notice either way. On monthly, expect one last invoice if a renewal falls inside them. On yearly, we refund the whole months you have not used: paying up front buys a discount, not a deposit.

Nothing is held back over money. The export is free, nothing waits on a final invoice, and a failed card does not lock you out of your own records. Past due is a status, not a wall, and shutting a practice out takes a person here deciding to. The export works even on a suspended practice, because that is when you are most likely to need it.

Your processor account is yours. You connected it, you keep it, with your funds and your dispute history.

Limits

What we cannot promise

We cannot make another vendor read our files well. Every system reads a CSV its own way and some make it deliberately awkward. What we can do is tell you exactly what is in the file before you commit, which is what the tables above are for.