01 · Definition
What is average handle time (AHT)?
Average handle time (AHT) is the average amount of agent working time a support conversation consumes. The classic formula, from call centres, is total talk time plus hold time plus after-contact work (wrap-up), divided by the number of contacts handled. On a messaging channel such as WhatsApp it becomes active handling time plus wrap-up time, divided by conversations handled.
The chat version needs care because WhatsApp is asynchronous. A conversation can stay open for six hours while the customer goes to find an invoice, yet the agent may only have spent four minutes on it. Counting the open duration inflates AHT and punishes agents for slow customers, so inbox tools measure active time instead: time spent reading and replying in the thread, often with an idle timeout so a chat left open on screen stops counting.
Wrap-up is the work after the last reply: tagging the conversation, writing internal notes, updating the CRM and setting a disposition. It is real agent time and belongs in AHT, even though the customer never sees it.
AHT is easy to confuse with neighbouring metrics. First response time is how long the customer waited before an agent started; resolution time is the calendar time from first message to resolved; AHT is the effort in between. Agent concurrency affects all three, because an agent juggling more chats tends to take longer on each one.
Key takeaways
- Average handle time (AHT) is the average agent working time per conversation: active handling plus wrap-up, divided by conversations handled.
- On WhatsApp, AHT must count active agent time, not the hours a chat stays open while the customer is away.
- AHT is effort, resolution time is elapsed time, and first response time is the wait before an agent starts.
- A falling AHT is only good news if first contact resolution and CSAT hold steady.
02 · Specifications
Average handle time (AHT): key facts and limits
| Formula (chat) | (Active handling + wrap-up) ÷ conversations handled |
|---|---|
| Formula (voice) | (Talk + hold + after-call work) ÷ calls handled |
| Usual unit | Minutes per conversation |
| Excludes | Customer think-time and bot-only conversations |
| Not the same as | Resolution time (elapsed) or first response time (wait) |
03 · Operation
How does average handle time (AHT) work?
Define active handling
Start the clock when an agent opens or replies in an assigned chat and pause it after a set idle period, such as two minutes with no typing or reading. Customer think-time must not count.
Add wrap-up time
Measure time from the last agent reply until the conversation is closed or tagged, capped so a chat forgotten overnight does not add hours.
Divide by conversations handled
Sum active plus wrap-up minutes for the period and divide by the conversations agents actually worked. Exclude chats a bot resolved without an agent.
Segment before you compare
Report AHT per tag, team and channel. A refund dispute and a store-hours question should never share one average.
Read it next to quality
Put AHT beside first contact resolution and CSAT on the same dashboard, so a faster AHT that causes reopens is spotted quickly.
04 · Code samples
Average handle time (AHT) in code
-- AHT per tag for last week, from an inbox activity log-- active_seconds: agent reading/typing time, idle > 120 s excluded-- wrapup_seconds: last agent reply -> closed, capped at 15 minSELECTc.primary_tag,COUNT(*) AS conversations,ROUND(SUM(a.active_seconds + LEAST(a.wrapup_seconds, 900)) / 60.0 / COUNT(*), 1) AS aht_minutesFROM conversations cJOIN agent_time a ON a.conversation_id = c.idWHERE c.closed_at >= CURRENT_DATE - INTERVAL '7 days'AND c.handled_by_agent = TRUEGROUP BY c.primary_tagORDER BY aht_minutes DESC;
Illustrative schema: your inbox's export will name these columns differently.
05Playground
A working model of AHT. Use its controls to replay it step by step.
Work out AHT from a day of chat logs
The formula
Active handling time1,800 minplusWrap-up time300 mindivided byConversations handled420 chatsequalsAverage handle time5.0 min per chat
Average handle time
5.0 min per chat
Updates as you move any slider.
Worked left to right
- 1,800plus300equals2,100
- 2,100divided by420equals5→ 5.0 min per chat
Count active agent time only. A chat left open while the customer is away should not add minutes.
Average handle time = 5.0 min per chat.
06 · Worked example: Staffing a Hyderabad pharmacy chain
Example: Staffing a Hyderabad pharmacy chain
A Hyderabad pharmacy chain handles about 420 agent-worked WhatsApp chats a day. Across a week the inbox logs about 1,800 minutes of active handling and 300 minutes of wrap-up a day, so AHT is (1,800 + 300) ÷ 420 = 5 minutes. Prescription-upload chats, however, average 9 minutes because agents retype medicine names from photos. Adding a WhatsApp Flow that captures the prescription details cuts that segment to 6 minutes, and the team covers the evening peak without adding a shift.
07 · Cautions
Common mistakes with average handle time (AHT)
Measuring open time instead of active time
A chat open for hours while the customer is away makes AHT look awful. Measure agent activity with an idle timeout, and state the timeout in your reporting.
Making AHT a target on its own
Agents rushed to close quickly send half answers, and the customer comes back. Pair any AHT goal with first contact resolution and CSAT.
Comparing chat AHT with call AHT
Chat agents work several conversations at once, so per-chat AHT is not comparable with a phone queue. Compare conversations resolved per agent hour instead.
Forgetting wrap-up
Tagging, notes and CRM updates are agent time. Leave them out and your staffing model will be short every busy day.
08 · Rationale
Why does average handle time (AHT) matter?
AHT drives staffing: expected conversations multiplied by AHT, divided by productive hours per agent, tells you how many people a shift needs. It also exposes friction — a jump in AHT on one tag often points to a broken process, a missing canned response or a tool the agent has to look up by hand. Used as a target on its own, though, it pushes agents to rush and close chats that reopen later.
09 · Recommended practice
Best practices for average handle time (AHT)
- Sort tags by AHT each month; the top three usually reveal a missing canned response or integration.
- Show order and payment details beside the chat through a CRM integration so agents stop switching tabs.
- Automate wrap-up where you can: suggested tags and auto-filled dispositions save a minute per chat.
- Track AHT for new agents separately while they ramp up.
10 · Questions and answers
AHT FAQs
- How do you calculate average handle time for chat?
- Add active agent handling time and wrap-up time for a period, then divide by the conversations agents handled. For example, 2,100 minutes across 420 chats gives an AHT of 5 minutes.
- What is a good AHT for WhatsApp support?
- There is no universal benchmark; it depends on what your customers ask. Compare AHT per tag against your own history, and only treat a drop as good if resolution and satisfaction hold.
- Is average handle time the same as resolution time?
- No. AHT is agent effort per conversation; resolution time is calendar time from the first message to resolved. A chat can take 4 minutes of agent time and still take 2 days to resolve.
- Does a bot affect AHT?
- Yes, indirectly. Chats a bot resolves on its own are excluded, and a bot that collects order numbers before human handoff shortens the agent's part of each remaining chat.