The purpose of campaigns is to improve efficiency and outcomes compared to manual calling by introducing structure, automation, and optimisation into the calling process. Instead of isolated manual dialling, campaigns allow calls to be managed at scale with controlled timing, retry logic, and performance tracking, resulting in more consistent and measurable results.
The Campaigns menu item enables the administrator/manager to create a campaign. The main page is an overview of created campaigns, and the “Add Campaign” button is on the top right of the page
In the campaign overview, the following information can be seen:
The campaign name
Campaign Type: Preview, Power or Auto (To be explained)
A progress bar indicates how far the campaign has progressed. Selecting the progress bar will show a tooltip with the progress percentage as well as the outstanding target.
Campaign status: If the campaign is active (Green Circle), inactive(Red Circle), or completed (Blue Tick).
Note A blue tick only shows for campaigns and lists with targets, and if they were set to automatically stop once the target was reached. This does not work for campaigns or lists with no target
Date Created: The day the campaign was created.
Action Buttons.
A Play/Pause button
Arrows to move the campaign up or down
Manager button to adjust campaign settings.
= to move the campaign in the list order:
Note: When an agent is allocated to more than one preview campaign, they will receive leads from the higher-priority campaign first, until that campaign is completed or its leads are exhausted. However, an agent can't belong to more than one power dial campaign at a time. If an agent is part of a power dialler campaign, they are not able to be added to any other campaigns.
It is possible to create several campaigns, each with different agents assigned if desired.
An administrator can create a campaign only if this has been enabled in their “Permission” menu in TMS Users. Likewise, Agent extensions will only be assigned to a campaign if this feature has been enabled for them.
Before a campaign can be created, the campaign type needs to be established. There are different campaign types to cater to various business cases; each has its own attributes and parameters.
There are different campaign types available to cater for varying business cases; these are beyond the scope of this manual and will be covered under specialist topics. Each campaign type has its attributes and parameters.
Preview Dialler selects a contact for an available agent and then works through each number in the contact until there are no more numbers to try or a result is reached. This approach means no leads are wasted, and every number that should be attempted is attempted. When the contact has been chosen, the contact's information is displayed to the agent, allowing them to familiarise themselves while a countdown begins. When the countdown ends, the system will dial automatically on the agent's behalf.
Power-Dial campaigns are generally better suited to scenarios with vast numbers of contacts, which come at little or no cost, so wasting leads is less of a consideration than agent idle time. When an agent is flagged as idle, the system selects multiple contacts and then dials a single number from each of those contacts. The first person to answer is then passed to the agent. The remaining contacts who answer may be routed to a set of actions, such as a message or a queue of available agents.
Auto Dialler is a voice broadcasting dialler that runs calls independently from any extension. It calls on a concurrency scheme rather than a ratio because of independence. Its primary function is to call high volumes of leads very rapidly. An example where this would be useful is to test reachability on a list of contacts.
Note: Auto-dialer campaigns are charged per contact reached on the list (Successful answer and voicemail), not for all contacts on the list itself. Please speak to a sales representative for more information or clarification.
There are 2 Script Options:
Text Script
Interactive Script
Text is used to create a written script that needs to be followed to the letter. Custom Fields, or Placeholders, can be added to create a personalised conversation. These placeholders will automatically be replaced with the relevant data uploaded with the list of contacts.
Note: Custom fields do not pull through to standard reporting(example, Call Disposition reporting.) If reference numbers are important for tracking, they need to be mapped to CrmTags.
An interactive script allows the managers to add a scorecard on what must be covered during the conversation. This allows the agent free rein on how to interact with the client, as long as all points are covered.
Parameters available are dialler-dependent.
The Wrap-up time parameter specifies how long an agent will have to disposition a call after the hangup, i.e., provide an outcome for the just-completed call. The wrap-up timer countdown is visible to the agent on the Post-Call Wrap-up screen. Agents should aim to submit their disposition before the timer reaches zero. If a disposition is submitted early, the agent is immediately returned to an available state without waiting for the timer to expire.
Preparation time is the amount of time, in seconds, that an agent will have to familiarise themselves with the next contact information. This will count down and, upon reaching zero, will dial. This countdown can be skipped by pressing the Dial button.
The Maximum Call Attempts Per Number indicates the amount of times a number will be tried before it is deemed unreachable.
A Minimum Contact Interval establishes the shortest time before a contact may be retried.
The number used to make the calls. This can be set as Anonymous, a randomised pool, a verified CLI pool, a personal caller ID, or a static number.
Ring Time indicates the maximum number of rings the call will be allowed before it is considered unanswered, and the next number is called.
Some of the parameters are the same for the preview Diallers. The ones that are slightly different are:
A contact can have multiple numbers. The minimum contact interval will now indicate the minimum amount of time before a particular number of a contact is attempted again.
Note: Minimum contact interval is one of several aspects that is considered for the contactaibility if a list. Contacts are selected firstly on their priority (so that redials and callbacks, for example, take precedence) and then based on their number of attempts, and from there the numbers within a contact are chosen from an ascending number of attempts. This means that the least dialled contact will be chosen, and then the least dialled number of that contact will be chosen. If all things are considered equal, then the system will base calls on the order that they were provided.
The number of contacts that are selected for the dialler server to call at one time. Because the power dialler works down the list, only one number per contact will be selected. When answering machine detection recognises that a number is not available, another contact’s number will be added to the list of dialled numbers.
This button can be enabled to assist the dialler server in detecting voicemail, as well as any other machine that answers a call, such as IVRs. When an answering machine is detected, the system will automatically select a disposition of unsure. Therefore, not occupying agent time with calls that have been answered by voicemail.
An Overflow Hunt List in Power Dialler will redirect a second contact's calls when more than one contact has answered. As a huntlist makes use of queues, this will activate additional queue analytics, which will be discussed further in the analytics lesson.
Trigger Power Dialler will indicate when to dial the next set of contacts. If the power dialler is triggered on disposition, it means that the agent will be able to complete the disposition report before the dialler selects the next set of contacts. If the power dialler is triggered on the hang-up of a call, the next set of contacts will be dialled whilst the agent is filling in the disposition report.
The auto dialler parameters are different from the preview and power diallers, as no agents are needed.
When a caller decides to hold after the announcement has played, they will be sent to the huntlist. An example of this is when a caller hears a promotional announcement and is interested in the product or service. As the auto dialler does not make use of dispositions, the hunt lists analytics will be seen in the outbound queue.
Chosen from the list of available recordings in the system.
Custom fields allow for non-standard information to be added to the script and appear on the agent’s screen when the contact is being dialled (or, in the case of Power-Dialler, on the phone). Custom fields are used to add additional information to the agent's view. This information is imported with the contact list and needs to be in individual columns. When more than 5 custom fields are needed, it is recommended to add a webhook that links to the CRM with the client's details.
Dispositions can be enabled in two contexts in TMS: on queues and on campaigns. While the underlying mechanics are similar, there are important differences in how they are configured, what they capture, and how they interact with the retry engine.
Queue Dispositions
Queue dispositions are optional and must be enabled on each queue individually by the administrator. When enabled, agents handling calls through that queue are presented with the dispositioning process after each call. Queue dispositions are well-suited to inbound call handling scenarios where agents need to record the outcome of customer-initiated calls, for example, whether a support query was resolved, whether a callback was scheduled, or whether a complaint was logged. Queue dispositions use the same category structure (Success, Unsure, Failed) but do not interact with a campaign’s retry engine or contact list. Because inbound queues do not manage contact lists in the same way campaigns do, a failed disposition on a queue call does not trigger any retry logic; it is recorded for reporting purposes only.
Campaign Dispositions
Campaign dispositions are integral to the campaign’s operation and are always active when a campaign is configured. They are assigned at the campaign level and are specific to the outcome options relevant to that campaign’s purpose. Dispositions directly drive the campaign engine: a failed contact disposition and a success disposition flag the contact as no longer available. From the active pool. A failed number flags that particular number, not the whole contact, as unavailable. Unsure outcome, leaves the contact and number as being available for retry. The key distinction is that campaign dispositions are operational; they control what happens next to a contact, while queue dispositions are primarily informational, feeding into analytics and reporting without affecting a contact list or retry schedule. During this period, the agent is automatically placed in a system pause state labelled “Wrapup”, which is classified as a productive pause and is reflected accordingly in Time and Attendance reporting.
Note: Frequent No Submission dispositions for a particular agent may indicate that the wrap-up time allocated is insufficient for the call type, or that the agent requires additional training on the dispositioning process.
Campaign setup allows for different dispositions to be created for each campaign and reported accordingly. There are some default tags in each category, and these are flagged with an asterisk (*) to identify them. Every disposition in TMS is assigned to one of three behavioural categories: Success, Unsure, or Failed. The category drives how the system treats the contact after the call ends, whether to retry, hold, or permanently remove the contact from the active pool. Selecting the correct category is critical, as it directly affects campaign retry behaviour, contact management, and the accuracy of all reporting.
Unsure means there is no finite outcome, and this contact is still viable to be called again. There are multiple scenarios that could cause an unsure disposition:
There are certain system-generated and other mandatory dispositions in the platform; these are listed in the table below with their categorisations and a description of the disposition.
Note: Disposition Data in Campaign Analytics
Disposition data surfaces in real time across the Campaign Analytics view, presenting a breakdown of Successful, Unsure, Failed Number, and Failed Contact outcomes per campaign. As a campaign progresses, managers should expect:
* As a campaign progresses through retry passes, the system accumulates call history for each contact and builds a profile of when that contact is most likely to answer, based on the days, times, and patterns observed across previous attempts. This is referred to throughout the following scenarios as propensity-to-answer data or the propensity engine.
Reporting data is explained further after the Campaign List section.
Allows the agent to modify or add to a contact’s details, particularly useful in adding alternative numbers to a contact.
Enables agents to add contacts to the current list.
Allows an agent to make notes either in the Agent Workspace whilst on the call or in the disposition window at the end of the call. These notes are stored with the call dispositions.
This is also available in-call or in the disposition window and allows an agent to capture a reference number and associate it with the call. These tags are also helpful in searching for calls in Call Detail Records or Recordings pages.
Will enable an agent to receive an inbound call during the preparation countdown; the countdown will then resume when that call is complete. If this is not enabled, calls will be automatically rejected.
Sticky Agents allow contacts to be assigned to agents who have tried or have made contact with the client.
Allow Early Hang Up allows the agents to hang up on a call before the specified ring timeout.
It is possible to create targets for a campaign, namely, Total Calls, Completed Contacts, Successful Calls or Financial Target. Note that targets are also available at a list level.
Financial Target
The Financial Target option allows a campaign to be run toward a specific monetary goal rather than being measured solely by call volume. A Financial Target is typically used where the success metric is a rand value of sales achieved, a revenue threshold, or a defined financial outcome. When Financial Target is selected, the agent needs to add a financial value in the wrap-up form. (This same concept applies to all targets)
As the campaign runs, progress is tracked in real time in the campaign’s reporting view, allowing the manager to monitor commercial performance at any point during the campaign’s operation.
Auto-Deactivation on Target
When the “Auto deactivate when reaching the target” option is enabled, the campaign stops automatically as soon as the target value is reached, with no manual intervention required. This is particularly useful for cost-controlled campaigns where continuing beyond the goal would result in unnecessary expenditure. Deactivation is immediate: any calls queued for retry are halted, and agents stop receiving new call assignments from the campaign. If auto-deactivation is not enabled, the campaign continues past the target, allowing the manager to deactivate manually at their choosing or until the contact list is depleted.
The Campaign Manager page allows for an overview of parameters, with buttons to Edit or Delete the campaign and options to link to the statistics, add webhooks, assign agents and manage lists.
Webhooks are a mechanism to allow the platform to interact with other systems. These can be added to campaigns to allow feedback or the start of a workflow in a secondary system to the TMS, such as a CRM platform. Webhooks must already exist in order to be selected within campaigns; these are created in the API & Integration.
The action of the webhook can be seen in the Agent Workspace and will be covered in the corresponding chapter.
When a webhook is added, three settings are available:
Which webhook
When to Fire, i.e. what event will initiate the webhook
Behaviour, i.e. whether to ask or just to do it.
Here, an administrator will find all information, including how many calls were completed, how many failed and why. These stats are linked to the administrator’s Campaign Analytics tab and will be discussed further in the Analytics chapter.
Assigning an agent to a campaign means that when they are logged in, the campaign is active, and there are available contacts in an active list, the agent will receive calls from that campaign. Agents assigned at a campaign level will be default agents on all lists of this campaign. Note that extensions will not be available for selection if they have not been enabled as an agent.
For an extension to be activated as an agent, the administrator must enable the agent on the Agent tab in the extension manager menu and assign the agent to an outbound queue.
To assign the agents to a campaign, click on the “Manage” button of the desired campaign on the Campaign Manager page. This will open a new “Manage Campaign” page with the agents and contact lists as well as Stats, Webhooks, Edit and Delete buttons. Select the “Edit” button within the Agents section.
A pop-up window will appear, with two panes. Agents on the left-hand side arranged according to groups, and groups in the right-hand pane. Should a group be selected, all members of that group will be included. Note: Multi-campaign membership is possible with Preview Dial but not Power Dial campaigns. Should an agent be part of a Power-Dial campaign and are assigned to another campaign, they will be unassigned from the Power-Dial campaign.
Before a list is prepared and uploaded, several factors should be considered. Thoughtful list planning directly affects campaign throughput, agent efficiency, and the quality of results produced.
Note: Poor list hygiene is one of the most common causes of high Failed Number rates. A list producing above 15% Failed Numbers on first pass is a strong indicator of a data quality issue in the source data.
Do Not Call Compliance
Before a contact list is uploaded, it should be scrubbed against any internal Do Not Call (DNC) records. Contacts who have previously requested not to be contacted, or who have been assigned a DNC disposition in a prior campaign, should be excluded from new lists before upload. This is a legal obligation under the Protection of Personal Information Act (POPIA) and applies to all outbound calling activity.
To add a list, click on the Add List button. A pop-up window will appear. Lists may have their own properties, which will take precedence over those set at the campaign level.
Upload a CSV spreadsheet by selecting the upload area to browse the local machine, or drag a file onto the window. Once the list is imported, the categories need to be checked to ensure that all information matches the configured field settings, i.e. the first name is in the First Name field.
As an alternative to manual CSV upload, Euphoria provides a dedicated SFTP server that allows contact lists to be automatically ingested into a campaign. Once a file is created via a client's CRM and placed in the correct location with the correct naming convention(This should be done by a technical person in the company), the system will pick it up and load it automatically, removing the need to upload lists manually through TMS. The SFTP server is hosted at sftp.euphoria.co.za. Access credentials are provisioned by Euphoria. (Please contact a Euphoria representative to request SFTP access.) Euphoria will need to Whitelist the client's information to ensure that a firewall does not block the information.
Folder Structure
Files must be placed in the uploads folder on the SFTP server, within a sub-folder that corresponds exactly to the campaign name as configured in TMS. For example, a campaign named Absa_OBS_PD would require a folder path of uploads/Absa_OBS_PD/.
File Naming Convention
The file name must end with _YYYYMMDD.csv, where YYYYMMDD represents the date on which the list should run. The portion of the filename before the date suffix may be named freely. Campaign and List fields are irrelevant in the list, the service picks up the campaign name from the folder name, and the list name is derived from the filename.
Example: ContactList_20241215.csv
File Content and Field Mapping
The order of columns within the CSV file does not need to follow a specific sequence; however, it is best practice to place the most contactable numbers first when more than one number is allocated to a contact. The column headings need to correlate with the field settings configured in TMS. Custom fields are an important exception. Rather than using the field label as the column heading, custom fields must be mapped using the headings Custom1 through Custom5, corresponding to their order in the campaign’s custom field configuration. TMSv3 only caters for 5 custom fields so anything you put in Custom6 or 7 won't be
Ingested. Phone numbers should be in local format (0649001428) or E164 format (27649001428 or +27649001428), and multiple numbers should be / delimited, i.e. 0649001428/0649001427.
Note: If custom field columns are not correctly labelled, the data will not map to the correct fields on the agent’s screen.
Dialler trickle Feed is an API call that allows a user to push contacts directly into a specific contact list of a campaign in order to be dialled by one of their agents as a priority. This can be done through any type of URL where lead generation is done, for example, Facebook. The lead will feed into the top of a campaign list automatically as a priority.
Dialler Trickle feed can be used with both a preview and a power dialler, but is recommended for the preview dialler.
An example of this would be when a user adds their information to a Facebook page and specifies their language. The lead will then be added to the list with that language specification in the campaign. To set up this API key for dialler trickle feed, please refer to the API Documentation on the Support Portal.
Within each campaign list, an administrator will be able to view the most recent campaign history and the details of each call. This includes all the contacts' dial statuses with a time, number of attempts, and the agent who last called them. More details of the disposition are available in a tooltip when clicking on a contact name, whilst further contact history details can be found by selecting the Detail button
Lists are prioritised by the order in which they appear on the Manage Campaign page. The list at the top will be contacted first. A drag-and-drop handle is available to the left of the list name to reorder list priorities. It is essential to note that list priority takes precedence over lead priority. When multiple lists are active within a campaign, agents will work through contacts in the higher-priority list before moving to the next.
Disposition data tells a story about how a campaign is performing. The scenarios below describe common patterns that campaign managers will encounter in analytics, explain what the data means, and suggest appropriate actions. These scenarios are illustrative; actual figures will vary by campaign, list quality, and industry.
In Euphoria campaign analytics, Living Standards Measure (LSM) is the primary lens through which disposition data is interpreted.
Contactability, timing, device stability, and response behaviour all shift significantly across LSM groups. Without this context, disposition metrics risk being misread as system or campaign inefficiencies when they may simply reflect expected audience behaviour.
Before interpreting any campaign outcome, the manager establishes a key principle: there is no universal definition of normal contactability. Contact rates vary significantly depending on who is being called, not just how the campaign is configured. Office-based users may show predictable weekday availability, while shift workers and informal sector users tend to show irregular or split availability windows. Lower-income or shared-device households often have intermittent and unpredictable access, whereas higher-stability segments show more consistent reachability patterns. Identical contact rates can therefore represent fundamentally different realities depending on the underlying audience.
Lower LSM segments (LSM 1–4) typically show shared or rotating device access, higher natural unavailability, inconsistent network or power availability, and greater variability in reachability patterns. Higher LSM segments typically show more stable device ownership, predictable availability windows, and stronger data reliability and consistency.
Contactability is not a fixed KPI. It is a reflection of audience structure and accessibility patterns, and must always be interpreted before operational changes are made.
Scenario 1: High Voicemail Rate: Calling Window is Behavioural, Not Fixed
After the first week of a Power-Dial campaign, analytics show 65% Voicemail and 12% Successful connections. The campaign is running between 09:00 and 11:00.
The first interpretation step is to challenge a common assumption: that calling windows are inherently aligned to standard working hours. In reality, calling windows are defined by when the target audience is actually reachable, and this varies significantly by segment. Different audiences have different availability patterns, and calling windows should reflect this rather than defaulting to standard business hours.
In lower LSM segments, voicemail rates are naturally higher due to shared device access, prepaid airtime constraints, inconsistent network coverage, and the reality that devices are frequently switched off or rotated between users. In these environments, voicemail is not necessarily a failure, it is often a structural outcome of accessibility constraints.
The manager evaluates the actual observed reachability patterns by time of day, the dataset composition and LSM weighting, data age and number stability, and CLI recognition and trust behaviour. After identifying both misaligned timing assumptions and audience-driven constraints, the calling window is adjusted to 12:00–14:00 and 17:00–19:00. Voicemail drops to 35% and Success rises to 28%.
Interpretation: High voicemail rates must be interpreted as a combination of audience accessibility and operational configuration, not timing alone. Calling windows are behavioural outputs, not predefined business-hour assumptions.
Scenario 2: Sudden Unavailable Spike: Structural Behaviour vs System Fault
Mid-campaign, Unavailable dispositions spike from 15 to 80 in a single day. Before assuming a system issue, the manager evaluates whether the spike is structural (audience-driven) or operational (system or data-driven).
In lower LSM segments, intermittent connectivity is common, devices may frequently be switched off, network coverage is inconsistent by geography, and availability is structurally unstable. This can result in natural spikes in unavailability without any campaign change. The manager checks for external disruptions such as load-shedding, outages, or public holidays, whether the spike is isolated to a specific batch or segment, and whether higher-stability segments are also affected.
Interpretation: If concentrated in lower LSM contacts or isolated to a specific time window, the spike may reflect normal behavioural conditions. If it appears across stable segments or specific data batches, it indicates a data or system-level issue requiring intervention.
Scenario 3: High Failed Numbers: Data Integrity vs Structural Churn
At the end of the first pass, 28% of numbers are marked as Failed. Before treating this as a pure data quality issue, the manager evaluates data stability patterns within the audience composition. The manager reviews the data source and acquisition age, whether failures are concentrated in specific segments, and whether ingestion or formatting issues may have contributed.
Interpretation: Failed Numbers are a permanent outcome and cannot be recovered through retries. However, their rate must be interpreted against the audience structure. In lower LSM-heavy datasets, higher failure rates may be structurally expected due to SIM and number churn, while in higher LSM datasets, the same rate indicates a clear data quality issue requiring immediate investigation.
Scenario 4: Retry Pass Improvement: Behavioural Learning in Context
Across multiple retry passes, Success rates improve from 18% to 31%. This improvement is driven by the interaction between propensity-to-answer learning and underlying audience behaviour patterns. As the system builds historical response data, it identifies individual contact response tendencies, optimal time-of-day windows, and segment-level behavioural patterns.
Different audience structures influence how quickly this learning stabilises. Some segments produce predictable patterns early, while others require more interaction history due to irregular availability, particularly in lower LSM groups where device access and connectivity are less consistent.
Interpretation: Improving performance across retry passes is expected behaviour. The key driver is not system learning alone, but how well that learning aligns with the real-world behavioural constraints of the audience being contacted. Managers should not judge campaign viability on first-pass results alone.
Scenario 5: Campaign Stalling: Structural Reach Limits vs True Exhaustion
Three weeks into a campaign, Success rates decline from 40 per day to under 10. Failed and Unreachable outcomes increase significantly, and the remaining contacts are on late-stage retries. Before concluding exhaustion, the manager evaluates whether the decline is structural (access-driven) or saturation-driven (true exhaustion).
Some audiences naturally produce late-cycle performance drops due to the gradual reduction of the reachable population over time, the earlier capture of easily contactable leads, and an increasing concentration of structurally hard-to-reach users. Other campaigns stall due to true list saturation, diminishing response probability, or campaign effectiveness limits. The manager evaluates whether remaining contacts share structural accessibility constraints, whether failures accelerated early in the campaign lifecycle, and whether retry optimisation has already reached diminishing returns.
Interpretation: Campaign stalling must be interpreted in context. It may reflect either structural reach limitations within the audience or true list exhaustion. The correct classification determines whether further optimisation is still possible or whether the campaign has reached its natural endpoint.
Across all scenarios, campaign metrics are not self-explanatory. They are outcomes of audience behaviour, data structure, and system configuration interacting together.
Articles Related “How To” Document Links:
How to Adjust Dispositions for a Campaign.
How to Create a Script to the Campaign.
How to Add Agents t the Campaign.
How to Assign a List to a Campaign.
If Agents are Added to a Campaign, are the Same Agents Added to a List on Creation?