wattleclinicDocs
Advanced

Data Import

Bulk importing clients, patients, and catalogue items from a CSV file.

For (management)OwnersPractice Managers

Bringing records in from another system. Settings → Import & Export → Import tab.

It needs the "Import data" permission, which by default only the clinic owner and a Practice Admin hold. A vet, nurse or front-desk login won't see the Import & Export page at all. Your owner can grant it to anyone from Settings → Roles & Permissions.

Import typeCreates
ClientsClient profiles - name, email, phone, address
Catalogue ItemsProducts and services
Clients & PatientsClients and their animals in one go

Imports are safe and reversible. You review and approve every batch before anything is saved - nothing goes in silently, and a completed batch can be undone.

Getting your spreadsheet ready

Save as .csv, not Excel .xlsx - File → Save As / Download → CSV.

  • Under 10 MB, with at least one row of real data, not just headings.
  • Patients import together with their owners in one combined file. There's no patients-only import: one row per pet, carrying the owner's first and last name alongside the pet's details.
  • Over 2,000 rows warns you it may take a minute or two. Keep the page open.

Required fields

TypeMust have
ClientsFirst Name, Last Name
Catalogue ItemsCode, Name, Kind, Sale Price
Clients & PatientsFirst Name, Last Name, plus the pet's Name and Species

The list is deliberately short. Everything else is optional - including Breed, Sex, Desexed/Neutered, Colour, date of birth, microchip, and an item's Cost Price.

That's on purpose. Old paperwork frequently doesn't say, and requiring a field doesn't conjure the missing fact - it just makes whoever runs the import type "Unknown" into every blank row, and an invented "Unknown" reads like something the record actually said. A blank desexed cell stays unanswered rather than recording the animal as entire, so it never turns into a clinical claim your old records never made. You can fill any of it in later on the record itself.

The one to know about: a missing Cost Price is stored as $0, so margin figures on those items read as 100% until you fill the real cost in.

Bringing across animals that have died, and other optional columns

If your old system recorded whether a patient was still with the practice, bring the column with you - Status accepts active, inactive and deceased, along with the words other systems use for them (archived, dead, euthanased, PTS). Without it every animal arrives active, which for most migrations means a list full of pets who died years ago.

A few more columns that used to have nowhere to go:

ColumnWhat it does
StatusWhether the animal is active, inactive or deceased
Date of DeathRecorded on the animal. A record with one is filed as deceased even if the Status column is blank
Date of Birth is EstimatedMarks an age that was a guess, so it shows as ~3y 2m rather than a birthday
Client SinceThe date the owner joined your practice. Without it, everyone is stamped with the date of the import

A column headed with our own field name always maps - if you build a file by copying the names off the mapping screen, every column lands where you expect.

On a Clients & Patients file there's no separate "Owner" column to map - the owner is the First Name and Last Name on each pet's row. Three cats belonging to one person are three rows and one new client: Wattle groups rows that share first name, last name and email. Two people genuinely called Jane Smith stay separate as long as their emails differ, and a repeated name with one row's email left blank is treated as a second person, so keep the owner's email on every row of theirs.

The four steps

1. Upload. Drag your CSV in or Browse files. Once the file has been read, Wattle detects the type from your column headings and shows the row count - override the type with the dropdown if it guesses wrong. When it can't tell from the headings it says so and asks you to pick, rather than presenting a guess as if it were certain. Changed your mind about the file? Remove it, or just choose another - including picking the same file again after removing it. If a file can't be read at all you get a message saying so and the file is cleared, so you can try a different one. Over 2,000 rows warns you it may take a couple of minutes.

2. Map columns. Confirm or change each match, or Skip this column. Required fields are marked, and a warning names any still unmapped. A live preview of your first few rows updates as you go. Files with dates ask you to confirm Australian (DD/MM/YYYY) or US (MM/DD/YYYY).

3. Review. Every row is validated: how many are ready, errors in red, warnings in amber. Errors are skipped; warnings usually still import. Click any value to correct it here - see below.

4. Import. A progress bar runs. Keep the page open - closing it may interrupt. The summary shows how many records were created and why any were skipped.

On the Review step

Correcting a value without leaving the page

Click any value in the table and change it. The row re-checks itself straight away, so a row sitting in red becomes an importable row in a couple of seconds. Enter or clicking away saves it, Escape abandons the change. Columns that only accept set values - species, sex, status, dates, yes/no - show you what they'll take while you type.

Your file is never altered. Corrections sit on top of it, changed cells are highlighted, and the "3 cells changed" button above the table downloads the list: the row, the column, what your file said, and what it says now. Keep it with the file - it's the record of where your Wattle data departs from the paperwork it came from.

This matters most for old records. If a species reads as something we can't place, or a date won't parse, fix it in the table rather than editing the spreadsheet and starting over - a second upload creates a second import batch, which means two entries in Import History and two separate Undos.

Possible duplicates

Wattle checks every animal in your file against the ones already in your records, and against the rest of the file, and lists anything that looks like a twin: "Row 42 looks like Bella (Ann Smith), already in your records - same name, owner."

Nothing is blocked and nothing is dropped. Flagged rows import like any other unless you press Don't import on one. That's deliberate: two records can be merged in seconds from Possible duplicates, but an animal that was never created is simply missing, and nobody goes looking for a record they've never seen.

What counts as a match: two or more of microchip, pet name, owner, or date of birth. A shared name on its own is a coincidence - every practice has four dogs called Bella - and breed, colour and sex are never enough by themselves. A matching microchip is the exception and flags on its own, because a chip is unique by law.

Evidence counts against a match too:

  • Two different microchips rules it out, however well everything else lines up. That's two chipped animals.
  • A different species rules it out.
  • A different owner only counts against it a little - Mum booked the dog in last year, Dad booked it this year. You'll see "different owner" beside the match and can judge.
  • A blank is never a disagreement. One record having no microchip tells us nothing either way.

The rest of the step

  • Large files check in the background so the page never freezes. You'll see "Checking 1,200 of 5,000 rows…" count up.
  • The row list is paginated, 50 to a page, with Previous/Next and a "Page 1 of 3" indicator.
  • Rows move as you fix them. Errors sort to the top, so a row you've just corrected drops down the list. That's it working, not a glitch.
  • Download N invalid rows still saves the rejected rows with the reason each one failed, if you'd rather work in a spreadsheet.
  • Duplicates must all be resolved before you can proceed - Link to existing or Create new for each. On a Clients & Patients file, Link to existing attaches that pet to the owner already on file; the animal is still created. Nothing is dropped.

Species and kind values Wattle accepts

Both fields only store set values, but everyday wording maps across automatically and capitalisation doesn't matter.

Species: canine, feline, avian, equine, bovine, ovine, caprine, porcine, rabbit, rodent, reptile, amphibian, fish, mustelid, marsupial, other.

Write the animal, not the category. "Dog" becomes canine, "cat" feline, "horse" or "pony" equine, "cow" bovine, "sheep" or "lamb" ovine, "goat" caprine, "pig" porcine, "chicken", "duck" and "budgie" avian, "rat", "mouse" and "guinea pig" rodent, "ferret" mustelid, "kangaroo" marsupial, "frog" amphibian, "tortoise" reptile.

Sex takes the shorthand you'd write on a card: MN, FS, FN, neutered male, spayed female, entire male. Where the value says the animal was desexed, that's recorded too - unless your file has its own Desexed column, which always wins.

Dates written with a two-digit year are read as the past, so a dog born 14/6/95 is born in 1995, not 2095.

Catalogue kind: service, euthanasia, discount, product, medication, vaccine.

Your existing files still work. A column headed Category is still recognised, and the words in it still map. Everything that is your time becomes Service - consultation, procedure, surgery, lab, pathology, x-ray, ultrasound, hospitalisation, boarding, dental. Supplies, consumables and "other" become Product. "Drug" becomes Medication, "vaccination" becomes Vaccine. "Euth" and "End of Life" become Euthanasia, which the old ten-word list had no way to say at all.

A kind decides what the item is - which fields the form shows you, whether it gets the weekend loading. Where you file it is separate and optional, and isn't part of the import.

Only genuinely unrecognised values are flagged, usually with a suggestion - "Did you mean canine?" Click the cell and correct it on the spot.

Undoing an import

Undo Import appears immediately after the import completes and deletes everything that batch created.

Once you navigate away or import more data, that button may no longer be available - use Import History below the wizard instead, which lists every past import with its type, count, date and status, checks dependencies first, and has its own Undo.

"Remove dependent patients first" means you imported clients and then patients linked to them. Undo the patients first, then the clients.

Undoing permanently deletes those records, and the undo itself can't be reversed. Check you have the right batch.

The complete setup · Possible duplicates - worth running after an import · Export & backup · The catalogue

On this page