Rosters
Plan who works when at each site on a drag-and-drop roster, repeat it with patterns, import it from a spreadsheet and publish it to staff, who see their shifts in Agoo Workspace, claim open shifts and swap with colleagues, with the Labour Act's rest rules checked.
Agoo is in early access. This page describes the feature as it ships to early-access organisations; screens are illustrative.
A roster says who works which shift, on which day, at a site. In Agoo you plan it on a grid in the Console, let repeating patterns fill it in weeks ahead, and publish it when it's ready. Until you publish, only the people who plan it can see it. Once it's published, each person sees their shifts in the Agoo Workspace app and is told once about what changed.
The published roster is what Agoo measures the day against: who is late, who isn't in yet, who was absent once their shift ended, who left early, and which break each shift has. Staff fill gaps themselves by claiming open shifts and swapping with colleagues, with your approval, and Agoo warns you where a roster meets the Labour Act's rules on rest and hours. Rosters come with Growth, Pro and Enterprise.
Key terms
| Term | Meaning |
|---|---|
| Template | A shift you run at a site, with its name, times, grace period, break, colour and an optional label, such as "Day ward" |
| Roster shift | One person's shift on one day, made from a template. You can move it or change its times and it keeps its template |
| Pattern | A cycle of 1 to 56 days from a start date, each day a template or a day off, such as 2 days, 2 nights and 4 off |
| Rotation | Several people on one pattern, each starting at a different day of the cycle, so every day is covered |
| Draft | A shift or a change that isn't published yet. Only the people who plan the roster see it |
| Publish | Send everything waiting to staff, at one site, in one go |
| Open shift | A shift with nobody on it yet, which staff who can work it claim in Agoo Workspace |
| Claim | Someone asking to take an open shift. It's theirs once it's approved, or at once if the first claim takes it |
| Swap | Someone offering one of their shifts to a colleague, or to anyone who can take it, for a manager to approve |
| Exchange | A swap that asks for one of the colleague's shifts in return, so the two of them trade |
Open the planner
Go to Console → Attendance → Rosters and choose the site. The planner has people down the side and days across, for a week, a fortnight or four weeks, with arrows to move through time.
- Shifts are coloured blocks with their name, times and label. A shift that isn't published yet is hatched; a published shift with a change waiting is marked as changed, and one you've taken off as removing, until you publish.
- Leave and public holidays show on the days they fall, and a weekly fixed shift (see Weekly fixed shifts) shows where it still applies.
- Open shifts have their own row at the top, with how many claims are waiting on each.
- Warnings sit on the shift: Two shifts at once, On leave, Public holiday or closed day or No longer at this site, and the Labour Act warnings about rest, weekly hours and consent. Warnings don't stop you, except two shifts at once, which can't be published.
- Find someone above the roster narrows it to the people whose name or employee number you type, which helps on a site with a long list.
From anywhere in the Console, ⌘K (Ctrl+K on Windows) finds Open the roster, and Roster for someone by name opens their roster.
Anyone who can see everyone's attendance at the site can open the roster. People with Manage shifts, corrections and leave at the site plan it: Owners, Admins, HR, and Site admins at their own sites. See Roles and permissions.
Plan with drag and drop
- Add a shift: drag a template from the palette onto a person's day.
- Move a shift: drag it to another day, or to another person.
- Copy a shift: hold Alt (Option on a Mac) while you drag, or tick Dragging copies above the roster.
- Change its times: drag the start or end edge of the block.
- Edit it: select the shift to change its times, break or template, add a note for the person, or remove it.
Every change is saved as you make it, as a draft. Undo takes back your last changes, and discarding the drafts takes the roster back to what staff can see.
Publish
When the roster is ready, choose Publish. Agoo shows what will change before anything goes, such as "14 new shifts, 3 changed and 1 removed", and how many people it affects.
Check the summary
Publish covers everything waiting at this site: new shifts, changes and removals. Agoo refuses to publish while two of someone's shifts would overlap, at this site or another. It also refuses a change to a shift on a day in someone's approved timesheet until the timesheet is reopened.
Add a note if it's short notice
A change to a published shift that starts within the next 48 hours needs a short note to the people it changes, such as "Covering for Ama, who is on a course". You can add a note to any publish.
Publish
Everyone whose shifts still to come have changed is told once, however many shifts changed: a notification in Agoo Workspace, or an email if they don't have the app, listing their next five shifts and your note. The roster stops being hatched, and Today, the timesheet and shift reminders use it at once.
A shift you remove after publishing is shown to the person as removed, so they know it's gone rather than wondering. Each publish, and who made it, is recorded in the audit trail.
Shift templates
Under Shift templates, add each shift you run at the site:
| Setting | What it's for |
|---|---|
| Name | What people see, such as "Day ward" or "Night gate" |
| Starts, ends | The shift's times. An end before the start runs overnight, such as 20:00 to 08:00 |
| Grace | Minutes after the start before someone counts as late |
| Break | Your standard day's break, or the shift's own: none, paid or unpaid, its length, and when it usually starts (breaks) |
| Colour | One of eight, so the roster reads at a glance |
| Label | Optional, up to 40 characters, such as "Ward 3" or "Gate 2" |
Changing a template's times affects the shifts made from it from then on; shifts already on the roster keep theirs, and the days its patterns make are made again as changes to publish. A name, colour or label change shows on future shifts at once. You can archive a template once no pattern and no weekly fixed shift uses it.
Patterns and rotations
Under Patterns, a pattern repeats a cycle of days from a start date: each day is a template or a day off. Start from a ready-made one or build your own, up to 56 days (eight weeks):
- Monday to Friday
- 6 days a week
- 2 days, 2 nights, 4 off
- 4 on, 4 off
- 2-2-3, over two weeks
- Day and night weeks
Put people on it from a date, and to a date if it ends. For a rotation, put several people on the same pattern, each at a different day of the cycle (its phase), so the days and nights are always covered: four nurses on 2 days, 2 nights, 4 off, two days apart, cover every day and every night. A person is on one pattern at a time.
Agoo fills the roster from your patterns eight weeks ahead, and keeps it eight weeks ahead as time passes:
- Days you changed by hand stay as you left them. A pattern never undoes a shift you moved, resized or removed.
- Once you've published a pattern's shifts, the new days it makes as time passes are published as they're made, so staff always see eight weeks ahead. If you've changed the pattern since you last published, its new days wait as drafts until you publish again.
- Changing a pattern or who's on it makes its future days again, as changes to publish.
Weekly fixed shifts
If your people already have a fixed weekly shift, such as Monday to Friday on the day shift, it keeps working: Agoo measures their days against it as before.
Once a day is on someone's published roster, the roster decides that day. Their weekly shift doesn't apply on it, and a rostered day with no shift is a rest day, never an absence. You can move people to the roster site by site, at your own pace.
Open shifts
An open shift is a shift with nobody on it yet: a gap in the week, an extra pair of hands for an event, cover for someone on a course. You post it, and the people who can work it claim it in Agoo Workspace.
Make it
Drag a template into the Open shifts row at the top of the planner, or select a shift that someone's on and choose Make it an open shift. Like any change, it's a draft until you publish.
Publish it
When you publish, everyone who can take it is told once, in Agoo Workspace: "Open shifts you can take", with how many and from when. This one comes only to the app, never by email or text.
Decide
Each claim waits for whoever approves claims (see Approving swaps and claims). Approving one gives the shift to that person at once, and the other claims are closed as taken, with everyone told. If you've chosen The first claim takes it, there's nothing to decide: the first person to claim it gets it straight away.
Who can take an open shift. People on attendance who work at the site, who aren't on leave that day, have no other shift at the same time, at any site, and only until it starts. If the shift has a label, such as "Ward 3", and anyone at the site has worked that label in the last 12 weeks or has a shift with it coming up, only those people can take it, so a ward's gap goes to the nurses who know the ward. Everyone else doesn't see it.
Claiming in the app. Open shifts are on Me → Your shifts → Open shifts, soonest first, up to eight weeks ahead, each with the site, the times, the label, the break and how many people have already asked. Tap one and Ask for this shift, with a note if you like (up to 280 characters). If it can't be yours, the app says why: you have another shift then, you're on leave, it has started, you don't work at the site, you've already claimed it, or your organisation has claims turned off. If taking it would break a rest rule, the app warns you first. You can withdraw a claim while it's waiting.
You can also turn an open shift back into someone's shift in the planner by putting a person on it, as with any change you publish.
Swaps
A swap lets someone hand one of their shifts to a colleague, with a manager's approval, without anyone ringing round.
Offer the shift
In Me → Your shifts, the person taps Offer a swap, chooses one of their published shifts still to come and offers it, either to a colleague, chosen from the people at the site with whether each one can take it, or to anyone who can take it. Offering it to a named colleague, they can also ask for one of that colleague's shifts at the site in the next four weeks in return: an exchange. A note is optional.
The colleague answers
A named colleague is told "Kwame Mensah offers you a shift" and finds it under Offers to you, to Take the shift or Say no. An offer to anyone goes to everyone who could take it, and the first to accept takes it. The person who offered it is told the answer, and can withdraw the offer until it's decided.
A manager approves
Once accepted, the swap waits for whoever approves swaps, who sees both people, the shifts and any warnings, and approves it or declines it with a reason. Approving changes the roster at once, with no publish needed: the shift (and, in an exchange, the shift in return) moves to the other person, and both are told. It shows as new in their Your shifts.
A swap doesn't need approving if your organisation chooses No approval for swaps, or lets swaps between people on the same shift template stand, such as two nurses on "Night ward".
A swap ends one of these ways:
| Status | What happened |
|---|---|
| Offered | Waiting for the colleague, or for anyone who can take it |
| Accepted | Taken, waiting for approval |
| Approved | The roster changed: the shift is the colleague's |
| Declined | A manager declined it, with a reason both people see |
| Refused | The named colleague said no |
| Withdrawn | The person who offered it took it back |
| Expired | The shift started before it was decided |
| Cancelled | Called off: a manager changed or removed the shift in the planner, or one of the two people left |
Offering, accepting and claiming need a connection, because Agoo checks at that moment who can take what. With no signal, Your shifts shows the open shifts and offers the app last had, and says so.
Approving swaps and claims
Swaps and claims are approved the same way as leave, with the same choices, chosen separately for each in Attendance → Settings (Who approves swaps and Who approves claims for open shifts): Line manager (the default), Line manager, then HR, HR only, No approval, or a Custom chain on Enterprise. Deputies, requests that move up when nobody decides, and HR deciding any step all work as they do for leave. For a swap, the approver is the line manager of the person who offered it; for a claim, of the person who asked.
Approvers decide:
- In Agoo Workspace, on Team → Approvals, beside leave: swipe right to approve, left to decline. The notification "Kofi Boateng and Nii Armah want to swap" has Approve on it.
- In the Console, on Attendance → Rosters → Open shifts and swaps for the site: the claims and swaps waiting, offers still out, and what was decided lately.
Each one shows the warnings for whoever would take the shift, and in an exchange, for the person taking the shift in return. Declining needs a reason of 3 to 300 characters, which the people in it see. Approving is refused if the person taking it now has another shift at that time.
Labour Act warnings
Agoo checks each shift against the Labour Act, 2003 (Act 651), and shows what it finds on the shift in the planner, in the list before you publish, on open shifts and offers in the app (for the person who'd take them) and on every swap and claim waiting for approval. They're warnings, never blocks: you decide.
| Warning | When it shows |
|---|---|
| Under 12 hours' rest (Labour Act s.41) | Less than 12 hours between this shift and one on another day. Section 41 gives every worker at least 12 continuous hours' rest between two working days |
| No 48 hours off in 7 days (s.42) | No 48 hours in a row off in the seven days ending on this shift's day. Section 42 asks for 48 consecutive hours' rest in every seven days, Saturday to Sunday where possible. A public holiday isn't counted as rest (s.43) |
| Over their weekly hours | Their rostered paid hours that week go over their weekly hours: 40 by default (s.33), or their contracted hours, or their work-rule set's, averaged over its weeks if it averages (s.34(b), s.36). In the app it reads Over your weekly hours |
| Night work needs her consent (s.55) | Night work, any time between 22:00 and 07:00, for a woman whose maternity leave is approved or asked for and hasn't started, with no consent recorded |
| Overtime needs her consent (s.55) | Overtime (a shift longer than the day's hours, or a week over its hours) for a woman whose maternity leave hasn't started yet, or started less than nine months ago, with no consent recorded |
| Two shifts at once | Two of the person's shifts overlap, at any site. This one does stop a publish |
| On leave | They're on approved leave that day |
| Public holiday or closed day | The day is a public holiday you observe, or one of your closed days |
| No longer at this site | They no longer work at the site, or aren't on attendance |
Before you publish, Agoo lists how many shifts carry each warning, so nothing slips through.
Why they're only warnings
Warnings never stop you publishing: s.41 allows less rest in seasonal work, and the rest rules (ss.40 to 43) don't apply to task workers or domestic workers in private homes (s.44).
Consent to night work and overtime
Section 55(1) of the Act says that, unless she consents, an employer shall not assign a pregnant worker to night work between 22:00 and 07:00, or engage a pregnant worker, or the mother of a child under eight months, for overtime.
Agoo never asks or keeps anything about a pregnancy. It works out these two warnings only from maternity leave already recorded: leave that's approved or asked for and hasn't started (night work and overtime), or that started less than nine months ago (overtime). If nothing is recorded yet, Agoo has nothing to go on and can't warn you.
The consent warnings show only to people who may see her private leave, such as HR, and to her when she's offered a shift, unless your maternity leave type isn't marked private. To everyone else the shift carries no consent warning.
Record her consent when she gives it: HR, or whoever plans the roster at her site, chooses She has agreed on the warning on her shift, or in her roster, then night work, overtime or both, the date it starts, an end date if there is one, and a note. While it runs, the shifts it covers show Consent recorded instead of the warning. End it as soon as she withdraws it. Recording and ending a consent are in the audit trail.
Import a roster from a spreadsheet
If you already plan in a spreadsheet, bring it in rather than retyping it. Go to Attendance → Rosters → Import, choose the site and the CSV file. Download the template gives you the headers with two example rows.
There are two kinds of file:
- Shifts, one row per shift: for a roster you've already worked out.
- People on patterns, one row per person and pattern: for putting people on the patterns you've set up at the site. A file whose header has a
patterncolumn is this kind.
| Column | What to put |
|---|---|
email | The person's email in People, or use employee_number. Leave both blank for an open shift |
employee_number | Instead of email |
date | The day, as YYYY-MM-DD or DD/MM/YYYY. A night shift belongs to the evening it starts |
start, end | HH:MM, in the site's time. Optional when template is given |
template | The name of one of the site's shift templates, such as Day ward |
break | none, paid or unpaid, if it differs from the template's |
break_minutes | The break's length in minutes |
label | Up to 40 characters, such as Ward 3 |
note | A note for the person |
Check it
Agoo reads the file and shows every row before anything changes: OK, Error with what's wrong (such as "No one here has the email kwame.mensah@voltabank.example"), or Duplicate for a shift that's already on the roster, with the warnings each OK row would bring. Fix the file and check it again as often as you like.
Import
Import adds the OK rows as drafts, and skips errors and duplicates, so importing the same file twice adds nothing. People on patterns get their pattern's days as drafts too. Nobody is told yet.
Publish them
Look the drafts over on the planner and publish as usual.
A file can have up to 2,000 rows and be up to 1 MB. A shift row with times but no template, whose times match none of the site's templates, gets a new template named after its times, such as "08:00 to 14:00"; the check lists any it will make. Importing is recorded in the audit trail as Imported shifts into the roster. Roster import comes with Growth and above, with the rest of Agoo's CSV import.
Print a roster
For the notice board, choose Print on the planner. It lays out the site's roster for the week, fortnight or four weeks you're looking at on A4 landscape: your people down the side, the days across, open shifts in a row of their own, with your organisation's name and logo. Print it from the browser. To download the same grid as a PDF, choose Export → Printable roster (PDF).
A person's roster
On someone's page in People, the Roster panel shows their roster across every site: their shifts for the dates you choose (this week and the four after, by default, up to three months), the patterns they're on, their swaps and claims, any consent recorded, each shift's warnings and their rostered hours each week against their weekly hours. It's where to look before you approve a swap or move someone, and where HR records consent.
Your shift today on the kiosk
When someone identifies themselves at Agoo Kiosk, on an iPad, an iPhone or an Android tablet or phone, the screen that greets them, and the confirmation after they clock in, says Your shift today: 08:00 to 17:00, break 12:00 to 13:00. On a night shift that started the evening before, it says Your shift: 20:00 to 08:00. If they have no shift, it says nothing.
The kiosk apps keep the site's published shifts for yesterday, today and tomorrow, so this works with no network; a kiosk in a browser shows it while it's online. On days the roster doesn't cover, it shows the person's weekly fixed shift.
Swaps and open shifts settings
Choose how swaps and open shifts work for your whole organisation in Console → Attendance → Settings, under Swaps and open shifts (or Change the rules on Open shifts and swaps). Owners, Admins and HR can change them.
| Setting | What it does | Default |
|---|---|---|
| Staff may swap shifts | People can offer their shifts to colleagues in Agoo Workspace | On |
| Staff may ask for open shifts | People can claim open shifts. Off, they don't see them | On |
| The first to ask gets it or A manager gives it out | Whether the first claim takes an open shift at once, or a claim waits for approval | A manager gives it out |
| Swaps on the same shift stand without approval | A swap between two people on the same shift template needs no approval | Off |
| Who approves swaps, Who approves claims for open shifts | Line manager, line manager then HR, HR only, no approval, or a custom chain on Enterprise | Line manager |
Changing them is recorded in the audit trail as Changed the rules for swaps and open shifts. Home's Set up staff time checklist, and the setup wizard's Staff time step, ask about Swaps and open shifts (Growth and above) until you save these settings or confirm them. See Attendance rules and setup.
Who hears what
| What happens | Who's told | How |
|---|---|---|
| A roster is published with a change for them | Each person whose shifts changed, once | The app, or email without it |
| A roster with open shifts is published | The people at the site who can take them, once per publish | The app only |
| A shift is offered | The colleague named, or everyone who could take it | The app, or email without it |
| The colleague takes the shift or says no | The person who offered it | The app, or email without it |
| A swap or a claim needs a decision | Whoever it's waiting with: the line manager, HR, a deputy or whoever it moved to | The app (with Approve), or email |
| A swap is approved, declined or called off | Both people in it | The app, or email without it |
| A claim is approved, declined or someone else got it | The person who claimed it | The app, or email without it |
Each person can turn these on or off in Account → Notifications. See Notifications.
Set up rosters
The setup wizard's Staff time step asks Do you roster shifts?, and Home's Set up staff time checklist has Your first roster (Growth and above). It's ticked when you publish your first roster, or when you answer No. Both also ask about Swaps and open shifts, ticked when you save or confirm the settings. See Attendance rules and setup.
What staff see
- In Agoo Workspace, on iPhone, iPad and Android, Your shifts shows their published shifts for this month and next, with the site, times, label, break and any note. New and changed shifts are highlighted until they've seen them, and a removed shift says so. It works offline. See the Workspace app.
- Open shifts, Offers to you and Your swaps and claims, in Your shifts: the open shifts they can ask for, shifts colleagues offer them, and their own swaps and claims with where each stands.
- The Next shift widget on their Home Screen shows their next shift at a glance, and Your shift today greets them at the kiosk.
- One notification per publish: "Your new shifts are out" or "Your shifts have changed", with what changed and from when. Without the app, the same news comes by email. A shift that becomes theirs through a swap or a claim arrives the same way, highlighted.
- Shift reminders come before rostered shifts as they do before fixed ones, if your organisation has them on. See Shifts and overtime.
Staff see only their own published shifts, never drafts, never a change you haven't published, and never anyone else's roster. The exceptions are what a swap needs: someone offering a shift sees which colleagues at the site could take it and, to ask for one in return, each colleague's published shifts there for the next four weeks; and an open shift or an offer to anyone shows who it's from.
Export a roster
Export the site's roster for a period of up to three months as CSV, Excel or PDF: each shift with the person, day, times, break and label. Printable roster (PDF) gives the notice-board grid instead. Each export is recorded in the audit trail.
Plans and data
- Plans: rosters are part of shifts, on Growth, Pro and Enterprise, with open shifts, swaps, the warnings, printing and the kiosk's Your shift today. Importing a roster from a spreadsheet comes with Growth and above too, with the rest of Agoo's CSV import. Overtime is on every plan, and follows the published roster where there is one. On Free and Starter, Rosters shows a preview and which plan adds it.
- Moving to a lower plan deletes nothing. Your rosters, swaps, claims and consents stay readable; you can't change or publish them, staff can't claim or swap, and patterns stop filling the roster ahead until you're back on Growth or above.
- How long rosters are kept: as long as your attendance records, with their swaps, claims and records of consent, and a legal hold keeps them. The full organisation export includes your templates, patterns, the people on them, roster shifts, each publish, swaps, claims and consents.
- Every change is in the audit trail: imports, settings, consents recorded and ended, claims made, withdrawn and decided, and swaps offered, withdrawn, accepted, refused, decided and called off.
From your own systems
Rosters are in the public API on Pro and Enterprise: read, create, change and remove roster shifts (open ones too), publish a site's roster, and read and decide swaps and claims. Webhooks on Growth and above tell your systems when a roster is published and when a swap or a claim is asked for, approved or declined. See webhook events.
Evidence and notices
Choose which evidence clock-ins record (face, selfies, location), on what basis, what employees are told, and how long it's kept.
Shifts and overtime
How shifts flag lateness, and how Agoo counts overtime, rest-day and public-holiday work by the Labour Act, with extra time approved in the Console or the app before it counts.