An important concept to understand about creating custom reports is call-level filtering and event-level filtering.
Most columns are derived from one of four column types: Call Duration, Call Count, Event Duration, and Event Count. Call-type columns will include a call's entire duration or add 1 to the count if they find any matching information inside the call. These can also be thought of as “all or nothing” columns. Event-type columns, on the other hand, only include the matching events they find inside a call, ignoring the rest of the call data. These can be thought of as “something or nothing” columns.
Call-level filters and event-level filters work the same way. Call-level filters will allow an entire call to pass through them if the call includes the filter's criteria anywhere inside the call, while event-level filters will only allow specific events to pass through, leaving the non-matching call data behind.
Because of this difference, two columns that may seem to filter the same information will actually give you different results. A Call Duration column with the event-level filter Event Type = Talking will search through calls for Talking events. If it finds at least one, it includes the entire call duration in the final result, including any ringing, queue, or hold time. Meanwhile, an Event Duration column with the same filter will also search for Talking events, but the Event Duration column only includes the duration of the Talking events.
To illustrate this concept, imagine that you want to find out how much time your Sales hunt group spent talking over a given time period. There are a few ways to set up columns that seem to give you this information. The two columns you might try to use are Call Duration and Event Duration, and the filters you might use are the call-level filters Call Includes Event = Talking and Call Includes Hunt Group = Sales, or the event-level filters Event Type = Talking and Hunt Group = Sales. Although multiple combinations of these might seem to give you the desired result, only one of them will give you the exact information you are looking for.
Call Duration with Call Includes Event = Talking and Call Includes Hunt Group = Sales
This Call Duration column is set with two call-level filters, Call Includes Event = Talking and Call Includes Hunt Group = Sales. These filters will search through every call for one that includes Talking and Sales, but not necessarily together in the same event. For example, a call that rang at the Sales hunt group and was forwarded to a different group before being answered would be included in this filter. In addition, when the filter is finished, the Call Duration column will add up the entire duration of such calls, including ringing, queue, hold, and other non-talking time. While this data may be perfect in another situation, it includes too much information for your desired report.
Call Duration with Event Type = Talking and Hunt Group = Sales
This Call Duration column is set with two event-level filters, Event Type = Talking and Hunt Group = Sales. This is different from the first column because these two event-level filters will search through each event, looking for one that includes both criteria at the same time. Every event that doesn't match is excluded from the final result. When the filter is finished, you may have one or two matching events left over for a call. But the Call Duration column will still include the entire duration of that call as long as there is at least one matching event inside, so while you have narrowed the list of calls down to those that include Sales and Talking in the same event, this column still includes extra information about those calls.
Event Duration with Event Type = Talking and Call Includes Hunt Group = Sales
This Event Duration column includes one event-level filter and one call-level filter. What this set of filters will do is search through calls for Talking events and at least one event involving Sales. Event Type = Talking will exclude everything that is not a Talking event, but Call Includes Hunt Group = Sales doesn't care if any of those Talking events involved Sales or not. Like the first column, if a call rang at the Sales group, but was forwarded to someone else, the Call Includes Hunt Group = Sales filter will accept this call. Unlike the first column, however, the Event Duration column only adds up the duration of the events found by Event Type = Talking. Talking events involving Sales will be included, but so will any other Talking events that may have happened during that call.
Event Duration with Event Type = Talking and Hunt Group = Sales
This column includes two event-level filters. Like the second column, these filters will search through each event of a call for Talking events that include Sales. Every event that doesn't simultaneously match both criteria is left out of the final result. But unlike the second column, the Event Duration column will only add up the duration of the matching events, leaving out extra information the second column had included, like ringing, queue, and hold time. The column's final result will only include the duration of the Sales hunt group's Talking events, making this the correct column to use.
While this example shows how useful and powerful event-level filters can be, call-event filters can be just as useful. For example, to find the total call duration of abandoned calls that were answered at some point during the call, you could use a Call Duration column with Is Call Abandoned = True and Is Call Answered = True filters. This is a call-type column using two call-level filters and would be difficult to recreate using an event-type column and event-level filters.
Check the description of each filter to see its type and some suggested uses.