Publish your first weekly roster
You have 12 agents, two queues, and a blank roster. This tutorial stands up your first published week under Voice → Scheduling in about 90 minutes, entirely in the console, with no API calls. It assumes you have never run a workforce-management loop before: every step says which tab to open, what to fill in, and what a correct result looks like. If you already know the loop and want the concept-to-API narrative instead, read Workforce-management workflows. If you want the Erlang-C math behind the staffing numbers, read Forecasts and the staffing optimizer.1. Before you start
The tabs, mapped to the questions you actually have
Open Voice → Scheduling. The tab strip is long; this is the tour, as captions for what each tab shows, mapped to the four questions a first week raises.
The Overview tab is the landing panel; its summary chips jump straight into the tab you need next.
Prerequisites
- Your agents are members of your Orbit organization. The Skills tab picker and the adherence views list organization members, so anyone you plan to roster must be imported before this session. Twelve agents is a realistic starting point for two queues.
- You know each queue’s operating hours. You will encode them as two shift templates in step 2; nothing in the console guesses hours for you.
- Your account has the owner or admin role. Authoring templates, publishing open shifts, and committing a generated schedule are manager actions. Other roles can follow the whole tutorial read-only up to those buttons.
- Some interaction history, ideally. Generation staffs to the stored forecast, and the forecaster learns from history. A brand-new center has no forecast yet; the fallback for week one is in step 4.
2. The 90-minute session
Work the five steps in order. Generation reads the shift templates, the skills registry, and the forecast, so steps 2 and 3 are inputs to step 4, not optional extras.Step 1: Author two shift templates (≈ 15 minutes)
Open the Shift roster tab and choose New shift. The dialog takes a name, start and end time, timezone, weekday chips, channel chips, required skills, and paid/unpaid break minutes. Create these two:
Two design decisions are baked into those values, and both matter later:
- Required skills are the eligibility filter. Schedule generation only places an agent on a shift when the agent holds every skill the shift names.
Front desk weekdaydemandsvoice_front_desk;Weekend overflownames none, so all twelve agents stay eligible for it. - The weekend template spans both queues. That is what lets the staffing optimizer show you the pooling saving in section 3.
Step 2: Add shift activities (≈ 10 minutes)
A shift template is one block until you place activity segments inside it; adherence scoring later measures agents against those segments. Open the Activities tab, pickFront desk weekday from the shift selector, and add three segments:
Each segment must fall inside the shift’s own window; the editor flags an out-of-bounds segment before it saves, so 10:30 works here but 08:00 would not. The segment table shows an expected agent state per row: that is the state adherence compares against on the day. Repeat for the weekend template if your weekend coverage plans breaks differently; for a first session, one template’s segments are enough to see the loop.
Step 3: Register three agents with skills (≈ 15 minutes)
Open the Skills tab. The add-row form has three fields: an agent (picked from your organization members), a free-text skill, and a proficiency from 1 (Novice) to 5 (Expert). Re-adding a skill an agent already holds updates it in place. Register your three most senior agents first:
Amira is deliberately cross-trained on both queues; she is the agent the staffing optimizer will point at in section 3. Note what this registry already implies: for
Front desk weekday, the eligibility pool right now is Amira and Ben. Generation cannot place Chloe on that shift until someone records voice_front_desk for her. After the first generated week lands, work through the remaining nine agents the same way.
Step 4: Run schedule generation for the coming week (≈ 30 minutes)
Open the Generate tab. Set From to next Monday and To to the Sunday after (a seven-day range). The constraint defaults are sane for a first run: 40 max weekly hours, 11 min rest hours between shifts, 6 max consecutive days. Leave the channel selector on all channels and the holiday calendar on none unless you already maintain one. Choose Generate preview. The preview is a coverage table: one row per (interval, channel) with required agents, scheduled agents, and a delta badge that turns red wherever the draft under-covers. The header counts proposed assignments and under-covered intervals. Read it before you commit:- All intervals covered. Choose Commit schedule; the draft’s assignments are written and appear in the Assignments tab.
- Red deltas on
voiceintervals. Usually a skills gap or an hours constraint: with only two agents holdingvoice_front_desk, weekday voice coverage caps out fast. Either register more agents against the skill (step 3) or accept the gap for week one and cover it with open shifts (section 4). - “No forecast in range.” The forecaster has not produced intervals for that window. Open the Forecast tab and choose Recompute now, then generate again. If your center is brand new and has no interaction history yet, there is nothing to recompute from: place week one by hand in the Assignments grid and come back to generation once history lands.
Step 5: Read the result in Assignments (≈ 20 minutes)
Open the Assignments tab and step through the week day by day. The grid shows which agents sit on which shift per day; place, move, or remove a cell directly, or use the bulk date-range fill to repeat one agent’s placement across a week. This is also where approved time-off and swaps show up as row statuses, so it is the tab you will open every morning anyway. You now have a published week: two templates, three skilled agents, generated and hand-tuned assignments. The remaining 90 minutes of your first month are spent in the read tabs and the day-two levers below.3. The four read tabs, in the order you’ll use them
Forecast: interval requirements
The Forecast tab lists the stored forecast as rows of (interval, channel) with predicted volume, predicted AHT, and the required-agents count generation staffs to, plus the algorithm and a confidence value. Two things to check on a first visit:- Recompute after history lands. The forecaster runs on a schedule; the Recompute forecast button refreshes it on demand (it can take around 25 seconds on a large tenant).
- Trust the accuracy card. Below the table, the forecast accuracy card scores each channel’s predictions against the volume that actually arrived (MAPE and derived accuracy over a trailing window). A channel scoring under 70% deserves a human eye on its intervals before you staff to them.
Staffing optimizer: dedicated vs blended for your two queues
The Staffing optimizer tab runs Erlang-C twice: once per channel as if each queue had its own dedicated pool, and once with your channels blended into one cross-trained pool. The difference between the two numbers is what cross-training buys you. With Amira holding bothvoice_front_desk and chat_support, your blended requirement for the two queues should come in below the sum of the dedicated requirements. If it does not, your queues peak at the same intervals and pooling will not help; staff dedicated instead. The Erlang-C deep dive covers the math and the inputs.
Capacity plan: headcount vs demand
The Capacity plan tab zooms out from intervals to periods (a month or a quarter): given forecast volume, AHT, shrinkage, attrition, and productive hours per FTE, it returns required headcount per period against the headcount you plan. The delta is your hiring (or attrition) number for the period. Read it once a quarter, or whenever the optimizer starts saying your pools are too small to blend.Shrinkage: the multiplier
The Shrinkage tab reports, per agent and day, the share of scheduled time that never became productive work: unscheduled breaks, absences, the minutes between logout and lunch. The staffing math consumes it as a multiplier of1 / (1 − shrinkage), so a team at 30% shrinkage needs roughly 43% more scheduled hours than the raw forecast implies. Read your measured shrinkage here before you trust any plan that assumes a round number instead; capacity planning takes the same rate as an input, so the two tabs agree by construction.
4. Day-two operations
The first week publishes; the second week teaches you the adjustment levers. Three of them cover most of a scheduler’s day.Cover a sick agent with an open shift
When Monday starts with a gap, open the Open shifts tab and publish the uncovered slot: pick the shift template and the date. Your agents see the posting and bid. Review the bid list, then award it with a strategy (seniority, preference, first come, or manual pick). Awarding writes the assignment directly, so the Assignments grid and the winning agent’s week are correct the moment you decide. If the slot fills another way, cancel the posting.Approve a swap
Swaps and time-off requests from agents land in the Approval queue. A shift swap names a counterparty and waits inawaiting_counterparty until that agent accepts in their own view; only then can you approve it, and approving reassigns both sides atomically. Time-off approvals mark the overlapping assignment as time off so adherence does not penalize the absence. Leave a note on every decision: it travels with the row and is the difference between an auditable queue and a mysterious one.
Read intraday adherence and exceptions
On the day, the Adherence tab is the live wallboard: it polls every 15 seconds and shows scheduled-vs-required staffing and the current real-time adherence breaches. When a deviation was not the agent’s fault (a trunk outage, an all-hands), the agent files a carve-out and it lands in the Exceptions tab; approving it excuses those minutes from adherence scoring, denying keeps them counted. Decide each row once and note why. For the full intraday loop, including the team roll-up and the agent-side view, see Intraday adherence and requests.5. When to graduate to the API
Every tab in this tutorial drives the same endpoints the API exposes under/api/v1/wfm/*. Stay in the console while your process is still forming; move to the API when you want to automate it:
- Scheduled automation. Run forecast recompute and generation from your own cron or tooling after history lands, instead of clicking Recompute now each morning.
- Your own manager dashboards. The adherence-exceptions trends endpoint feeds summary cards outside Orbit; the real-time adherence stream pushes breaches over server-sent events.
- Payroll integration. Pull the timesheets payroll CSV from your payroll run rather than exporting by hand.
- Explicit error handling. Code the two generation-path failures:
409 SCHEDULE_CONFLICTfor a colliding booking and422 VALIDATION_ERRORnaming the missing required skills, so a skill gap becomes a registry fix instead of a silent gap.
See also
- Workforce-management workflows — the concept-to-API narrative for every step above
- Forecasts and the staffing optimizer — the Erlang-C deep dive behind the read tabs
- Intraday adherence and requests — the day-of loop in full
- Workforce Management API — endpoint reference for
/api/v1/wfm/*