All segments

Zendesk Service Desk: Queues, SLAs and the Split That Breaks

Zendesk service desk setup for ecommerce: queue structure, SLA policies that hold during a peak, and splitting internal from customer requests.

  • Published
  • Reading time 10 min read
  • Author Nafiul Hasan
Zendesk Service Desk: Queues, SLAs and the Split That Breaks. Diagram: the step that changes the price. RUN Zendesk Service Desk: Queues, SLAsand the Split That Breaks pointerflow.com

Short answer

A Zendesk service desk for ecommerce needs three things before launch: views split by priority and channel rather than by agent, SLA policies tiered by ticket priority rather than one policy for everything, and a separate group and form for internal requests so warehouse and finance tickets never sit in the customer queue.

What a Zendesk service desk needs before you touch a single trigger

A Zendesk service desk is only as good as the structure underneath the ticket list. If you’re running Zendesk for a brand doing $3M–$30M in revenue on Shopify Plus or a comparable subscription platform, the software isn’t the problem — the queue design is. Most teams inherit a Zendesk instance built for a much smaller support volume: one group, one SLA policy, one view per channel. That setup holds fine at 40 tickets a day. At 400 tickets on a launch or peak sale day, it produces the same failure every time: urgent tickets sit next to newsletter unsubscribe requests in the same queue, agents work top-down by created date instead of by priority, and the SLA report shows breaches on tickets nobody actually needed to answer fast.

This article covers the operator layer: how to structure queues, set SLA policies that hold under load, and separate internal requests from customer tickets. It assumes you already have a Zendesk instance provisioned and agents with seats — it doesn’t cover the initial account setup or Zendesk’s pricing tiers.

Before you start, you need three things confirmed:

  • Agent groups mapped to real teams. Not “Support” as one blob — at minimum, a customer-facing group and an internal-requests group, ideally split further by channel or specialism (returns, order issues, general).
  • A priority definition everyone agrees on, written down somewhere agents can check. Zendesk’s four priority levels (Low, Normal, High, Urgent) mean nothing until you define what triggers each one for your business.
  • A business hours schedule that reflects peak staffing, not your normal week. If you add temporary agents for a sale event, the schedule needs updating before the event, not during it.

A team running under 50 tickets a week through one shared inbox does not need this structure yet — a single view and one SLA policy is the right amount of complexity at that volume, and adding tiers just adds admin overhead nobody uses. It’s also not for a team without at least one admin who can edit triggers and automations directly, because every step below depends on someone owning that configuration.

How to build queue structure that survives a peak

Step 1: Group agents by function, not by shift

Create groups in Admin Center under People > Team > Groups. The default Zendesk instance often has a single “Support” group with every agent in it — replace that with groups that map to how work actually splits: Customer Support, Returns & Refunds, Order Issues, and a separate Internal Requests group covered later. Group membership determines what an agent can see in default views and what skills-based or omnichannel routing can assign to them, so this is the step everything else depends on.

Step 2: Build views around priority and status, not channel

Views live under Admin Center > Workspaces > Agent tools > Views, or directly from the Views icon in the agent interface. The default views Zendesk ships with — “Your unsolved tickets,” “Unassigned tickets” — are a starting point, not a working queue. Build views filtered on: group, status (New, Open, Pending), and priority, ordered so Urgent and High sort to the top. A common working set for an ecommerce support team is four views per customer-facing group: New & Urgent, New & High, Open (all priorities), and Pending (waiting on the customer). Agents should never need to scroll through Normal-priority tickets to find the Urgent one that came in five minutes ago — the view does that sorting for them.

Step 3: Use ticket forms to route at the point of entry

Ticket forms (Admin Center > Objects and rules > Tickets > Forms) determine which fields a requester sees when they submit through the Help Center, and which fields agents see once it’s a ticket. Set up a form per request category — Order Issue, Returns, Product Question, Internal Request — each with the fields relevant to that category. A returns form that asks for order number and reason code up front means an agent isn’t messaging back and forth to get information that should have been captured at submission.

Step 4: Route on form and field values with triggers

Triggers fire on ticket creation or update and are where form choice becomes group assignment. A trigger reading “Ticket Form is Returns” can set the group to Returns & Refunds and the priority to Normal by default, while a trigger reading “Ticket Form is Order Issue AND tags contains damaged” can set priority to High automatically. This is what makes the queue self-sorting instead of relying on an agent to triage every incoming ticket manually.

Step 5: Add skills or omnichannel routing once volume justifies it

Skills-based routing and omnichannel routing (both under Admin Center > Objects and rules > Routing) assign tickets to specific agents based on skill tags or current workload, rather than leaving agents to self-select from a shared view. This is worth setting up once a group has more than roughly six to eight agents — below that, a well-ordered shared view is usually easier to manage than routing logic that needs its own maintenance.

How to set SLA policies in a Zendesk service desk that don’t collapse at volume

Step 6: Build SLA policies per priority tier, not one blanket policy

SLA policies live under Admin Center > Objects and rules > Business rules > SLA policies. The single biggest structural mistake is one SLA policy applied to every ticket. Build at minimum three tiers:

PriorityFirst reply time targetNext reply time targetTypical use
UrgentFastest tier you can staff toFastest tier you can staff toPayment failures, fraud flags, non-delivery on a time-sensitive order
HighA meaningfully wider band than UrgentWider againDamaged goods, wrong item shipped, escalated complaints
NormalYour standard published response commitmentStandardGeneral questions, order status, product questions
LowWidest, or excluded from SLA entirelyWidest, or excludedInternal requests, non-urgent feedback

The table’s point isn’t the exact numbers — those depend on your staffing and what you’ve told customers to expect — it’s that each tier needs a distinct target, or “Urgent” and “Normal” are indistinguishable to the SLA engine even if agents know the difference in their heads.

Step 7: Attach a business hours schedule to every policy

Every SLA policy has a business hours option. If a policy doesn’t reference a schedule, its clock runs continuously, including overnight and weekends when you may not be staffed. If it does reference a schedule, the clock pauses outside those hours. Decide deliberately per tier: an Urgent policy covering fraud or non-delivery might reasonably run 24/7 if you have any after-hours coverage at all, while a Normal policy should usually follow your actual staffed hours — otherwise every ticket that arrives at 11pm shows as aging toward breach before an agent has even started their shift.

Step 8: Set the metrics that matter, not just first reply time

SLA policies can track First Reply Time, Next Reply Time, Periodic Update, Requester Wait Time and Agent Work Time. Most teams configure only First Reply Time and stop there. Requester Wait Time matters more for ecommerce support than it gets credit for — it measures total time the customer has spent waiting across the whole conversation, not just the first response, which is what a customer actually experiences as “how long this took.”

Step 9: Set an automation that flags tickets before they breach, not after

Automations run on a schedule (typically hourly) rather than on an event. Add one that checks for tickets where the SLA has reached a percentage of its target and reassigns or tags them for supervisor attention. Without this, the first sign of trouble is the breach report, generated after the ticket has already missed its target and the customer has already noticed.

Where internal requests should never touch the customer queue

The single most common queue-design mistake in ecommerce Zendesk setups is routing internal requests — a warehouse team flagging a mis-pick, a finance team asking about a batch of refunds, a marketing team requesting a discount code exception — through the same group as customer tickets. Three things go wrong when this happens:

  • SLA metrics get distorted. An internal request answered in four hours looks like a slow response on the same report as customer tickets answered in twenty minutes, and averages blend the two together.
  • Agents triage the wrong thing first. A ticket that reads “need the refund report for October” competes for attention with a customer asking about a damaged order, and there’s no structural reason the agent picks correctly.
  • Sensitive internal information ends up in a customer-facing audit trail. If your Zendesk export or a customer-facing integration ever surfaces ticket content, internal financial or operational detail shouldn’t have been sitting in the same object type as customer conversations.

The fix is a dedicated internal ticket form and a dedicated group, excluded from customer-facing SLA policies and reporting. Staff who only need to submit or watch internal requests — warehouse leads, for instance — are a good fit for light agent seats rather than full agent seats: they can view and comment but can’t be assigned customer tickets, which keeps the separation structural rather than dependent on people remembering not to reply in the wrong place.

The step most teams get wrong

Almost every Zendesk service desk audit finds the same gap: SLA policies are built correctly, priority tiers exist, groups are separated — and then the escalation path when an SLA is about to breach doesn’t exist as a trigger or automation at all. Teams build the measurement layer and skip the response layer. The result is a dashboard that accurately reports a breach happened, with nothing that acted to prevent it. If you build one thing from this article beyond the basic tiers, build the automation in Step 9 — it’s the difference between an SLA policy that’s a target and one that’s a report card written after the fact.

How to verify the setup actually holds

Don’t trust the configuration screens — test with real ticket volume before a peak event, not during one. Submit test tickets through each form and confirm they land in the correct group with the correct default priority. Check the SLA policy’s “Applies to” conditions actually match the priority and group combinations you expect — a common error is an SLA policy whose filter conditions never quite match any real ticket, so it silently applies to nothing. Pull the SLA report for a normal week and confirm the breach count is close to zero; if it’s already high before a peak, the targets or the routing are wrong, and a sale day will only make the gap larger, not smaller.

Run this check again after any change to groups, forms or routing — a trigger edited for one workflow can silently break the conditions another trigger depends on, since Zendesk triggers fire in a defined order and an earlier one can change a field a later one filters on.

Where AI support fits into this structure

Queue and SLA structure is not where an AI agent belongs first. A well-structured Zendesk service desk is the precondition for AI handling anything safely — a bot answering from the same undifferentiated queue as an Urgent fraud ticket doesn’t know the difference between the two any better than an untrained agent would. Order-status lookups and returns-policy questions are reasonable candidates for automation once your priority and routing structure is solid enough to keep AI-handled tickets separate from anything that needs a human judgement call — refunds without a clear policy match, and anything where a wrong answer costs more than the minute it would take a person to check. Getting the queue and SLA structure right first is what makes that handoff safe rather than a guess; this is fundamentally a customer service automation problem, and it’s covered in more depth at /services/customer-service-automation.

Sources

  • Gorgias, customer case studies referencing support ticket volume and response times — vendor-reported, cited for context on comparable helpdesk platforms rather than as an independent measurement of Zendesk.

Frequently asked

How many SLA policies does a Zendesk service desk need?

Most ecommerce teams need three to five: one per priority tier (urgent, high, normal, low), sometimes split further by whether the requester is a paying customer or a prospect. A single SLA policy applied to every ticket either misses your real promise on urgent cases or makes low-priority tickets look breached when they were never meant to move that fast.

Should internal requests go through the same Zendesk instance as customer tickets?

Yes, but never the same group or queue. Route internal requests — a warehouse team flagging a mis-pick, finance asking about a refund batch — through a separate ticket form and group with its own SLA policy, or they compete with customer tickets for the same agents and skew your first reply time metric.

What's the difference between a Zendesk view and a Zendesk queue?

Zendesk doesn't have a formal object called a queue; a queue is the working name for a saved view an agent works from, typically filtered by group, priority and status. When people say 'set up queues' in Zendesk, they mean build the views agents actually triage from, not the default 'Your unsolved tickets' list.

How do Zendesk SLA policies behave during a sale-day spike?

SLA policies keep ticking against the clock regardless of volume — Zendesk doesn't pause first reply time because agents are overloaded. Without a defined escalation path and pre-agreed business hours that reflect peak staffing, every low-priority ticket that ages past its target shows as a breach, which floods the SLA breach report and hides the tickets that genuinely need attention.

Can Zendesk route tickets by order value or customer tier?

Not natively without a ticket field carrying that data. Zendesk's own routing (omnichannel routing or skills-based routing) reads ticket fields and agent skills, not your order history, so a field like 'customer tier' has to be populated by a trigger reading a synced attribute — usually from a Shopify or subscription-platform integration — before routing can use it.

What ticket priority levels does Zendesk support by default?

Zendesk ships four: Low, Normal, High and Urgent. Ecommerce teams commonly map these to concrete definitions — Urgent for payment or fraud issues, High for undelivered or damaged orders, Normal for general questions, Low for internal or non-time-critical requests — because an unmapped priority field just becomes agent guesswork.

How do you stop agents from missing SLA breaches?

Set an automation that fires at a percentage of the SLA target — commonly when a ticket is close to breaching — to reassign or flag it, rather than relying on agents to watch a countdown. A trigger firing only after the breach has already happened tells you what went wrong, not how to stop it.

Does Zendesk support business hours for SLA calculation?

Yes, through business hours schedules under Objects and rules. An SLA policy referencing a schedule pauses the clock outside those hours; one that doesn't reference a schedule runs 24/7. Teams that forget to attach a schedule often see 'breached' SLAs on tickets that came in overnight with no agent rostered.

What's a light agent in Zendesk and does an ecommerce team need one?

A light agent can view tickets, add internal notes and be CC'd, but can't be assigned tickets or change ticket properties. It suits warehouse or logistics staff who need visibility into a delivery issue without becoming part of the support queue — cheaper than a full agent seat and it keeps them out of SLA-bound assignment.

How do you separate warehouse or fulfilment requests from customer tickets in Zendesk?

Create a dedicated ticket form (for example 'Internal — Fulfilment') with its own fields, route it to its own group through a trigger on form ID, and exclude that group from customer-facing SLA policies. Anyone submitting through the customer-facing channels never lands in that group, and internal requesters never see a customer-facing SLA countdown.

What happens to SLA policies when a ticket changes priority mid-conversation?

Zendesk recalculates the applicable SLA target from the point the priority changes, using elapsed time already spent against the new target. A ticket escalated from Normal to Urgent after two hours doesn't reset to zero — it inherits the clock, which is why priority changes need a clear rule for who is allowed to make them.

Can one Zendesk SLA policy cover multiple brands or storefronts?

It can, but doing so hides brand-specific performance inside one blended average. Most multi-brand ecommerce operators add a brand or organization condition to their SLA policy filters, or run a separate policy per brand, so a slow brand doesn't get masked by a fast one in the same report.

Next step

Is this your customer service ai problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →