Rostering & sessions
How open sessions, the calendar and shift-time permissions work.
The Calendar
The Calendar (formerly "Roster") is your library's single operational timeline: desk shifts with their staffing, special events, your normal open hours and any closures, all in one month view. A coordinator sees it in four tabs — Calendar (the month view and your own shifts), Sessions (schedule, generate and staff them), Volunteers and Past — each with its own link, so you can bookmark the one you use; a volunteer just gets the month view and their shifts. Pick a day and + Add a session on this day opens the Sessions tab with that date already filled in, for either a shift or an event.
Sessions
A session is a staffed opening — the times your library is open for loans and returns. You create sessions on the calendar, with the volunteers each one needs.
Public holidays & long weekends
Turn on Closed on public holidays under Settings → Locations & opening hours and pick your state or region. Upcoming public holidays are added to your closures for the next 18 months and kept up to date automatically. A loan only moves when its due date lands on a closed day — it rolls forward to your next open day (jumping a whole long weekend in one step), so a due date that was already on an open day is left alone. Generating a roster skips holiday closures automatically.
When you generate a roster, any session date that lands on a long weekend — a Saturday or Sunday next to a public-holiday Friday or Monday, or the holiday itself — is flagged in the preview. Those dates are only created once you tick to confirm the library will be open; unconfirmed long-weekend dates are skipped.
The roster
Volunteers sign themselves up for sessions (or a coordinator assigns them). Anyone with the Volunteer role and up can roster on; pure members can't, and aren't asked to cover shifts. A session can require a minimum number of confirmed volunteers and warn when it's short.
Filling the roster automatically
Under Settings → Roster → Filling the roster, you can switch from manually to round-robin. The roster then looks at your open sessions each night and suggests who to ask, starting with whoever has gone longest without a shift.
It only ever sends the same invitation you would send yourself. Volunteers accept or decline as usual, and nothing puts anyone on a shift without them saying yes — the worst a bad suggestion can do is give someone an email they can decline.
Start on show me the suggestions first. Once you have watched a few weeks and agree with who it picks, switch to sending automatically.
What it will not do:
- ask someone on a weekday they have said they can't do;
- ask anyone for more shifts in a week than the limit you set (session leaders are exempt, so a small committee can still cover every session);
- re-ask someone who declined or ignored an invitation for that session — it moves to the next person instead;
- invite anyone too close to the session to answer sensibly. Those sessions are flagged for you.
For libraries with no paid coordinator, it fills the leader slot first from committee members whose role can lead sessions, then the volunteer slots. If nobody eligible can lead a session — including because their working-with-children check has lapsed — it leaves that one for you rather than filling it with an extra volunteer.
While you're on show me the suggestions first, the suggestions appear on each open session on the calendar's Sessions tab — you send or skip each one. Nothing goes out until you do.
Invitations it sent are marked Suggested on the roster, so you can always see what came from you and what came from the roster.
Volunteers can pause their own suggestions from their account page — the switch is called Let the roster suggest shifts for me. It's the honest answer for someone going away for a month, and it's better for you than the alternative, which is a volunteer who declines everything. You can still invite them directly; the switch only stops the robot.
If it can't fill something, it emails you — one message listing the sessions and why each was left, so a thin leader bench or a session booked too late to staff doesn't just quietly stay empty. You won't hear about the same session again unless the reason changes, or a week goes by and it's still short. You can turn these off under Settings → Notifications with the rest.
Staff who are always on
Some libraries employ a paid coordinator who is at every open day. Rather than adding them to each session by hand, open Settings → Team, choose Roster days next to their name, and tick is on every open day. Pick specific weekdays if they only work some — different staff can cover different days, so one person can be on Tuesdays and another on Saturdays.
Two things to know about how they're counted:
- They satisfy the two-adults-present rule, so a session with the coordinator plus one volunteer no longer shows as short-staffed.
- They don't fill a volunteer slot. The slot count still means "volunteers we need to find", so the roster keeps asking for the help you actually need.
They're never sent an invitation and never get shift reminders — being there is their job, not a request. They appear on sessions marked Always on.
Ticking the box only affects sessions created from then on, unless you also tick apply to sessions already scheduled.
Taking leave? On the calendar's Sessions tab, click the ✕ on their Always on tag for each session they'll miss. Nothing puts those back — not the nightly jobs, and not re-opening the Roster days dialog, which only adds sessions on days that are newly theirs.
Suspending someone clears them off all their upcoming sessions straight away, so those sessions correctly show as needing cover rather than looking staffed by someone who won't be there. Past attendance is kept. Un-suspending doesn't put them back automatically — use apply to sessions already scheduled in the Roster days dialog when they return.
If their working-with-children check lapses, they're left off sessions dated after the expiry and the library is told which dates are uncovered.
Planning a whole term
The nightly suggestions fill one session at a time, a few weeks out. When you want to answer the bigger question — here is the term, who does which Saturday? — use Plan the term on the calendar.
Pick a range (it defaults to next Monday plus twelve weeks; twenty weeks is the most it will do at once) and hit Plan. You get every open slot in that range, each with a suggested volunteer and the reason they were picked: who has gone longest without a shift, who still owes sessions, who is one of only four people free on a Sunday, who asked to be rostered with whom. Slots nobody could be found for are amber and say why, in the same words the roster uses when it emails you about a session it couldn't fill.
Cells you can't change are the ones that are already settled: a confirmed volunteer, an invitation still out, and staff who are always on. Everything else has a ⋯ menu:
- Remove — take the suggestion off and leave the slot open.
- Ask someone else — swap in whoever the roster would have picked next.
- Choose… — the full ranked list, up to ten, each with its reasons.
Above the grid, the fairness strip shows each person's proposed shifts against what they owe, worst first, and it recalculates as you edit — so a fix is visible before you send anything, not afterwards.
Release sends the lot. You choose how long people have to answer (14 days by default), and then:
- Each volunteer gets one email listing all their sessions, with an accept all link, a decline all link, and Accept/Decline beside each session. Four separate emails in one minute is how a helpful proposal reads as spam.
- They are ordinary invitations. Reminders, the check-in a few days out and the accept page all work exactly as they do for an invitation you send by hand, and they're marked Term on the roster so you can see where they came from.
- Nothing is assigned. Until someone accepts, the slot is still open.
- A session starting within 48 hours is refused rather than invited — too close for anyone to answer sensibly — and you're told which ones and why.
- An invitation never outlives its session: whatever window you choose, it closes 24 hours before the session starts.
Volunteers with two or more invitations waiting also get an Accept all button on their own My shifts list, so they never have to hunt for the email.
Nothing is stored between visits: the grid is a proposal, and closing the tab loses your edits. That's deliberate, and re-planning is cheap — plan the same range again later and only the still-open slots are filled in, because confirmed and already-invited people are locked.
Telling the roster when you can help
On your account page, under When I can volunteer, you can describe what usually suits you. Everything there is about suggestions, not permission — say all of it, and a coordinator can still invite you to any session, and you can still claim any open shift yourself. What it stops is the roster proposing you for something you can never do, over and over.
- Days that usually suit — the weekdays you can normally make. Leave Any day suits ticked if they all do.
- Times of day — morning, afternoon or evening. A session counts by when it starts: before midday is a morning, before 5pm an afternoon, after that an evening. So a 10am–2pm shift is a morning.
- Not during the school holidays — term time only. We use the published term dates for your library's state or region (the same region it uses for public holidays). We only apply this for years we actually hold: if the dates for a year haven't been published yet, the setting quietly does nothing rather than guessing, and the page tells you so.
- Most shifts a month — your own ceiling. "Once a month is all I can manage" is a sentence people actually say, so it's a real limit: the roster counts what you've accepted or been invited to in the same calendar month and stops there. It sits on top of your library's own weekly limit, and unlike that one it applies to leading a session too. Blank means no limit of your own.
- Roster with — someone you'd rather be on with. It's honoured when a coordinator plans a whole term at once and two places are open on the same session; the nightly suggestions fill one place at a time and can't see a pair, so they ignore it. A preference, not a rule.
- Away — date ranges you're not around for. Add as many as you like; they drop off the list on their own once they're past. To fix a mistake, remove the row and add it again.
If you're stepping back for longer than a holiday, untick Let the roster suggest shifts for me at the top of the same card rather than clearing every day or entering a year-long absence — "available on no days" isn't a setting, and pausing suggestions is a different thing from narrowing them. Turning it off costs you nothing: you can still sign yourself up, and a coordinator can still invite you directly.
Coordinators can set any of this for someone, from Settings → Team → Roster days, under Availability — because people tell the desk "no school holidays from now on" far more often than they log in and tick a box. Those edits appear in the activity log; the volunteer's own edits don't, and the volunteer can change anything back themselves.
Coordinators also see a note in the invite list when someone isn't usually free on that day. It's a reminder, not a block.
Members signing up to volunteer
A member can offer to help straight from their account page ("Volunteer with us"). That registers them as a volunteer — but they don't go onto the roster immediately: they're awaiting approval until the library has screened them. Once they're approved to volunteer, open shifts appear in their account to claim or withdraw from.
Two different "verifications" — keep them apart.
- "Member checked in" — a member's household was confirmed in person, so they can borrow. (This is the household's verification.)
- "Approved to volunteer" — a volunteer has been screened (Working with Children Check / Code of Conduct) and can be put on a shift. (This is the volunteer's verification.)
They're independent. Someone can be a checked-in member who isn't an approved volunteer, an approved volunteer with no membership at all, or both at once. A self-signed-up volunteer is awaiting approval until a coordinator clears them — they can't be rostered before then.
Who the WWCC requirement screens. When Require a sighted child-safety check on file to roster volunteers is on (Settings → Roster), it applies to non-member volunteers, session leaders, and committee (Owner/Manager/Committee). A member-parent volunteering around their own children isn't blocked by this gate. That's a ToyHive setting, not legal advice about who needs a check; your state's rules decide that. Nominating anyone in the screened set fails unless a sighted WWCC/Blue Card that hasn't expired by the session date is on file. The gate only reads what your team has recorded, so passing it doesn't mean someone is cleared. See Working with Children Checks.
Special events
Alongside desk shifts, the calendar holds special events — an AGM, working bee, fundraiser or social. An event has a title, a type, its own times and an optional off-site venue. Add volunteer slots to recruit helpers (a working bee reuses the same invite / accept / attendance flow as a shift), or leave the slots at 0 for an announcement-only entry.
Choose who can see it for each event:
- Library team (incl. volunteers) — on this calendar only. This is not committee-only: everyone on your team sees it, volunteers included, and volunteers can sign up for its slots when self sign-up is on. Members and the public don't see it.
- Members — also listed on the Events tab of every household's member portal (with a "Coming up" line on their QR card when it is within two weeks). Not on your public website — the right choice for an AGM you tell members about but don't advertise.
- Everyone — also on your public What's on page (/events, linked from the header of your public and member pages), your public opening calendar and the calendar subscription feed, with its real title and description.
Events never carry the shift-time permission bundles below — those are desk-shift only.
Event leader. Pick an event leader on the event form — anyone whose role can lead sessions. They need no volunteer slot, so even an announcement-only event can have one. The leader can record who came and confirm the event, like a session leader, and the event shows up under Events I lead on their Calendar tab. Leading an event gives them no other permission.
RSVPs. RSVPs are on by default (Let members RSVP to events under Settings → Roster), and Families can RSVP comes ticked on any new event members can see (Members or Everyone) — untick it for an event that needs no replies. Every household that can open the member portal gets a We're coming button on its Events tab. An RSVP is one yes per household — there is no headcount. You can set a limit (in households) and make an event current members only (for an AGM vote). Households are emailed a confirmation, and told if you cancel or move the event. An event households have RSVPed to can't be deleted — cancel it so they hear.
On the day. The event card shows how many households are coming. Anyone on the calendar sees the count; the household names need permission to view the member list. From the day of the event, the leader or a coordinator marks each household Came or Didn't come, and can add a family that turned up without an RSVP — both also need the member-list permission. Confirming the event doesn't wait for families to be marked; after it is confirmed only a coordinator can change a mark.
An event shows even on a day you are shut — a Saturday working bee at a Tuesday-opening library appears on the public calendar with the day marked closed, so nobody reads it as a borrowing session. If you run more than one branch, set the event's location and it appears against that branch only; leave the location empty and it shows once for the day as a whole-library event.
Events coming up in the next two months also appear on the dashboard, so an AGM three weeks out isn't something you have to go looking for.
Moving an event. Change its date or times and everyone already invited or signed up is emailed (and texted, if they've opted in) that it has moved, naming both the old and the new time. Editing the title, the notes or the description doesn't send anything — only the when does, because that's what people have written in their own calendars.
Cancelling an event. A cancelled event is struck through on the calendar rather than disappearing, so it's obvious it was called off. Its public page stays up with a cancelled notice (and your reason, if you gave one) — that link has been shared, and telling people it's off is more useful than a broken link. In the calendar subscription feed it goes out as cancelled rather than being quietly dropped, so it disappears from the calendar apps of people who had already added it.
Shift-time permissions (floor, not ceiling)
A Volunteer's standing permissions are deliberately minimal — log in, see the calendar, browse inventory. The operational powers for a shift (loans, returns, stocktake) are handed over by the session leader as a small bundle, for that shift only. So volunteers don't carry permissions they need only occasionally. See Roles, members & volunteers for the bundles.
Leaders & induction
A session leader confirms who actually attended, hands out the shift bundles, and inducts a brand-new volunteer on their first shift — so a first-time helper gets set up on the day, without an admin provisioning them in advance.
What the leader gets before a shift
The evening before a session, its leader gets a session brief: one email with what the shift will actually need to know, so it isn't discovered at the desk. It goes to the leader because they're the one who acts on it — staging the holds, planning the induction, deciding whether a closure means the session is off. A session with no leader who has accepted gets no brief; there's nobody to address it to.
It's assembled from what's already in ToyHive, and any section with nothing to say is simply left out:
- Who's on — the team for that session, with the leader marked, standing staff marked, and anyone doing their first shift flagged, so the leader knows to run an induction and cover the Code of Conduct.
- Holds to stage — the copies set aside on your shelf, who they're for and the pickup deadline, so the reservation shelf can be staged before the doors open. Plus a count of the holds still waiting for a copy to come back.
- Returns expected — what's due back that day, and what's already overdue.
- Members to expect a conversation with — households with overdue toys or a suspended account, named as first name plus surname initial. Never any balances: the desk shows what's owed, on a scan, to the person who owes it.
- Maintenance due — overdue battery checks and test-and-tag on copies that are in, grouped by shelf so it reads as a walk.
- Left over from last time — toys still waiting to be counted, damage reports still waiting on a decision.
- Also on that day — another event on the same date, or a closure or special hours, which is your cue to check whether the session is going ahead at all.
- Next session — when the following session is and who's rostered on it, with its leader marked, so keys, the float and anything else physical can be handed over before you lock up. If nobody has accepted it yet, the brief says so — that's worth knowing while there are still people in the room. Sessions more than four weeks out aren't shown; that far ahead the roster usually isn't settled.
Volunteers still get their own roster reminder the day before — the brief doesn't replace it, and nothing in the brief is mailed to them.
Switch the brief off (or reword it) under Settings → Notifications → Roster. While it's on it replaces the first-shift heads-up, which told the same leader a slice of the same thing; turn the brief off and that heads-up comes back exactly as it was.
And the same thing on screen, on the day
The brief lands the night before, in one person's inbox. By the time the doors open it's three screens back in a phone mail app, and the two volunteers standing at the desk never got it.
So the same information is also a "Today" panel at the top of the dashboard — the page everyone lands on after signing in. It shows on a day there's a session: the session's hours, who's on, the holds to stage, what's due back, who to expect, anything else on that day, and who the keys go to next. On a day with no session but one within the week, it collapses to a single line ("Next session: Saturday 9:30am — you're on"). Otherwise it isn't there at all.
Unlike the email, it doesn't need a leader — a session nobody has taken the lead on still shows, and says so.
Who sees what. Anyone who can see the roster gets the shift logistics: who's on, which copies to stage and where, the first-shift flag, the closure line, the next session. Member names need the same permission the Loans page needs — any of Take loans, Return toys or View loan history. Without one, those sections show the number instead of the names ("14 toys are due back today or already overdue"), so nothing is hidden, just not named. Hand a volunteer a shift bundle and the names fill in for the rest of the session, like everything else that bundle unlocks.
Whoever is leading the session sees all of it, permissions or not — on the panel and in the email. They're the person each family walks up to, so telling them fourteen toys are due back and declining to say whose makes the shift harder to run without making anything safer. It's a narrow thing: it's the day's brief, not the keys to the Loans page. A leader without those permissions still can't open Loans, so the panel shows them the count without the link. And someone has to make them leader — that's set by a coordinator, not chosen by the volunteer.