Skip to main content

The Zendesk Skills Dataset: What Syncs, When, and the Widgets Built on It

The Zendesk Skills Dataset: What Syncs, When, and the Widgets Built on It

Zendesk skill-based routing attaches skills to tickets (Spanish, Billing, EMEA) and to agents, and routes each ticket to an agent who holds every skill it needs. Qvasa syncs that data and builds live supply-and-demand analytics on it: how much work needs each skill right now, how many skilled agents are online for it, and where the two do not line up. This guide is the reference for the dataset: what Qvasa keeps, which settings turn it on, how and how often each part syncs, where the history starts, the filters, and every widget built on it.


Why This Exists

A queue tells you how many tickets are waiting; it does not tell you whether the agents online can take them. Skills do. Once the data is in Qvasa you can ask "Spanish demand versus Spanish capacity, right now", "which skill is underwater", and "is Spanish work actually landing on Spanish-skilled agents". The widgets answer those per skill; this article is what each number is made of.


Before You Start

  • Zendesk Enterprise (or Suite Professional and above). Skill-based routing is a Zendesk Enterprise feature; without it there is no skill data to sync.

  • Qvasa enables the feature internally first. Then an account admin turns on Sync Zendesk Skill-Based Routing Data into Qvasa under Settings, in the Zendesk Skill-Based Routing section. The setting's own text states the cost: about 4 Zendesk API calls an hour for the catalog plus a nightly snapshot, and ticket-skill changes riding on the ticket audits Qvasa already pulls.

  • Live Ticket Skill Updates is a second, optional setting. Zendesk sends no webhook when a ticket's skills change with nothing else on the ticket changing, so without this setting those skill-only changes are not captured. With it, Qvasa polls Zendesk for them.

  • Omnichannel queues must be on too for most of the widgets: the demand side of every skill metric is read from tickets waiting in queues, so the supply-and-demand widgets are offered only when both features are enabled. The agent status families need agent status tracking; the Talk families need Talk queue metrics.


Step 1: Know What Qvasa Keeps

Dataset

What it is

Kept as

Skill types and skills

The catalog: each type (Language, Region, Tier) and the skills under it (Spanish, EMEA). Zendesk calls them attributes and attribute values.

A current snapshot. A skill Zendesk deletes is kept but marked archived, so old history still names it.

Agent skills

Which agents hold which skills.

Current state only. Qvasa keeps what each agent holds now, not when they gained or lost a skill.

Ticket skill history

Which skills each ticket required, from when, until when. A ticket can require several skills at once, each with its own start and end.

History. One row per ticket and skill and stint; an open row means the ticket still requires the skill.

Offer skills

When routing offers a ticket to an agent, the skills that drove the match and the agent's priority for each (NORMAL, HIGH, EXPERT).

One row per offer and skill, read from the ticket's routing audit events.

Skill mismatches

A ticket that ever required a skill its assigned agent does not currently hold.

One row per agent and missing skill, with a count on the ticket. A snapshot, because agent skills are current state.


Step 2: Know How and When It Syncs

Data

How Qvasa gets it

How often

Skill types and skills

Zendesk's incremental routing attribute feeds, plus a full snapshot that reconciles anything missed and fills in skills first seen on a ticket.

Nightly, both. A skill Qvasa meets on a ticket before the catalog knows it is created as a stub and completed by the next snapshot.

Agent skills

A full snapshot of every agent's skills, plus the live feed below when it is on.

Nightly snapshot. With Live Ticket Skill Updates, agent skill changes also land within about a minute.

Ticket skills (with another ticket change)

The ticket audit pipeline: the same audits Qvasa already syncs carry the ticket's current skill set, and Qvasa records what was added and removed.

Within a second of the audit, for the tickets Qvasa syncs.

Ticket skills (skill-only changes)

Live Ticket Skill Updates polls Zendesk's routing event feed.

A tick every minute, with faster follow-ups while there is a backlog. Off unless the setting is on.

Offer skills

The ticket audit pipeline, from each routing offer event.

With the audit.

The two ticket-skill sources write to the same history and never double count: a ticket has at most one open row per skill, and whichever source reports a change first records it. The row remembers which source wrote it.


Data Start and Backfill

  • Nothing is backfilled. Zendesk's routing feeds are not available in arrears, and the audit pipeline only reads forward.

  • The catalog and agent skills are complete from the first sync, because they are snapshots of the current state. They are refreshed nightly from then on.

  • Ticket skill history and offer skills start the day the setting was enabled for your account. A ticket that already required Spanish on that day gets its open row the first time an audit or poll sees it, dated from that observation, not from when Zendesk added the skill.

  • Skill-only changes start the day Live Ticket Skill Updates was enabled. Before that, a skill added or removed with no other ticket change was not captured.

  • Ask Qvasa support for your account's enablement dates if you need them.


Step 3: Filter by Skill

Filter

What it matches

Agent Skills (and Exclude Agent Skills)

Agents who currently hold one of the named skills. Current state, like the data behind it.

Ticket Skills (and Exclude), currently required

Tickets that require one of the named skills right now: an open row in the ticket skill history.

Ticket Skills (and Exclude), ever required

Tickets that required one of the named skills at any point, whether or not they still do.

Skill Types (and Exclude)

A whole type at once: tickets that ever demanded any skill of the type. On the all-skills table it includes or excludes whole sets of rows by type, and on a Metric Matrix it prunes the skill axis.

Skills (Table Filter)

Rows of the two skills tables only, picked as "Skill Type: Skill". It never touches ticket data.


Step 4: Find the Widgets

Every skill metric comes in a pair. The by skill version splits one skill type you choose in the widget's configuration (Language into English, Spanish, French); the by all skills version shows every skill of every type side by side, labeled "Skill Type: Skill", so a Language and a Tier can sit in one chart. They are donut charts; search the Donut chart picker for by skill to list them.

Supply is always read from the agent's skills; demand is always read from the ticket's required skills. An agent holding several skills counts under each of them, so the slices of a supply chart deliberately do not add up to a headcount. The live families show the moment you load the widget and cannot be moved back in time; the historical ones follow the dashboard's date range.

Family

Metrics (each as "by skill" and "by all skills")

What they answer

Demand, live

Outstanding tickets (all channels); outstanding messaging tickets; outstanding messaging, email support and Talk tickets in queues; total messaging demand; worked messaging tickets

How much work needs each skill right now: waiting in a queue, being worked, or both.

Supply, live

Agents online on any channel, in messaging, in email support, in Talk; live messaging agents online, busy, available, with headroom

How many skilled agents are signed in for each skill, and how many of them can still take a conversation.

Capacity in use

Live messaging occupancy count and rate; average messaging occupancy rate (historical)

How saturated each skill's messaging bench is: occupied slots over the slots of the online agents with that skill.

Alignment, live

Messaging demand minus capacity gap; worked messaging skill match rate

The headline shortfall or slack per skill, and whether the work for a skill is actually on agents who hold it.

Coverage, live

Agents online per queued ticket; live skill coverage in messaging, email support and Talk

Skilled agents online divided by tickets waiting that need the skill, overall and per channel.

Agent status

Agents in a unified status; agents in productive statuses; total, average and count-entered time in a unified status; the same for a status collection

The agent status metrics, split by the skills the agents hold.

Productivity, historical

Public comments per email support online hour; time from the last public agent comment to the end of Open

Email throughput and follow-through, by the skills of the agents who did the work.

Talk, historical

Calls completed, missed, abandoned; miss rate; abandonment rate

Phone outcomes by the skills the calls required.


Step 5: Use the Two Skills Tables

The same metrics are also columns on two configurable tables, which is the easiest way to read supply against demand: one row per skill, one column per metric, sortable. Zendesk Skills (the all-skills table) lists every skill of every type, labeled "Skill Type: Skill", and takes the Skill Types and Skills table filters to narrow its rows. Zendesk Skill Types (the by-type table) lists the skills of one type chosen in its configuration. Each column is the same metric as its standalone donut, plus a Live Productive Agents column, and every column header's ⓘ carries the metric's full description.

Read across a row: Waiting Tickets is demand, Agents Online is supply, Occupancy is how full those agents are, Demand minus Capacity is the gap (positive means a shortfall), and Agents Online per Queued Ticket is the coverage ratio. A skill with supply and no demand shows an infinite ratio; one with demand and no supply shows 0.


For AI Agents and the API

  • The widgets are the donut charts whose names end in _by_zendesk_skill, _by_zendesk_skill_type or _by_all_zendesk_skills; the tables are zendesk_skills_table and zendesk_skill_types_table. The by-skill variants take component_configuration_zendesk_skill_type_id.

  • The filters are filters_zendesk_skill_types (and filters_exclude_zendesk_skill_types), filters_zendesk_skill_ids (table rows), and the agent and ticket skill filters listed in the filter catalog.

  • Each widget's catalog description states whether it is live only; live metrics return the state at the moment of the call.


FAQ

  • When did my skill data start? The day Sync Zendesk Skill-Based Routing Data was enabled on your account; skill-only ticket changes from the day Live Ticket Skill Updates was enabled. Nothing earlier is backfilled.

  • Can I see when an agent gained a skill? Not yet: agent skills are a current-state snapshot. Ticket skills do have history.

  • Why do the slices of a supply chart add up to more than my agents? An agent holding three skills counts once under each. Read each slice as "agents available for this skill".

  • Why are two skills called General? Skill names are unique within a type, not across types. The all-skills table and charts label every skill "Skill Type: Skill" to keep them apart.

  • A skill shows demand but no agents. No agent currently online holds it. The coverage ratio reads 0 and the gap is positive; that is the signal the alignment widgets exist for.

  • Why does a skill Zendesk deleted still appear? It is archived, not removed, so historical rows that named it still make sense. Archived skills are excluded from live supply.


Did this answer your question?