How does Cisco really calculate AHT?

Unanswered Question
Jan 8th, 2010
User Badges:

Average handle time (AHT) is described as Average duration (talk time) of a call plus after-call work time, which is the wrap-up time after the caller hangs up.

I'm referring to this Cisco Document (page 56 of 93)

It seems that Cisco keeps the same description in CCX 7.0 too (page 90 of 130)

Well, I don't know about you but to me that description doesn't seem to mean much. Let me tell you why. Just before I tell you why, let's put down an easy-to-read formula that represents the above description:


(AHT=Average Handle Time; ATT=Average Talk Time; WT=Work Time)

Can you tell me what seems wrong about that formula? Just take a closer look at it again. STOP and think for a little while before you keep reading on.

Okay here’s what I believe the formula should look like instead:


(AWT=Average Work Time)

See my point? The only exception I think why Cisco doesn't average the WT would be because WT must be a fixed value. In my contact center, my WT value is not set to a fixed value. Every agent can have a different WT at any given point.

That's WT. Now the next part is ATT which also seems to be unclear too. Why? Because I just don't know how often ATT would be calculated. In the last 3 hours, my ATT would be 10 min. But in the last 3 days or 3 months, my ATT would be 4.9 min or 15.187 min. Also, what if I was assigned to multiple CSQ's.

So I guess in order for me to understand how Cisco really calculates the AHT, I would need to understand:

How ATT is calculated? And

How WT is defined or worked out?

Does anyone have any insight information that explains this? Any response would be greatly appreciated.


  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 0 (0 ratings)
david.macias Sat, 01/09/2010 - 06:23
User Badges:
  • Blue, 1500 points or more


You're misunderstanding some vital math principals.  First, you can not add two averages.  If you wish to do so, they must be weigthed in order to account for variations in size.  For example, 10 agent have a 1 minute TT, but only 5 agents go into a 1 minute of WT.  If you were to take the average of the two numbers about it would give you an incorrect number.

Depending on the report you're looking at, a lot of the calculations are performed in 5 to 30 minute intervals.  So, while in the last 1 hour yout TT might have been 10 minutes, for the whole day it might be 15 due to higher call volume, less experienced agents, etc.

Is there something in your call center wich doesn't seem right and you're thinking the standard Cisco formulas isn't accounting for your business process?


ktran-anet Mon, 01/11/2010 - 11:37
User Badges:


I don't understand your example of "10 agent have a 1 minute TT, but only 5 agents go into a 1 minute of WT.  If you were to take the average of the two numbers about it would give you an incorrect number."

I'm not sure if you know what you're talking about. First, we are not talking "Size". Second, AHT is referring to AHT for 1 agent at some given intervals.

But if you want to calculate the AHT of 10 agents, whereas only 5 of them had 1min WT, sure you can do that too (just give the other 5 agents 0min). It doesn't matter if you didn't take any WT (well some agents don't sometimes in my contact center), as long as the unit is the same (aka "time" in this case), size does not matter. 

Nathan Luk Sun, 01/10/2010 - 23:54
User Badges:
  • Bronze, 100 points or more

As per the UCCX Historical Reporting Administrator and Developer Guide you were referring to:

Calls Handled— Handle Time Avg

Handle time of a call is calculated as (ACD.talkTime + ACD.holdTime + ACD.workTime). Determine the sum of handle times for all calls handled by this
CSQ, then divide by Calls Handled—Total, if calls handled is not zero. If it is zero, this field is set to zero.

ACD refers to the alias of the database table AgentConnectionDetail.

The documentation basically says that for a given time period. The AHT = (Total Talk Time + Total Hold Time + Total Work Time) / Total Handled Calls

The totals are important because as David mentioned, you can't average an average otherwise you get incorrect results. This is a pretty standard calculation for just about every contact centre I've deployed. What are you being queried on in regards to this calculation?



ktran-anet Mon, 01/11/2010 - 10:49
User Badges:

Let me derive it from your formula:

AHT = (Total Talk Time + Total Hold Time + Total Work Time) / Total Handled Calls

Or in short


would then be equal to:


which gives:


(ATT=Average Talk Time; AHT=Average Hold Time; AWT= Average Work Time)

As you can see, you can actually sum up the averages; it will give you an average of all averages which is not the same as averaging the averages. Anyway, in our contact center, we are using IEX TotalView to forecast and manage agents. For some reason, Cisco AHT and IEX AHT values are always off. In order to fix the issue, we would need to understand the mathematical calculations behind the scene of both worlds. Unfortunately, this is not very informative.

Edward Umansky Mon, 01/11/2010 - 11:29
User Badges:
  • Silver, 250 points or more

A call is counted handled after the call ends and work time is complete. Cisco calculates handle time by adding talk time, hold time, and work time for calls which were handled within the time period being reported on. Average handle time is obtained by dividing that time by the number of calls handled within the time period being reported on. What other information do you need to understand Cisco's calculations?

ktran-anet Mon, 01/11/2010 - 11:54
User Badges:

The right side of the equation plus if I was to be assigned to multiple CSQ's. i.e. How Cisco calculates if I was to take calls in 1 CSQ vs multiple CSQ's.

Nathan Luk Mon, 01/11/2010 - 16:37
User Badges:
  • Bronze, 100 points or more

Oops sorry my bad about saying you were averaging averages, just had that on the brain as a client was doing that a little while back which was frustrating. Taken from the stored procedure for that report:

Avg_Handle_Time = (th.totalhandletime / th.callshandled)


totalhandletime = sum(tacdr.handletime)
callshandled = count(cqdr.sessionid)
handletime = acdr.talktime + acdr.holdtime + acdr.worktime

Find out how /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} IEX TotalView calculates it's AHT and see if it uses the same calculation

In regards to queuing to multiple CSQs. A call can only be handled in 1 CSQ even if it is queued to multiple. So if a call is queued to CSQs ABC and XYZ, if it is answered via ABC the call disposition (in the ContactQueueDetail table) will be as follows:

ABC: Handled by CSQ (disposition = 2)

XYZ: Handled by another CSQ (disposition = 5)



ktran-anet Mon, 01/11/2010 - 17:27
User Badges:

Thanks Nathan. So correct me if I'm wrong. If I handled 3 calls from an "X" CSQ, 5 calls from a "Y" CSQ and 2 call from a "Z" CSQ today, i.e. 10 calls accross the 3 CSQ's. My AHT would be some thing like this:

AHT = [(ATT.of.X) + (ATT.of.Y) + (ATT.of.Z)] + [(AWT.of.X) + (AWT.of.Y) + (AWT.of.Z)]

which is also equal to:

AHT = [ATT.of.(X + Y + Z)] + [AWT.of.(X + Y + Z)]


ATT.of.X = Average Talk Time taken from CSQ X

ATT.of.Y = Average Talk Time taken from CSQ Y

ATT.of.Z = Average Talk Time taken from CSQ Z

AWT.of.X = Average Work Time taken from CSQ X

AWT.of.Y = Average Work Time taken from CSQ Y

AWT.of.Z = Average Work Time taken from CSQ Z

Nathan Luk Mon, 01/11/2010 - 17:41
User Badges:
  • Bronze, 100 points or more

Almost, remember that hold time is included. So it would be:

AHT = [AvgTalkTime.of.(X + Y + Z)] + [AvgHoldTime.of.(X + Y + Z)] + [AvgWorkTime.of.(X + Y + Z)]

If you want the AHT to include or exclude particular skills remember you can filter them out if you are running the Agent Summary report.

Nathan Luk Mon, 01/11/2010 - 19:16
User Badges:
  • Bronze, 100 points or more

Nah man, it's 7, 7's the key number maannn


This Discussion