Audience: Riding school owners, club managers and organisation admins
Overview
The Staff Roster is where you plan who is working, say what each person is doing while they are there, put the day's jobs on the people doing them, record the hours actually worked, approve those hours, and export the pay period as a file your payroll system imports.
It is one screen for three things that are usually kept in three places:
- The roster — one row per person, one column per day, with as many shifts on a day as you need.
- Split shifts — one shift can be Coaching 2:00–4:30 pm, then Stables 4:30–6:00 pm: one line for pay, two stretches for the diary, and only the coaching stretch open for online lesson bookings.
- Tasks — jobs with a done state: the farrier for three hours of a stable hand's shift with the four horses he is doing, the arena drag before the afternoon lessons, the evening feed. Each task sits inside the shift that covers it, can hold its horses out of lessons, and, for farrier, worming, dental and vet jobs, writes the horse's care record when it is ticked off.
Horsify deliberately stops at hours × base rate. Award interpretation, penalty rates, superannuation, tax and payslips stay in Xero, MYOB, KeyPay or whichever payroll system you already use — Horsify's job is to get accurate, approved hours to it without anyone retyping a paper timesheet.
Go to: Organiser → Riding School → Staff Roster at a riding school, beside Instructors. A club that runs no lessons finds it under Organiser → People → Staff Roster. On your own club site, where the Organiser menu is one flat list, the item sits in that list. At a riding school the Organiser Dashboard also has a Staff Roster tile.
Requires: a Riding School or Club Site Premium plan, and organisation admin access. The $10 Club Site plan does not include it.
Rostering is not riding-school specific. A club with no riding school still employs a groundskeeper and an office administrator, which is why the link sits under People alongside Member Management and Committee for a club that runs no lessons. At a riding school it sits in the Riding School menu beside Instructors instead, because on a day you have rostered, the roster decides when each coach can teach. The solo Instructor plan does not include it — a sole trader working alone has nobody to roster.
Your first pay run: the short version
▶ Watch: Your first pay run (1:12)
This article covers a lot, because the roster also carries tasks and the lesson diary. If what you want is rostered hours turned into a payroll file, these are the only steps you need, in order:
- Staff tab: give everyone a base hourly rate (and their payroll employee ID if you have one). Without a rate Horsify still counts hours, but every cost figure stays blank.
- Roster tab: fill the week, from templates or by hand, then press Publish week. Staff with a linked login or an email address are told about their shifts.
- After each shift: record what was actually worked. Staff do it themselves on My day (or you do it from the shift). A shift nobody records is paid at its planned hours when you approve it.
- Pay period tab: chase the Missing times column, then press Approve all. Approving locks each shift and captures the rate.
- Export CSV for payroll and import it into Xero, MYOB or KeyPay.
Steps 5 to 9 below go through each one in detail. Tasks, split shifts and the day board (Steps 3 and 4) are optional: a roster with no tasks pays exactly the same.
The six tabs
| Tab | What it's for |
|---|---|
| Roster | The week grid. Plan who works when, and what they are doing while they are there. |
| Day board | One day: who is on, their stretches, the tasks on each person, what nobody has yet, and which horses are due for care. |
| Pay period | Hours, cost and approvals for a whole pay run, plus the payroll export. |
| Staff | Who can be rostered, their roles, rate and payroll ID, and whether their login is linked. |
| Templates | Recurring weekly patterns you can pour into any week. |
| Settings | Pay period length, its start date, default break, staff self-service. |
Start on Staff. Until at least one person is on the list, the Roster tab shows a prompt to add them and nothing else works.
The tab strip also carries a full-screen switch on larger screens. It hides the navigation, the organisation picker and the page title so the week takes the whole window — the same control the appointment book has.
Step 1 — Add your staff
Two ways in:
Import instructors — one button on the Staff tab creates a staff record for every active instructor you already have, so teaching and non-teaching staff share one roster. It is safe to press repeatedly: instructors already on the list are skipped, and it tells you how many it added.
Add staff member — for everyone else: stable hands, office admin, groundskeepers.
A staff record that came from an instructor stays joined to that instructor, and the staff editor says so when you open it. Name and contact details are kept in sync from the roster, but lesson rates and teaching availability live on the Instructors page — the base hourly rate here is what the roster pays them for rostered hours, not what they charge per lesson.
| Field | Notes |
|---|---|
| First / last name | At least one is required. |
| Main role | Instructor, Stable hand, Admin, Groundskeeper or Other. Groups the roster and fills the export's Role column, which is what payroll maps to a pay item. It does not affect pay rates. |
| Also does | Tick every other role this person covers — a stable hand who also does the books and takes lessons gets all three. They still sit under their main role on the roster, but all their roles show beside their name, each one is a one-tap option when you set a shift's role or split it into stretches, and Suggest from roster on a task counts them for every role they hold. |
| Employment | Casual, Part-time, Full-time or Contractor. Exported alongside the hours so payroll can apply the right award rules. |
| Use the same address as their Horsify login. This is what connects the roster to the person — see Letting staff see their own shifts below. Task reminders by email go here too. | |
| Phone | Optional. Task reminders by text go here if you have text reminders switched on, and this is the number Horsify recognises when a staff member texts in a task. |
| Base hourly rate | Optional. Leave it blank if you keep rates only in payroll; you can still roster and export hours. |
| Payroll employee ID | Optional but recommended — their employee reference in Xero / MYOB / KeyPay. It goes into the export so the import matches on ID rather than on name spelling. |
| Active | Untick when someone leaves. |
When someone leaves
Untick Active. That keeps their shifts and approved timesheets, which you still need to be able to prove what you paid.
An inactive staff member disappears from the roster grid and the staff list (tick Show inactive to see them again), and cannot be given new shifts, a new template or a new task. Their existing shifts stay fully editable and payable, so the fortnight they left in still runs normally.
Delete (in the staff editor) removes someone for good, with every shift, timesheet and weekly template they have, and takes them off any tasks and event helper jobs. It can't be undone, and their worked hours drop out of pay-period summaries and the payroll export, so export anything payroll still needs first. The dialog lists exactly what would go; to keep their history instead, close it and untick Active. A staff record that belongs to an instructor can't be deleted while the instructor exists: delete the instructor from Instructors first, or just untick Active here.
Step 2 — Roster the week
The Roster tab is a grid: one row per staff member, one column per day, Monday to Sunday.
- Add a shift — click the + in any cell, or Add shift for the toolbar version. Horsify pre-fills the times from that person's last shift this week, so a repeat is two clicks.
- Add another shift to the same day — once a cell has a shift, the button reads + Add another. There is no limit: someone doing AM Stables then AM Admin then an afternoon lesson is three shifts on one day. The new shift is pre-filled to start when the previous one finished, and its role/task is left blank for you to set to the new job.
- Edit a shift — click the shift itself.
- Move between weeks — the arrows, or This week.
A shift carries a date, a start, a finish, an unpaid break in minutes, an optional role or task ("AM Stables", "AM Admin", "Coaching") and optional notes for staff.
The role or task is shown on the roster directly under the shift's time, so a day with two people covering different jobs reads at a glance. It is free text, and under the box you get one-tap buttons for that person's own roles (a stable hand gets Inside Stables and Horse Training) plus any label already used on this roster — so "AM Stables" is typed once, not every week.
Planned paid hours are worked out for you: finish minus start, less the break. A finish time earlier than the start is read as a shift running past midnight, so a 10:00 PM – 2:00 AM night check is four hours, not a negative number.
Horsify refuses a shift that cannot be real: identical start and finish times, or a break longer than the shift itself.
What each chip tells you
Every shift on the grid is a small card. Reading down it:
| Line | Meaning |
|---|---|
| Times | Start and finish. |
| Role or task | The label you gave the shift — or, for a split shift, the summary of its stretches: Coaching · PM Stables. |
| Hours | Planned paid hours. A • means actual times are in; a ✓ means the shift is approved. |
| Coloured bar | Only on a split shift: one block per stretch, in proportion, so a coaching-then-stables afternoon reads as two colours. Hover for the stretch names and times. |
| n tasks · n done | How many tasks sit on this shift and how many are finished. |
| Open / n booked / No lessons | Instructors only. Whether riders can book this person online during the shift, and how many lessons already are. |
Colours
| Colour | Meaning |
|---|---|
| Grey | Planned. Nobody has recorded what actually happened yet. |
| Blue | Actual times entered — by the staff member or by you. |
| Green | Approved and locked. |
Double-booking
If you roster someone into two shifts that overlap, Horsify saves it and tells you:
Sam Stable is already rostered 06:00–12:00 on the same day. Both shifts will count towards their hours.
It is a warning rather than a refusal because split shifts, handovers and one person covering two roles at once are all normal. What is not normal is finding out in the pay run, so the clash is always named — including the case where a night shift runs into the next morning's.
Instructors and the lesson calendar
For an instructor, a shift is also the roster the booking calendar reads. The shift editor asks Available for lessons this shift: ticked, riders can book that instructor online for the whole shift; unticked, they can't — untick it for a stables morning, an admin afternoon or a clinic. If lessons are already booked inside a shift you are moving or removing, Horsify lists them and asks before it goes ahead. It withdraws the instructor's availability; the bookings themselves are left for you to reassign or cancel from the Bookings calendar.
Once you split a shift into stretches, that whole-shift tick is replaced by one tick per stretch — see the next step.
Step 3 — Split a shift into what they're doing
Someone who coaches from 2 until 4:30 and then does stables until 6 is one shift, not two. It is one line for pay, but the diary needs to know that only the first stretch is teaching time, and the day board needs to know when they are on the yard.
Open the shift and use What are they doing? → Split the shift.
Horsify starts you off with two halves; retime them, then set each stretch's:
| Field | Notes |
|---|---|
| From / To | The stretch's own window. Stretches cannot overlap or run outside the shift; gaps between them are fine. |
| Role | Which of this person's roles they are wearing — the options are their main role and everything under Also does. |
| Label | Optional. What the chip says — "AM Stables", "Office", "Clinic". Left blank, it shows the role's name. |
| Available for lessons (calendar tick) | Instructors only, and only meaningful on a coaching stretch. Ticked, riders can book this person online for that stretch and no other. |
Add a stretch appends one starting where the last finished. The one-tap buttons under the stretches (+ Inside Stables, + Horse Training, + Coaching, …) do the same with the label already filled in, and Horsify guesses the role from the label — "stables", "feed" or "horse training" picks Stables, "coach" or "lesson" picks Coaching, "admin" or "office" picks Admin, "arena" or "mow" picks Grounds.
What changes once a shift has stretches:
- The roster shows the stretches summarised under the time ("Coaching · PM Stables") and as a coloured bar on the chip.
- The lesson calendar opens the instructor for the ticked stretches only. A stretch that isn't ticked is shown to the booking engine as a block, labelled with the stretch's name, so nobody books a lesson over the stables hour.
- Pay is unchanged. Planned hours, actual hours, approval and the export all still work on the shift as one line. The payroll file's Shift role/task column carries the summary.
- Tasks on the shift are placed inside the stretch that covers them, so the day board can show the muck-out sitting in the stables stretch rather than floating on the whole afternoon.
If you shrink or remove a coaching stretch that already has lessons booked in it, Horsify lists the lessons that fall outside the new teaching time and asks before saving, exactly as it does for a whole shift.
Templates can carry stretches too. Set them up once on the template and every shift the template creates arrives already split.
Step 4 — Tasks: the jobs on the roster
A task is a job with a done state — something that has to happen on a day, usually in a window, on a person, and often about particular horses. The farrier coming for three hours of Saturday's stables shift with the four horses he is doing is one task. So is the arena drag, the evening feed, and "Rio's off side hind shoe is loose".
Tasks are the link between the roster and everything else in the school: a task sits inside the shift that covers it, can hold its horses out of the lesson diary while the farrier has them, writes the horse's care record when it is ticked off, tells the person about it, and reminds them.
The job catalogue
Every task is an instance of a job from your organisation's catalogue at Organiser → People → Helper Tasks — one list shared by your events (gate steward, scribe, canteen) and your roster (morning feed, muck out, farrier visit). A job says what kind of work it is, who usually does it, whether it needs horses, and whether it records care.
The first time your roster looks at the catalogue, Horsify adds a starter set of yard jobs so you are not typing them in: morning and evening feed, muck out, water check, turn out and bring in, rug change, tack up and untack, arena drag, farrier, vet, dentist and worming visits, a hold for the farrier or vet, office work and lesson prep. Rename, recolour, deactivate or add to them as you like — a job you deactivate stays deactivated.
| Field | Notes |
|---|---|
| Kind | Yard, Horse care, Facility, Admin, Teaching, Event day or Other. Sets the default colour of the job's chips on the roster and board, and groups the picker. |
| Usually done by | Stables, Coaching, Admin, Grounds or Anyone. This is what Suggest from roster and routines use to pick a person: a task of this job goes to whoever is rostered in that role at that time. |
| Where it's offered | Events (helpers), Staff roster, or both. A job must be offered somewhere. |
| Records care | Farrier, Worming, Dental or Vet visit. Ticking a horse off a task of this job records that care against the horse and rolls its next due date forward. |
| Needs horses | The task editor insists on at least one horse. |
| Holds horses out of lessons | New tasks of this job start with the hold-out ticked. |
| Colour / icon | The chip colour and a Tabler icon name (for example horseshoe). |
| Default length | In minutes. Pre-fills the task's window from its start time. |
Adding a task
Three ways in, all opening the same editor:
- Day board → Task — the toolbar button, or the small + Task on a person's lane, which starts the task on that person and inside that shift.
- Shift editor → Tasks on this shift → Add a task — the task starts on that person, dated and placed in that shift.
- Day board → Care due → Schedule — starts a farrier / worming / dental / vet task on the due date with that horse already on it.
| Field | Notes |
|---|---|
| Job | Pick from the catalogue, or Something else… for a one-off you just type a name for. Picking a job fills the name, the window length, the care type and the hold-out default from the catalogue. |
| Name | What the chip says. Up to 150 characters. |
| Date | The day it happens. |
| At a set time | Tick it for a window (start and finish). Untick it for any time that day — a job that just has to happen before knock-off. |
| Priority | Low, Normal, High or Urgent. High and Urgent are called out on the chip. |
| Who does this | Anyone, or a role. Used when Horsify suggests someone. |
| Horses | Tap the horses the task is about. Every active school horse is offered. |
| Hold these horses out of lessons | Only shown for a timed task with horses. Ticked, nobody can book a lesson on those horses for the window — online or from the Bookings page — and they are left out of the booking form's horse picker for a clashing time, with a note saying why. If a lesson is already booked on one of them inside the window, Horsify shows you which and asks before saving. |
| Outside party / Their phone | Who is coming — "Jim Boot, farrier" — and their number. The Call button beside the phone dials it, and a saved task with a phone gets Text the list (below). |
| Instructions | Free text the person sees on their list — gate code, which horse to start with, where to park. |
| Who's on it | See below. |
| Needs n people | How many people the job takes — "set up the cross-country course: four people". The chip shows 1/4 people until it is filled. Up to 50. |
Who's on it
Pick a person and press Add, or press Suggest from roster and Horsify picks whoever is rostered in the right role at that time — fewest tasks that day first, then the tightest fit. When nobody fits it says so: Nobody rostered as Stables covers that time on Sat 19 Sep.
Horsify puts each person's task inside the shift that covers it (and the stretch, if the shift is split). That is the rule the whole feature turns on: the farrier is here for three hours of Isla's shift, not floating on Saturday. Two things follow from it:
- A task can still go on someone who isn't rostered — a contractor on a Sunday, someone doing a favour. The chip shows not rostered in amber so you can see it isn't covered by a shift.
- A task that does not fit inside the shift you chose is refused, and the message names the shifts that would cover it. Move the task, or extend the shift.
A person put on a task by you is told straight away (in the app, on their My day). A person the roster put there — a routine, or a lesson's prep task — is told when you press Publish day.
Tasks on a shift
Open any shift and Tasks on this shift lists what is on it, with each task's window, how many of its horses are done, and its state. Click a task to open it; Add a task starts a new one already on that person and inside that shift.
Working the task
Open a task from the board, a shift, or the roster and:
- Tick off each horse — Done or Skip beside each horse. On a farrier, worming, dental or vet job, Done records the visit against that horse and rolls its next due date forward by the horse's own cycle, exactly as recording it on the School Horses page would. Skip ("abscess, next week") pushes that horse's reminder out by a week instead. Either can be undone until the task is finished.
- Mark done finishes the whole task; any horses still unticked are ticked for you. Skip finishes it as deliberately not done — the arena was under water. The note field beside them is kept with the task.
- Reopen a finished task if it was closed by mistake. Remove deletes it.
Staff can do all of this from their phone on My day — including with no signal, where each tick is queued and sent when they are back in range.
The day board
The Day board tab is one day, laid out by person.
- A lane per person rostered that day (and anyone with a task but no shift, marked Not rostered), with their shift times and hours, a bar showing their stretches — coaching, then stables — and how many lessons are booked in a coaching stretch, then a card per task: the job, its window, who's coming, priority, and a ☐/☑ per horse. + Task on the lane adds one to that person.
- Unassigned — every open task that has nobody on it. Click one to put someone on it; the editor says why the roster couldn't place it by itself (no one rostered on Sat 19 Sep).
- Care due — school horses whose farrier, worming, dental or vet care falls due in the next fortnight and that are not already on an open task of that kind, with the due date (or Overdue since). Schedule opens a task of the right job on the due date with that horse on it. The School Horses page offers the same button.
- The summary line under the date — Rostered 10 · Tasks 7 (1 unassigned) · Care due 2 — is the day at a glance.
Horsify also raises care tasks by itself: every morning it looks at each school horse's reminders and, for any care that has come inside its reminder window with no open task yet, creates a task on the due date with every horse due that day on it. You will find those on the board marked care due, ready for a person.
Telling people, and reminding them
When you put someone on a task, they are told at once — a notification in the app, and the task appears on their My day.
Publish day is for everything the roster put on people without asking you: routine jobs that land on whoever is rostered, and the prep tasks a confirmed lesson raises. Rather than nagging each person one message at a time, press Publish day once the day looks right and everyone gets one message listing their whole day in order — "Morning feed 6:00am–7:00am · Farrier visit 7:00am–10:00am · 4 horses". Pressing it again only reaches people whose day has changed since.
Then Horsify reminds people without being asked:
| Reminder | When | How |
|---|---|---|
| Tomorrow | From 5 pm the evening before, until the task starts (noon, for an any-time task) | In the app, and by email |
| Starting soon | Half an hour before a timed task, until it ends | In the app |
| Still open | From the end of the task's window (6 pm for an any-time task), for two days | To you — a note on the day board, not to the person |
If text-message reminders are switched on for bookings (Riding School → Booking notifications), staff get the Tomorrow and Starting soon reminders by text as well. Email and text respect the quiet hours you set there; the in-app note does not need to.
Each reminder is sent once per person per task, so a task moved to a new time does not start the sequence again.
Text the list
Open a saved task that has an outside party's phone number and use Text the list to send them the job, its window, the horses and any notes:
Riverbend Riding School: Farrier visit Sat 19 Sep, 7:00am–10:00am. Horses: Pepper, Maple, Ranger, Clover (fronts only). Gate code 4412.
It goes by text from your own SMS number, by email, or both, with an optional line of your own — gate code, where to park. Each send is logged against the task. The Call button beside the phone number dials them.
Add a task by text message
If your school has its own SMS number (Riding School → Notifications), any staff member whose mobile is on their staff record can text it a task instead of finding the app:
TASK farrier Sun 9-12 Biscuit Rio Comet, Sally
puts the farrier on Sunday 9–12 with those three horses on Sally's list, and the reply says exactly what was understood — Added: Farrier visit Sun 20 Sep 9:00am–12:00pm · Biscuit, Rio, Comet · on Sally Moore. Didn't recognise: Dusty. The job is matched to your catalogue, horses to your school horses and people to your staff; a word that matches nothing is reported, never guessed. Leave the day out and it's today; leave the time out and it's any time; leave the person out and it's on whoever sent it. Text TASK on its own for the format. When Horsify's assistant is switched on you can write it in plain English instead.
Lesson prep tasks
On a lesson type (Settings → Riding School → Lesson types → Edit) add Prep tasks — a name, how many minutes before the lesson, who does it (instructor, stable hand or anyone) and whether it is per horse.
Whenever a lesson of that type is confirmed, the task appears on the day board at the right time with the lesson's horses on it — on the instructor's own list for an instructor rule, or on the Unassigned lane for a stable hand. It moves if the lesson moves, goes if the lesson is cancelled, and a task someone has already ticked is left alone.
Tasks on the appointment book and the booking form
Tasks show on the appointment book too. Where an instructor has a timed task during their shift, that stretch of their column is hatched, so nobody books a lesson over the farrier's three hours from the diary alone. The switch is Show tasks in the diary's display options, next to the roster shading; it is on by default. An instructor whose shift that day has no coaching stretch is hidden from the book until you press Show on the not rostered count.
And when a task holds horses out of lessons, the booking form leaves those horses out of the picker for a clashing time and says why: Pepper and Maple are on Farrier visit 7:00am–10:00am, so not offered for this time. The booking is refused if someone gets past the picker anyway.
Routines
Routine jobs — morning feed every day at 6:30, arena drag on Mondays — can be set up as a routine: each occurrence is written eight weeks ahead and, if you ask, put on whoever is rostered in that role at that time. Routines are set up through Horsify's API for now; the screen for them is coming. Their tasks are marked routine on the board, and Publish day is how the people they land on hear about them.
Step 5 — Publish the week
Publish week on the Roster tab tells every staff member rostered that week about their shifts: a notification in the app for anyone with a linked login, and an email to anyone with an email address on their staff record. The message says how many shifts they have that week and points them to My day. Someone with neither a linked login nor an email address is not told, so check the Staff tab first.
The button reads Republish week once a week has been published, and a Published date badge sits beside the week.
Republishing messages everyone again, not just the people whose shifts changed. Each press is a fresh message to every staff member rostered that week. Publish once the week is right, and for a single late change, tell that person directly instead of republishing.
Publishing is optional. Staff with a linked login can see their shifts on My day whether or not the week is published; publishing is what tells them to look.
Step 6 — Record the hours actually worked
Planned hours are what you intended. Actual hours are what you pay.
Staff record their own on My day (the timesheet under each shift) — see Letting staff see their own shifts below, and send them the My Shifts guide.
You can record anyone's: open the shift and expand Actual times worked, then enter started, finished and break. This works whether or not staff self-service is switched on, so you are never locked out of your own payroll.
A timesheet that adds up to nothing — identical start and finish, or a break longer than the hours — is refused. Left accepted it would record someone as having worked and paid them nothing, while quietly clearing them from your missing times count.
A shift with no actual times is not a problem. It approves at its planned hours, which is the right answer for salaried and part-time staff who work exactly what was rostered.
Step 7 — Approve
Approval is the moment hours become pay. It does three things:
- Locks the shift. An approved shift cannot be edited, deleted, or given new times, and its stretches cannot be changed. Press Withdraw approval first if you need to change something.
- Captures the pay rate. The rate on file at that moment is stored on the shift. Give someone a raise next month and last fortnight is still costed at what you signed off — a rate change never rewrites a closed period.
- Puts it in the export.
Three ways to approve: Approve inside a single shift, Approve week on the Roster tab, or Approve all on the Pay period tab.
Shifts in the future are skipped, not approved. If nothing has happened yet there is nothing to sign off, and Horsify tells you how many it skipped rather than silently approving next week's roster. A future shift someone has already reported times for approves normally.
Step 8 — Check the pay period
The Pay period tab is the fortnight (or week, or four weeks) as payroll will see it.
Four tiles across the top — approved hours, estimated gross cost, how many shifts are awaiting approval, and how many staff are rostered — then a row per person:
| Column | What it tells you |
|---|---|
| Shifts | How many shifts they have in this period. |
| Planned | Hours as rostered. |
| Actual | Hours from shifts where times were recorded. |
| Approved | Hours you have signed off. This is what gets paid. |
| Rate / Est. cost | Their current rate, and the cost of the approved shifts at the rate each was approved at. Shifts not yet approved are not costed, so a period that hasn't happened yet always shows —. To estimate a coming fortnight, multiply the Planned hours by the rate. |
| Missing times | Past shifts with neither actual times nor approval. This is your chase list. |
Underneath, Shifts awaiting approval lists every past shift not yet signed off, each with Enter times and Approve beside it — so a pay run is a single pass down one list.
Move between periods with the arrows, or Current.
Step 9 — Export for payroll
Export CSV for payroll downloads the period as a spreadsheet file. Approved only is ticked by default; untick it to include everything, in which case unapproved rows are marked No in the Approved column so nobody pays them by accident.
The file has one row per shift:
Employee ID, Employee name, Role, Employment type, Date, Start, End, Break (min), Hours, Rate, Amount, Approved, Pay period start, Pay period end, Notes, Shift role/task
followed by a TOTALS block with one row per employee. Where actual times were recorded, the Start, End and Break columns carry the actual ones — the file always reflects what you are paying, not what you planned.
Role is the person's main role, which is what payroll maps to a pay item. Shift role/task is the label on that individual shift — or the summary of its stretches — so a split day shows as "AM Stables" and "AM Admin" on two lines, and a split shift as "Coaching · PM Stables" on one.
The Notes column carries the staff member's note about their hours if they left one when they submitted their times, and otherwise your note for staff on the shift — so an explanation for an unusual number of hours reaches whoever checks the pay run.
Column names deliberately match what Xero, MYOB and KeyPay timesheet imports expect. Save your import mapping once and every future period drops straight in. New columns are only ever added on the end, so an existing mapping keeps working.
Letting staff see their own shifts
Staff read their roster, work their tasks and record their hours on My day — their own page, showing their own shifts and nobody else's. Its Week view is the roster (it was a separate page called My Shifts until September 2026), and its Day view has today's shift, timesheet and jobs. Send them the My Shifts guide once and they will not need to ask again.
How the connection is made
Add the staff member with the same email address as their Horsify login. Nothing is sent and there is nothing for them to accept — Horsify links the staff record to the account by itself the next time that person loads a Horsify page.
The Staff tab shows Linked or Not linked in the Login column, so you can see at a glance who can and cannot see their roster. Instructors added with Import instructors usually arrive already linked, because their instructor profile already carries the account.
If they have no Horsify account yet, ask them to sign up with that address — free, and they only need the account itself.
Being on your staff list does not make someone a club member, and it does not need to. Staff are your employees, not your members — they will not appear in Member Management, membership renewals or member email campaigns, and they do not need a membership to see their shifts. If someone has a Horsify account with a matching email, that is the whole requirement.
What a linked staff member sees
Where they find it: their name in the top right → My day → Week. On a phone, the same item is in the menu. It only appears for someone who is actually on a staff roster (or is an instructor), so a person who cannot find the item is almost always not linked yet — check the Login column first. Allow up to five minutes after you add them, because that menu check is cached; going straight to horsify.com.au/my-shifts works immediately and opens the Week view.
What is on the page — one card per shift for the week, showing the day and date, start and finish, the hours that comes to, the shift's role or task, and any notes for staff you attached to it. Today's shift is highlighted, and arrows and This week move between weeks. Someone who works for more than one club on Horsify gets a club picker at the top; each club shows only its own shifts.
Under each shift sit the tasks on it: the job, its window, your instructions, who's coming and their phone, and a tick button beside each horse. Tasks on a day they are not rostered appear under Also on your list.
Each card carries a status that lines up with the colours you see on the roster grid:
| They see | You see | Meaning |
|---|---|---|
| Upcoming | Grey | The day has not arrived. Nothing for them to do. |
| Enter times | Grey | The shift has happened and no hours are recorded. It is on their to-do list — and in your Missing times count. |
| n h entered | Blue | They have recorded their times and are waiting on your approval. |
| Approved | Green | Signed off and in the pay run. Locked at both ends. |
What they can do:
- Tick each horse off a task as they go — which, on a care job, writes the horse's care record — or skip one, and All done to finish the task in one tap.
- Can't do this hands a task back. It returns to your Unassigned list and you are told straight away.
- Spotted something that needs doing? at the bottom raises a task of their own — "Rio's off side hind shoe is loose" — which lands on your day board with the horse attached.
- Enter started, finished and break on a shift whose day has passed — with paid hours updating live as they type — add a note to you about those hours ("stayed back, farrier ran late"), and correct their times as often as they like right up until you approve.
- Keep working with no signal: the page keeps the last week it loaded, every tick, All done or hand-back is queued, and it is sent the moment they are back in range. A task somebody else finished or took off them in the meantime is left as it was.
What they cannot do: enter times for a shift that has not happened yet, save times that add up to nothing, or change a shift once it is approved. They also cannot add, move, swap or decline a shift, and they never see another person's roster, rate or cost — the roster stays yours to author, and pay questions still come to you.
Switching self-service off
Settings → untick Let staff enter their own times. Staff can still see their roster and their tasks; only the time-entry form disappears, replaced by "Your manager records hours for this organisation." You keep recording times from the shift editor exactly as before.
Settings
| Setting | Notes |
|---|---|
| Pay period length | Weekly (7 days), fortnightly (14) or four-weekly (28). |
| A pay period starts on | Pick the first day of any real pay period — the Monday your current fortnight actually started. Every other period is counted forwards and backwards from there, so this one date makes every period boundary in Horsify line up with your pay run. |
| Default unpaid break | Pre-filled on new shifts and templates. 0–240 minutes. |
| Let staff enter their own times | See above. |
Templates — for the parts of the week that never change
A template is a recurring weekly shift: Sam, Tuesday, 6:00 AM – 10:00 AM, morning feed. Templates never appear on a roster by themselves; they are a mould you pour into a week.
- Templates → Add template — choose the person, the day, the times and the break. Split it into stretches here if the shift always has the same shape.
- Roster → Fill from templates — choose a date range and press Fill roster.
Every active template creates a shift on each matching weekday in that range — stretches and all. Then adjust whatever is unusual about that particular week.
Four things worth knowing:
- One template per job, not per person per day. If Sam does stables at 6:00 AM and admin at 10:00 AM every Monday, that is two Monday templates — both apply, and each carries its own role/task. (If it is really one shift with two stretches, that is one template, split.)
- Filling the same fortnight twice is safe. A template is skipped for a day where that person already has a shift starting at that time, and you are told how many it left alone. You will not end up with a doubled roster.
- Pause instead of deleting. Untick Active on a template and it stops being used without losing the pattern — useful for a winter-only shift.
- Deleting a template keeps the shifts it already created. Rosters you have already published to staff do not evaporate.
Templates skip anyone marked inactive, so a staff member who leaves stops appearing in next month's fill automatically.
Templates don't know about leave or public holidays. Fill from templates creates a shift on every matching weekday, including Christmas Day and the fortnight someone is on annual leave. After filling, check the weeks you know are different and delete those shifts (or fill around them).
You can fill up to 8 weeks in one go.
Limits
| Limit | Value |
|---|---|
| Roster and export date range | 93 days |
| Fill from templates in one go | 56 days (8 weeks) |
| Break on a shift | 0–720 minutes |
| Default break | 0–240 minutes |
| Pay period length | 7, 14 or 28 days |
| People on one task | 50 |
| Care due window on the day board | 14 days |
| Routine occurrences written ahead | 56 days (8 weeks) |
What Horsify does not do
Deliberately out of scope, because your payroll system already does them properly:
- Award interpretation, penalty rates, overtime loading, allowances
- Superannuation, tax, Single Touch Payroll, payslips
- Leave balances and leave requests
- Paying anybody — the export is the handover point
Also not yet available: clock-in from a phone, a direct Xero/MYOB API connection (the CSV is shaped for their timesheet imports in the meantime), a screen for routines, and separate payroll lines per stretch of a split shift.
Troubleshooting
| Problem | Cause and fix |
|---|---|
| A staff member says they can't see their shifts | Check the Login column on the Staff tab. Not linked means the email on their staff record does not match their Horsify login. Correct the email, then ask them to open My day again. |
| A staff member says there is no My Shifts in their menu | Their shifts are on My day (the Week view) now, and that item only appears once someone is on a roster. If the Login column says Linked, the menu check is simply cached — it appears within about five minutes, and horsify.com.au/my-shifts works straight away. If it says Not linked, fix the email first. |
| "Approved shifts can't be edited" | Working as designed — the pay run has already consumed it. Open the shift and press Withdraw approval, make the change, then approve again. |
| Approve week says some shifts were skipped | They are dated in the future and have no actual times, so there is nothing to approve yet. They will approve once the day has passed. |
| The estimated cost is blank | Either nobody in the period has a base hourly rate (add rates on the Staff tab), or nothing in the period is approved yet. Cost only counts approved shifts, so a future or not-yet-approved period always reads —. |
| Staff weren't told about the roster | Publishing reaches people with a linked login (in the app) or an email address (by email). Check both on the Staff tab, and that you pressed Publish week for that week: the Published badge sits beside the week once you have. |
| A shift I approved is costed at the wrong rate | It is costed at the rate captured when you approved it, which is intentional. Withdraw approval and re-approve to pick up the new rate. |
| "is marked as no longer working here" | You are rostering someone set to inactive. Set them active on the Staff tab, or roster somebody else. |
| Missing times keeps counting a shift I've dealt with | Missing times counts past shifts with neither actual times nor approval. Either enter the times or approve it at planned hours. |
| Fill from templates created nothing | Either there are no active templates, the range contains no matching weekdays, or every slot already had a shift. The confirmation message distinguishes these — it reports both created and skipped. |
| "Stretches must sit inside the shift and not overlap" | One stretch starts before the shift, ends after it, or runs into the next one. Gaps are fine; overlaps are not. Fix the times, or widen the shift first. |
| A task is refused with a list of shifts | The task's window is not inside the shift you put it on. Choose one of the shifts named, move the task, or extend the shift. |
| Suggest from roster finds nobody | Nobody is rostered in the job's Usually done by role across the task's window on that day. Set Who does this to Anyone, pick someone by hand, or roster someone. |
| A task shows "not rostered" | The person on it has no shift covering the task's window. It still works — it just isn't inside a shift, so it won't appear under a shift or hatch the diary. |
| A horse is missing from the booking form's horse picker | A task is holding it out of lessons for a clashing time; the note under the picker says which. Move the lesson, or untick the hold-out on the task. |
| "Lessons are booked in this shift" | You are shrinking or removing a coaching stretch (or a whole teaching shift) that already has lessons in it. Keep the shift, or continue and then reassign or cancel those lessons from the Bookings calendar. |
| A horse's care date didn't move when the task was finished | The horse was skipped, not ticked — a skip pushes the reminder out a week rather than recording the visit. Reopen the task and tick the horse if the work was actually done. |
| Care due still lists a horse that has a task | Care due only hides a horse that is on an open task of the same kind. The task is finished, cancelled, or for a different kind of care. |
| Staff didn't get a reminder | Reminders go to the staff record's email and phone. Check both on the Staff tab, and that the person was told about the task at all — a routine's task needs Publish day. Text reminders also need text-message reminders on under Riding School → Booking notifications. |
Related articles
- My Shifts — the staff-facing guide to reading a roster, working tasks and entering hours; send this to your team
- Event Helpers & Task Allocation — the same job catalogue on event day, and how your staff and committee can be rostered onto helper jobs
- Work parties and My jobs — tasks that members put their hand up for
- Instructor Management System — lesson rates and teaching availability, which live with the instructor rather than on the roster
- Member Management — for club members, who are a different thing from staff
-
Riding School Setup Guide (End to End) — where the roster fits in the wider setup\n\n---\n\nSource:
wiki/features/STAFF_ROSTER_AND_TIMESHEETS.md\nLast synced: 2026-10-06 06:13:42 UTC