This is an advanced lesson. You can run Horizon successfully for months without touching time estimate policies — the baseline policy ships with sensible defaults, and most accounts only revisit this once NextAvailable assignment is firmly in place and the team wants to sharpen accuracy. Skip this until everything in the previous lessons is stable and producing real data you'd like to tune against.
Problem: NextAvailable assignment uses a duration estimate to ask "how long will this ticket take?" and pick the user with a fitting open window. If every ticket gets the same default duration — say 60 minutes — then a 5-minute password reset and a 4-hour project both look the same to the scheduler. Calendar fit decisions are coarser than they could be.
Horizon's answer: Time Estimate Policies. A policy assigns a duration estimate to a ticket based on its characteristics — "password reset → 15 min", "new user provisioning → 90 min", "backup investigation → 2 hours". NextAvailable pulls from the policy that applies to the team handling the ticket and gets a useful number instead of a flat default.
You don't need time estimate policies to run NextAvailable — every account ships with a baseline policy that returns a single default duration. You add tuned policies (and rules within them) when you want assignment decisions to reflect ticket-specific reality.
Open the admin panel and navigate to Components → Time Estimates. You'll find:
| Page | What it does |
|---|---|
| Time Estimate Policies | the policies themselves — list, create, edit |
| Teams (relation manager on each policy) | which teams use this policy |
Every account has a baseline policy that ships with the system. It cannot be disabled or deleted — it's the ultimate fallback when a team has no specific policy assigned. You can edit its default duration and add rules to it.
When NextAvailable (or anything else) asks "how long will this ticket take?", Horizon resolves the estimate in three layers:
default_duration_minutes.The resolution is fully deterministic: same ticket, same policy state, same answer.
A policy has:
A rule has:
null conditions mean catch-all.Don't create custom policies on day one. Use the baseline with a sensible default duration (e.g. 30 or 60 minutes). Watch how NextAvailable performs with that. Then, if you observe specific patterns where the wrong duration is causing bad assignments, add rules to the baseline — or create a team-specific policy if a particular team's work shape is fundamentally different from the rest of the org.
Common reasons accounts add custom policies:
If the baseline policy plus a handful of well-targeted rules does the job, leave it at that. Layered policies are a maintenance cost.
When two rules could match a ticket, the one with more specific conditions wins. If you have a generic "type = Service Request → 30 min" and a more specific "type = Service Request and category = Onboarding → 90 min", the onboarding rule fires for onboarding tickets and the generic one fires for everything else.
By default, all teams use the baseline policy. To override:
A team can be linked to exactly one Time Estimate Policy at a time. If the policy is deleted, linked teams automatically re-link to the baseline (the baseline can't be deleted, so this fallback is always available).
Time estimate tuning is observational. Watch for these signals:
Don't chase precision. A duration estimate that's right within ±50% is plenty for NextAvailable to make better decisions than round-robin. Don't try to model a 17-minute ticket vs an 18-minute ticket.
Tip: Treat this like SLA tuning, not initial setup. Ship with the baseline default. Let real ticket flow accumulate. Then, with a quarter of data behind you, look at where assignment is making bad calls and add rules surgically. Building out an elaborate estimate policy on day one is configuration theater — you don't have the data to know what the right numbers are yet.