For the complete documentation index, see llms.txt. This page is also available as Markdown.

Custom Measures

Authored by Craig Letheren

Introduction

In fast-paced contact center environments, one size rarely fits all when it comes to performance tracking. Custom Measures empower supervisors, administrators, and decision-makers to define the metrics that matter most to their operations.

By combining existing data fields (such as handle time, or wait time) with built-in functions (such as aggregation, arithmetic, comparison, or logical operations), you can define new measures that reflect your unique business goals and reporting needs.

With Custom Measures, teams gain the flexibility to take predefined reports to the next level and focus on the insights that drive continuous improvement. Whether it’s aligning metrics with strategic objectives, comparing agent performance across tailored benchmarks, or uncovering new operational trends, this feature provides the tools to measure success on your own terms.

Prerequisites

Custom Measures is available for users with either a Premium or Elite Zoom Contact Center license.Users must be granted Edit permissions for Custom Measures in their Zoom Contact Center role. To set this permission:

  1. Navigate to Contact Center ManagementRoles.

  2. Select the role you wish to edit.

  3. Click the CX Analytics tab.

  4. In the Permissions section, locate and enable the Custom Measures permission.

  1. Click the Save button.

Creating a Custom Measure

  1. Log in to the Zoom admin portal.

  2. Navigate to Analytics & ReportsCX AnalyticsCustom Measures.

  3. You will find a list of data sets categorized as follows:

    1. Dashboard intraday datasets (real time)

    2. Report datasets (historical)

  4. Select a dataset in which you would like to create a custom measure.

To create an effective custom measure, start by choosing the dataset that best fits your needs. Keep in mind:

  1. Custom measures are unique to the dataset you select and won't appear in reports built from other datasets.

  2. When you build formulas, you'll have access to all metrics available within your chosen dataset.

Selecting the right dataset ensures your custom measures are accurate, relevant, and fully aligned with your reporting goals.

  1. Click the Add button and select New measure.

  2. Give the custom measure a name, select a folder, and then click Add.

If you would like to organize your custom measures, you can optionally create folders from the Add menu. Once your folders have been created, you can select an appropriate folder when creating a custom measure.

Custom Measures Editor

Function Editor vs. Formula Editor

When creating a new custom measure you will have two options: the Function Editor and the Formula Editor. By default, the Function Editor will appear first. To switch to the Formula Editor, click the Formula Editor toggle.

The Function Editor provides a quick way to build custom measures using simple functions and filters. The Formula Editor provides access to a broader set of functions and arithmetic operators and is recommended for creating more complex measures.

Using the Function Editor

The layout of the function editor and a description of each section is shown below.

Measure Type

This will define the type of value generated by the custom measure. Select from the following:

  • Count: Counts occurrences (e.g., 'Total holds')

  • Duration: Calculates time length (e.g., 'Hold duration')

Percentage measures require a formula. Please refer to the Formula Editor section for more information on how to create a custom measure using a formula.

Function (Calculation Logic)

When multiple values are present, use this setting to define how the custom measure should be calculated; whether it returns the average (avg), maximum (max), minimum (min), or total sum (sum) of those values.After selecting your preferred function, use the drop-down menu to choose the reporting metric. For example, if you were to select the Hold duration, the function types would operate as follows:

  • avg: Calculates the average of hold duration across all engagements.

  • max: Identifies the highest hold duration among all engagements.

  • min: Identifies the lowest hold duration among all engagements.

  • sum: Calculates the total combined hold duration for all engagements.

Filter (Optional)

The filter will narrow down the scope of the metric available to the function, making the measure more precise.For example, if you need to see the total number of calls that lasted more than a given duration, use the Count of Handled calls, but only where the Conversation duration was more than a given timeframe. In this scenario, configure the custom measure as follows:

In this example, only Handled calls with a Conversation duration longer than 1 hour will be captured by the custom measure.

Validate, Save, Publish

Once you have defined your measure, function, and filter, you can validate the setup by selecting a dimension using the drop-down on the right-hand side of the editor. This will provide a live preview of the custom measure based on the last 24-hours of CX Analytics data from your contact center.

Once you have completed the setup of the custom measure, click Save followed by Publish.

Using the Formula Editor

Switch to the formula editor to create more complex calculations for situations such as combining multiple fields, conditional logic, and custom business formulas.

Measure Type

The Measure Type defines the type of value generated by the custom measure. Select from the following:

  • Count: Counts occurrences (e.g., 'Total holds')

  • Duration: Calculates time length (e.g., 'Hold duration')

  • Percentage: Calculate a percentage value (e.g., '94%')

Measure Editor

The Measure Editor provides you with a space to create your formulas. The following sections provide more detailed instructions to achieve this.

Functions and Operators

The Functions and Operators section provides a list of functions and operators organized into the following categories:

Aggregation Functions

sum(), min(), max(), avg(), sumIf(), minIf(), maxIf(), avgIf()

Date Functions

today(), now(), year(), month(), day(), hour(), minute(), weekDay(), dateDiff(), dateTruncate()

Control Functions

if(), ifNull(), multiIf()

Arithmetic Operators

+, -, *, /

Comparison Operators

=, !=, >, >=, <, <=, in, not in

Logical Operators

and, or

To insert a function or operator into your formula you can either type it manually, or click the desired item from the list and it will be entered directly into the measure editor at your cursor's current location.

Hovering over any function or operator will reveal a tooltip with a description of the item and examples of how it can be used.

A function must be populated using a combination of dimensions, metrics, and other conditional logic (which may include other functions). The requirements for each function or operator vary, so check the help and associated examples to view the specific requirements.

Inserting an Argument

Once you've added a function into your formula you must add the appropriate arguments. To add a dimension, measure, or timestamp into a function:

  1. Click the Insert Argument button or press the '@' key on your keyboard.

  2. A popup menu will appear where you can search for and select the desired dimension, measure, or timestamp.

  3. Select the required dimension, measure, or timestamp. It will appear inside your function in GREEN lettering.

  1. Continue to build your formula, repeating the steps above as required, and ensuring all arguments and conditions have been entered.

Conditions

Some functions have conditional statements that control the return value. Depending on the function you choose, you may see the following:

  • condition: A condition that will evaluate to true or false

  • result_if_true: The return value of the function if the condition evaluates to true

  • result_if_false: The return value of the function if the condition evaluates to false

Below are some examples of functions that contain these parameters:

sumIf()

if()

multiIf()

Example Use Case

Imagine you want to return the total sum of abandoned calls (the result_if_true) but only if the wait time of those abandoned calls was between 30 and 60 seconds (the condition). In this case, use the following logic:

  • function: sumIf(result_if_true, condition)

  • result_if_true = Abandoned

  • condition = Abandon duration > 30000 and Abandon duration <= 60000

Therefore, the formula would appear as follows:sumIf(Abandoned, Abandon duration > 30000 and Abandon duration <= 60000)

Validate, Save, Publish

Once you have defined your formula, click the Validate button to check its validity. Any errors will be highlighted.

Once validated, you will be presented with a Live Preview window on the right-hand side of the formula editor. Select a dimension from the drop-down list to view sample results from the last 7 days of actual contact center data to see a preview of what will be produced by the custom measure.

Once you have completed the setup of the custom measure, click Save followed by Publish.

Organizing Custom Measures

Using Folders

Organizing your Custom Measures into folders makes them easier to locate when using them in the report editor. Here is an example of several Custom Measures organized into folders in the report editor:

To create a folder, locate the dataset that you'd like to organize, then click Add followed by New folder. Give your folder a name and click Add.

To move an existing Custom Measure into your folder, locate the Custom Measure, click the ellipsis, and select Move to another folder. Select the appropriate folder and click Move.

Data Dictionary

Custom Measures can be found in the CX Analytics data dictionary. To access the data dictionary, click the link located in the bottom left corner of the CX Analytics interface. When performing searches in the data dictionary, your Custom Measures will be included along with the default metrics.

When viewing the documentation for a dataset, scroll to the bottom of the page to find the Custom Measures associated with that dataset.

If you search for a Custom Measure you will also find the associated formula.

Using a Custom Measure

Custom Measures can be applied to a report in the same way as a standard CX Analytics measure.

  1. Log in to the Zoom admin portal.

  2. Navigate to Analytics & ReportsCX Analytics. Select either Dashboards or Reports depending on where you're adding the Custom Measure.

Remember, custom measures are unique to the dataset you select and won't appear in reports built from other datasets.

  1. Create a new report or edit an existing report.

  2. Select a widget to which you'd like to add the custom measure(s). The configuration of the widget will appear on the right-hand side of the editor.

  3. Scroll down through the dimensions and measures to find a section containing all custom measures created within that dataset.

Pro Tip: Make your custom measures easier to identify in the report editor by giving them a meaningful name and description. This will be visible in the editor (as shown in the screenshot, via the tool tip) and in CX Analytics' data dictionary. Further organization can also be achieved using folders within each dataset.

  1. Drag and drop the measure into the fields section of the widget's configuration.

  1. Repeat the process for other custom measures and widgets, and click Save when done.

Deleting a Custom Measure

To delete an existing Custom Measure:

  1. Navigate CX AnalyticsCustom Measures

  2. Select the appropriate dataset and folder

  3. Click the ellipsis, and select Delete measure from the drop-down menu

When you delete a custom measure it will be removed from all reports. In some situations, the reporting widget will remain in the report with a messaging letting you know that a new measure must be selected. An example of a metrics card is shown below.

Example Use Cases

Custom Naming

A simple use case that can be implemented using Custom Measures is to customize the naming of existing metrics. This enables you to add a metric to a tabular widget, for example, and the column heading has a name that is more tailored to your requirements.

Shortest/Longest Engagement

The Inbound conversation duration metric tells you how long agents spent handling inbound engagements. By displaying the MIN and MAX values you can see the longest and shortest duration, however when these metrics are displayed within a tabular widget the column names will be displayed as follows:

  • Inbound conversation duration (MIN)

  • Inbound conversation duration (MAX)

While this example is related to Inbound conversation duration, this methodology applies to many different metrics.

Custom Measures provides a convenient way to create fields that display the same data using names that you define.

Complete the following steps:

  1. Navigate to CX AnalyticsCustom Measures.

  2. Select the Queue Performance dataset, followed by the Default Folder.

  3. Click Add Measure, enter the name "Shortest Inbound", then click Add.

  4. Select the toggle to enable the Formula Editor.

  5. Select Duration from the Measure Type drop-down.

  6. Click the Templates button, then select the Duration category.

  7. Scroll down and locate the Inbound conversation duration template.

  8. Select 'min' from the aggregation method drop-down menu, then click Use.

This will automatically generate the formula min(Inbound conversation duration) in the Measure Editor.

  1. Click Validate, then select the Entry channel dimension in the Live Preview window to check the results.

  1. Click Save followed by Publish.

  2. Repeat the steps above for another metric named "Longest Inbound", this time selecting 'max' as the aggregation method.

When you add these metrics to your report, they will be displayed with your custom naming. You can use this method with many different metrics.

Data Bucketing

Data bucketing transforms raw contact center data into structured, actionable insights. By organizing metrics into meaningful intervals or "buckets", contact centers can more easily monitor performance trends, improve operational efficiency, and make informed decisions that enhance both agent productivity and customer satisfaction.

Instead of viewing individual data points, contact centers categorize metrics into logical intervals, such as time ranges or score bands, to make large datasets easier to interpret and compare.

This powerful capability allows you to define custom buckets according to your own contact center's preferences. You can also define different buckets for different channels. For example, you might want to see 0-30 seconds for voice, but 0-180 seconds for email.

Benefits of Data Bucketing include:

  • Trend Identification: Spot recurring issues such as long wait times or recurring low satisfaction scores.

  • Focused Improvement: Target specific performance ranges that require attention (e.g., calls longer than 5 minutes).

  • Benchmarking: Compare performance across teams, time periods, or customer segments using consistent categories.

  • Strategic Planning: Inform staffing, training, and process optimization decisions with clearer aggregated insights.

Next, we will guide you through a couple of examples of how to create data buckets using the Function and Formula Editors.

Abandoned Call Timeframes

The abandoned calls duration is the time the consumer waited before they abandoned the engagement. Data bucketing can group the abandoned calls into categories like those that abandoned in 0–15 seconds, 15-30 seconds, and 30–45 seconds etc.

While this example is related to Abandoned Calls, this methodology applies to any duration metric. Some examples of Queue and Agent Performance durations include:

  • Hold duration

  • In-queue Wait Duration

  • Handle Duration

  • Inbound conversation duration

  • Agent First Response Duration

For this configuration we will create four data buckets:

  1. Abandoned 0-15 seconds

  2. Abandoned 15–30 seconds

  3. Abandoned 30–45 seconds

  4. Abandoned >45 seconds

Complete the following steps to create your first data bucket.

  1. Navigate to CX AnalyticsCustom Measures.

  2. Select the Queue Performance dataset, followed by the Default Folder.

  3. Click Add Measure, enter the name "Abandoned 0-15s", then click Add.

  4. Click the pencil icon next to the name in the upper part of the interface.

  5. Enter the description "Total abandoned engagements, where consumers waited <15s", then click Save.

  6. Select the toggle to enable the Formula Editor.

  7. Select Count from the Measure Type drop-down.

The default measure type is Count so you do not need to explicitly select it when creating a new measure.

  1. Enter the following formula and click Validate.

    sumIf(Abandoned, Abandon duration <= 15000)

This formula can be broken down as follows:

  • Return the total number of Abandoned engagements

  • But only those where the Abandon duration is <= 15000ms (15s)

  1. Select the Entry channel dimension in the Live Preview window to check the results.

  1. Click Save followed by Publish.

  2. Repeat the steps above for the remaining buckets. The table below contains the required formulas.

Custom Measure Name

Measure Type

Formula

Abandoned 0-15s

Count

sumIf(Abandoned, Abandon duration <= 15000)

Abandoned 15-30s

Count

sumIf(Abandoned, Abandon duration > 15000 and Abandon duration <= 30000)

Abandoned 30-45s

Count

sumIf(Abandoned, Abandon duration > 30000 and Abandon duration <= 45000)

Abandoned >45s

Count

sumIf(Abandoned, Abandon duration > 45000)

Engagement Volume by Day of Week

CX Analytics provides a metric that shows the number of handled engagements in a given timeframe with the option of using dimensions to show this based on day (single date), week (7-day date range), month, etc.

The tabular report shows the total number of incoming engagements handled in the given timeframe, but does not tell us how many of these engagements occurred on Mondays, Tuesdays, Wednesdays, etc.

In this example we will create a data bucket per day of week to identify trends and patterns based on the day of the week, or weekdays vs. weekends.

Complete the following steps to create your first data bucket.

  1. Navigate to CX AnalyticsCustom Measures.

  2. Select the Queue Inbound dataset, followed by the Default Folder.

  3. Click Add Measure, enter the name "Mondays", then click Add.

  4. Click the pencil icon next to the name in the upper part of the interface.

  5. Enter the description "Total engagements handled on Mondays" then click Save.

  6. Select the toggle to enable the Formula Editor.

  7. Select Count from the Measure Type drop-down.

  8. Enter the following formula and click Validate.

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 1)

This formula can be broken down as follows:

  • Return the total number of Inbound handled engagements

  • Where the engagement's Queue enter time falls on a Monday

  • And Monday = 1

This formula uses a date function (weekDay()) which takes a date (the Queue enter time) and returns a numeric value representing the day of the week associated with the date. By setting the return type to '2' it means that the value of Monday = 1, Tuesday = 2, Wednesday = 3, etc.

  1. Select the Entry channel dimension in the Live Preview window to check the results.

  1. Click Save followed by Publish.

  2. Repeat the steps above to create a Custom Measure for each day of the week. The table below contains the required formulas.

Mondays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 1)`

Tuesdays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 2)

Wednesdays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 3)

Thursdays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 4)

Fridays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 5)

Saturdays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 6)

Sundays

sumIf(Inbound handled, weekDay(Queue enter time, 2) = 7)

The volume report now shows the total number of inbound handled engagements per channel, broken down by day of week, allowing you to identify which is the busiest day of the week in the contact center.

Pro Tip! You could also view weekdays and weekends by creating Custom Measures using the following formulas:

Weekdays: sumIf(Inbound handled, weekDay(Queue enter time, 2) <= 5)

Weekends: sumIf(Inbound handled, weekDay(Queue enter time, 2) >= 6)

Modifying Existing Metrics

In some cases you may want to slightly modify an existing metric based on your organization's specific requirements. Custom Measures allows you to use arithmetic operators (+, -, *, /) to make changes to an existing metric.

Custom Handling Duration

In CX Analytics, Handle duration is the sum of the following metrics:

  • Conversation duration

  • Hold duration

  • Wrap duration

In your organization, you may consider 'Handle Duration' to be only a subset of these metrics. Let's say that you do not want to include the wrap duration as part of your handle duration, in this case you can simply subtract one from the other as follows:

  1. Navigate to CX AnalyticsCustom Measures.

  2. Select the Engagement dataset, followed by the Default Folder.

  3. Click Add Measure, enter the name "Custom handle duration", then click Add.

  4. Click the pencil icon next to the name in the upper part of the interface.

  5. Enter the description "Handle duration, not including wrap-up time" then click Save.

  6. Select the toggle to enable the Formula Editor.

  7. Select Duration from the Measure Type drop-down.

  8. Enter the following formula and click Validate.

sum(Handle duration - Wrap-up duration)

This formula can be broken down as follows:

  • Take the Handle duration

  • Subtract the Wrap-up duration

  • Return the result

  1. Select the Entry channel dimension in the Live Preview window to check the results.

  1. Click Save followed by Publish.

Now you can show the default Handle duration and see your own customized version of the metric that is better aligned with your organization's KPIs.

Pro Tip! Use the multiIf() control function to provide more granular control when you need to adjust the metric differently based on the channel.

sum(multiIf(Entry channel = "VOICE", Handle duration - Wrap-up duration, Entry channel in ("VIDEO", "MESSAGING"), Handle duration - Hold duration, Handle duration))

This formula can be broken down as follows:

  • If the channel = voice, return the Handle duration - Wrap-up duration

  • If the channel = video/messaging, return the Handle duration - Hold duration

  • Otherwise, simply return the Handle durationin its default form

Last updated

Was this helpful?