Edit IVR Campaign

Edit IVR Campaign

 

 

XCALLY section

Motion Bull → IVR Campaigns → Edit

On this page

 

 

 

Overview

This page provides detailed information about the configuration and options available when editing an IVR campaign.

Please note that the new XCALLY Dialer (V2), available from version 3.66.0, is currently in Beta and supports only IVR campaigns. The legacy dialer remains available and continues to support all existing features.

  1. Go under Motion Bull → IVR campaigns

  2. Find the IVR campaign of interest and click on the three dots menu

  3. Click Edit campaign to access the tabs and actions described below:

1. Clone the campaign

4. Reset List

2. Add list

5. Go to Realtime

3. Add blacklist

6. Save Changes

In the first 4 Tabs you can set the
IVR campaign parameters:
Settings
Campaign
Retry Settings
Advanced

In the latter 4 Tabs you can find the
IVR campaign logs:
Hopper
History
Final
Blacklist

 

 

General Settings

 

The General Settings section allows you to configure key parameters of an IVR Campaign. The following options are available:

  • Name: define a name for the IVR Campaign

  • Active/Inactive: use the toggle switch to activate or deactivate the campaign.

    • The campaign will run only when the status is set to Active.

  • Trunk and Trunk Backup: select the primary SIP trunk to be used for outbound calls.

    • Optionally, you may also configure a backup trunk. If the main trunk becomes unavailable, the system will attempt to use the backup trunk automatically.

  • Time interval: specify the time window during which the campaign is allowed to run.

  •  Check Duplicate Option: determines how the system handles potential duplicate contact numbers before loading them into the campaign:

    • Never → no duplicate check is performed. This allows the same number to be loaded multiple times into the Hopper or appear more than once in the Final list, potentially resulting in repeated contact attempts.

    • Always (default value) → the system checks if a contact number already exists in any list, including both the Hopper and Final lists. If the number is found, it will not be loaded again. This prevents duplicate entries and multiple attempts to the same contact.

    • Only if Open: the system checks for the number only in the Hopper (i.e., currently open or pending contacts).

      If found, it will not be reloaded. However, if the number exists only in the History (i.e., already processed), it will be reloaded.

  • Cut Digits: enter the number of digits to remove from the Caller ID to partially mask the number displayed to the customer.

    • Set to 0 if no digits should be removed.

  • Description (optional): provide an optional description for the campaign for internal reference.

 

Campaign Settings

 

In the Campaign Settings Section you can configure the dialing behavior for the campaign. The following options are available:

  • FROM VERSION 3.66.0 Use V2 Method: shows if the new V2 dialing method is used in the campaign configuration

  • Name of the selected Cally Square IVR Project

  • Max concurrent calls: the maximum number of concurrent calls that the dialer is allowed to originate for this campaign.

    • Set to 0 for unlimited concurrent calls (Default=30).

 

The Originate settings determine how the dialer sets the outgoing caller ID for each generated call.

  • Caller ID Name: sets the name shown as the caller ID.

    • Only works if a valid Caller ID Number is also configured.

  • Caller ID Number: sets the number shown as the caller ID.

    • The ability to set caller ID parameters depends on the trunk/provider. Many providers do not allow number customization.

  • Random Outgoing CallerId Number: the number of digits (starting from the end) of the CallerIdNum to be replaced by random digits.

    • Allows dynamic obfuscation of the caller ID number by replacing digits with random values (0= none).

    • E.g. If CallerIdNum is 1234567890 and the setting is 2, the dialer might use something like 12345678XX, where XX are random digits.

  • Originate Timeout: defines how long (in seconds) the dialer will wait for a contact to answer an outbound call.

    • If the call is not answered within this period, the originate status is set to No Answer, and the contact is eligible to be recalled according to the campaign's Retry Settings, including global Max Retries, No answer Max Retries, No answer Retry Times.

  • Prefix (if any): you can add a static prefix to every contact number in the list associated with the campaign.

    • Accepted Characters: Letters, numbers, and symbols. The Prefix will be added to every contact of the lists associated to the campaign. 

Retry Settings

 

Global

  • Global max retries: the maximum number of times the dialer will attempt to call a contact, regardless of the reason for the previous call failure.

    • Default = 4.

    • Once this limit is reached, the contact is considered closed, and no further call attempts will be made.

Congestion is a status that occurs when, for instance, there are failures in the trunk. Below the available configurations:

  • Congestion Max retries: the maximum number of retries allowed specifically for calls that fail due to congestion (Default=3).

    • If the congestion-specific retry limit is reached (before hitting the global max retries), the contact is moved from the hopper to final status and will no longer be called.

  • Congestion Retry Time: the minimum waiting time, in minutes, before the dialer retries a contact after a congestion-related failure (Default=150).

    • The dialer will retry after this delay only if the number of congestion retries is below the Congestion Max Retries and the total number of retries is below the Global Max Retries.

Busy is a status that occurs when the destination is engaged in another call and unable to receive a new one. Below the available configurations:

  • Busy Max retries: the maximum number of times the dialer will retry a call that previously failed due to a busy status (default=3).

    • If this limit is reached before the Global Max Retries, the contact is moved from the hopper to final and will not be retried again for this campaign.

  • Busy Retry Time: the minimum delay, in minutes, that the dialer will wait before retrying a contact after a busy failure (default=150).

    • The dialer will continue to retry as long as the Busy Max Retries is not reached, and the Global Max Retries is still available

image-20260610-102213.png

FROM VERSION 3.66.0

Priority Retry: value of priority assigned to the contact when it is rescheduled (default = 2 with descending order). It is useful if you have multiple campaigns and you want to prioritize rescheduling contacts on certain campaigns.
Available for new dialer campaigns only (V2).
E.g. if on CampaignA you insert Priority Retry=4 and on CampaignB Priority Retry=2, the scheduled contacts for CampaignA have higher priority.

No Answer status occurs when the call is successfully placed but the recipient does not answer within the configured Originate Timeout (default: 30 seconds). Below the available configurations:

  • No Answer Max retries: specifies the maximum number of times the dialer will retry a contact that failed due to no answer (default=3).

    • If this limit is reached before the Global Max Retries, the contact is moved from the hopper to final and will not be retried again for this campaign.

  • No Answer Retry Time: the waiting time, in minutes, before the dialer retries a contact after a no answer status (default=150).

    • The retry process will continue as long as No Answer Max Retries has not been reached, and the Global Max Retries limit is not exceeded.

image-20250902-134509.png

 

image-20250902-134529.png

No Such Number status occurs when the called phone number is identified as invalid or non-existent by the provider or trunk. Below the available configurations:

  • No Such Number Max retries: the maximum number of retry attempts for contacts that failed due to a No Such Number error (default=3).

    • Once this limit is reached (before the Global Max Retries), the contact is marked as final and will not be retried again.

  • No Such Number Retry Time: the minimum delay, in minutes, before retrying a contact that failed due to a No Such Number error (default=150).

    • The retry process continues as long as the No Such Number Max Retries is not exhausted and the Global Max Retries is still available

An Abandoned status occurs when the customer hangs up the call before being connected to an IVR project. Below the available configurations:

  • Abandoned Max retries: sets the maximum number of retry attempts for calls that were marked as Abandoned (default=3).

    • If this limit is reached before the Global Max Retries, the contact is marked as final (Abandoned) and is no longer eligible for recall.

  • Abandoned  Retry Time: defines the minimum delay, in minutes, before the dialer retries a contact that previously abandoned the call (default=150).

    • The dialer will retry as long as Abandoned Max Retries is not exceeded and Global Max Retries is still available.

image-20250902-134255.png

 

Machine status occurs when the system detects an answering machine during a call attempt. This is typically enabled by configuring Asterisk AMD (Answering Machine Detection) in the campaign’s Advanced settings. Below the available configurations:

  • Machine Max retries: defines the maximum number of retry attempts for contacts where a machine was detected (default=3).

    • If this threshold is reached before the Global Max Retries, the contact is marked as final (Machine) and will not be called again.

  • Machine Retry Time: the minimum delay, in minutes, before retrying a contact after a Machine status (default=150).

    • The retry cycle continues as long as Machine Max Retries is not exhausted and Global Max Retries has not been reached.

    • This setting is useful when retrying contacts in the hope of eventually reaching a live person instead of voicemail.

Advanced Settings

In the following section you can find the full list of the advanced parameters of the IVR campaigns.

 

Order by Scheduledat: defines the order in which contacts are selected from the Hopper based on their scheduled_at timestamp:

  • ASC (Ascending) – The dialer prioritizes contacts with earlier scheduled times.

    • 📌 Example: If one call is scheduled at 10:00 AM and another at 10:05 AM, the dialer will process the 10:00 AM call first.

  • DESC (Descending) – The dialer prioritizes contacts with later scheduled times.

    • 📌 Example: In the same case, the 10:05 AM call would be processed before the 10:00 AM call.

The Contacts in the Hopper are dialed by Priority first, then by ScheduledAt.

 

Global interval

The include syntax is defined like this:
<time range>,<days of week>,<days of month>,<months>
where:
<time range>= <hour>':'<minute>'-'<hour>':'<minute>
|"*"
<days of week> = <dayname>
| <dayname>'-'<dayname>
| "*"
<dayname> = "sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat"
<days of month> = <daynum>
| <daynum>'-'<daynum>
| "*"
<daynum> = a number, 1 to 31, inclusive
<hour> = a number, 0 to 23, inclusive
<minute> = a number, 0 to 59, inclusive
<months> = <monthname>
| <monthname>'-'<monthname>
| "*"
<monthname> = "jan" | "feb" | "mar" | "apr" | "may" | "jun" | "jul" | "aug" | "sep" | "oct" | "nov" | "dec"
daynames and monthnames are not case-sensitive.
If you replace an option with *, it is ignored when matching

Before initiating a call to a contact, the system performs two key time checks:

  1. Global Interval Check:
    This is a mandatory security check to determine whether the campaign is allowed to generate calls at the current time. If the current time falls outside the Global Interval, the campaign will not be activated, and no calls will be placed.

  2. Configured Time Interval Check:
    After passing the Global Interval check, the system evaluates the specific time interval(s) set for the campaign (default: 07:00 - 22:00, *, *, *).

Important Notes

  • By default, the Global Interval is set to 7:00 AM to 10:00 PM. This means that the campaign cannot run outside this timeframe, regardless of other settings.

  • Even if the General Settings’ Time Interval is configured as “always” or a broader range, the campaign will remain inactive outside the Global Interval unless you explicitly modify it.

We strongly advise you to ensure that your campaign’s time intervals comply with the legal regulations and calling hours policies applicable in your country or region.

Here you can define timezone

Before placing a call to a contact, the system verifies that the current time aligns with the configured campaign time intervals. The timezone setting determines which local time the system uses to evaluate these intervals.

Suppose your server is located in Italy, but you set the campaign timezone to Australia/Sydney and configure a global interval of 18:00-20:00, *, *, *.

  • The system will initiate calls when it is between 6 PM and 8 PM in Sydney.

  • At that same moment, it will be 10 AM in Italy.

The timezone applies at the campaign level, not individually to each contact.

 

  • AMD (Answering Machine Detection): enable this option to activate Answering Machine Detection (AMD), a feature provided by Asterisk that attempts to distinguish between a human answering the call and an answering machine (e.g., voicemail).

    • When enabled, the system analyzes the call response to determine if the recipient is a human or a machine.

AMD configuration requires technical expertise. Incorrect settings or poor tuning can lead to false detections, causing the system to misclassify human responses as machines, which may result in lost contact opportunities or failed interactions.
For more information see Asterisk documentation.

 

Monitoring IVR Campaigns

The Hopper is a core component in managing and monitoring IVR Campaigns. It contains the list of contacts that are scheduled to be called by the dialer, starting from the scheduled time.

  • When a new contact list is added to a IVR Campaign, all contacts from that list are placed into the Hopper.

  • If new contacts are added later to the same list, they are automatically appended to the Hopper.

  • Blacklist Check: Before initiating a call, the dialer verifies whether the contact exists in the blacklist. If it does, the contact is skipped.

Hopper

 

At the top of the Hopper section, four widgets are displayed:

  • Total: the total number of contacts currently in the Hopper

  • Fresh: contacts that are queued to be dialed for the first time

  • Open: contacts that have already been dialed at least once but are still in the queue for additional attempts

  • Closed: contacts that are either marked as closed (completed or finalized) or have reached the maximum number of retry attempts

Using the three-dot menu next to each Hopper entry, you can:

  • Delete the Hopper: cancels the scheduled call for the contact

  • Edit the Hopper and change the call schedule, modifying:

    • Scheduled Date and Time: Specifies when the contact should be called.

    • Priority of the call: determines the order in which contacts are called if multiple are scheduled for the same time.
      0 = Lowest; 1 = Low; 2 = Medium; 3 = High; 4 = Highest.

History

The Hopper History provides a detailed log of all calls initiated by the dialer. For each call, the following information is recorded:

  • Status: The outcome or current state of the call (e.g., completed, failed, busy, no answer).

  • Start Time: The exact timestamp when the call began.

  • End Time: The exact timestamp when the call ended.

This historical data allows you to track and analyze the performance and behavior of the dialer over time.

Click here for the Calls Status List Table.

Final

The Hopper Final contains all contacts that have been closed—either because they were successfully handled or due to other reasons (e.g., maximum retry attempts reached).

You can move one or many contacts from Final to Hopper: they will be restored in the Hopper and the Dialer will call them again.

This function is not allowed

  • if they have Status=Answered.

  • if a Contact Id is already in the Hopper (this prevents multiple identical contacts to be restored in the Hopper).

Once you restore a contact, this is not moved from Final to the Hopper but a new entry is added to the Hopper.

  • If a contact is successfully connected to an IVR project, it is removed from the Hopper and moved to the Hopper Final. These contacts will not be called again.

  • If a call fails, the system tracks the number of failures by reason (e.g., congestion, busy, no answer). The contact remains in the Hopper until the maximum number of retries is reached.

  • Once contacts are moved to the Hopper Final, if you remove the list from the campaign and add it again, only open contacts (contacts that are not in the Hopper Final) are placed in the Hopper and dialed by the dialer. This will avoid unnecessary calls to closed contacts.

 

How to Restore Contacts

You can restore contacts in several ways:

  • clicking on this button you can select one of the Calls Status List to restore, choosing among those available from the pop-up screen:

In this case, all contacts whose phone id is not already in the Hopper will be restored.