Best practices for dial list cache settings

In this page

What is a dial list cache?

Connect uses your dial list filtering and ordering criteria to build queries. The queries return Salesforce records such as contacts or leads. These records are represented by pending dial entry records in the list. These queries can take several seconds to run especially in orgs with large data volumes.

To reduce the time it takes to run the queries, you can use a dial list cache. The dial list cache is a set of pending dial entry records in the dial list. You can define the size of the cache which then determines how many results the queries return each time they run. Limiting the number of query results to the size of the cache means that the queries take less time to complete.

What are the cache settings?

SettingDefault valueDescription
Cache size20After Connect refreshes the dial list, the cache should contain the number specified in Cache size of pending dial entries. Or, if there are fewer than the Cache size number of dial entries returned by the query, all the returned dial entries.
Cache expire time (s)300Using the default value, when an agent requests a pending dial entry, if the list was last refreshed more than 5 minutes (300 seconds) ago, Connect will update the cache.
Max cache expire time (s)3600When an agent requests a pending dial entry, if this time is exceeded, Connect refreshes the dial list and updates the cache immediately. The main purpose of Max cache expire time (s) is to ensure that the data in the cache does not become stale. This is most relevant when Connect is used again after not being in use for some time, overnight, for example.

New behavior for stale cached dial entries (Connect version 22.117 and later)

When you create a new dial list and use the 'Single list' option, cached pending dial entries that were created or updated earlier than Max cache expire time (s) ago will not be visible to agents.

This new behavior works in tandem with an update to the way unscheduled refreshes are handled by Connect.

Prior to these changes, any agent requesting a new dial entry from a dial list after Max cache expire time (s) since the last refresh would immediately perform an unscheduled refresh.  To support 'Single list' dial lists with a large number of agents assigned to them, it is now only possible for one agent to perform an unscheduled refresh at a time.  Any other agents requesting a new dial entry while an unscheduled refresh is being performed will take the next available dial entry from the current list or, if none are available, the next list in priority order.

Pending dial entries in the cache that were created or updated earlier than Max cache expire time (s) ago are hidden from agents to avoid assigning them dial entries which may no longer meet the dial list filter criteria. These entries will be excluded until the next dial list refresh completes and either be made available again if they still meet the list criteria or removed from the cache if they no longer meet it.

In addition, there is a minimum value of Max cache expire time (s) for which records will be excluded until the refresh has completed, if Max cache expire time (s) is less than 300 (5 minutes) then any pending dial entry created or updated within the last 5 minutes will be considered fresh.

How do I decide what cache settings to use?

Your cache settings will depend on the types of dial lists you are configuring. Generally you will use Connect with two types of dial lists:

  • Lists of hot leads
  • Lists of callbacks and campaigns.

Hot leads

Hot lead dial lists contain top priority dial entries that your agents must handle in the shortest possible time. The Connect package includes default cache settings. These settings are ideal for hot leads.

SettingValueDescription
Cache size20After Connect refreshes the dial list, the cache should contain 20 pending dial entries (or all the dial entries returned by the query if fewer than 20).
Cache expire time (s)300When an agent requests a pending dial entry from the list, if Connect refreshed the list more than 5 minutes (300 seconds) ago, Connect will queue a job to update the cache.
Max cache expire time (s)3600When an agent requests a pending dial entry from the list, if Connect refreshed the list more than 60 minutes (3600 seconds) ago, Connect will refresh the list and update the cache immediately.

You should also make sure that dial lists containing hot leads have a value of 1 in the Priority field. For more information, see How do I set the priority of a Dial List? in Editing a Dial List.

Callbacks and campaigns

Callback lists and campaign lists contain large numbers of pending dial entries that agents must work through in priority order. While the default cache settings may be suitable for these lists, you may want to change them. You may want to change the settings if the cache is often empty when your agents request a pending dial entry, or if Connect is refreshing the list if the cache still contains plenty of pending dial entries, unnecessarily adding Apex jobs to the queue.

Cache expiry time (in seconds)

If your cache is often empty when agents request a dial entry, Connect will have to perform an unscheduled refresh. Unscheduled refreshes are slower and block other agent from using the list. For information about queued and unscheduled refreshes, see How does Connect refresh dial lists? later in this page. In this case, you may want to reduce the value in Cache expire time (s) to ensure that Connect updates the cache before it is empty.

Conversely, if you are adding jobs to the Apex queue when not necessary, you may want to increase the value in Cache expire time (s).

Cache size

Cache size for a dial list containing dial entries for callbacks or campaigns depend on three factors:

  • Number of agents assigned to the list. The number of agents you have working on the list affects how quickly the cache will be emptied. A larger number of agents requires a larger number of pending dial entries as more agents are requesting them. In the case of a dial list created using the Single list with Multiple Users (filtered by record ownership) option, each assigned agent has their own cache. Therefore, the number of agents assigned to each cache is 1. When using the calculation—later in this page—to work out cache size, you will not need to include the number of agents in the calculation.
  • Average dial entry processing time. The average dial entry processing time should take into account successful calls, unsuccessful calls—such as no answer calls—and any skipped dial entries.
    The time it takes to process a dial entry affects how quickly the cache will be emptied. A longer average processing time requires fewer pending dial entries as agents will less often request them.
  • Cache expiry time. For information about the cache expiry time, see the Cache expiry time (in seconds) section earlier in this page.

Using these three values, use the following calculations to get the recommended cache size:

  • When the dial list is created using the Single List or Multiple Lists option:

    ((Cache expire time / Average dial entry processing time) * Agents assigned) * 1.25 = Cache size
  • When the dial list is created using the Single list with Multiple Users (filtered by record ownership) option:

    (Cache expire time / Average dial entry processing time) * 1.25 = Cache size

Multiplying by 1.25 provides a buffer to avoid the cache becoming empty.

Maximum cache size

Cache size must not be greater than 4500, in accordance with Salesforce limits. If the calculated cache size exceeds or is close to 4500, reduce the cache expiry time to refresh the list and update a smaller cache more often.

Maximum cache expiry time (in seconds)

If the data that your dial list is based on changes infrequently, you may want to increase the value in Max cache expire time (s). A larger value avoids Connect refreshing the list too often.

Examples

Dial list

Cache expire time (s)

Average dial entry processing time (s)

Agents assigned

Calculation

Cache size

A1503060((150 / 30) * 60) * 1.25375
B6001020((600 / 10) * 20) * 1.251500
C300604((300 / 60) * 4) * 1.2525

In these cases, the dial lists could be configured as follows. The examples use the default values for Max cache expire time (s). If your data changes infrequently, you may want to adjust these values accordingly.

Dial list

Cache size

Cache expire time (s)

Max cache expire time (s)

A3751503600
B15006003600
C253003600

How does Connect refresh dial lists?

When an agent requests a pending dial entry from the list, Connect will refresh the list using one of two methods.

Queued (asynchronous, background)

When an agent requests a dial entry from the cache, if the cache has expired (that is, the time since the last refresh exceeds Cache expire time (s)), Connect queues a scheduled Apex job to run in background. This job refreshes the dial list and updates the cache.

This type of refresh usually occurs when there are still valid dial entries in the cache. The job replenishes the cache. Because the job runs in the background, assigned agents can continue to work with existing dial entries in the cache.

Unscheduled (synchronous)

When an agent requests a dial entry from the cache, if the cache is empty or the Max cache expire time (s) is exceeded, Connect refreshes the dial list immediately and refills the cache.

An unscheduled refresh runs in the user interface and blocks other agents from using the dial list for the duration of the refresh.

Queued or unscheduled refresh?
A queued refresh is the preferred method of refreshing a dial list. If your dial list frequently becomes empty causing an unscheduled refresh, you should adjust your cache settings to avoid the cache becoming empty. You can either increase the size of the cache, or reduce the Cache expire time (s). For information about adjusting the settings, see the How do I decide what cache settings to use? section earlier in this page.
Support and documentation feedback

For general assistance, please contact Customer Support.

For help using this documentation, please send an email to docs_feedback@vonage.com. We're happy to hear from you. Your contribution helps everyone at Vonage! Please include the name of the page in your email.