Skip to main content

Supervisor coaching: plans, templates, and effectiveness reporting

A QA score identifies a problem. A coaching plan turns it into a tracked improvement cycle: a goal, sessions against it, a close-out judgement, and a measured before/after read on the agent’s metrics. This guide covers the supervisor side of that loop — the plan workspace at Voice → Coaching Plans, the snippet library at Voice → Coaching Templates, and the effectiveness report that tells you whether the coaching actually moved the agent’s numbers. Working knowledge of the QA program helps. If the auto-coaching trigger is what assigned the plan in the first place, read the auto-coaching section in Build a contact-center QA program first — this guide deliberately does not repeat it.

1. The coaching loop

Plans enter your workspace two ways:
  • Auto-assigned — a QA score below the coaching threshold, a detractor CSAT response, or a sustained intraday adherence breach writes a plan automatically. These carry a per-source tag on the goal ([auto-coaching:qa_score], [auto-coaching:csat], [auto-coaching:adherence]) and the system:auto-coaching sentinel owner. See the auto-coaching loop in the QA program guide.
  • Supervisor-authored — you create the plan yourself from the Coaching Plans workspace or the API, with your own goal statement.
Once a plan exists, both kinds look and behave identically in the workspace. You attach coaching sessions to it (per-call coaching notes link to the plan), edit the goal or deadline while it is active, and close it with an outcome when the cycle ends. Treating auto-assigned plans as first-class citizens in the normal list is the point: the machine spots the pattern, the supervisor owns the follow-through.

2. Author a plan

Open Voice → Coaching Plans and choose New plan, or post to the API:
Three fields define a plan:
  • agent_user_id — the agent the plan addresses (required).
  • goal — a free-form improvement statement, up to 2,000 characters. Write it so the close-out judgement is decidable: “Cut AHT by 20%” is closable; “Get better at calls” is not.
  • due_at — optional target completion date (ISO 8601). Omit it for an open-ended plan you close manually.
The response carries the new plan (201) with status: "active" and you as owner_user_id. To adjust an active plan, PUT /voice/coaching-plans/{id} with any subset of agent_user_id, goal, due_at — a 409 PLAN_CLOSED comes back if the plan already closed.

3. Work the plan list

Voice → Coaching Plans lists active plans first, then closed ones, ordered by due date. Filter by agent, owner, or status from the dashboard, or over the API:
GET /voice/coaching-plans/{id} returns one plan. Listing filters are agent_user_id, owner_user_id, status (active | completed | cancelled), and limit (default 50, max 200).

4. Close with an outcome, then read the effectiveness report

A plan closes with two things: a terminal status and your judgement of what happened:
  • statuscompleted (default) or cancelled.
  • outcomemet, partial, or missed. Required when closing; this is your call, and it stays a supervisor judgement by design.
  • outcome_notes — optional narrative, up to 2,000 characters.
Closing the same plan twice in the same terminal state returns 200 rather than an error, so a double-click is safe. Once closed, a plan cannot be edited or re-closed to a different status (409 PLAN_ALREADY_CLOSED). Your outcome judgement is subjective. The effectiveness report is the objective complement — it compares the agent’s real metrics before the plan against the window after it:
For each of three KPIs the report returns the before value, the after value, the delta, the percent change, and a direction (improved / regressed / flat / insufficient_data):
  • AHT (aht_seconds) — talk-only average handle time; lower is better.
  • First-contact resolution (fcr_pct) — share of calls where the same caller did not call back within fcr_window_hours (default 24); higher is better.
  • CSAT (avg_csat) — mean 1–5 score from post-call surveys; higher is better.
Windows are symmetric, window_days long each (default 14, max 90). The before window is the span immediately preceding the plan’s creation, so the coaching period never pollutes the baseline. The after window anchors on closed_at for closed plans; for a still-active plan it anchors on creation, giving you in-flight progress (the response flags this with in_progress: true). A KPI with no data in either window returns insufficient_data instead of a misleading zero delta. Use this when you close: a plan you marked met that still shows regressed AHT deserves a look at what actually changed — and a plan you are tempted to extend might already show the improvement you were waiting for.

5. Curate the template library

Voice → Coaching Templates is the tenant’s curated library of coaching snippets — the vetted phrases supervisors drop into coaching notes and whisper to agents mid-call so floor coaching stays on-brand across shift changes. The coaching-note composer on a call’s detail page offers these as a picker, so a well-structured library pays off every time a supervisor writes a note.
Each template is a short snippet: name (up to 120 characters, unique per tenant), body (up to 500 characters), a category, and an optional locale. Categories:
  • de_escalation — calm an upset caller
  • discovery — open-ended probe questions
  • objection — handle pricing or timeline pushback
  • compliance — required disclosure prompts
  • closing — ask-for-the-sale and wrap-up moves
  • coaching — direct guidance to the agent (“slow down”, “pause”)
  • other — catch-all
Keeping coarse categories (coaching for agent-behavior guidance versus de_escalation/discovery/objection for caller-facing moves) and fine-grained ones (compliance disclosures, closing moves) in one flat enum keeps the picker’s filter simple — the whole library is one flat list a supervisor scans by category. Edit with PATCH /voice/supervisor/coaching-templates/{id} (any subset of fields; set is_active: false to archive rather than delete). DELETE removes a template outright. The list defaults to active templates only; pass include_archived=true to audit the archive. The library caps at 1,000 templates per tenant (409 TEMPLATE_LIMIT_EXCEEDED), and a duplicate name returns 409 TEMPLATE_NAME_CONFLICT.

6. Who sees plans, who edits templates

The two surfaces have deliberately different role gates:
  • Plans: owners, admins, and supervisors can create, edit, close, and read any plan. Agents see plans addressed to them and their own effectiveness report; an agent reading another agent’s plan gets 403.
  • Templates: only owners and admins curate the library — a supervisor without the admin role gets 403 at the route layer. This keeps the vetted-phrases list tight; supervisors consume the library from the coaching-note composer.
Agents acknowledging individual coaching notes on their calls is a related but separate surface (per-call coaching notes, not plans).

7. Example end-to-end flow

A supervisor’s week with the loop closed:
  1. An evaluation on agent user_agent_12 finalizes at 65 — below the 70 threshold — and the platform writes an auto-assigned plan tagged [auto-coaching:qa_score].
  2. The supervisor opens Voice → Coaching Plans, sees the new active plan at the top of the list, and edits the goal to name the actual gap.
  3. Reviewing the flagged call, the supervisor writes a coaching note on the call’s detail page and drops in the “Ask discovery question” snippet from the template picker rather than free-typing it.
  4. A week later the supervisor runs GET /voice/coaching-plans/{id}/effectiveness — AHT improved 12%, FCR flat, CSAT up — and closes the plan as met with a short note. The response cites whichever KPI moved, so the close-out notes read like evidence, not vibes.

Adding this page to your program

Coaching plans close the loop that QA scoring opens: rubric → score → plan → measured outcome. Wire the template library once, and every supervisor working a note or a whisper draws from the same vetted set.

See also