12.1.8. Reports with the Call Reporting Object

Inbound Reports

What is the average handle time of each agent?

Please note: this is for inbound calls only. You can do inbound and outbound combined by adding ‘Outbound’ to the Call Direction filter.

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Type = Connected

  • Filter on Call Direction = Inbound

  • Group rows by To Natterbox User

  • Add a row-level formula

    • Label = Handle Time

    • Formula = Wrap-Up Duration + Time Talking

    • Change the metric to average not max

  • Optional:

    • Add fields: From Call Queue Last Queue, Wrap-Up Duration and Time Talking

How can I report on answered inbound calls (not just within call queues)?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Type = Connected

  • Filter on Call Direction = Inbound

  • Add the fields: To SF User, Time Talking, From Number, Contact, Account, Wrap-Up Label 0, Wrap-Up Duration, From Recording and To Recording

  • Optional:

    • Filter on or Group by From Call Queue Last Queue or To Group to see calls for a certain part of the business

    • Group by To SF User and toggle off Detail Rows to see how many inbound calls each user answered.

How can I report on repeat inbound callers?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on Call Direction = Inbound

  • Group rows by From Number

  • Add the fields: Contact, Wrap-Up Label 0, Wrap-Up Label 1, From Call Queue Last Disposition, From Call Type, From Recording and To Recording

How can I report on percentage of time agents are idle who take only inbound calls?

Note: this is for agents receiving calls in a call queue as it doesn't take into account any time ringing

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on Call Direction = Inbound

  • Filter on From Call Type = Connected

  • Filter on From Call Queue Last Queue not equal to "" (blank)

  • Group rows by Call Reporting: Created Date and then To Natterbox User

  • Add the fields Time Talking and Wrap-Up Duration

  • Create a row-level summary field called 'Handle Time'

    • Use the formula:
      nbavs__CallReporting__c.nbavs__Wrapup_Duration__c+nbavs__CallReporting__c.nbavs__From_Time_Talking__c

    • Formula Output Type = Number

  • Create a summary formula called 'Idle Time %'

    • Use the formula:
      (((60*60*X)-CDF1:SUM)/(60*60*X))*100
      where X = the number of hours that your agents work

    • This formula works like this (all in seconds):
      (Total shift time - Total busy time (handle time) / Total shift time) x 100

How can I report on number of answered inbound calls by shift/day?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on Call Direction = Inbound

  • Filter on From Call Type = Connected

  • Group by To Natterbox User then Conversation Answer Time (by calendar day)

  • Add the fields: From Call Queue Last Wait Seconds, Time Talking, Wrap-Up Duration and Wrap-Up Label 0

  • Optional:

    • Add the fields: From Number, To Number, From Call Queue Last Queue, Wrap-Up Label 1, From Recording and To Recording

How can I report on answer rate per agent?

This is for agents answering calls in a call queue with phone events enabled. Missed calls in a call queue are not against an agent but against a queue but this report allows you to still calculate answer rate.

  • Report type = Call Reporting with To Natterbox User

  • Make this into a joined report (see here for more on Salesforce’s Joined Reports)

  • Add a block with report type = Phone Events with Natterbox User this call relates to

  • Group all blocks by To Natterbox User: Name

  • Label the first block (with report type = Call Reporting with To Natterbox User) “Answered Inbound Calls”

  • Label the second block (with report type = Phone Events with Natterbox User this call relates to) “Missed Inbound Calls (agent fault)”

  • Filter the first block like this:

    • Show me: All call reporting

    • Filter on a time field, e.g. Call Reporting: Created Date = TODAY, THIS WEEK, THIS MONTH…

    • Call Direction = Inbound

  • Filter the second block like this:

    • Show me: All phone events

    • Time = Same time frame as first block ^

    • Hangup Cause = NO_ANSWER, ALLOTTED_ TIMEOUT, CALL_REJECTED

    • Missed Call Type = No Devices

    • Add filter logic “1 OR 2”
      These filters are to on capture missed calls where the agent was at fault, not other reasons.

  • For the first block, add the following fields:

    • From Call Type

    • Time Talking (Turn off SUM and turn on averages)

    • Conversation Start Time

  • For the second block, add the following fields:

    • Missed Call Type

    • Hangup Cause

    • Time

  • Click the dropdown of either block and select ‘Add Cross-Block Summary Formula’

    • Column Name: Inbound Answer %

    • Formula Output Type: Percent

    • Decimal points: 0 (or whatever you prefer)

    • Formula:

      • B0#RowCount/(B0#RowCount+B1#RowCount)

      • This means: Record count of block 1 / (Record count block 1 + Record count block 2)

    • Display: Selected Groups = To Natterbox User: Name

    • Apply!

  • Optional: if you want to filter by call queue then you can filter block 1 by From Call Queue Last Queue and block 2 by Call Queue

What is the average inbound talk time per agent?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Start Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Type = Connected

  • Filter on Call Direction = Inbound

  • Group rows by To Natterbox User

  • Add the field Time Talking

    • Change ‘Summarise’ metric to average not sum

    • Toggle off ‘Detail rows’

  • Optional:

    • Add fields: From Call Queue Last Queue

How can I report on inbound number usage?

  • Report type = Call Reporting

  • Show Me = All call reporting

  • Swap: Conversation Answer Time for Call Reporting: Created Date

  • Filter on a time you would like to see: LAST 6 MONTHS, CURRENT CY, etc...

  • Add the following filters

    • Call Direction = Inbound

    • From Conversation Instance = 1

  • Group rows by From Dialled Number

  • Toggle off 'Detail Rows' to see the record counts

How can I report on inbound call volumes per hour?

  • Report type = Call Reporting

  • Swap: Conversation Answer Time for Call Reporting: Created Date and filter on TODAY

  • Filter on Call Direction = Inbound

  • Group by Hour and then From Call Type

  • Select ‘Add Chart’

    • Choose Stacked Bar or Stacked Column

    • Y-axis: Hour

    • X-axis: Record Count

    • Stack By: From Call Type

  • Optional:

    • Add the fields: From Call Queue Last Wait Seconds, Time Talking, Wrap-Up Duration and Wrap-Up Label 0

Call Queue Reports

How many inbound calls went to voicemail from a call queue?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Group rows by From Call Queue Last Disposition

  • Filter on Call Direction = Inbound, Service

What is the average wait time in a queue?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Start Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Queue Last Queue not equal to ““ [OR equal to *Queue Name]

  • Group rows by From Call Queue Last Queue

  • Add the field From Call Queue Total Wait Seconds

    • Change ‘Summarise’ metric to average not sum

    • Toggle off ‘Detail rows’

  • Optional:

    • Group by From Call Queue Last Disposition to see wait times per call hung up, answered, timeout, callback request, etc.

How can I report on the number of abandoned calls (in a queue)?

Please note: this depends on how you define abandoned calls. For this question, we will refer to abandoned calls and ones where calls have chosen to end the call. Do not confuse this with From Call Queue Last Disposition = ABANDONED which means the caller has chosen to press a key to leave the queue (usually with the option to leave a voicemail).

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Queue Last Disposition = HANGUP

  • Group rows by From Call Queue Last Queue

  • Add the fields: From Number and From Call Queue Last Wait Seconds

How many calls reached the max wait time in a call queue?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Queue Last Wait Seconds = *max wait time*

Please note this value can be found in the Properties tab of the call queue in the routing policy.

  • Add in From Call Queue Last Queue, *any reporting gates* and From Flag Voicemail Record

How many inbound calls were answered in call queues?

  • Report type = Call Reporting

  • Filter on a date range, e.g. Conversation Start Time = TODAY, THIS WEEK, THIS MONTH

  • Filter on From Call Queue Last Disposition = Answered

  • Add in the fields: From Call Queue Last Disposition, From Call Queue Last Wait Seconds and To Natterbox User

Outbound Reports

How many connected outbound calls were made per day (or other time frame)?

  • Report type = Call Reporting

  • Filter on a date range, e.g. Conversation Start Time = TODAY, THIS WEEK, THIS MONTH

  • Filter on From Call Type = Connected

  • Filter on Call Direction = Outbound

  • Group rows by From Natterbox User

  • Add fields: To Number, Contact and Account,

  • Optional:

    • Add fields: To Recording, From Recording, Time Talking, Wrap-Up Duration, Wrap-Up Label 0 and Wrap-Up Label 1

How many connected outbound calls were made per Contact/Lead?

  • Report type = Call Reporting

  • Filter on a date range, e.g. Call Reporting: Created Date = TODAY, THIS WEEK, THIS MONTH

  • Filter on From Call Type = Connected

  • Filter on Call Direction = Outbound

  • Group rows by Contact or Lead

  • Add fields: From Dialled Number, Account, From Natterbox User

  • Optional:

    • Add fields: To Recording, From Recording, Conversation Start Time, Time Talking, Wrap-Up Duration, Wrap-Up Label 0 and Wrap-Up Label 1

How can I report on outbound caller ID or the number that users are presenting on an outbound call?

To build this report, you will need to complete this guide which takes you through the customisation you need to add to the Outbound Calls Policy.

  • Report type = Call Reporting

  • Filter on a date range, e.g. Call Reporting: Created Date = TODAY, THIS WEEK, THIS MONTH

  • Filter on Call Direction = Outbound

  • Group rows by Outbound Caller ID (or the name you gave the new field)

  • Add fields: From Natterbox User, Conversation Start Time

  • Optional:

    • Add fields: From Recording, Wrap-Up Duration

    • Group by From Natterbox User

What is the average outbound handle time of each agent?

Please note: this is for outbound calls only. You can do inbound and outbound combined by adding ‘Inbound’ to the Call Direction filter.

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on From Call Type = Connected

  • Filter on Call Direction = Outbound

  • Group rows by From Natterbox User

  • Add a row-level formula

    • Label = Handle Time

    • Formula = Wrap-Up Duration + Time Talking

    • Change the metric to average not max

  • Optional:

    • Add fields: From Dialled Number, Contact, Lead, Wrap-Up Duration and Time Talking

How can I calculate the time from lead creation to first call?

  • Report type = Call Reporting with Lead

  • Filter on a date range, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH, THIS YEAR

  • Filter on Call Direction = Outbound

  • Group rows by Call Reporting: Created Date

  • Add fields: Lead: First Name, Lead: Last Name, Lead Created Date

  • Add Row-Level Formula: Call Reporting: Created Date - Lead Created Date for number of days since creation before 1st call.

  • Optional:

    • Add fields: Account, Conversation Start Time, Time Talking, From Natterbox User, Wrap-Up Duration, Wrap-Up Label 0 and Wrap-Up Label 1

Callback Reports

How long was the caller in the queue before they selected a callback?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Add From Call Queue Last Wait Seconds to see how long a caller was waiting in a queue.

  • Filter on the field From Call Queue Last Disposition = ABANDONED_CALLBACK

  • Optional:

    • Filter or group by the field From Call Queue Last Queue you can look at how different queues are behaving.

How long did each caller spend waiting until we returned their call if they requested a callback?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Group rows by Account and/or Contact as long as the number is known to your SF.

  • Add in the field From Flag Callback Requested (when a callback is requested) and From Flag Callback Agent (which calls are callbacks).

  • Also, we want to filter on those fields as well. So add the filters From Flag Callback Requested = TRUE and From Flag Callback Agent = TRUE with the filter logic 1 OR 2 to see both the calls when the callback was requested and when the callback was attempted.

  • Then add: Conversation End Time and Conversation Answer Time.

  • Export this data and manipulate outside of SF using the Conversation End Time and Conversation Answer Time so to calculate how long since the callback request call ends and the callback attempt is answered.

How many callers ended up calling back into the queue with an active callback request?

  • Report type = Call Reporting

  • Filter on a date range, e.g. Conversation Start Time = TODAY, THIS WEEK, THIS MONTH

  • Group by Account and Contact.

  • Add in From Call Queue Last Disposition (where we are looking if the value is ABANDONED_CALLBACK for when a callback is requested) and From Call Queue Last Queue (where we are looking if the caller has come back into another queue).

  • Export and manipulate outside of salesforce for any statistics on this. If they have something they are calling about, e.g. a case, we could group by that to see if they are calling back in about the same request.

How many call attempts on average did it take for our agents to connect back with the customer?

  • Report type = Call Reporting

  • Filter on a date range, e.g. Conversation Start Time = TODAY, THIS WEEK, THIS MONTH

  • Group rows by Account/Contact/To Number

  • Add the field From Call Queue Last Queue and filter on From Flag Callback Agent = TRUE.

  • To calculate how many call attempts on average you will need to export the report and work the data outside of salesforce.

When we are unable to successfully complete the call, how can we record these calls as abandoned?

  • Report type = Call Reporting

  • Filter on a date range, e.g. Conversation Start Time = TODAY, THIS WEEK, THIS MONTH

  • Group rows by Account/Contact/To Number

  • Add the field From Call Queue Last Queue and filter on From Flag Callback Agent = TRUE.

  • After 3 attempts the callback request will be moved out the queue. So if there are 3 call reporting records grouped together by the same number/account/contact with From Call Type = Not Connected, this means a callback has been unsuccessful after 3 attempts.

How to see if a different agent does the callback attempts?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Group rows by To Number (or contact)

  • Filter on From Flag Callback Agent = TRUE

  • Add in the field From Number and/or From Natterbox User to see if different agents made the callback attempts for the same callback request.

Miscellaneous Reports

How can I report on call stats by agent?

Note this uses a custom field called Natterbox User you will need to create that combines To Natterbox User and From Natterbox User to be able to report on both inbound and outbound call stats, see here for how to make that field.

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on Natterbox User not equal to “”

  • Group Rows by Natterbox User

  • Group columns by Call Direction and then From Call Type

  • Add the fields: Time Talking, Wrap-Up Duration, From Used On Hold Seconds, Time Ringing and From Call Queue Last Wait Seconds

  • Add a row-level formula

    • Label = Handle Time

    • Formula = Wrap-Up Duration + Time Talking

    • Change the metric to average not max

  • Optional:

    • Add the fields: From Call Queue Last Disposition, From Number, To Number, From Call Queue Last Queue, Wrap-Up Label 0, Wrap-Up Label 1, From Recording and To Recording

How can I report on internal callers?

  • Report type = Call Reporting

  • Filter on a time field, e.g. Conversation Answer Time = THIS WEEK, THIS MONTH…

  • Filter on Call Direction = Internal

  • Filter on To Conversation Count = “1” AND From Conversation Count = “1”

  • Add fields: From Natterbox User, To Natterbox User and Time Talking

How can I report on transferred calls?

Must have “Transferred Calls for Reporting Scheduled Job” enabled to use field Related Call Reporting.

  • Report type = Call Reporting

  • Show Me = All call reporting

  • Swap: Conversation Answer Time for Call Reporting: Created Date

  • Filter on a time you would like to see: LAST 6 MONTHS, CURRENT CY, etc...

  • Add the following filters

    • Call Direction = Inbound

    • From Conversation Count < 1

    • To Conversation Count <1

    • Add filter logic of 1 AND (2 OR 3)

  • Add the following fields: From Natterbox User, To Natterbox User, Conversation Start Time, From Dialled Number, From Recording, To Recording, Time Talking

  • Group rows by Related Call Reporting