EVoShift PLUA

Rosters

Creating a month, the skeleton, asking for availability, assigning shifts, conflicts and publishing.

A roster is one month of shifts at one workplace. It goes through four stages: Skeleton (the shifts you need), Draft (people being assigned), Published (the team sees it) and Locked. Rosters are for owners and managers; the team sees the published shifts in My shifts.

The month at a glance

  1. Create the month: the weekly skeleton's shifts and your fixed costs are copied in.
  2. Check the skeleton: add or remove the shifts this month needs.
  3. Ask for availability (optional).
  4. Assign people to the shifts, resolving conflicts.
  5. Publish: everyone is notified.

Create a month

  1. Open Rosters and tap New Roster.
  2. Choose the Year and Month and tap CREATE ROSTER (DRAFT).

While a workplace has no rosters yet, the Rosters list offers Create the roster for … with the next month that has none, and the three steps: demand, availability, publishing. The card of a month still in its skeleton step has Open and finish the skeleton.

The new month gets:

  • the shifts of your weekly skeleton, one set for every day according to its day template, all still without people;
  • your monthly costs and revenue, as they are today. Changing a cost later does not change months already created.

If the month stays empty, the app tells you why: no day templates are assigned to the days of the week, or the day templates have no shifts. Fix the skeleton, or add shifts by hand.

Each workplace has one roster per month. Delete roster on the Rosters list removes a month for good.

Import a month from a spreadsheet

If you already planned the month in Excel or Google Sheets (for example in a "roster maker" sheet with the names in column A and the days 1–31 across), you do not need to enter it again.

  1. Open the month in the roster builder and choose Import the roster from a spreadsheet (in the top bar, under ⋮ on a phone; in a draft nobody is on yet, also in the strip above the days). Owners and managers can do this in a month that is not locked, while the plan is active.
  2. Bring the roster: drag an .xlsx or .csv file onto the screen (on a computer, in the browser, on a Chromebook or an Android tablet), tap Choose a file, or copy the cells in your spreadsheet and paste them into Pasted cells.
  3. Show where the roster is. Nothing is guessed: choose Column with the names and tap any name, then choose Cell of the first day and tap the first person's cell for the first day. If the sheet has a row with day numbers, choose it too: the numbers then decide each column's date and columns without a number (totals) are left out. Without it, each column is the next day from the date of the first day's cell (the 1st, or the date you choose).
  4. Explain the codes. Times are read as they are usually written: 8-16, 8:00-16:00, 8.00–16.00, 7:30 - 15:30, and 22-6 over midnight. Everything else ("R", "P", "W", …) is listed once: a shift with times, a shift template, a day off, an absence, or ignore. The meanings are remembered for the workplace and filled in next time.
  5. Who is who. Names are matched to the team whatever the case, the Polish letters or initials ("J. Kowalski"). A name nobody matches can be another person, a new person (added to the team without an e-mail, as with Import from a spreadsheet), or skipped.
  6. Check the month. Cells with problems are red: tap one to fix it or skip it. Amber cells will be created without their person (an approved absence, a day marked unavailable, already working then, or no longer working here). For days that already have shifts, choose Skip, Add or Replace (days holding only the skeleton's unassigned shifts are replaced by default).
  7. Tap Import (for example Import 120 shifts). Nothing is saved before this. The shifts are drafts until you publish, and Undo the import removes them all and brings back what Replace removed. People added to the team stay.

The import does not create absences: days marked as an absence stay free and are listed before you import, so you can enter the absences in Absences.

Not supported: sheets that mark shifts only with colours (colours are lost when copying), merged cells, several weeks stacked under each other, and days in rows.

Check the skeleton

The new month opens in the Roster Builder. Pick a day and adjust what you need for it:

  • Add Manual Slot: one extra shift for that day; Save as template keeps it for later.
  • Apply Day Template: add all the shifts of a day template, e.g. "Weekend" on a public holiday.
  • Add Shift Template: add one shift from your shift definitions.

To fill part of the month from the weekly skeleton, tap the calendar icon in the top bar (Fill Days from the Weekly Skeleton), choose the first and last day (e.g. the 16th to the 24th) and tap Fill. Only days without shifts are filled; days you have already shaped stay as they are.

When the month looks right, tap Finish the skeleton in the top bar (the gold tick ✓ on a phone). You see the month's Sales plan (the net sales the labour cost will be measured against; tap Continue) and the app offers to ask the team for their availability. The roster is now a draft.

Ask for availability

Ask the team when they can work before you assign anyone:

  • right after finishing the skeleton,
  • with Request Availability on the month in Rosters (at any stage, also while its skeleton is still being shaped), or
  • with Availability for any month at the top of Rosters, for this month or a later one, even before it has a roster: choose the month with the arrows; a month without a roster gets an empty one (no shifts yet), and you add the demand whenever you like, before the answers come in or after.

Set the Planning Period, the Deadline for answers and a Message to employees, then tap Send Request. Everyone active at the workplace gets a notification. Change the dates later with Change Availability Request. More in Availability.

The period can be part of the month, e.g. the 1st to the 15th when you plan in two halves; it cannot reach into another month. The team sees which days you ask about.

The month's card shows the demand and the availability side by side, in either order: each step says how far it is (shifts, answers), and while the demand is the step its card also offers Request Availability or the reminder.

While you build the demand, Team availability above the day shows how many can work in each part of the day (e.g. "Morning 4 · Afternoon 2 · Evening 1") and how many have not answered; a line warns when more shifts are planned in a part of the day than people are available. Tap a part of the day (or Show people) for the names, grouped Available, No answer and Unavailable, with each person's part of the day, hours and comment; on a desktop, point at a part of the day to see who it is. Wide windows list them beside the month. The roster builder's day shows the same.

Capacity before planning

Before you assign anyone, check that the team can cover the month: tap the people icon (Capacity) on the month in Rosters (owners and managers). It counts the days of the availability request; switch to Whole month, Days 1–15, the second half or Choose days.

  • Demand: the hours of all shifts in those days (from the skeleton), and how many have no person yet.
  • Available: the hours the team offered. A day counts the length of the slot the person chose, at most 8 h; a day without a slot counts 8 h; approved leave counts nothing. The owner and people on an employment contract (umowa o pracę) are left out, like fixed staff: their hours follow the contract. Their available hours are shown on their own.
  • Gap: demand minus available. Short means the team offered too little: ask for more availability, change the skeleton or plan the owner and fixed staff in.
  • Full-time norm: the working hours of a full-time job in those days, public holidays included (the Polish monthly norm).
  • Contract targets (owner and financial managers only): the declared hours of the people counted, or their share of a full-time job. For part of the month, declared hours are counted in proportion to the days and employment contracts by the norm.

Not answered yet lists who has not sent their availability (nothing yet, or started but not sent). Remind sends them a notification with the deadline. People without the app are listed so you can ask them in person. Below, each person shows their available hours and days, the hours already planned and, for the owner and financial managers, their contract and target.

Assign people

Build Roster shows the month day by day, with the hours planned and how many shifts are Unfilled or have Conflicts. Use ‹ › in the top bar to move between months, or tap the month's name to choose one (see the top bar).

  1. Pick a day and tap Assign under an unassigned shift.
  2. Tap the person. Only people with the shift's position and skills are listed: available that day first, then those who have not answered, then the unavailable, and last those who are absent or working at that time. Each shows their availability, their hours this month (and when the shift goes over their contracted hours), their other shifts that day and work at another workplace. The shift is assigned at once and the day stays open for the next one.
  3. To add a shift that is not in the skeleton, tap Add Additional Shift: take one From Templates or Create Custom Shift.

Tap an assigned shift to edit it: change the Planned Time, the role, Unassign the person, or accept the clocked hours with Accept Actual Time.

Actual time and breaks show in the shift's dialog only once the shift has started.

The bin next to a shift deletes it at once; the bar at the bottom offers Undo. Only deleting an assigned shift of a published month asks first.

While a draft has unfilled shifts, a strip over the days shows how many, with Auto-assign (the same action as in the top bar). It goes once every shift is filled.

Copy shifts in the top bar (an icon on a phone) copies days, weeks or last month onto days of this month. With a day open it copies that day and asks only where to; otherwise it starts from last week. On a phone the open day covers the top bar: use ⋮ → Copy this day… in the day instead.

Leave a shift without a person and turn on Open shift to offer it to the team: after publishing, anyone can take it from the marketplace.

Auto-assign

Once the team has sent its availability, Auto-assign in the top bar of a draft month (in ⋮ on a phone) proposes people for every shift that has nobody yet. It follows fixed rules, the same every time, and uses no AI unless you ask for it:

  • only people who said they are available that day, and only in the time they asked for;
  • nobody on an approved absence, and only people with the shift's role and skills;
  • nobody whose medical exam or OHS training has expired by the shift's day (auto-assign never assigns anyway);
  • no overlap with their other shifts, also at your other workplaces;
  • at least 15 hours of rest between shifts (never less than the legal 11) and at most 6 days in a row;
  • the labour code: 11 hours of rest in every 24, 35 hours in every week and, for employment contracts, no overtime (the rest for other contracts follows the workplace's setting);
  • a shift lead on every day where the workplace marks lead positions or skills, so no day gets the "no shift lead" warning;
  • no more than their contracted hours, spread so everyone gets close to theirs; people with little availability are served first;
  • with two or more shifts at once, someone who leads the shift (the owner, a manager, or a position or skill marked Leads shifts in the workplace settings), and never, at any moment, only people who need supervision.

The sheet lists each proposal with a checkbox and the reason it was chosen, the shifts left unfilled with why (and who came closest, e.g. "Jan: Contracted hours reached"), and everyone's hours before and after. Untick what you don't want and tap Assign. Shifts that already have someone are never changed, and a shift someone assigned in the meantime is left as it is. The assigned shifts are saved like your own edits: publish the month to send them to the team.

Contracted hours are only used as limits for the owner and financial managers, who may see them.

Suggest with AI

On a paid plan or the trial, the sheet also offers Suggest with AI. The month is then sent to an AI model (Google Gemini) anonymised: people, roles and shifts become random codes (new for every request), and only shift times, days, availability (available or not and the preferred time), days someone cannot work (without the reason), contracted and planned hours, contract type, shift lead and supervision flags and your scheduling rules go out. Names, e-mails, phone numbers, pay rates, comments and notes, your workplace's name and address and medical or OHS dates never leave your device; only your device turns the codes back into names.

Every AI proposal is then checked against all the rules above. Those that pass are marked AI; those that break a rule are listed under Dropped AI proposals with the rule they broke. The rules fill whatever is left, and you review and assign as usual: nothing is saved before Assign.

Each business has a daily number of AI requests (a request the AI could not answer does not count). When the AI is switched off, the day's requests are used up or the AI does not answer, the sheet says so and shows the rules' plan. Managers and the owner can ask; once the plan has ended, the option is gone.

Conflicts

EVoShift checks every assignment and warns you when:

  • the person marked the day as unavailable;
  • they already work at that time at another of your workplaces;
  • they already have a shift at another company at that time (you see only that they are busy, not where).

In the grid, a day a person works at another workplace shows Busy at another workplace with that workplace's name and times (your own other workplaces, drafts included) or Busy (another employer) with the times only. Another employer's shifts count once that employer has published them; you never see its name. Auto-assign treats this time as taken and keeps 11 hours of rest around it. That rest is marked a Company rule: under the Labour Code each employer counts working time separately.

These are warnings, not blocks: tap Assign anyway if you have agreed it with the person. The shift is marked as a conflict so you can find it later.

It also asks before you assign someone whose medical exam or OHS training has expired by that day, and a day says when it has no shift lead or the hours when only people who need supervision work (see Shift leads, supervision, medical exams and OHS). A workplace may block assignments over expired dates altogether.

Labour code

While you build the month by hand, EVoShift checks it against the Polish labour code (Kodeks pracy) and the auto-assign keeps the same rules:

  • at least 11 hours of rest in the 24 hours from the start of each shift (also broken by a shift longer than 13 hours);
  • at least 35 hours of uninterrupted rest in each week; weeks are counted from the 1st of the month, and a weekend off that runs into the next week counts as one rest;
  • for employment contracts (umowa o pracę): no day longer than the daily norm (8 hours), at most 48 hours a week on average in the month, and no more overtime than 12.5 hours, the month's share of the 150-hour yearly limit.

The hours limits need the person's contract, so only the owner and financial managers, who may see pay terms, get them; without pay terms everyone is checked like an employee. A shift that breaks a rule has an amber mark, the person has one by their name, the day's sheet says what is wrong under the shift, and the Labour code counter over the days opens the month's warnings person by person. Like conflicts, these are warnings: you can keep the roster as it is. Only the month's own shifts are checked, not other workplaces or months.

What the marks mean

Hover over a shift's mark (or the shift itself) with a mouse to see every warning on it; click or tap the mark to pin the list, with Open the shift. Hover over a person, or click or tap them, to see all their warnings this month, grouped and dated: click a warning to open its shift. Under each warning EVoShift says why it binds: Labour Code, article … or Company rule. The marks:

  • red triangle: a conflict on the shift (a double booking, less than 11 hours between shifts, a day the person cannot work, an absence, an expired medical exam);
  • amber gavel: a labour code or company rest rule broken this month;
  • star: leads shifts here; graduation cap: needs supervision; red shield: medical exam or safety training expired.

On a phone, the day's sheet lists the same warnings under each shift.

Which rules apply to which contract

The Labour Code covers only employees (art. 2 KP), that is people on an employment contract (umowa o pracę). Civil-law contracts are not covered by it.

ContractRest: 11 h a day (art. 132), 35 h a week (art. 133)Daily norm (art. 129), 48 h on average (art. 131), overtime (art. 151)Other
Employment contract (umowa o pracę)the law: always checked, labelled Labour Codethe law: checkedannual leave, minimum wage
Contract of mandate (umowa zlecenie)your company rule when the setting below is onnot checkedminimum hourly rate and a record of hours (minimum wage act, art. 8a–8d)
Contract for specific work (umowa o dzieło)your company rule when the setting below is onnot checkednone
Self-employed / own business (B2B invoice)your company rule when the setting below is onnot checkednone; the cost is the invoice's net amount
Owner / partner (no contract)neverneverno cost unless you set a notional hourly amount

Apply the 11 h and 35 h rest to every contract (Workplace settings, Rest between shifts; on by default) keeps the same rest for everyone as your own rule, as many owners plan anyway. Turned off, people on other contracts get no rest warnings and auto-assign plans them with only its own minimum break. Employees keep the Labour Code's rest either way.

Staffing hints

The owner and managers with finances see a small chip on each day of the roster: Too few, Just right or Too many. It compares the day's planned labour cost with the income the day is expected to bring:

  • Expected sales are the day's sales target. A day without a target uses the average takings of the same weekday over the last four weeks; a day with neither gets no hint.
  • Expected income is what you keep of those sales: the commission on them plus the day's share of the fixed revenue (see labour %). Without a commission it is the expected sales themselves.
  • Labour % = planned labour cost ÷ expected income × 100.
  • Within the labour target plus or minus 5 points the day is just right; above it too many, below it too few. The hours to add or cut are the target's share of the expected income, turned into hours at the day's cost per hour.

Example. A café keeps a 25.2% commission and a fixed revenue of 9,000 a month, spread over a 30-day month (300 a day). Its labour target is the default for a commission, 60% of income (55–65%). Monday's sales target is 4,000 and 18 hours are planned for 900:

  • expected income = 4,000 × 25.2% + 300 = 1,008 + 300 = 1,308;
  • labour % = 900 ÷ 1,308 = 68.8% of income: too many;
  • 65% of 1,308 is 850.20, so about 50 too much; at 900 ÷ 18 = 50 an hour that is About 1 h fewer brings it within the target.

The same day is 22.5% of the sales: a share of sales says little about what is left for the operator, so the hint uses the income.

Tap a day to see why and what to change, e.g. About 3 h fewer brings it within the target. Open shifts are not counted until someone takes them, so a day still being built often shows too few. Closed days get no hint. The hint is a fixed calculation, not AI, and you can check it by hand; the Home card counts the days from today on that are outside the target.

Publish

Tap Publish in the top bar. If some shifts are still without a person and not marked as open, the app asks what to do with them: Keep them as open shifts (the team can take them) or Remove them and publish.

Publishing saves the whole month and notifies the team; it takes a moment. Each person sees their shifts in My shifts and in the notification.

You can keep editing a published roster. Tap Publish again when you are done so the team sees the changes.

Print the roster

The printer icon in Build Roster prints the Working time record (PDF) for the month, for one person or everyone. See Labour cost and printable reports.

Email the roster

On a published month, the envelope icon in Build Roster opens Email the roster. Choose Everyone in the team or One person, and The whole month or Some days (from day … to day …), then tap Send. Everyone with an e-mail address gets it, with or without the app:

  • the team's week tables with their own shifts highlighted, and their hours;
  • an .ics file with their shifts, to add to Google Calendar, Apple Calendar or Outlook (a newer file updates the same events; shifts that are no longer theirs are cancelled);
  • the team's roster as a PDF: the whole month on one page, their own row outlined.

The dialog says how many e-mails went out and how many people have no e-mail address (add it in their form under Team). The same people get the roster again only after 10 minutes. People who use the app without a phone notification (or chose e-mail) get this e-mail automatically when you publish.

Keyboard and mouse

On a laptop (a Googlebook, a Chromebook, a tablet with a keyboard) or in the browser, the app works with the keyboard and the mouse too. Press Meta + / on an Android laptop to see the list of shortcuts for the screen you are on.

KeysWhat they do
Ctrl + 1 … Ctrl + 5Go to the tabs of the bar, left to right
Ctrl + NA new roster (if you build rosters)
Ctrl + PPrint (the roster, the labour cost)
Ctrl + [ / Ctrl + ], Ctrl + ← / Ctrl + →The previous / next month
Ctrl + ,Settings (the workplace's, or your profile)
EscClose a dialog or a panel
EnterConfirm a dialog (Ctrl + Enter from a comment box)

With a mouse, a right click on a person's cell in the roster offers its actions (assign, edit, unassign, show the day) and a right click on a person under Team opens their details or their next shift. The mouse wheel over the month in the top bar changes the month. In a wide window the day you open stays beside the roster instead of covering it.

Still stuck? Write to us and describe what you see; a screenshot helps.

Contact support