PBS Livestock

PBS Livestock — Handbook

Checked against the live app at livestock.pascoesystems.co.uk on 21 October 2026.

This is a live demonstration on fabricated data. No real farm's animals are held in it.

PBS Livestock is a register of your animals, tracked by ear tag, with the key events in an animal's life recorded against it. This handbook has one section per screen you can reach; the animal's id sits in the address where it says :id.

The screens are in the menu along the top. On a screen narrower than a laptop's (a tablet, a phone held either way) they sit behind Menu, with which holding you are in; Sign out and ? stay beside it.


Help /help

This handbook, inside the app. Every screen carries a ? in the top bar that opens this page at that screen's own section. You can read it without signing in; it describes the screens and holds no records.

Sign in /login

Enter your email and password to reach your farm. Signing out returns you here.

Create an account /signup

Linked under the sign-in form. While PBS Livestock is not taking new accounts it says Accounts open soon, with Request access and Back to sign in, and the server refuses any sign-up sent to it; nothing is ever created here. When it does take accounts, it is a form - your farm or holding, your name, email and a password - that makes your own holding, empty, on the free plan (up to 25 animals), and says Waiting for approval: the login cannot sign in until Pascoe Business Systems approves it, and signing in before then says so (only to someone who gives that account's right password). An address already on file gets the same answer and nothing is made.

Approvals /approvals

For Pascoe Business Systems' operators only - to everyone else this page does not exist. New holdings that used Create an account, each with its owner, email and when it asked, and Approve: the owner's login can sign in from then on. Recently approved ones are listed with when and by whom. While sign-up is off it says no requests can arrive.

Approve a holding /approvals/:id/approve

Approve beside a waiting holding: its owner's login becomes active, in one step, and the holding moves to Approved recently. A second press changes nothing.

For the demonstration company's owner only - to everyone else this page does not exist. Make the link (who it is for, and how many devices it may open on - 5 unless you change it) or Make a public link (no end date, for a website): the link is shown once, to copy. Each link lists its devices (phone, tablet or computer, the system and browser, and the rough place) with the pages opened on each, kept 90 days; Extend 14 days or Switch off. For each new device on a named link you are emailed the time, the device, the rough town and the network provider, a line when the network looks like a VPN or a data centre, and two links - Pause link and Block this network - each opening a page that asks before it does anything. A link pauses itself if an automated client opens it, if it is opened on more devices than it allows, if it asks for server paths no screen uses, or if it is used far faster than a person uses it; you are emailed why. Pause / Resume on each link do the same by hand, and Blocked networks lists every network blocked from demo links for 30 days, with Un-block; real accounts are never affected. The website's public link is never paused by a visitor - that visitor alone is refused.

A demo link /demo/:token

Opens the demonstration company with no password, as a login that can change nothing: every save says Demo: not saved, and a strip under the banner says it is a read-only demo, with End demo. Someone already signed in is asked first, because opening the demo signs them out on that browser. The first time a link opens on a device it shows its terms - the demonstration is confidential; screenshots, screen recordings, copying and sharing are not permitted; every screen is marked with their name; activity on the link is logged for security - with I agree — open the demo; nothing opens until they agree. Every demo page carries a faint diagonal mark, for example "Demo for Alex · 15 Oct 2026 · Confidential · PBS", and loads /demo-protect.js, which stops text being selected, dragged or copied outside the boxes they type in, turns off the right-click menu, and covers the screen with "Screenshots aren't permitted in this demo." when Print Screen is pressed or the window loses focus, until it has focus again; printing prints only "Printing is switched off in this demonstration." A web page cannot actually stop a screenshot or a phone camera - the mark is what traces one back. A link opens on a limited number of devices; past that, it says so.

Demo ended /demo/ended

Where a demo visitor lands when the link has been switched off or has reached its end date, or after End demo - or, when it has been paused, with the words "This demo link has been paused. If that's a mistake, please contact Jarrad Pascoe."

The owner's one-tap page /demo-owner

Where Pause link / Block this network in the new-device email land: it says what will happen and does it only when its button is pressed. It works without signing in - the link in the email is signed and lasts 14 days.

Animal register /

The register: every animal on your holding, by ear tag, with species, breed, sex, date of birth, state (alive, dead, sold) and a Withdrawal column showing the date any current withdrawal clears. A line at the top counts how many animals are in withdrawal, so the most important safety fact is visible without opening each animal. This is your home screen. Add an animal and Record a movement sit beside its title (not for a read-only login); from here you also open any animal. The table shows the ten most recently added animals; Show more adds ten at a time, and the heading always counts every animal. Find an animal takes an ear tag, a barcode or a scan, and when exactly one animal matches it opens that animal. The box has the cursor when the page opens, so a stick reader (which types what it reads and presses Enter) works straight away: scan the electronic tag and the animal opens. A scanned number matches the animal whose ear tag's digits - the flock or herd mark and the individual number, 11 digits or more - are the end of it; a barcode recorded on the animal matches exactly.

Print the holding register /register/print

A clean, print-ready page of the whole register — every animal by ear tag, with species, breed, sex, date of birth, state and any current withdrawal — with the app chrome hidden when you print. Use your browser's Print (Ctrl + P) to print it or save it as a PDF to hand to a vet or an inspector. It is a read of what you have already recorded; nothing is changed. On a demonstration farm the printed page keeps the slim demonstration strip at the top and the notice at the foot, so a page that leaves the screen still says every record on it is fabricated; a real holding's page carries neither.

Export the register as CSV /register.csv

Downloads the whole register as a spreadsheet file (holding-register-<date>.csv): ear tag, barcode, species, breed, sex, date of birth, state and the date any withdrawal clears, one row per animal, ordered by ear tag. Opens in Excel or any spreadsheet. A read only — it takes nothing and adds nothing. On a demonstration farm the file opens with one notice line above the column headings, saying the records in it are fabricated, and the download is named demo-holding-register-<date>.csv for the same reason: once a register is a file on someone else's computer, the file is the only thing left to say what it is. A real holding's file has neither.

Reports /reports

The safety report: every alive animal with any treatment whose withdrawal period has not yet cleared, soonest to clear first, with the treatment date and the medicine. It goes by the treatment that clears last, so a later, shorter treatment never takes an animal off the list while an earlier, longer one is still running - the same rule as the register. It is the list to check before selling milk or sending an animal to slaughter.

Below it, movements in a date range — pick From and To and it lists every movement in that window with how many animals went on and off, and flags any that were written down after the 36 hours allowed. And the annual inventory — the animals on the holding on a date you choose, by species, with a total. The inventory is worked out from your own records (every alive animal, less anything that went off on or before that date and did not come back); it is not a return to anybody, so check it against what is in the field before you rely on it. Each number opens the animals behind it.

Cattle nearing 30 months — every alive animal from 27 months old, with the day it turns 30 months, soonest first, and the ones already past it folded below. Many beef buyers' specifications ask for cattle under 30 months at slaughter; it is your buyer's rule, not a law, so check theirs.

The animals behind an inventory number /reports/inventory

Opened from a number in the annual inventory: the animals of that species on the holding on that date (or every animal, from the total), worked out by the same rule, with ear tag, species, breed and sex - each opening its record.

Movements /movements

Everything that has come on or gone off the holding, newest first: the date it moved, on or off, why, how many animals, the other holding, whether it was written down inside the 36 hours the law allows, and who recorded it. If any animal has a sale recorded against it and no movement off, a line at the top says how many and how long is left on the oldest. Record a movement, To report to BCMS or LIS (the reporting list, below) and Reports sit beside the title.

To report to BCMS or LIS /to-report

The register is not the report. This lists the movements of the last 60 days that must also be reported to a national service, from GOV.UK's guidance for England: cattle on or off - to the British Cattle Movement Service (BCMS) within 3 days of the movement; sheep or goats coming on - to the Livestock Information Service (LIS) within 3 days of arrival, by you as the receiving keeper (the sending keeper cannot report it for you); sheep or goats going off - reported with the move, on LIS online or the LIS-1 document that goes with them. Pigs and other species are not on it. Each line says where it stands: so many days left (and the day that is the third day), the third day today, so many days past it, goes with the move, or reported ✓ with the day, how and the receipt or reference. The most pressing are first, and a line at the top counts what is not marked as made; the same line shows on the Animal register home. Each movement opens its page to mark it. PBS Livestock sends nothing to BCMS or LIS: you report there and mark it here.

Record a movement /movements/new

A movement off that is a sale, to market or to slaughter, with any animal still in its withdrawal period on that day, is refused - naming each such animal and the day it clears. Tick I have checked (not going for food) and save again to record it; each such animal gets a note saying so. Cattle 42 days old or more going off for any reason but slaughter are checked for a TB pre-movement test (England's rule): any with no negative test applied in the 60 days before the move, or a reactor or inconclusive result since, are named and the movement is refused - unless you tick that they move under a TB exemption or an APHA licence, and each gets a note saying so. A herd on four-yearly testing is not checked - except that an animal whose latest result is a reactor or inconclusive is always named, whatever the reason or its age: it moves only as APHA directs, under their licence. Tests are recorded under Farm > TB testing. On or off, why it moved, the date it moved (today at the latest, by the UK date - a movement still to happen is refused), the other holding's CPH, keeper and address, and which animals. One event can carry as many animals as moved together — hold Ctrl (or Cmd) to pick more than one, or on a phone tap each one; nobody enters sixty store lambs one at a time. Above the list, Find by ear tag, flock mark, species or breed narrows it as you type, and Pick all shown takes everything the search found at once — type a flock or herd mark and the whole batch is picked. Clear unpicks them all, and a line says how many are picked. Pick from a reader's saved scans takes the file a stick reader saved (CSV or text), or the numbers pasted in, and picks every animal whose ear tag a scanned number matches (the same rule as Find an animal); it says how many were picked and lists any number that matched no animal on the list, which is not picked. An animal not on the list yet: + New animal under the list opens Add an animal, and saving it brings you straight back here with it picked and what you had typed still filled in. If you choose "something else" a box appears and you have to say what it was, so nothing is ever filed as an unexplained "other". The other holding's CPH, keeper and address, and notes, are under The other holding, and notes (optional).

You type the other holding's CPH from their paperwork. The app never generates one: a CPH is a real number issued to a real holding, and a made-up one would be a specific false claim about where your animal went.

A batch, by count (sheep and goats) — a fold on the same form: which batch and how many of it moved, with the animals picked or instead of them. Coming on, they are added to the batch; going off, taken from it — more than the batch held on that day is refused. The movement lists them as so many of the batch (with its flock mark), its head count includes them, and the batch's own page lists the movement. The annual inventory counts each batch on its date.

Record a movement for one animal /animals/:id/movement

The same screen with that animal already picked. A single animal is simply a batch of one.

Print the movement record /movements/:id/print

From a movement's page, Print the movement record: one page for the haulier, the other keeper and your file - this holding and the other holding (its CPH, keeper and address as recorded), the day, why, how many by species, any batch moved by count with its flock mark, and every animal (ear tag, species, breed, sex, born) with what to know on that day: in withdrawal and when it clears, and for cattle the TB test that covers the move, or that none does. Blank lines for what is written on the day: your holding's CPH, the transporter and their authorisation number, the vehicle, the times, and both keepers' signatures. Print it, or save it as a PDF to send on. It does not replace the movement document the law requires - in England, for sheep and goats the LIS-1 document or LIS online (LIS replaced ARAMS in 2022), for pigs eAML2 - or a cattle passport, and nothing is sent to BCMS, LIS or eAML2; the page says so.

One movement /movements/:id

The event and every animal on it, with the date it moved, the exact time it was written down (UK time) and by whom, and whether that was inside the 36 hours. For cattle, sheep or goats, Reported to BCMS or LIS says what it owes and where that stands, and Mark it reported to BCMS / LIS (/movements/:id/reported) records how it was reported (online, farm software, the self-service telephone line, by post, or the market or slaughterhouse reported it), the receipt or reference number and the day. Online, farm software and the telephone line need the receipt or reference: GOV.UK says that without one the report failed. The day is between the movement and today. A mark can be corrected; a read-only login sees it but cannot mark.

Add an animal /animals/new

The form to bring a new animal onto the register — its ear tag, barcode, species, breed, sex and date of birth. Saving it files the animal and opens its page — or, reached from + New animal in Record a movement, takes you back to that movement with the new animal picked. The free plan (it says so at the foot of every page) covers up to 25 animals - everything on the register that is alive, and every batch's number. A free holding that would go past it - an animal added, a new batch, a batch's count going up, a batch coming on in a movement - is told so in words, with the count, what it would make and what a subscription costs, and nothing is saved. Nothing else changes: records, health, movements off, deaths, sales and Take everything out all work as before. A holding that pays has no animal limit, and one that pre-dates billing is not counted at all. Breed offers the official cattle breeds and their codes as you type (GOV.UK's list, 206 breeds) — pick one, or type a code (AA) or a breed's name (Hereford) and it is kept as Hereford (HE); anything else (a sheep breed, a local cross) is kept exactly as typed. The same on Correct the details. Where it came from says whether the animal was born on this holding (and whether in a dairy herd), with the dam's ear tag; leave it as bought in for an animal that arrived. An animal born here needs its date of birth, a date of birth cannot be after today, and a dam's tag is only taken for an animal born here — each refused in words, nothing saved. On a phone or a short screen Add animal and Cancel stay in a bar along the bottom while you fill the form in.

Save a new animal /animals

Where the add form submits. It creates the animal and it appears in the register. (Adding an animal is a change to your records, so a frozen/unpaid account is refused here with an honest on-screen reason while the register stays readable.)

One animal /animals/:id

It opens on the animal itself: its ear tag, species, breed, sex, state and date of birth, any withdrawal, and a row of actions — for an animal still on the farm Health or treatment, Breeding, Move on or off, Died and Sold - and on every animal Correct the details and Archive (entered twice or by mistake). A dead or sold animal's record is closed: its page says so, and no treatment or breeding is recorded against it (a sold animal still offers Move on or off, for its movement off). Each action opens its own short form under the summary, one at a time, with Cancel to close it; Move on or off opens Record a movement with this animal picked (a sold animal keeps it, because a sale still needs its movement off). Below are the records themselves to read: its health and treatment history with the withdrawal date on every treated row, its breeding records, and any death or sale. Every record says who recorded it, and the animal says who added it and when. An animal still inside a withdrawal period says so at the top of its page, with the date it clears. An animal that died or was sold during a withdrawal period says that instead — the date it died or was sold, the treatment it was under, and the date the withdrawal would have cleared — because a carcass or a sale inside a withdrawal period is the case that matters most.

Record a health event /animals/:id/health

A dated record (the date defaults to today and cannot be a day still to come) of a concern or a treatment: what was wrong, what was done, the medicine as written on its label, the dose, and the withdrawal period in days from the product's datasheet. The date the withdrawal clears is worked out from those two and kept on the animal's page where you will see it. The convention: the day of treatment is day 0, the animal is in withdrawal for the full number of days you enter after that day, and it clears on the following day — a 7-day period after a treatment on 10/09 clears on 18/09. It is your record; the period comes from the datasheet and your vet, and the app determines nothing about what any regulation requires of you.

From the cabinet (on the same form) takes the treatment from a bottle in the medicine cabinet — see Medicine cabinet below.

Work out the dose from its weight (a fold on the same form) does the dose sum for you. Give the animal's weight (it is filled in if one is already kept), how the label gives the dose — mL per 10 kg, or mg per kg with the product's strength in mg per mL — the rate on the label, and your dosing gun's step. Leave the Dose box empty and save: the dose is weight ÷ 10 × rate (or weight × rate ÷ strength), rounded up to the gun's step, never down — 65 kg at 2.5 mL per 10 kg is 16.25 mL, set at 16.5 mL on a 0.5 mL gun. The sum is kept with the treatment and shown under it. If you type a dose that does not match the sum, it is refused and nothing is saved. The weight is kept on the animal (shown at the top of its page), and a new weight goes in its history as Weighed. It is the same sum as the free Dose by weight calculator on PBS Tools; it does the arithmetic, not the choice of product or dose.

Record breeding /animals/:id/breeding

A dated breeding record for the animal: the service date (today or before), the sire, the expected date, the outcome as it becomes known (served, in calf / in lamb, empty, born, lost), and notes. At a birth, open A birth: how many were born for the numbers born, females and males, and whether the newborns are tagged yet.

Scanned, fostered, weaned or drafted /animals/:id/stock

The rest of the stock year beside services and births, one short form on the animal's page: what was done — Scanned (with how many it is carrying, 0 for empty), Fostered onto another dam (with that dam's ear tag), Weaned (with the group, if it went into one) or Drafted into a group (with the group) — the date (today or before) and notes. Each is listed on the animal's page under Scanning, fostering, weaning, drafting, newest first, with who recorded it. A scan with no count, a fostering with no dam, a drafting with no group, a date still to come, or an animal that has died, been sold or archived is refused in words, and nothing is saved. Nothing is edited away: a wrong entry is followed by a right one, and the newest scan is the one that counts.

Weigh it, or pin where it is /animals/:id/weigh

On a live animal's page, Weigh, or pin where it is: the day (today or before) and its weight in kilograms, and/or Pin where I am now - stand by the animal and the phone's position is kept on it, with how close the phone could tell. The weight shows beside the animal's details and a pin as where it was pinned (it opens the place on a map); each is a line in the animal's History with who and when. Nothing given, a weight outside 0.1 to 2,000 kg, a position the phone could only tell to more than 500 m, a date still to come, or an animal that has died, been sold or archived is refused in words, and nothing is saved. A phone that will not say where it is, or a browser without location, shows no Pin button: the weight still saves. Not here: a what3words address (a paid plan). A photograph of the animal: below.

A photograph of the animal /animals/:id/photo

On a live animal's page, Photograph: Take or choose a photograph opens the phone's camera or your pictures (on a computer, your files). The picture is made smaller on your phone or computer before it is sent - about 1,200 pixels on its long side, a JPEG under 600 KB - and shown, with its size, before you press Save the photograph, which stays off until it is ready. The server keeps it only if it really is a JPEG, PNG or WebP picture of 600 KB or less, and says why if not; nothing changes then. Saved, it shows at the top of the animal's page; a new one replaces it; the card says how big it is, who put it there and when, and each change is a line in the animal's History. Take the photograph off (/animals/:id/photo/remove) removes it. Anyone who may change animals, for a live animal; an animal that has died, been sold or archived keeps what it had. The demonstration farm - the same for every visitor - keeps its pictures. Each photograph is in Download everything (animal-photos.csv, the picture as base64), and erasing the holding removes them.

Record a death /animals/:id/death

Records that the animal has died, on the date you give (today or before), with the cause. The animal stays on the record with its outcome; nothing is erased.

The register clocks (cattle). GOV.UK's guidance for a cattle holding register (England and Wales) gives the time to write each event down: 36 hours for a movement or a replacement ear tag with a new number, 7 days for the birth of a dairy animal, 30 days for the birth of other cattle, 7 days for a death. For cattle the animal's page says, for each, how long after the event it was written down and whether that was inside the time allowed — "Death written down 9 hours after it - inside the 7 days allowed, with 6 days to spare". A birth is measured for an animal recorded as born on this holding, from the start of its day of birth to when it was added; a death from the start of the day it died to when the death was recorded; a replacement tag from the start of the day it went in (given on Correct the details) to when the correction was saved. The times are the app's own, never typed. It says what was written down and when; it does not say whether you are compliant, and the sheep and goat register (its own guidance) is not measured.

Record a sale /animals/:id/sale

Records that the animal has been sold on the date you give (today or before), to whom, at what weight and price per kilo (the total is worked out if you leave it blank), and moves it out of the active herd, keeping the history. A sale dated on a day the animal is still in its withdrawal period is refused, saying when it clears - selling it for food before then is an offence. If it is not going for food (breeding, store stock), tick I have checked and save again: the sale is recorded and a note on the animal says it was sold in withdrawal, confirmed not for food, by whom.

Correct an animal's details /animals/:id/edit

Correct the details puts right a mistyped ear tag, barcode, species, breed, sex or date of birth - the form starts with what is recorded, and you say why it is being corrected. Each change is kept in the animal's History with what it was before and what it is now, who changed it and why; a form with nothing changed says so and saves nothing, and a barcode already on another animal is refused. There is no need to record a false death and enter the animal again. When the new ear tag is a replacement with a new number, give the day it went in: the History then says Replacement tag put in on that day, and for cattle whether it was written down inside the 36 hours. A replacement day with no change to the ear tag, or a day still to come, is refused.

Archive an animal /animals/:id/archive

For an animal entered twice or by mistake (an animal that died or was sold is recorded as a death or a sale instead). Say why; it leaves the register, the printed register and its export, the reports, the annual inventory and the list of animals to move - and nothing is deleted: its page stays at its own address saying Archived, with every record it had. Its History keeps the archive, who and why.

Restore an archived animal /animals/:id/restore

An archived animal's page offers only Restore to the register (with why): it comes back everywhere, and the restore is in its history too.

A note on an animal /animals/:id/notes

Every animal's page has Notes: anything worth keeping that is not a treatment or a breeding record ("lame on the near fore, watch her"), newest first, each with who wrote it and when. Add a note saves one.

Farm /farm

The rest of the farm, from Farm in the menu: how many farm jobs are still to do (and any past the date set for their next step), feeds recorded in the last 7 days, and the field surveys on record - each opening its own list.

Farm jobs /farm/jobs

Maintenance and other jobs: what needs doing, where, who is doing it, how soon and the date for its next step. Still to do first, with a next step past its date in red; done or cancelled jobs fold away below. Add a job records one. <!-- keys: /farm/jobs/:id/update -->

One farm job /farm/jobs/:id

The job, where it stands now and its latest progress. Update it: what happened, and where it stands now (open, in progress, waiting on something, done, cancelled) with the next step's date - every update is kept below, newest first, with who and when, and a change of state says what it changed from.

Feed log /farm/feed

What was fed and when (today or before): the feed, how much and in what unit, a cost if you want it kept, and who it was for - a group, in your own words, or one animal from the register. Newest first, each with who recorded it.

Flocks and batches /farm/batches

From Farm. Sheep and goats kept by their count rather than one by one — "the register is one animal a row; that works for 34 cattle and collapses at 400 ewes". Each batch with its species, flock mark and number today, worked out from every change recorded against it; closed batches folded below. Start a batch takes its name, species, flock or herd mark, how many are in it now and the day they were counted. Animals recorded one by one stay on the register; a batch is for the rest.

One batch /farm/batches/:id

The batch's number today, its species and flock mark, and every change to it, newest first — the opening count, born, bought in, died, sold, a recount, and each movement on or off (opening the movement) — with who recorded it. Record a change: what changed, how many (for a recount, the number counted — the change is worked out), the date (today or before) and a note (needed for "something else"). Nothing can take the batch below 0, on that day or on a later day already recorded — refused in words, nothing saved. Close this batch (with why) when it is gone; it stays on record.

Record a change to a batch /farm/batches/:id/change

Where Record a change saves.

Close a batch /farm/batches/:id/close

Where Close this batch saves. A reason is needed.

Scanning, weaning and drafting /farm/stock

From Farm. At the top, the latest scan of every animal scanned in the last six months, summed up for lambing or calving: how many were scanned, how many empty, singles, twins, triplets and more, and how many are expected in all. Wean or draft a batch records the same event for many animals at once, as at the gate — Weaned or Drafted into a group (the group is needed for a drafting), the date, and the animals — found by ear tag, species or breed, with Pick all shown and Clear. Each animal picked gets its own entry. Below, the latest 50 entries across the farm, each opening its animal. A scan's count and a fostering are one animal's, so they are recorded on its own page.

Medicine cabinet /cabinet

What came in, and what is left. Each bottle or pack is listed with how much is left of how much came in, its expiry, and how it stands — In date, Expires soon (within 30 days), Out of date — with a line at the top when any are out of date or expiring. Read the pack's barcode first, if you like: scan the code on the pack (or type the numbers under it) and Read it fills the batch and the expiry from the pack and shows its product code; the product's name is not in the barcode, so you still type it as on the label. A code that is not a medicine pack's fills nothing and says so. Read the label from a photo, if you like: take or choose a photograph of the label and it is read ON THIS PHONE OR COMPUTER - nothing is sent anywhere and the photo is not kept (the reader is about 6 MB the first time). What it finds goes into the boxes below as a suggestion: the batch number, the expiry (a month alone means its last day), the meat withdrawal in days, and the product's name only from a line carrying ® or ™ - otherwise it shows the first line it read and you type the name. An empty box is filled; a box that already holds something else keeps it, with what the label says beside it and Use this; each find shows the line it came from, and a milk withdrawal is shown, not filled. Nothing is saved until Add to the cabinet; check each one against the label and the datasheet. Add a bottle or pack takes the product as on the label, the batch number, the expiry, how much is in it and what it is measured in (mL, doses, tablets, g or boluses), who it came from, the day it came in (today or before) and its meat withdrawal in days from the datasheet. When you record a treatment on an animal's page, From the cabinet lists every bottle still in date with what is left: choose the one it came from and its product and batch go on the record, its withdrawal is used if you leave that box empty, and the amount — what you type in Amount from the bottle, or else the dose in the bottle's own unit (a bottle counted in doses gives one) — is taken off what is left. More than is left, an out-of-date bottle, or an amount that cannot be told is refused in words, and nothing is saved. The cabinet keeps the sums; the product, dose and withdrawal are yours and your vet's, from the label and the datasheet.

One bottle /cabinet/:id

Everything about one bottle — what is left, the batch, the expiry, who it came from and when — and every treatment that came out of it, with the animal (each opens its record), the amount and who gave it. Mark it finished when it is used up or thrown away, saying why; it stays in the record with every animal it went into, and leaves the treatment picker.

Mark a bottle finished /cabinet/:id/finish

Where Mark it finished saves. A reason is needed; a bottle already finished says so and nothing changes.

Kept on this phone /outbox

For the shed with one bar of signal. A treatment, a weighing, a note, breeding, stock work, a death, a sale, a movement, a batch's count or a move into a field is sent as soon as you save it; if nothing comes back within fifteen seconds, or there is no signal at all, it is kept on the phone and the page says so. A bar at the foot of every page says how many entries are kept, and they send themselves, one at a time in the order they were written down, as soon as there is signal (or press Send now here). Each is written once: if a send lands but its answer is lost on the way back, or it is sent twice at once, the second finds it already written and goes to the record ("Already saved") instead of writing it again. This page lists what is kept, oldest first, and opens with no signal. If the app refuses an entry (the animal had died meanwhile, say), it stays here with the app's own words and Remove it clears it from the phone. A page opened with no signal shows this page rather than an out-of-date copy. Work is kept in this phone's browser only: another phone, or clearing the browser's data, does not have it.

Fields and pens /farm/places

From Farm. Where is... takes an ear tag and answers with the field or pen the animal is in and the day and time it was moved there (or that it is in none, or no longer on the holding). How many of the animals on the register are in a field or pen. The holding: a plan drawn from the pins you dropped - each place where its pin is, with its name and head now; green in use, amber holding an animal in withdrawal, grey empty. It is a plan from your own pins, not an aerial map. Places: each with its kind, head now (and how many are in withdrawal), the head a hectare for a field with an area or the head against a pen's capacity (over it is marked), and how long it has been in use, or empty since the last move out recorded here. Add a field or pen: a name, the kind, its area or capacity, notes, and Pin where I am now while standing in it.

One field or pen /farm/places/:id

The place's details and a link to where its pin is, the head now, what is here now - each animal with the time it was moved here and whether it is in withdrawal, and any batch with its count today - and every move here, with who wrote it down and when. Move animals here: pick the animals (or a batch, by its count) and the day. Change its details or its pin, and Close this place when it is no longer used (refused while anything is in it; the place and its moves are kept). An animal's own page says where it is.

Add a field or pen — /farm/places (form)

Where Add the place saves. A name and a kind are needed; the area is in hectares, the capacity a whole number of head; a pin is kept only whole.

Move animals here /farm/places/:id/move

Where Move here saves: each animal picked (alive on the register) or the batch is now in this place, from that day. A move is kept as made - to put one right, move the animal again. A day still to come is refused.

Change a field or pen /farm/places/:id/edit

Where Save under Change its details or its pin saves; the same checks as adding one. A closed place is not changed.

Close a field or pen /farm/places/:id/close

Where Close this place goes. Refused, with the head count, while anything is in it.

Spray records /farm/spray

From Farm. Each plant protection product used on the holding, kept for at least 3 years as the law asks a professional user to: the day and time, the field (or the area in words) and the area treated, the crop (grassland unless you say otherwise), the product as on its label and its MAPP number, the dose rate and the total used, why, the weather, who applied it (one of the team, or a contractor with their certificate number), and Stock back in on - the label's grazing interval. A field still inside that interval is listed at the top and on its own page, and moving animals into it before that day is refused until you tick that you have checked the label. A record is kept as made.

Record a spray — /farm/spray (form)

Where Keep the record saves. The day (not one still to come), where, the product and the dose rate with its unit are needed, and who applied it; a MAPP number is digits only, and stock cannot go back in before the day it was sprayed.

TB testing /farm/tb

From Farm. England's rule, written at the top: cattle 42 days old or more move off only with a negative skin test applied no more than 60 days before the move, unless the herd is tested less often than once a year, they go straight to slaughter, or they move under an exemption or a licence (Wales and Scotland differ). Cattle today counts those that can move off without a new test (and when the first cover ends), those that would need a test - each named, with where its test stands - and calves under 42 days. Record a TB test: the day it was applied (day 0 of the 60) and the day it was read (within a fortnight, and not in the future), the kind, the test chart's reference and a note, and every animal of the herd with its result - each starts as Negative; mark a reactor, an inconclusive, or an animal not in this test. A test is kept as recorded; a mistake is put right by recording it again (the newest result for an animal is the one that counts). Each animal's page then says where its test stands. The list of tests shows how many were tested, reactors and inconclusives.

One TB test /farm/tb/:id

A test's days, kind, chart reference and who recorded it, the day its negative results cover moves until, and every animal in it with its result (reactors and inconclusives first), each opening its record.

Set the testing interval /farm/tb/interval

Where Save the interval on TB testing saves: every 6 months, every year, or every 4 years. The newest is the one in force; on four-yearly testing a move off needs no pre-movement test and none is checked.

Field surveys /farm/surveys

A survey of a field or an area: the job, where, the weather, how many people, when it is to be finished by, what was found or done, and whether there was an accident or near miss - if there was, the notes must say what. The list opens each survey (/farm/surveys/:id).


Team /team

For the owner and administrators only — to everyone else it says so and shows nothing. Who can sign in to this farm, what each may do, and whether they have set their password yet. Add a person takes their name, the email they will sign in with, and what they may do: Stockperson (records animals, movements and the farm), Vet or inspector — read only, or, given by the owner only, Administrator. Once added, a one-time link is shown on screen, once: hand it to them by text or in person. It lets them set their own password, works once, and lasts an hour. Nothing is emailed, and no password is made up for them. One email signs in to one farm on PBS Livestock, so an address already used for a login is refused. A vet or inspector sees every animal, treatment, withdrawal, movement, report and the printed register. They are offered no forms (Add animal and Record a movement are not in their menu, and an animal's page shows no actions), and any change they try is refused in words — nothing is saved.

Make a new link for a person whose link ran out or was lost. It is shown once, and any earlier link of theirs stops working.

Remove access /team/:id/remove

Remove access signs the person out everywhere at once and stops them signing in. They stay on the list as No access, and everything they recorded keeps their name. Nobody can change the owner's access or their own, and only the owner can change an administrator's.

Give access back /team/:id/restore

Give access back lets a removed person sign in again with their own password, or make them a new link.

Delete my holding /holding/erase

For the owner and administrators, from the foot of Team. It erases the holding's personal details and closes it: every login's name, email and password (nobody can sign in afterwards, and every session and reset link ends), the contacts, the holding's name, the buyer's name and signature on each sale, the names on farm jobs, and a contractor's name on a spray record. Before anything is done it counts what goes and what stays. What the law asks a holding to keep stays, held by PBS only: the register (animals, movements with the other keeper's details, births, deaths and sales - a cattle register for 10 years, a sheep or goat register for 3), the medicine records (at least 5 years) and the spray records (at least 3 years), with the notes written on the animals. Take everything out first. To go ahead you type delete my holding; anything else changes nothing. It cannot be undone, and a demonstration farm cannot be deleted. If the holding pays for PBS Livestock, the subscription is told to stop at the end of the period already paid for before anything is erased, and the closing screen says the day it stops; nothing more is billed. If it cannot be stopped, nothing is erased and the screen says so.

Take everything out /export

For the owner and administrators, from the foot of Reports. Lists every kind of record the holding holds - the animals, treatments, breeding, births, deaths, sales, movements, the medicine cabinet, stock work, batches, farm jobs, feed, surveys, notes, contacts, the yearly archives made, TB tests with each animal's result and the testing interval, and who signs in - with how many rows each has. It costs nothing and you can take it as often as you like.

Download everything /export.zip

Download everything gives one .zip: a spreadsheet (CSV) for each kind of record, every row, and a README saying when it was taken, by whom and how many rows each file has. Left out on purpose: the sign-in secrets (password fingerprints, sessions and reset links), so nobody can sign in with the file. A cell a spreadsheet would run as a formula is written as text.

Yearly archive /reports/archive

From Reports. Each year that has ended since your first record, with its archive if it has been made. Make the archive (/reports/archive/:year, the owner or an administrator) keeps the year as it was: one .zip with the register as it stood on 31 December (worked out from your records as they stand when it is made) and the year's movements - with the other keeper on each - births, deaths, sales (weights and prices), treatments, medicines and what was used from them, and batch counts, with a README saying when it was made, by which role, and to keep it until 31 December ten years on. It is made once and kept as made, here, for ten years; making it again is refused. Download (/reports/archive/:file, anyone signed in) gives the file. Not in it, on purpose: buyers' names, signatures, photographs, logins and the holding's name - so it agrees with Delete my holding, which keeps the same records.

Audit pack /reports/audit

From Reports, for anyone signed in. Your own records for a period - the last twelve months unless you pick another (up to three years) - on one page to print or save as a PDF, in five parts. What to put right first: a medicine given with no withdrawal period or no batch, a bottle still in the cabinet past its expiry date, a bottle bought with no batch or no supplier, and a movement with no other holding's CPH - each counted, each a link to the record to correct. Medicines bought: each bottle received, with its batch, quantity, supplier, expiry and withdrawal. Medicines given - the medicine book: one line a treatment, with the date, the animal, the product, the batch, the quantity, the withdrawal period in days, the day it clears, the vet and who recorded it (the app knows who recorded a treatment, not who gave it; if someone else gave it, write their name on the printed copy). Movements on and off, with the other holding and the head count. The holding register as it stands today. It is not a certificate: it shows what you have recorded, not that a standard is met.

Organic holding? Show the organic book adds three columns to each medicine given: the organic withdrawal (twice the withdrawal recorded, and never under 2 days - 48 hours), the day the animal clears for organic sale, and how many treatments it had recorded in the 12 months up to that day; What to put right first then also lists any animal with more than three. Organic rules allow three courses of conventional treatment in 12 months (one, if the animal's productive life is under a year); vaccinations, parasite treatments and compulsory eradication schemes do not count, and the app does not know which product is which - so the count is a check, not a ruling. Homeopathic, herbal and vaccine products are not doubled: your certification body's standard decides. The withdrawal warnings elsewhere in the app keep the conventional dates. The spreadsheet follows the book you are looking at.

Kill sheets /reports/kills

From Reports. The abattoir's results against your animals: the average carcase and the value, then by species, breed and sex - head, average carcase, carcase gain a day of life and value - the grade grid (conformation E U R O P by fat class 1 to 5; a grade in another form, and a pig's, kept as printed), and each animal with the day killed, its age, carcase, grade, gain a day, killing-out (when its last live weight is on the register and above the carcase), price per kg and value as printed. Age and gain need the birth date. Recording a kill sheet does not record the sale or the death: any animal with a result that is still alive on the register is listed at the top so you can put it right. Add a kill sheet: open the abattoir's PDF or spreadsheet, select all, copy, and paste it in, with its column names; give the day killed if the sheet has no date column, and the abattoir.

Read a kill sheet /reports/kills/preview

Where Read the sheet goes. The columns are found by their names - the ear tag and the weight are needed; the grade, price per kg, value and kill date are read where the sheet has them - and totals and page lines are left out. Each line's tag is matched to one animal of this holding: the same tag letter for letter, or for a long official number the same last 11 or more digits. A tag that matches no animal, or more than one, is listed and not guessed, as is a line with no weight, no kill date, a kill date still to come, or an animal that already has a result. Nothing is kept yet: Save keeps the matched lines.

Save a kill sheet /reports/kills

Where Save keeps the matched lines - one result an animal, kept as saved. A line naming an animal that already has a result is not saved, and the page says how many.

Medicine book as a spreadsheet /reports/audit/medicine-book.csv

The medicine book for the same period as a spreadsheet (CSV), one row a treatment. A cell a spreadsheet would run as a formula is written as text.

What this does not do

It is a herd register, not a veterinary system or an accounts package, and it certifies nothing. It keeps an honest record of each animal and the events against it.

It does not submit anything to anybody. Movements recorded here are your own record — they do not go to BCMS, LIS, eAML2 or any other service, and recording one here does not discharge a reporting duty. It does not tell you that you are compliant or in breach; it tells you what is recorded and how long the law allows, and the judgement is yours. It cannot know about a movement you have not told it about, so the only thing it ever calls outstanding is an animal you have recorded a sale for with no movement off against it.

Password reset

Recover access when a password is forgotten. Single-use, time-limited, and you set your own new password.

Forgot password /forgot-password

Enter your email. A signed-in owner/admin is shown a one-time reset link on screen to hand over. Otherwise we email you a reset link, which brings you back here to Set a new password; the screen says the request was made, and says plainly if the send failed (nothing is ever claimed "on its way" that did not go). Email recovery reaches addresses set up for it — if nothing arrives, an administrator can issue a link.

Set a new password /reset-password

Reached from a one-time link carrying the token; enter and confirm your new password. The link expires within the hour and works once; setting a password ends your other sessions. A link that has expired or already been used is refused before you type anything, and you are shown the request screen to ask for a new one.