Tracking modes — balance, spell, and unlimited#
For: Manager | Admin You’ll need: Nothing.
Every leave policy in Shiftavo runs in one of three tracking modes. The mode is the most important decision on the form — it shapes which fields you’ll fill in and what the ledger records when a request is approved.
What it means#
Balance. Shiftavo keeps a running hours balance per person. Approving a request books hours against it; revoking puts them back. Vacation is the classic case: a yearly entitlement, accruals through the year, a ceiling, and a balance the worker can see.
Spell. Shiftavo doesn’t track a pool — it records each absence as its own bounded “spell” with a start and end, checked against a continued-pay ceiling. Sick leave under the German EFZG §3 works this way: each illness spell consumes its own entitlement. Switzerland’s seeded sick policy, “Art. 324a CO Wage Continuation”, is also a spell policy — but it counts per service year and has no linking window. Whether a follow-up illness extends the original spell depends on the policy’s ‘Aggregation scope’: automatic for ‘Per PIW (auto-linked by window)’, a checkbox at review time for ‘Per PIW (admin-linked)’, and never for the other scopes. See EFZG §3 spell linking and Aggregation scope, ceilings, and accrual.
Unlimited. No accrual, no ceiling, no tier ladder. Approval still creates a request, a calendar event, and a booking in the ledger, but nothing is counted down — the request form reads ‘Unlimited’ instead of a balance. Use this for leave types you want to log and visualize without limiting — paid bereavement, study leave, jury duty.
When to use which#
Leave type |
Mode |
Why |
|---|---|---|
Vacation / annual leave |
Balance |
Pooled entitlement that accrues and carries over. |
Sick leave (DE, EFZG §3) |
Spell |
Continued-pay entitlement is per illness spell, not per pool. |
Sick leave (CH, Art. 324a CO) |
Spell |
Continued pay counts per service year; no linking window. |
Unpaid leave |
Balance or unlimited |
Use balance if you cap it; unlimited if you only need a record. |
Paid bereavement, jury duty |
Unlimited |
You log it but don’t deduct from anything. |
Time-comp time off |
— |
See the note below. |
If you’re not sure, start with Balance — you can always cap entitlement to zero and still get the calendar event and audit trail, then switch later as your needs sharpen.
Note
Time-comp time off is the odd one out: it spends the person’s own time-compensation ledger, which enforces a hard balance check by itself. The leave policy’s tracking mode doesn’t drive that deduction.
How part-days are charged#
A leave block with times on it — as opposed to an all-day block — is billed against the person’s working hours, not against the wall clock. Shiftavo walks the block day by day in the person’s time zone and charges only the working time it actually covers:
A day the person doesn’t work costs nothing, and so do the hours outside their working window.
A day the block covers end-to-end costs the policy’s full day rate — the same as booking it as an all-day absence.
A day it covers partly costs the overlapping hours, capped at the day rate, so no single day can ever cost more than a whole day off.
Worked example. Marco’s employment type declares Tuesday 08:00 – 16:00, and his policy deducts at ‘Fixed rate’ 8 hours per day. Leave on Tuesday 13:00 – 17:00 overlaps his working window for 13:00 – 16:00 — 3 hours, capped at 8 — so 3.00 h are booked; the 16:00 – 17:00 tail costs nothing. A booking from 07:00 to 18:00 covers the window end-to-end and books exactly 8.00 h.
Note
Casual and on-call employment types have zero contracted hours, so the ‘Value method’ deduction is refused (“Wertmethode (VALUE deduction) requires non-zero contracted_hours…”). Use ‘Average method’ — a 13-week lookback of clocked hours, itself refused while there’s no clocked time yet — or ‘Fixed rate’. With no declared start and end times, a part-day block bills against the whole calendar day as its window.
How it shows in the app#
On the policy form, choosing a tracking mode reveals the fields that mode uses and hides the rest. Balance reveals accrual, entitlement, max balance, and carry-over. Spell reveals aggregation scope, ceiling, and linking window. Unlimited hides deduction, accrual, and carry-over, but keeps ‘Pay & limits’ — payment %, negative-balance limit, and max hours per request and per year.
Only a balance-tracked policy keeps balance settings. Saving a spell or unlimited policy clears ‘Entitlement hours’, ‘Hourly accrual rate’, ‘Max balance’, ‘Negative balance limit’, ‘Carry-over max’, and ‘Expiry months’, and sets ‘Accrual method’ back to ‘Annual grant’ and ‘Balance source’ to ‘Managed here’. Accruals and carry-over expiry never run for those policies.
Approval writes the same thing for every tracking mode: a Booking row in the ‘Leave transactions’ ledger, with real negative hours. What differs is the read: a balance policy shows a running number, while spell and unlimited policies show ‘Tracked per spell’ or ‘Unlimited’ on the request form instead of a balance.
Verify it worked#
Open a leave request against the policy. A ‘Balance-tracked’ policy shows a running number in ‘Current balance’; a ‘Per-spell counter’ shows ‘Tracked per spell’ and an ‘Unlimited / event-only’ policy shows ‘Unlimited’. Approving any of them writes the same Booking row to How to view the leave ledger.