XLA is an Experience Level Agreement. Your PSA holds the SLA — the contractual promise you sold, measured after the fact for billing and renewals. Thread’s XLA measures the same clocks against what the customer actually experienced: it stops on a real human reply rather than an auto-acknowledgement, pauses while Triage Agent is still working the conversation, and respects your closures. Keep the SLA in the PSA as the contract; run the desk on the XLA. Configurations were renamed from SLA in Q3 2026 — existing profiles and timers carried over unchanged.
Before you start: business hours
Each XLA profile runs its clock in one of two modes:
If you plan to use During Business Hours Only on any profile, configure business hours first
under Workspace Settings → Business Hours. They can be set workspace-wide, per team, or per
client — the most specific wins.
Holidays and custom closures are respected automatically and
count as fully closed days, so a target stays realistic instead of quietly punishing your team over
a holiday. A 24/7 profile never looks at business hours or holidays at all.

Create an XLA profile
Profiles live under Admin → XLAs. Each one bundles four things: who it applies to, which clock it runs on, how long each priority gets, and which statuses start, stop or pause the clock.1
Click Create XLA

2
Name it for the experience, not the contract
Prefer something like VIP — fast lane over a contract tier. The name is internal.
3
Choose when the XLA applies
Add conditions — agreement, agreement type, board, company, company type, contact, contact type, or location. A ticket must match all of them. Leave it empty and the profile matches every ticket.Thread blocks saving a profile whose conditions and business-hours setting exactly duplicate another profile’s, since a ticket can only ever match one XLA.
Which conditions you’re offered depends on your PSA. HaloPSA hides company type, contact type and location; Autotask hides agreement and contact type, because those fields don’t sync cleanly.
4
Pick the timer mode
During Business Hours Only or 24/7 — All Hours.

5
Set response and resolution targets per priority
One card per priority level, in minutes, hours or days. Think of these less as contractual deadlines and more as how long before this starts feeling slow to the customer.Resolution time must always be longer than response time on the same card.

Timer controls
Below the targets, three status-mapping sections control the clock.
The response timer also stops automatically the moment a client-facing reply is sent — you
don’t need a status for that. The moment a human responds the experience has improved, so the clock
reflects it immediately.

- Enter a stop-response status and response time is done. Reopening restarts response fresh; it doesn’t touch resolution.
- While Triage Agent is actively working a conversation, both timers pause automatically — no configuration, universal. The customer is being helped.
- Reopen after Done and resolution resumes where it left off — the closed period doesn’t count against you. Response starts over, capped so it can never land later than the resolution deadline.
- A stop always wins over a pause if both would apply.
Profile order matters
The XLAs list ranks every profile top to bottom. When a ticket could match more than one, the first match wins — so put narrow rules (a VIP client, a specific board) above your general fallback. Drag rows to reorder. The list marks the highest- and lowest-priority ends, and a changed order flags itself so you don’t forget to save — reordering recalculates every affected ticket’s timers.
Saving and validation
Edits across the whole list — reorders, edits, deletes — are staged as a draft and applied together when you hit Save on the list page. Saving inside the profile editor only stages your changes back to that draft. Before staging, Thread checks that the profile has a name, its conditions don’t exactly duplicate another’s, the priority/source matrix has no blocking errors, and both Stop Resolution and Pause Resolution have at least one status.Source-based overrides
A phone call and an email aren’t the same experience even when they’re triaged the same priority. Turn on source overrides and each priority gets its own card with:- A default response/resolution target for all sources — the fallback.
- Add override to pick a ticket source synced from your PSA (email, phone, portal) and give it its own targets.

How XLAs appear in Inbox
This is where the philosophy pays off — a continuously updating read on experience health rather than a pass/fail check at the deadline. Once enabled, technicians see it in two places on any ticket list in List display mode.Countdown column
A live countdown to the next due date — response or resolution, whichever is active — refreshed roughly every 30 seconds and business-hours aware. “3h left” means three business hours.
Grouping by XLA
In the view’s Display menu, Grouping offers Date (default) or XLA, which buckets tickets by experience health: Breached · High risk · Moderate risk · Low risk · Resolved · No XLA Risk thresholds sit at the halfway and three-quarter marks of the target window — well before a breach — so a technician can see a ticket sliding toward High risk and step in while the experience can still be saved. Groups re-bucket live as thresholds are crossed, no refresh needed.XLA grouping is only offered in List mode. Switching to chat/inbox mode falls back to date
grouping automatically.


The ticket stepper
Every ticket with an active XLA shows a stepper reflecting elapsed and remaining time, its progression through the lifecycle, and a breached-when-done state if it resolved after the deadline had passed. Hovering names the XLA profile driving that ticket’s deadlines, so it’s clear which policy applied.Alert on XLAs with a Flow
Flows can react to XLAs directly. When creating a Flow, choose the trigger “A Thread XLA is running out of time.”1
Pick the channel
Same as any other Flow — the Slack or Teams channel it posts into.
2
Set a percent-remaining threshold
For the response timer, the resolution timer, or both independently — for example, fire when 20% of the response target is left.

- It checks roughly every 5 minutes, so a fire can land a few minutes either side of the exact threshold. Near-real-time, not precise.
- Each threshold fires once per ticket timer. Turning on a new XLA flow doesn’t flood you: it arms first, silently marking anything already past the line as handled, and only fires on tickets that cross afterwards.
- It respects the same business-hours math — on a business-hours profile, “20% remaining” is 20% of business time.
- Source overrides are respected, so the alert is calculated against whichever target actually applies to that ticket.
Known limitations
See XLA updates in the changelog.