8.1 Overview

Campaign Analytics converts Campaign activity into operational measurements that help users determine:

How many Contacts were processed
How many Calls were created
How many Calls completed
How many Calls failed
When Calls were placed
How long completed Calls lasted
Which hours produced stronger results
How many Contacts required retries
Which DTMF keys were pressed
Which Campaign messages performed best
Which Contacts require follow-up

AIUNIFY Call Center provides several Campaign reporting interfaces:

Campaign Details
Campaign Analytics
Campaign Call History
Campaign Contact results
DTMF Analytics
Message Variant performance
Campaign Templates
Call and Contact CSV exports
Advanced JSON analytics endpoints

These interfaces use related but not always identical formulas. A number displayed as Answered, Completed, Progress, or Completion Rate can represent different conditions depending on the page.

The primary Campaign Analytics route is:

/analytics/campaigns/[Campaign ID]

The application also contains a separate advanced analytics route:

/campaigns/[Campaign ID]/analytics

The first is the normal visual Analytics page. The second returns a structured JSON analytics response and is not the primary user-facing dashboard.

Opening Campaign Analytics

8.2 Opening Analytics from Campaign Details

To open Campaign Analytics:

  1. Open Campaigns from the Sidebar.
  2. Select All Campaigns.
  3. Open the intended Campaign.
  4. Select Analytics in the Campaign header.
  5. Confirm the Campaign Name is correct.
  6. Wait for the overview Cards and Charts to load.

8.3 Direct Campaign Analytics Address

The normal page address is:

/analytics/campaigns/[Campaign ID]

Example:

/analytics/campaigns/42

8.4 Analytics Data Endpoint

The visual Analytics page receives Campaign data through:

/analytics/campaigns/[Campaign ID]/data

This endpoint supplies the calculations used by the Cards and Charts.

8.5 Campaign Analytics Exports

The same Analytics section provides:

/analytics/campaigns/[Campaign ID]/export/calls

/analytics/campaigns/[Campaign ID]/export/contacts

These routes download Campaign-specific CSV files.

Campaign Analytics Access

8.6 Authentication

The user must be signed in before Campaign Analytics can be opened.

8.7 KYC Requirement

The Campaign and Analytics route groups are protected by the Basic KYC requirement.

When KYC is enabled, a Customer generally requires:

Approved Basic KYC
or
Approved Business KYC

8.8 Campaign Ownership

Analytics access is determined by Campaign authorization.

The expected scope is:

Administrator:
Authorized Campaigns across the platform

Customer:
Campaigns owned by the Customer

Agent:
Campaigns accessible through the parent Customer
and applicable Campaign assignment rules

8.9 Analytics Permission

A user can require Campaign-view or Campaign-analytics permission depending on the route and role configuration.

A visible Analytics button does not override backend authorization.

8.10 Agent Analytics Scope

The normal Analytics controller accounts for an Agent’s parent Customer when determining Campaign access.

This is broader than several API-based Campaign tools that compare the Campaign owner directly with the signed-in User ID.

An Agent can therefore open normal Campaign Analytics while being rejected by certain Message Variant API actions.

Campaign Analytics Header

8.11 Header Information

The Analytics page identifies the Campaign and provides controls for:

Return to Campaign
Export Contacts
Export Calls

8.12 Return to Campaign

Use the Back or Campaign control to return to:

/campaigns/[Campaign ID]

8.13 Export Contacts

This downloads the Campaign Contact population and its Campaign-specific results.

8.14 Export Calls

This downloads the Call records associated with the Campaign.

Analytics Overview Cards

8.15 Main Overview

The primary Analytics page displays measurements such as:

Total Calls
Answer Rate
Average Duration
Total Duration
Total Contacts
Failed Calls

8.16 Total Calls

Total Calls counts Call records associated with the Campaign.

It can include:

Initiated
Ringing
In Progress
Completed
Busy
No Answer
Failed
Canceled

The number represents Call records, not unique Contacts.

A Contact called three times can contribute three Calls.

8.17 Total Contacts

Total Contacts represents the Campaign’s Contact population.

This is generally based on the Campaign’s stored:

total_contacts

value.

8.18 Contacts and Calls Are Different

Example:

Campaign Contacts: 100
Call Attempts: 145

The Campaign has:

100 unique Campaign Contact records
145 Call records

Retries can cause Total Calls to exceed Total Contacts.

Answered Calls

8.19 Primary Analytics Definition

The main Analytics service classifies a Call as answered when:

status = completed

Therefore:

Answered Calls
=
Completed Call records

8.20 Completed Does Not Confirm a Human

A Completed provider status does not automatically prove that:

A person answered
A decision maker answered
The message was understood
A conversation occurred
The Contact was interested

A provider can report Completed for short or automated interactions.

Review:

Duration
Answered By
Recording
Transcript
Disposition
DTMF Response

where available.

8.21 Campaign Counter Difference

The Campaign model’s stored:

total_answered

counter uses a stricter path in certain Call-status handling.

It can require:

Status = completed
and
Answered By is present
and
Answered By is not unknown

The visual Analytics service can count every Completed Call as answered, while the Campaign’s stored Answered counter can omit some of those Calls.

8.22 Possible Answered-Count Difference

Example:

Completed Call records:
60

Completed Calls with recognized Answered By:
48

Possible displays:

Analytics Answered Calls:
60

Campaign Details Answered:
48

This difference is caused by two separate definitions.

Answer Rate

8.23 Analytics Formula

The primary Campaign Analytics page calculates Answer Rate as:

Answered Calls
÷
Total Calls
×
100

Because Answered Calls are Completed Calls on this page:

Completed Calls
÷
All Campaign Call records
×
100

8.24 Example Answer Rate

Total Calls: 200
Completed Calls: 120

Answer Rate:
120 ÷ 200 × 100 = 60%

8.25 Answer Rate Includes Active Calls in the Denominator

When a Campaign is still Running, Total Calls can include Calls that are:

Initiated
Ringing
In Progress

Those active Calls are not yet Completed.

The temporary Answer Rate can therefore appear lower while the Campaign is still processing.

8.26 Answer Rate Versus Human Answer Rate

The displayed Answer Rate should be interpreted as:

Completed Call rate

unless the Campaign’s answered_by, recording, or transcript data has been independently reviewed.

Failed Calls

8.27 Primary Failed Definition

The primary Analytics service combines:

failed
busy
no-answer

into Failed Calls.

8.28 Canceled Calls

Canceled Calls are not included in this primary failed total.

Other pages can include Canceled in their failure group.

This creates a possible difference between:

Campaign Analytics Failed
Call History Failed
Campaign Contact Failed

8.29 Failure Rate

Where displayed, Failure Rate is generally:

Failed + Busy + No Answer
÷
Total Calls or Total Called
×
100

The exact denominator depends on the analytics controller being used.

In-Progress Calls

8.30 Primary In-Progress Group

The main Analytics service considers these active:

initiated
ringing
in-progress

8.31 Active Call Interpretation

An active status can mean:

Provider request was initiated
Destination is ringing
Call is currently connected
Provider callback has not finalized

A Call stuck in an active state long after it ended may require synchronization.

Duration Analytics

8.32 Average Duration

Average Duration is calculated from:

Completed Calls

using their stored:

duration_seconds

values.

8.33 Average Duration Formula

Sum of completed Call durations
÷
Number of completed Calls

8.34 Example

Completed Call durations:
60 seconds
90 seconds
150 seconds

Total Duration:
300 seconds

Average Duration:
300 ÷ 3 = 100 seconds

8.35 Total Duration

Total Duration is the sum of completed Call durations.

The page can display it as:

Seconds
Minutes and seconds
Hours, minutes, and seconds

depending on the frontend formatter.

8.36 Zero-Duration Completed Calls

A Completed Call with a zero or missing Duration can:

Increase Answered Calls
Increase Total Calls
Lower Average Duration

This is another reason not to treat Completed Status alone as proof of a meaningful conversation.

Campaign Completion Rate

8.37 Primary Analytics Formula

The main visual Analytics service calculates Completion Rate as:

Campaign total_called
÷
Campaign total_contacts
×
100

8.38 Completion Rate Is Calling Coverage

This formula measures how much of the Campaign audience reached the Campaign’s Called counter.

It does not measure how many Contacts:

Answered
Completed a conversation
Converted
Pressed a DTMF key
Received a successful outcome

A clearer operational interpretation is:

Calling Coverage Rate

8.39 Example

Total Contacts:
500

Campaign total_called:
375

Displayed Completion Rate:
375 ÷ 500 × 100 = 75%

This means 75% of Campaign Contacts reached the Campaign’s Called counter.

8.40 Called Counter Limitation

The Campaign’s total_called counter is normally incremented when a Call first reaches:

in-progress

A Call that ends as:

Busy
No Answer
Failed
Canceled

without first reaching In Progress may not increase total_called.

8.41 Campaign Can Complete Below 100%

The Campaign processor can mark a Campaign Completed when no processable Contacts or active Calls remain.

Because some unsuccessful Calls may not increase total_called, the Campaign can display:

Status:
Completed

Progress:
Less than 100%

Status Distribution

8.42 Call Status Distribution Chart

The Analytics page displays a pie or distribution Chart grouping Campaign Calls by Status.

Possible categories include:

Initiated
Ringing
In Progress
Completed
Busy
No Answer
Failed
Canceled

8.43 Status Chart Total

The combined segments should equal the number of Campaign Call records used by Analytics.

8.44 Reading the Chart

A large Completed segment indicates a high provider-completion rate.

A large No Answer segment can suggest:

Poor calling time
Low recognition of caller ID
Invalid audience timing
No retry optimization
Unresponsive audience

A large Failed segment can suggest:

Invalid Phone Numbers
Provider configuration error
Carrier rejection
Inactive caller ID
Credential problem

8.45 Busy Versus No Answer

Busy:
Destination returned a busy condition

No Answer:
Destination rang but did not answer within the allowed time

These outcomes can require different retry strategies.

Hourly Call Statistics

8.46 Hourly Chart

The Analytics page groups Campaign Calls by hour.

The chart can display:

Total Calls
Answered or Completed Calls
Answer Rate
Average Duration

for each hour containing Call activity.

8.47 Hour Source

The primary Analytics service groups Calls using:

HOUR(created_at)

It does not use the Contact’s Time Zone.

8.48 Server Time Zone

The current Laravel application Time Zone is:

UTC

Therefore, an Hour shown as:

14:00

can represent:

2:00 PM UTC

rather than 2:00 PM in the user’s local Time Zone.

8.49 Local-Time Conversion Example

Analytics hour:
14:00 UTC

Eastern Daylight Time:
10:00 AM

Pacific Daylight Time:
7:00 AM

Daylight-saving rules can change the local conversion.

8.50 Created Time Versus Call Start Time

The primary Hourly chart groups by Call record creation time.

A Call created at 9:59 AM and connected at 10:01 AM remains in the 9:00 hour group.

8.51 Hourly Answer Rate

For each hour:

Completed Calls in the hour
÷
Total Calls created in the hour
×
100

8.52 Average Hourly Duration

Hourly Average Duration uses completed Calls within that hour.

Peak Hour

8.53 Peak Hour Definition

Peak Hour is the hour containing the highest number of Campaign Call records.

8.54 Peak Does Not Mean Best

Peak Hour measures volume.

It does not automatically mean:

Highest Answer Rate
Longest Calls
Most conversions
Most DTMF responses
Best sentiment

Best-Performing Hour

8.55 Best Hour Definition

Best-Performing Hour is selected using the highest Answer Rate among hours that have a minimum amount of Call activity.

8.56 Minimum Sample

The reviewed Analytics service requires approximately:

5 Calls

in an hour before that hour is considered for Best Hour.

8.57 Small-Sample Protection

An hour with:

1 Call
1 Completed
100% Answer Rate

is excluded from Best Hour when it has fewer than five Calls.

8.58 Best Hour Still Requires Review

The Best Hour is based on provider-completion rate.

Confirm:

Average Duration
Human-answer evidence
DTMF response
Disposition
Sentiment
Lead Quality

before changing the entire Campaign schedule.

Daily Call Trends

8.59 Daily Chart

The Analytics page can display Campaign Calls by day.

The chart commonly contains:

Date
Total Calls
Completed Calls
Failed Calls
Answer Rate
Average Duration

8.60 Daily Chart Visibility

The Daily Call Trends section is generally useful when Call activity spans more than one calendar day.

A single-day Campaign may not display a meaningful daily trend Chart.

8.61 Daily Date Source

The primary Analytics service groups by:

DATE(created_at)

using the database and server Time Zone.

8.62 Midnight Differences

A Call visible in the browser as:

July 25 at 11:30 PM

can be grouped by Analytics under:

July 26 UTC

depending on the user’s local Time Zone.

Retry Analytics

8.63 Average Retries

Average Retries is based on the Campaign Contacts’:

call_attempts

values.

8.64 Maximum Retries

Maximum Retries identifies the highest stored attempt count among Campaign Contacts.

8.65 Contacts with Retries

A Contact is considered to have retries when:

call_attempts > 1

8.66 Attempt-Count Limitation

As explained in Chapter 7, Call attempts can be incremented in more than one processing path.

One provider Call attempt can potentially increase the Campaign Contact’s attempt count more than once.

Therefore:

Stored call_attempts

may not always equal the exact number of telephone Calls placed.

8.67 Retry Interpretation

Use retry Analytics to identify broad patterns, not as the sole billing or compliance record.

For exact attempts, compare:

Campaign Contact
Call History
Provider Call SID
Call creation time

Campaign Progress on Campaign Details

8.68 Campaign Details Statistics

The Campaign Details page displays:

Total Contacts
Called
Answered
Failed

8.69 Automatic Refresh

While a Campaign is Running, Campaign Details refreshes its information approximately every:

5 seconds

8.70 Analytics Page Refresh

The separate Campaign Analytics page does not provide the same repeating live refresh behavior.

Refresh the page to obtain current analytics.

8.71 Called

Called uses the Campaign’s stored:

total_called

counter.

8.72 Answered

Answered uses the Campaign’s stored:

total_answered

counter.

This may differ from the Analytics page’s Completed Call count.

8.73 Failed

Failed uses the Campaign’s stored:

total_failed

counter.

It may differ from a query that independently counts every:

Failed
Busy
No Answer
Canceled

Call record.

8.74 Campaign Card Progress

Campaign-list progress is:

total_called
÷
total_contacts
×
100

8.75 Manual Queue Progress

The Manual Campaign Call Queue calculates progress differently:

Campaign Contacts with Status Completed
÷
Total Campaign Contacts
×
100

The Campaign Card and Manual Queue can therefore display different progress percentages for the same Campaign.

Campaign Contact Results

8.76 Contact Tab

Campaign Details includes a Contact section that can show:

Contact Name
Phone Number
Status
Call Attempts
Last Call
DTMF Response

depending on available data.

8.77 Visible Record Limit

The Campaign Details controller loads only the latest:

10 Campaign Contacts

8.78 No Contact Pagination in Campaign Details

A Campaign with 5,000 Contacts still displays only a limited recent selection on the Details page.

Use:

Campaign Contact export
Campaign Queue
Database reporting
Approved API reporting

for broader review.

8.79 Campaign Contact Statuses

Possible Campaign Contact states across the current code include:

pending
queued
calling
in_progress
answered
completed
failed
no_answer
skipped
opted_out

Different components do not use a completely consistent vocabulary.

8.80 Terminal Results

Completed and Failed Contacts can both belong to a Campaign whose overall Status is Completed.

Campaign Completed means processing ended; it does not mean every Contact succeeded.

Campaign Call Results

8.81 Calls Tab

Campaign Details includes recent Campaign Calls.

Possible information includes:

Phone Number
Call Status
Duration
Call time
Recording

8.82 Visible Call Limit

The controller loads only the latest:

10 Campaign Calls

on Campaign Details.

8.83 Full Campaign Call Review

For the complete Call set, use:

Campaign Analytics → Export Calls
or
Communication → Call History

8.84 Call Results Versus Contact Results

Call Result:
Outcome of one telephone attempt

Campaign Contact Result:
Current accumulated state for one Campaign Contact

One Campaign Contact can have multiple Call Results.

DTMF Analytics

8.85 DTMF Purpose

DTMF Analytics records keypad responses such as:

Press 1 for more information
Press 2 for a callback
Press 3 to opt out

8.86 DTMF Analytics Availability

Campaign Details calculates DTMF statistics when:

Campaign DTMF is enabled

The DTMF Card becomes meaningful only after one or more responses are stored.

8.87 DTMF Summary

The Details page can display:

Total Responses
Response Rate
Unique Keys
Responses by Key Pressed
Actions Taken
Most Popular Key

8.88 Total Responses

Total Responses counts stored DTMF response records associated with the Campaign.

8.89 Response Rate

The DTMF Card calculates a percentage using:

Total DTMF Responses
÷
Campaign Call or Called total
×
100

The denominator passed into the component is tied to the Campaign’s current Call progress data.

8.90 Unique Keys

Unique Keys counts the distinct keypad responses received.

Example:

Responses:
1, 1, 1, 2, 3

Unique Keys:
3

8.91 Responses by Key

Each row can show:

Digit
Configured Label
Response Count
Percentage of DTMF responses

Example:

1 — Interested
45 responses
60%

8.92 Key Percentage Formula

Responses for one key
÷
Total DTMF responses
×
100

8.93 Actions Taken

Where an Action was stored, the Card can group results such as:

play_message
transfer
opt_out
mark_interested
request_callback
hangup

8.94 Most Popular Key

The Insights area can identify the key with the highest response count.

This does not automatically mean that key produced the best business outcome.

DTMF Labels

8.95 Label Lookup

Campaign Details attempts to match each pressed digit to the Campaign’s saved:

dtmf_actions

configuration.

8.96 Raw Digit Fallback

When no matching Action configuration is available, the label defaults to the digit itself.

Example:

Configured label unavailable:

1
instead of
Interested

DTMF Data Sources

8.97 Dedicated DTMF Responses

Campaign Details uses the Campaign’s dedicated DTMF response relationship to calculate:

Digits Pressed
Action Taken
Counts
Percentages

8.98 Campaign Contact DTMF Field

Other Analytics calculations use:

campaign_contacts.dtmf_response

8.99 Possible DTMF Count Differences

Because two data sources are used:

Dedicated DTMF response records
Campaign Contact dtmf_response field

the DTMF total on Campaign Details can differ from the DTMF result shown in Performance Metrics or an export.

The Details controller groups dedicated responses by digit and Action.

Current DTMF Configuration Limitation

8.100 Detailed Settings Not Reliably Saved

Chapter 7 established that the current Campaign Create and Edit actions save:

enable_dtmf

but do not reliably save the full:

Number of digits
Timeout
Prompt
Action labels
Action types
Action values

configuration.

8.101 Analytics Effect

Because detailed configuration is not reliably stored:

Labels can display raw digits
Action Taken can remain blank
Transfer destination can be missing
Custom DTMF messages can be unavailable

8.102 DTMF Testing Requirement

Before using DTMF Analytics for production decisions:

  1. Create one internal test Campaign.
  2. Call an internal Phone Number.
  3. Press each configured key.
  4. Confirm the intended Action occurs.
  5. Open Campaign Details.
  6. Confirm the digit and Action appear.
  7. Export Calls and Contacts.
  8. Confirm the DTMF value is present in both files.

Message Variants

8.103 Purpose

Message Variants allow a Text-to-Speech Campaign to test different versions of its Campaign Message.

The system describes this feature as:

AI Message Variants A/B Testing

8.104 Opening Message Variants

Message Variant management appears within the Campaign Edit workflow.

To open it:

  1. Open a Draft Campaign.
  2. Select Edit.
  3. Locate AI Message Variants A/B Testing.
  4. Enter or confirm the Base Message.
  5. Enter a description of the Campaign’s purpose.
  6. Select Generate AI Variants.

8.105 Intended Campaign Type

Message Variants are primarily intended for:

Text-to-Speech Campaigns

They do not replace:

Prerecorded Audio File
AI Agent live conversation

8.106 Generation Requirements

The request requires:

Base Message:
Required, maximum 500 characters

Description:
Required, maximum 1,000 characters

The normal Campaign TTS Message itself remains limited to 250 characters during Campaign creation and update.

8.107 Generated Variants

The interface describes generating:

5 AI-powered message variants

with different tones and approaches.

8.108 Possible Variant Approaches

Variants can represent tones such as:

Professional
Friendly
Urgent
Educational
Direct

The actual generated labels and descriptions depend on the AI response.

8.109 OpenRouter Requirement

Generation depends on the configured AI messaging service.

When the AI provider is unavailable, the existing Campaign Message remains unchanged.

8.110 Review Before Use

Every generated Message should be reviewed for:

Factual accuracy
Brand language
Legal disclosures
Variable syntax
Character length
Pronunciation
Consent requirements
Opt-out language

Repeated Variant Generation

8.111 Variants Are Added

Generating a new set does not automatically delete the existing set.

Repeated generation can create:

5 variants
then
10 variants
then
15 variants

8.112 Interface Wording

The interface may continue to describe the feature as a five-variant test even after more than five records exist.

8.113 Recommended Generation Procedure

Generate one set, review it, and avoid generating another set until the existing Variants have been intentionally managed or removed.

Variant Cards

8.114 Variant Information

Each Variant Card can display:

Variant Label
Variant Name
Tone Description
Message Text
Active or Inactive
Winner
Sent Count
Answered Count
Answer Rate
Completed Count
Completion Rate
Effectiveness Score

The frontend supports refreshing, activating or deactivating, and selecting a winning Variant.

8.115 Active

An Active Variant is eligible for Campaign selection when no active Winner overrides the test.

8.116 Inactive

An Inactive Variant is excluded from normal Variant selection.

Historical metrics remain stored.

8.117 Winner

A Winner is the Variant selected as the preferred Message.

When an active Winner exists, the Campaign uses that Winner rather than continuing normal distribution across the other Variants.

Variant Selection During Calls

8.118 Active Winner

When an active winning Variant exists:

Winning Message
=
Used exclusively

8.119 Early Testing

When one or more Active Variants have fewer than approximately:

10 sent Calls

the selector uses random distribution to build an initial sample.

8.120 Later Testing

After Active Variants have sufficient initial sends, the selection approach is approximately:

80%:
Random exploration

20%:
Weighted toward performance

8.121 Why Random Testing Continues

The random portion prevents one early leader from permanently receiving all Calls before enough data exists.

8.122 Default Message Fallback

When Variant selection fails or no Active Variant is available, the Campaign’s main Message is used.

8.123 Call Link

The selected Variant’s ID can be stored on the Call record through:

message_variant_id

This allows performance to be associated with the Message used for that Call.

Variant Sent Count

8.124 Sent Count

Sent Count is incremented when a Variant is selected for a Campaign Call.

It represents selection for sending, not confirmed delivery or completion.

8.125 Sent Does Not Mean Answered

Sent:
Variant selected for a Call

Answered:
Call later reached the tracked answer condition

Completed:
Call later reached Completed Status

Variant Answered Count

8.126 Answered Tracking

Variant Answered Count is increased when the linked Call reaches:

in-progress

through the tracked status process.

8.127 Answered Definition Difference

Variant Answered is therefore not identical to the main Campaign Analytics definition.

Message Variant Answered:
Call reached In Progress

Primary Analytics Answered:
Call Status is Completed

Variant Completed Count

8.128 Completed Tracking

Completed Count is increased when a linked Call reaches:

completed

8.129 Duplicate Callback Risk

Provider status Webhooks can be delivered more than once.

The reviewed Variant-tracking path does not show a complete per-Call idempotency guarantee for every metric update.

Repeated status processing can potentially inflate:

Answered Count
Completed Count
Positive Response Count

Review impossible values such as a Completed Count exceeding Sent Count.

Variant Answer Rate

8.130 Formula

Answered Count
÷
Sent Count
×
100

8.131 Variant Completion Rate

Completed Count
÷
Sent Count
×
100

Positive Responses

8.132 Positive-Response Signals

A Variant can receive a Positive Response when the linked Call has a positive signal such as:

DTMF digit 1
Positive sentiment with sufficient confidence
Hot Lead Quality
Warm Lead Quality

The code also recognizes repeated 1 values in certain DTMF strings.

8.133 Sentiment Timing Limitation

Positive-response evaluation can occur when the Call reaches Completed.

Sentiment is often generated later after:

Recording completion
Transcript completion
AI analysis

If sentiment does not exist at the time the Completed status is processed, the Variant may not later receive a positive-response increment.

Variant Effectiveness Score

8.134 Formula

The stored effectiveness formula applies approximately:

40% Answer Rate
+
40% Completion Rate
+
20% Positive Response Rate

8.135 Example

Answer Rate: 70%
Completion Rate: 60%
Positive Response Rate: 20%

Effectiveness:
(70 × 0.40)
+
(60 × 0.40)
+
(20 × 0.20)

= 28 + 24 + 4
= 56%

8.136 Effectiveness Is Not Conversion Rate

The score is a weighted technical performance score.

It does not automatically represent:

Sales
Revenue
Appointments
Contracts
Customer satisfaction
Legal consent

Selecting a Winner

8.137 Visible Winner Action

The interface can display Select Winner when a Variant has approximately:

50 sent Calls

and is not already the Winner.

8.138 Backend Minimum

The backend’s default minimum sample is also:

50 sent Calls per eligible Variant

8.139 Two-Variant Requirement

The winner service requires at least two Active Variants with enough samples before it can make a meaningful comparison.

One Variant reaching 50 sends can make the button visible while the backend still reports:

Insufficient data to select winner

because a second eligible Variant has not reached the same minimum.

8.140 Selected Card Is Not Guaranteed to Win

Selecting Select Winner on a specific Variant verifies that the Variant belongs to the Campaign.

The winner service then independently identifies the highest-performing eligible Variant.

The Variant clicked by the user can therefore differ from the Variant ultimately selected.

8.141 Winner Result

After a Winner is selected:

Winner:
is_winner = true
is_active = true

Other Variants:
is_winner = false
is_active = false

8.142 No Normal Undo Winner

The current interface does not provide a dedicated:

Undo Winner

action.

Variants can be reactivated individually, but an active Winner continues to override normal testing.

8.143 Deactivating the Winner

When the Winner is deactivated, the selector can return to using other Active Variants.

The Winner flag can remain stored even though the Variant is no longer active.

Deleting Variants

8.144 Delete API

The backend provides an operation to delete all Message Variants for a Campaign.

8.145 No Visible Delete-All Control

The current Message Variant component does not display a normal Delete All Variants button.

An approved administrative or development process is required to use that operation.

8.146 Existing Calls

Calls linked to deleted Variants should remain as Call records, but their Variant relationship can become null depending on the database foreign-key behavior.

Historical interpretation can be lost after deletion.

Variant Access Limitations

8.147 Owner Check

Variant API actions compare:

Campaign User ID
with
Signed-in User ID

and allow a legacy Administrator flag as an exception.

8.148 Agent Limitation

An Agent can have Campaign Analytics access through the parent Customer but still receive:

Unauthorized

when attempting to generate, activate, or select Message Variants for the parent-owned Campaign.

8.149 Administrator Flag Consistency

The Variant controller checks a property named similarly to:

is_admin

Other parts of the application use role methods such as:

isAdmin()

The Administrator exception should be tested before relying on it.

Campaign Templates

8.150 Purpose

Campaign Templates store reusable Campaign configuration.

They can reduce repeated setup for:

Promotions
Notifications
Surveys
Lead qualification
Personalized outreach
Recurring announcements

8.151 Opening Templates

From the Sidebar:

Campaigns
→ Campaign Templates

The page address is:

/campaign-templates

8.152 Template Routes

The current application provides routes for:

List Templates
Create Template
View Template
Store Template
Update Template
Delete Template
Use Template
Create Template from Campaign

The route list does not contain a normal GET Edit page for Templates.

Template Types

8.153 System Templates

System Templates are provided by the platform.

They generally have:

user_id = null
is_system_template = true

Normal Customers cannot edit or delete them.

8.154 Custom Templates

Custom Templates belong to a Customer User.

They can be created manually or saved from an existing Campaign.

8.155 Template Categories

Supported stored categories include:

Promotional
Lead Qualification
Survey
Notification
Personalized

8.156 General Category Mismatch

The Save as Template dialog can also offer:

General

The reviewed database category definition does not include General.

Saving a Campaign under the General category can therefore fail at the database layer.

Template List

8.157 Template Cards

The Template index can display:

Template Name
Description
System or Custom Badge
Category
Usage Count
Created Date
View
Use

8.158 Sorting

Templates are generally ordered with System Templates first and higher-use Templates prioritized.

8.159 Pagination

The Template list returns approximately:

15 Templates per page

and includes pagination controls.

This differs from the Campaign index, whose current page does not render its pagination.

8.160 Category Filtering

The backend can accept a category filter.

The current Template index does not provide a prominent visible category-filter control.

Using a Template

8.161 Use Action

Selecting Use opens Campaign creation with a Template query parameter:

/campaigns/create?template=[Template ID]

8.162 Prefilled Information

A Template can prefill:

Campaign Name
Campaign Type
Message
Voice
Language
Recording
DTMF enabled state
Maximum Concurrent Calls
Retry Attempts
Retry Delay
Expected Variables
Campaign Variables

8.163 Information Not Included

A Template does not automatically include:

Campaign Contacts
Contact Lists
Phone Number
Assigned human Agent
AI Agent
Call History
Campaign results
Schedule
Campaign Status
Credit balance

8.164 Usage Count Defect

The backend provides a POST Use Template action that increments:

usage_count

The visible Template buttons commonly open the Campaign Create URL directly instead.

Normal visible Template usage can therefore fail to increase the Usage Count.

8.165 Language Field Mismatch

Some seeded System Templates store their language under:

voice_language

while Campaign creation can expect:

language

The selected Template’s language may not always be applied correctly.

Review the Voice and Language after selecting a System Template.

Creating a Template

8.166 Opening Create

Select:

Create Template

or open:

/campaign-templates/create

8.167 Create Fields

The visible form includes:

Template Name
Description
Category
Message
Language
Voice
Maximum Concurrent Calls
Retry Attempts
Retry Delay
Enable Recording
Enable DTMF

8.168 Missing Campaign-Type Control

The backend Template structure supports:

text_to_speech
voice_to_voice

The current Create Template page does not display a normal Campaign Type selector.

A newly created Template is effectively centered on TTS configuration.

8.169 Template Name

Template Name is required.

Use a specific Name such as:

Customer Renewal Reminder — English

rather than:

Campaign 1

8.170 Description

Describe:

Intended audience
Business purpose
Required variables
Approved calling window
Required disclosure
Expected outcome

8.171 Template Message

The backend limits the Template Message to approximately:

250 characters

8.172 Concurrency Validation Limitation

The Template form can allow values up to:

100 concurrent Calls

The Campaign backend later accepts only:

1 through 50

Template storage does not consistently validate the same Campaign limit.

A Template can therefore contain a value that is rejected during Campaign creation.

8.173 Retry-Delay Limitation

Templates can store retry delays above the Campaign backend limit of:

60 minutes

Some System Templates in the reviewed source use values such as:

120 minutes
240 minutes

These values conflict with the normal Campaign validation described in Chapter 7.

Saving a Campaign as a Template

8.174 Save as Template

Campaign Details provides:

Save as Template

8.175 Required Information

The dialog requests:

Template Name
Description
Category

8.176 Information Copied

Saving from a Campaign can copy:

Campaign Type
Message
Language
Voice
Recording setting
DTMF enabled state
Maximum Concurrent Calls
Retry Attempts
Retry Delay
Expected Variables
Campaign Variables

8.177 Information Not Copied

The operation does not copy:

Phone Number
From Number
Campaign Contacts
Contact Lists
Assigned human Agent
AI Agent
Audio File
Campaign schedule
Campaign Status
Message Variants
Detailed DTMF Actions
Calls
Recordings
Results
Analytics

8.178 Voice Campaign Limitation

Because the Audio File itself is not reliably copied into the saved Template configuration, a Template created from a Voice-to-Voice Campaign can still require a new Audio File selection when reused.

Viewing a Template

8.179 Template Details

The View page can display:

Template Name
Description
Category
System or Custom status
Message
Voice
Language
Campaign settings
Usage information

8.180 Use This Template

Select Use This Template to open Campaign creation.

Review every prefilled value before saving the Campaign.

8.181 Edit Link Problem

The Template Details interface can display an Edit link for a Custom Template.

It points to:

/campaign-templates/[Template ID]/edit

The installed route list does not contain that GET route.

The link can therefore return:

404 Not Found

8.182 Update Endpoint Exists

A Template Update endpoint exists, but the current normal Edit page required to submit it is missing.

Template Ownership

8.183 Index Scope

The normal Template index returns:

System Templates
+
Signed-in User’s Custom Templates

8.184 Direct Detail Limitation

The Template Detail route does not show the same strong owner-or-system restriction in every reviewed path.

A user should not modify Template IDs in the URL.

A Custom Template belonging to another Customer should never be used or disclosed.

8.185 Deleting a Template

Custom Templates can be deleted by the owner.

System Templates are protected from normal deletion.

8.186 Deletion Effect

Deleting a Template does not delete Campaigns that were previously created from it.

Those Campaigns contain their own stored configuration.

Campaign Call Export

8.187 Opening Export Calls

From Campaign Analytics, select:

Export Calls

8.188 Call Export Filename

The filename follows:

campaign-[Campaign ID]-calls-YYYY-MM-DD-HHMMSS.csv

Example:

campaign-42-calls-2026-07-26-143500.csv

8.189 Call Export Columns

The Campaign Call CSV contains:

Call ID
Contact Name
Phone Number
Status
Duration
Started At
Ended At
Recording URL
DTMF Response

8.190 Contact Name

Contact Name is taken from the associated Campaign Contact.

When no name exists:

N/A

can be exported.

8.191 Phone Number

The exported Phone Number is the Call’s:

to_number

8.192 Duration

Duration is exported from the Call’s stored duration field.

The value represents seconds.

8.193 DTMF Response

The Call export obtains DTMF Response through the Campaign Contact relationship rather than necessarily from the dedicated DTMF response record.

Multiple Calls for the same Campaign Contact can therefore repeat the same Contact-level DTMF value.

8.194 Export Order

Campaign Calls are exported newest first.

8.195 Complete Campaign Export

The Call export is not limited to the ten Calls visible on Campaign Details.

It includes the full Campaign Call query.

8.196 Information Excluded

The standard Campaign Call export does not include:

Call Cost
Currency
Provider Call SID
Call Type
Answered By
Error Message
Transcript
Sentiment
Lead Score
AI Summary
Disposition
Call Notes
Callback date
Message Variant ID
Variant Message
Retry number

Campaign Contact Export

8.197 Opening Export Contacts

From Campaign Analytics, select:

Export Contacts

8.198 Contact Export Filename

The filename follows:

campaign-[Campaign ID]-contacts-YYYY-MM-DD-HHMMSS.csv

8.199 Contact Export Columns

The Campaign Contact CSV contains:

ID
First Name
Last Name
Phone Number
Status
Call Attempts
Last Call At
DTMF Response
Opted Out

8.200 Contact Export Scope

It exports Campaign Contact records, not the full master Contact database.

8.201 Campaign-Specific Values

The file reflects Campaign-specific values such as:

Campaign Contact Status
Campaign Call Attempts
Campaign DTMF Response
Campaign Opt-Out flag

8.202 Information Excluded

The standard Campaign Contact export does not include:

Email
Company
Website
Master Contact ID
Custom variables
Campaign variables
Contact Notes
Call Disposition
Call Cost
Recording
Transcript
Sentiment
Lead Quality
Final Call Error

No Export Filters

8.203 Full-Campaign Exports

The Campaign Analytics page does not provide filters for the two exports.

Selecting an export downloads all matching Calls or Campaign Contacts for that Campaign.

8.204 No Current-Chart Export

The interface does not provide a direct export of only:

One hour
One day
One status segment
One Message Variant
One DTMF key

8.205 No PDF or Spreadsheet Workbook

The primary Campaign Analytics page does not provide:

PDF report
XLSX workbook
Chart image export

The available standard format is CSV.

Combined Campaign Export

8.206 Additional Export Route

A separate route exists at:

/campaigns/[Campaign ID]/export

8.207 Combined Export Purpose

This export attempts to create one row per Campaign Contact containing both Contact and latest Call information.

8.208 Combined Export Columns

It can contain:

Phone Number
First Name
Last Name
Email
Company
Status
Call Attempts
DTMF Response
Last Call At
Call Duration
Call Status
Opted Out

8.209 Duration Defect

The combined export references a Call property similar to:

duration

The standard Call model uses:

duration_seconds

The Call Duration column can therefore be blank or incorrect.

8.210 Not the Primary Export

The current Campaign Analytics interface uses the separate:

Export Calls
Export Contacts

actions rather than this combined route.

Treat the combined export as a secondary or legacy operation until tested.

Export Security

8.211 Personal Information

Campaign exports can contain:

Names
Phone Numbers
Call results
Opt-out information
Recording URLs
Campaign participation

8.212 Recording URLs

The Call export includes raw Recording URLs where available.

A person with access to the CSV can potentially attempt to access those Recordings.

8.213 Storage

Store Campaign exports only in:

Approved company storage
Encrypted business drives
Authorized CRM or reporting systems
Restricted folders

8.214 Avoid Unsecured Sharing

Do not place Campaign exports in:

Public links
Personal Email
Public chat rooms
Unmanaged cloud storage
Shared Downloads folders

8.215 Delete Local Copies

After transferring an export to approved storage, remove unnecessary local browser-download copies.

Advanced Campaign Analytics JSON

8.216 Advanced Route

The system contains:

/campaigns/[Campaign ID]/analytics

This route returns JSON sections including:

overview
dtmf_analysis
time_analysis
status_breakdown
performance_metrics
cost_analysis
real_time

8.217 Different Formulas

The advanced controller does not use every formula from the main visual Analytics service.

For example, its Completion Rate can use:

Total Answered
÷
Total Contacts
×
100

while the primary page uses:

Total Called
÷
Total Contacts
×
100

The same label can therefore produce different percentages.

8.218 Advanced In-Progress Contacts

The advanced overview counts Campaign Contacts in statuses such as:

pending
queued
calling

It does not consistently include the current automated Status:

in_progress

8.219 Time-Analysis Column Defect

The advanced time query references:

AVG(duration)

The standard Calls table uses:

duration_seconds

This can cause the advanced analytics response to fail or return incorrect Duration data.

8.220 Active-Status Defect

The advanced real-time section checks whether:

Campaign Status = active

The current Campaign model uses:

running

A Running Campaign can therefore report:

is_active = false

8.221 Queue Depth Limitation

The advanced real-time section can inspect queued jobs for Campaign processing.

The current deployment uses:

Queue driver = sync

A persistent queue depth is therefore not a dependable indicator of remaining Campaign Calls.

Advanced Estimated Cost

8.222 Cost Estimates

The advanced JSON controller contains estimated cost calculations based on hard-coded values approximately equivalent to:

$0.013 per minute
$0.0085 per Call

8.223 Estimates Are Not Actual Charges

These values do not automatically represent:

Current provider cost
Configured AIUNIFY pricing
Customer Credit deductions
Country-specific rate
Recording cost
Transcription cost
AI Agent cost
SMS cost

8.224 Authoritative Financial Review

For actual account charges, use:

Billing
→ Account Statement

For provider or platform financial reporting, use the applicable Administrator Credit and Profit modules.

Campaign Analytics Summary Endpoint

8.225 Summary Route

The system also provides:

/campaigns/analytics/summary

8.226 Outdated Active Status

The Campaign summary query uses:

status = active

rather than:

status = running

Its Active Campaign count can therefore display zero or undercount current Campaigns.

Analytics Data Freshness

8.227 Webhook-Driven Updates

Campaign Call results depend on provider Webhooks for:

Status
Duration
Recording
Transcript
Answered By
Cost

8.228 Delayed Results

Immediately after a Call ends, Analytics can temporarily show:

In Progress
Zero Duration
No Recording
No Transcript
No Sentiment

8.229 Refreshing Analytics

To refresh:

  1. Reload the Analytics page.
  2. Return to Campaign Details.
  3. Wait for Call provider updates.
  4. Review Call History.
  5. Reopen Analytics.

8.230 No Live Analytics Polling

The primary Campaign Analytics page does not continuously poll like the Running Campaign Details page.

Interpreting Campaign Results

8.231 High Answer Rate and Low Duration

Possible interpretation:

Calls technically completed
but
Recipients disconnected quickly
or
Automated systems answered

Review Recordings and answered_by.

8.232 Low Answer Rate and High Completion Quality

A lower Answer Rate can still produce valuable results when the completed Calls have:

Longer duration
Positive DTMF responses
Strong sentiment
Hot or Warm Lead Quality
Appointments

8.233 High Retry Count

Possible causes include:

Poor calling hours
Busy recipients
No Answer
Invalid data
Too-aggressive retry policy
Provider delivery problems

8.234 High Failure Rate

Review:

Phone Number formatting
Country restrictions
Caller ID
Provider account
Credentials
Credits
Error Messages

8.235 High DTMF Response but Low Conversion

A keypad response proves an input was received.

It does not prove that:

Transfer succeeded
Callback occurred
Sale completed
Contact consented
Appointment was booked

Troubleshooting Campaign Analytics

8.236 Analytics Page Does Not Open

Check:

Correct Campaign
Campaign authorization
KYC approval
Campaign-view permission
Analytics permission
Authentication session

8.237 Analytics Is Empty

Possible causes include:

Campaign has no Call records
Campaign has Contacts but has not run
Provider Call creation failed
Wrong Campaign selected
Analytics query failed

8.238 Total Calls Is Higher Than Contacts

Retries created multiple Calls for some Campaign Contacts.

8.239 Progress Is Below 100% on Completed Campaign

Some unsuccessful Calls never reached In Progress and did not increase total_called.

8.240 Answered Values Differ

The primary Analytics page counts Completed Calls.

Campaign Details can rely on the stricter stored total_answered counter.

8.241 Failed Values Differ

Different pages include different combinations of:

Failed
Busy
No Answer
Canceled

8.242 Hourly Times Look Wrong

The primary Analytics service groups by UTC created_at hour.

Convert the time to the intended local Time Zone.

8.243 Daily Call Appears on Wrong Date

The database date is UTC, while the browser can display local time.

8.244 Analytics Does Not Update

The page does not poll continuously.

Refresh after provider callbacks complete.

Troubleshooting DTMF

8.245 DTMF Card Is Missing

Confirm:

DTMF enabled on Campaign
At least one response stored
Campaign Detail data refreshed

8.246 Key Has No Label

Detailed DTMF Actions were not saved or do not match the pressed digit.

8.247 Action Taken Is Blank

The digit was stored, but the Action configuration or Action result was not persisted.

8.248 DTMF Totals Differ

Campaign Details and Analytics can use different DTMF data sources.

8.249 Opt-Out Key Did Not Suppress Contact

A DTMF Action result does not replace verification of the Campaign Contact and master Contact suppression state.

Confirm the Contact was actually marked opted out through the approved suppression process.

Troubleshooting Message Variants

8.250 Generate Button Is Disabled

Both are required:

Base Message
Campaign description

8.251 Generation Fails

Possible causes include:

OpenRouter not configured
AI service unavailable
Base Message over 500 characters
Description over 1,000 characters
Authorization failure

8.252 More Than Five Variants Appear

Repeated generation adds another set rather than replacing the current set.

8.253 Agent Receives Unauthorized

The Variant API compares the Campaign owner directly with the signed-in User ID.

An Agent’s parent-Customer relationship is not applied.

8.254 Select Winner Fails

At least two Active Variants may need the minimum sample of approximately 50 sends each.

8.255 Different Variant Became Winner

The backend recomputes the best eligible Variant instead of forcing the specifically clicked Variant to win.

8.256 Winner Is Still Used After Reactivating Others

An active Winner overrides the normal A/B selection process.

Deactivate the Winner through an approved workflow before expecting broad Variant distribution.

8.257 Variant Metrics Exceed Sent Count

Repeated provider callbacks may have incremented tracked metrics more than once.

Compare Variant counts with linked Call records.

8.258 Positive Responses Are Low Despite Positive Sentiment

Sentiment can be calculated after the Completed-status Variant update.

The later AI result may not retroactively increase Positive Response Count.

Troubleshooting Templates

8.259 Use Count Does Not Increase

The visible Use button opens Campaign Create directly and bypasses the POST route that increments usage.

8.260 Edit Opens Not Found

The Template Edit GET route is not registered.

8.261 General Category Fails

General is not included in the current stored database category list.

Use one of the supported categories.

8.262 Template Creates Invalid Campaign Settings

Review:

Concurrency
Retry Delay
Campaign Type
Voice
Language
Message length
Audio File

System or Custom Templates can contain values outside the current Campaign validation limits.

8.263 Voice Language Is Not Applied

A System Template may store voice_language while Campaign creation expects language.

Select the correct Language manually.

8.264 Audio File Is Missing

Templates do not reliably carry the Campaign’s Audio File.

Select one during Voice-to-Voice Campaign creation.

Troubleshooting Exports

8.265 Export Does Not Start

Check:

Campaign access
KYC
Authentication
Browser download permission
Network

8.266 Export Contains More Calls Than Contacts

The file contains Call attempts, including retries.

8.267 Contact Export Has No Email

Email is not included in the standard Campaign Contact export.

8.268 Call Export Has No Cost

Cost and Currency are not included in the standard Campaign Call export.

8.269 DTMF Value Is Repeated

The Call export can obtain the value from the Campaign Contact rather than a unique per-Call DTMF record.

8.270 Combined Export Duration Is Blank

The secondary combined export expects duration instead of duration_seconds.

Campaign Analytics Review Checklist

8.271 Campaign Identity

Confirm:

Correct Campaign Name
Correct Customer
Correct Campaign Status
Correct date range of activity

8.272 Volume

Review:

Total Contacts
Total Calls
Called count
Retries
Contacts remaining

8.273 Results

Review:

Completed Calls
Failed Calls
Busy Calls
No Answers
Canceled Calls
Active Calls

8.274 Quality

Review:

Average Duration
Total Duration
Recordings
Transcripts
DTMF
Sentiment
Lead Quality
Dispositions

8.275 Timing

Review:

Peak Hour
Best Hour
UTC conversion
Daily trends
Contact Time Zones

Message Variant Checklist

8.276 Before Generating

Confirm:

Base Message approved
Description accurate
Variables correct
Campaign is Text to Speech
OpenRouter configured

8.277 Before Activating

Confirm:

Message within Campaign limit
Disclosure preserved
Variables preserved
Pronunciation tested
No unsupported claim

8.278 Before Selecting a Winner

Confirm:

At least two eligible Variants
Sufficient sample size
Metrics not duplicated
Call quality reviewed
Positive responses verified
Business outcome reviewed

Template Checklist

8.279 Creating a Template

Confirm:

Unique Name
Supported Category
Approved Message
Correct Voice and Language
Concurrency 50 or below
Retry Delay 60 minutes or below
Recording setting approved
DTMF limitations understood

8.280 Using a Template

Confirm:

Message reviewed
Variables populated
Phone Number selected
Agent assignment selected
AI Agent reviewed
Audio File selected where required
Contacts added
Calling hours approved

Export Checklist

8.281 Before Export

Confirm:

Correct Campaign
Correct export type
Authorized business purpose
Approved storage destination

8.282 After Export

Confirm:

Expected row count
Expected Campaign ID
Phone Numbers formatted
Dates interpreted in correct Time Zone
Recording URLs protected
File moved to secure storage
Local copy removed when no longer needed

Current-Build Limitations

8.283 Confirmed Limitations

The reviewed Campaign Analytics, Variant, Template, and Export implementation currently includes these important limitations:

Primary Analytics counts Completed Calls as Answered,
while Campaign counters can require Answered By

Completion Rate on the primary page means
total_called divided by total_contacts

Different analytics controllers use different
Completion Rate formulas

Campaign Progress can remain below 100%
after Campaign completion

Failed calculations do not consistently include
Canceled Calls across all pages

Hourly and Daily analytics group by UTC created_at

Peak Hour measures volume rather than effectiveness

Best Hour is based on Completed-Call rate,
not verified human or conversion outcomes

Campaign Details displays only 10 Contacts
and 10 Calls

Campaign Details and Manual Queue use different
progress formulas

Campaign Contact statuses are not fully consistent
across automated and manual workflows

DTMF Analytics uses more than one data source

Detailed DTMF configuration is not reliably persisted

DTMF labels can fall back to raw digits

Analytics page does not poll continuously

Advanced time analysis references duration
instead of duration_seconds

Advanced real-time analytics checks active
instead of running

Advanced queue depth is not meaningful
with the current synchronous queue driver

Advanced cost analysis uses hard-coded estimates
rather than actual configured pricing

Campaign analytics summary checks active
instead of running

Repeated Variant generation accumulates records

Agents can view Campaign Analytics but can be
rejected by Message Variant owner checks

Variant Answered and Analytics Answered use
different status definitions

Variant metric updates can be affected by
duplicate provider callbacks

Variant Positive Response can miss sentiment
calculated after Call completion

Select Winner can choose a different Variant
from the card the user selected

Winner selection requires at least two Variants
with sufficient sample sizes

No visible Delete-All Variants control exists

Template visible Use links can bypass usage counting

Template Edit links point to a missing GET route

General Template category conflicts with
the current database enum

Template settings can exceed Campaign validation limits

Some System Templates contain retry delays
above the Campaign maximum

System Template voice_language can fail to map
to the Campaign language field

Templates do not copy Contacts, Phone Numbers,
Agents, Audio Files, Variants, or results

Template Detail ownership validation should be strengthened

Campaign Call export omits Cost, Currency,
Transcript, Sentiment, and Disposition

Campaign Contact export omits Email, Company,
Variables, and final Call details

DTMF export values can be Contact-level
rather than unique per Call

Secondary combined export references
the wrong Call duration property

Exports contain sensitive Phone Numbers
and potentially accessible Recording URLs

Chapter Completion

At the end of this chapter, the user should understand how to open Campaign Analytics and interpret:

Total Calls
Total Contacts
Answered Calls
Failed Calls
Average Duration
Total Duration
Answer Rate
Completion Rate

The user should understand that the primary Analytics page defines Answered Calls as Completed Call records, while Campaign Details can rely on a stricter stored Answered counter.

The user should recognize that the primary Completion Rate is:

total_called
÷
total_contacts
×
100

and is more accurately interpreted as Campaign calling coverage.

The user should know how to review Call Status Distribution, Hourly Call Statistics, Daily Call Trends, Peak Hour, Best-Performing Hour, retry behavior, Campaign Contact results, and Campaign Call results.

The user should understand that time-based Analytics uses UTC Call creation times and must be converted before making local scheduling decisions.

The user should know how DTMF responses are grouped by digit and Action, how Response Rate is calculated, and why DTMF totals or labels can differ because the application uses multiple response data sources and does not reliably save detailed DTMF configuration.

The user should understand how AI Message Variants are generated, activated, distributed, scored, and selected as Winners. The user should recognize that:

Variant Answered
Primary Analytics Answered
Campaign total_answered

are not necessarily the same measurement.

The user should understand that repeated Variant generation adds more Variants, an active Winner overrides normal A/B testing, and the Winner service can select a different Variant from the one clicked.

The user should know how to open Campaign Templates, distinguish System and Custom Templates, create a Template, use a Template, and save a Campaign as a Template. The user should also recognize the current missing Edit route, Usage Count defect, General-category mismatch, and incompatible Campaign-setting limits.

The user should know how to export all Campaign Calls and Campaign Contacts, understand the columns included and excluded, and protect CSV files containing Phone Numbers, outcomes, opt-out information, and Recording URLs.

Most importantly, Campaign performance should be reviewed through several measurements rather than one percentage:

Campaign volume
Call status
Duration
DTMF or Disposition
Recording or Transcript
Sentiment and Lead Quality
Verified business outcome


Write Your Comment