Skip to main content

Contact Center Analytics

Enum Definitions & UI Styling Mappings

Exposes the standard enums used by string dimensions, including color codes and friendly labels for widget styling.

1. call_type

ValueLabel (UI Display)UI Color
inboundInbound#3B82F6 (Blue)
outboundOutbound#10B981 (Green)
campaignCampaign#8B5CF6 (Purple)
internalInternal#6B7280 (Gray)
conferenceConference#6B7280 (Gray)

2. status (Call/Dialer Outcome)

ValueLabel (UI Display)UI Color
answeredAnswered#10B981 (Green)
not_answeredMissed#F59E0B (Orange)
missedMissed#F59E0B (Orange)
abandonedAbandoned#EF4444 (Red)
agent_rejectedRejected by User#D1D5DB (Light Gray)
dncDo Not Call#4B5563 (Dark Gray)
previewPreview#6366F1 (Indigo)

3. direction

ValueLabel (UI Display)UI Color
inboundInbound#3B82F6 (Blue)
outboundOutbound#10B981 (Green)

4. segment_state (Call Legs)

ValueLabel (UI Display)UI Color
ringingRinging#F59E0B (Orange)
talkingConnected#10B981 (Green)
holdOn Hold#EF4444 (Red)
aftercallWrap-up (ACW)#8B5CF6 (Purple)
dialingDialing#6366F1 (Indigo)
queue_waitingWaiting in Group#EC4899 (Pink)

5. source_type / destination_type (Leg Endpoints)

ValueLabel (UI Display)UI Color
userUser (Extension)#10B981 (Green)
externalExternal Line#3B82F6 (Blue)
ivrIVR#8B5CF6 (Purple)
groupGroup Queue#EC4899 (Pink)

6. termination_reason

ValueLabel (UI Display)UI Color
completedCompleted#10B981 (Green)
canceledCanceled#6B7280 (Gray)
transferTransferred#6366F1 (Indigo)
no_answerNo Answer#F59E0B (Orange)
busyBusy#EF4444 (Red)
failedFailed#DC2626 (Dark Red)

Model Definitions & Fields Mapping

Table 1: calls (Unique Call Stats)

Exposes call detail metadata. One row per telephony call. Exposes only 2 core measures.

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
ididDimensionnumberUnique primary key.${CUBE}.id (Primary Key)
call_history_idtelephony_call_idDimensionstringUnique session ID from telephony/3CX.${CUBE}."call_history_id"
call_typecall_typeDimensionstringEnum: see call_type${CUBE}."call_type"
statusstatusDimensionstringEnum: see status${CUBE}."status"
leadIdlead_idDimensionnumberAssociated CRM marketing lead/contact ID.${CUBE}."leadId"
conference_idconference_idDimensionnumberID grouping multiple calls under the same conference.${CUBE}."conference_id"
moduleIdmodule_idDimensionnumberCRM module identifier.${CUBE}."moduleId"
recordIdrecord_idDimensionnumberCRM record identifier within the module.${CUBE}."recordId"
hotlinedialed_numberDimensionstringNumber dialed by the caller.${CUBE}."hotline"
terminatedReasontermination_reasonDimensionstringEnum: see termination_reason${CUBE}."terminatedReason"
rescheduleAttemptdial_attemptDimensionnumberDialer attempt count for campaign dials.${CUBE}."rescheduleAttempt"
groupIdgroup_idDimensionnumberGroup ID the call originally entered.${CUBE}."groupId"
start_timestart_timeDimensiontimeTimestamp when the call started.${CUBE}."start_time"
transcripttranscriptDimensionstringAI transcription text.${CUBE}."transcript"
summarysummaryDimensionstringText summary of the conversation.${CUBE}."summary"
Seeded (Removed)start_hourDimension (Virtual)stringVirtual Dimension: Exposes abstract hour (00 to 23) for profiling.EXTRACT(HOUR FROM ${CUBE}."start_time")::text
Seeded (Removed)day_of_weekDimension (Virtual)stringVirtual Dimension: Exposes day name (Monday to Sunday) for profiling.TO_CHAR(${CUBE}."start_time", 'FMDay')
counttotal_callsMeasurecountBase Measure: Total count of unique calls. Filter on client side for status/campaign types.type: 'count'
campaignUniqueDialedCallCountunique_leadsMeasurecountDistinctBase Measure: Distinct count of CRM leads dialed. Filter by status on client side for dials/reached.sql: ${CUBE}."leadId", filters: leadId IS NOT NULL

Table 2: callParticipants (Performance & SLA)

[!NOTE] Formerly summarizeCalls. Summarizes legs into user and group sessions. Exposes only core base counts and duration sums. Rates are calculated in BI dashboards using DAX / client-side formulas.

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
ididDimensionstringComposite primary key for unique combinations.CONCAT_WS('-', call_id, user_id, group_id, ivr_id, customer_number)
call_idcall_idDimensionnumberCall ID referencing calls.${CUBE}.call_id
agent_iduser_idDimensionnumberReference to handling user.${CUBE}.user_id
group_idgroup_idDimensionnumberReference to handling group.${CUBE}.group_id
customer_numbercustomer_numberDimensionstringCustomer phone number.${CUBE}.customer_number
hotlinedialed_numberDimensionstringHotline number dialed.${CUBE}.dialed_number
directiondirectionDimensionstringEnum: see direction${CUBE}.direction
start_timestart_timeDimensiontimeParticipant session start time.${CUBE}.start_time
is_answeredis_answeredDimensionbooleanWas call answered by user/group?${CUBE}.is_answered
is_abandonedis_abandonedDimensionbooleanWas call abandoned in group?${CUBE}.is_abandoned
is_sla_breachedis_sla_breachedDimensionbooleanTrue if wait duration exceeded SLA.${CUBE}.is_sla_breached
is_repeatedis_repeat_callDimensionbooleanTrue if customer called in last 24h.${CUBE}.is_repeat_call
talk_time_durationtalk_duration_secondsDimensionnumberTalk time in seconds (includes hold).${CUBE}.talk_duration_seconds
hold_time_durationhold_duration_secondsDimensionnumberTotal hold time in seconds.${CUBE}.hold_duration_seconds
wrap_time_durationwrap_duration_secondsDimensionnumberWrap-up time (ACW) in seconds.${CUBE}.wrap_duration_seconds
ring_time_durationring_duration_secondsDimensionnumberRinging time in seconds.${CUBE}.ring_duration_seconds
dial_time_durationdial_duration_secondsDimensionnumberDialing time in seconds.${CUBE}.dial_duration_seconds
queue_wait_durationqueue_wait_duration_secondsDimensionnumberGroup waiting duration in seconds.${CUBE}.queue_wait_duration_seconds
mute_time_durationmute_duration_secondsDimensionnumberMuted line duration in seconds.${CUBE}.mute_duration_seconds
[NEW]handle_duration_secondsDimensionnumberEDITABLE: Total handling time effort.COALESCE(${CUBE}.talk_duration_seconds, 0) + COALESCE(${CUBE}.wrap_duration_seconds, 0) (Talk includes Hold)
termination_reasontermination_reasonDimensionstringEnum: see termination_reason${CUBE}.termination_reason
disposition_iddisposition_idDimensionnumberCode categorizing call outcome.${CUBE}.disposition_id
recording_urlrecording_urlDimensionstringAudio recording URL link.${CUBE}.recording_url
total_call_counttotal_callsMeasurenumber (distinct)Base Measure: Distinct total call count. Client applies status/SLA filters on this.type: 'countDistinct', sql: ${CUBE}.call_id
talk_durationtotal_talk_durationMeasurenumber (sum)Total talk duration in seconds.type: 'sum', sql: ${CUBE}.talk_duration_seconds
hold_timetotal_hold_durationMeasurenumber (sum)Total hold duration in seconds.type: 'sum', sql: ${CUBE}.hold_duration_seconds
wrap_timetotal_wrap_durationMeasurenumber (sum)Total wrap duration in seconds.type: 'sum', sql: ${CUBE}.wrap_duration_seconds
queue_waiting_durationtotal_queue_wait_durationMeasurenumber (sum)Total group wait duration in seconds.type: 'sum', sql: ${CUBE}.queue_wait_duration_seconds
[NEW]total_handle_durationMeasurenumber (sum)Total handle time in seconds.type: 'sum', sql: ${CUBE}.handle_duration_seconds

Table 3: callSegments (Raw Call Details / Legs)

Exposes individual timeline leg events for auditing call flow paths. One row per leg.

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
ididDimensionnumberUnique internal leg identifier.${CUBE}.id (Primary Key)
call_idcall_idDimensionnumberCall ID referencing parent call.${CUBE}.call_id
tcx_connection_idtelephony_connection_idDimensionnumberLeg event ID from telephony server.${CUBE}.tcx_connection_id
start_timestart_timeDimensiontimeTimestamp when the leg started.${CUBE}.start_time
end_timeend_timeDimensiontimeTimestamp when the leg ended.${CUBE}.end_time
statussegment_stateDimensionstringEnum: see segment_state${CUBE}.status
source_numbersource_numberDimensionstringDialing source phone number/extension.${CUBE}.source_number
source_typesource_typeDimensionstringEnum: see source_type${CUBE}.source_type
destination_numberdestination_numberDimensionstringDestination phone number/extension.${CUBE}.destination_number
destination_typedestination_typeDimensionstringEnum: see destination_type${CUBE}.destination_type
is_Inboundis_inboundDimensionbooleanTrue if segment direction was inbound.${CUBE}.is_Inbound
userIduser_idDimensionnumberAssociated user ID handling this leg.${CUBE}."userId"
groupIdgroup_idDimensionnumberAssociated group ID handling this leg.${CUBE}."groupId"
termination_reasontermination_reasonDimensionstringEnum: see termination_reason${CUBE}.termination_reason
recording_urlrecording_urlDimensionstringCall recording file URL.${CUBE}."recording_url"
dispositionIddisposition_idDimensionnumberDisposition ID for this leg.${CUBE}."dispositionId"
[NEW]segment_duration_secondsDimensionnumberCalculated duration of this leg.EXTRACT(EPOCH FROM (COALESCE(end_time, NOW()) - start_time))
countsegment_countMeasurecountTotal count of segment lines.type: 'count'
durationtotal_segment_durationMeasurenumber (sum)Total duration spent in this state.type: 'sum', sql: ${CUBE}.segment_duration_seconds

Table 4: workShifts (User Shift Clock-In/Clock-Out)

Tracks when users log in and out of their daily shifts.

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
shiftIdshift_idDimensionnumberPrimary key of the shift.${CUBE}."shiftId" (Primary Key)
userIduser_idDimensionnumberUser reference (joins to users).${CUBE}."userId"
startTimestart_timeDimensiontimeClock-in timestamp.${CUBE}."startTime"
endTimeend_timeDimensiontimeClock-out timestamp.${CUBE}."endTime"
[NEW]shift_duration_secondsDimensionnumberCalculated duration of the shift.EXTRACT(EPOCH FROM (COALESCE(${CUBE}."endTime", NOW()) - ${CUBE}."startTime"))
countshift_countMeasurecountCount of shift events.type: 'count'
shiftDurationtotal_shift_durationMeasurenumber (sum)Sum of shift duration in seconds.type: 'sum', sql: ${CUBE}.shift_duration_seconds

Table 5: statusLog (User Presence State Timeline)

Logs status changes (Available, Break, Meeting) during a shift. Exposes durations.

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
ididDimensionnumberLog row primary key.${CUBE}."id" (Primary Key)
shiftIdshift_idDimensionnumberParent shift reference.${CUBE}."shiftId"
statusIdstatus_idDimensionnumberReference to presence state.${CUBE}."statusId"
timestampstart_timeDimensiontimeTimestamp status state was entered.${CUBE}."timestamp"
[NEW]end_timeDimensiontimeTimestamp status state was exited.${CUBE}.next_timestamp
[NEW]status_duration_secondsDimensionnumberStandardized: Duration spent in this status state.GREATEST(EXTRACT(EPOCH FROM (LEAST(COALESCE(${CUBE}.next_timestamp, NOW()), COALESCE(${CUBE}."endTime", NOW())) - GREATEST(${CUBE}."timestamp", ${CUBE}."startTime"))), 0)
countstatus_log_countMeasurecountCount of state log updates.type: 'count'
durationtotal_status_durationMeasurenumber (sum)Sum of status duration in seconds.type: 'sum', sql: ${CUBE}.status_duration_seconds

Table 6: statusMonitor (Real-Time Presence Monitor)

Maintains the immediate presence state of all users. Used for live dashboards.

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
ididDimensionnumberPrimary Key.${CUBE}."id" (Primary Key)
userIduser_idDimensionnumberReference to user (joins to users).${CUBE}."userId"
currentStatusIdcurrent_status_idDimensionnumberCurrent status reference.${CUBE}."currentStatusId"
previousStatusIdprevious_status_idDimensionnumberPrevious status reference.${CUBE}."previousStatusId"
statusUpdatedTimestatus_updated_timeDimensiontimeWhen current status was entered.${CUBE}."statusUpdatedTime"
[NEW]time_in_status_secondsDimensionnumberReal-time seconds in current status.EXTRACT(EPOCH FROM (NOW() - ${CUBE}."statusUpdatedTime"))

Table 7: queueLoginHistory (Group Login Logs)

Tracks when users log in and out of specific groups (queues).

Existing FieldProposed FieldDimension / MeasureTypeDescription / EnumsSQL Formula / Cube Definition
ididDimensionnumberPrimary Key.${CUBE}."id" (Primary Key)
userIduser_idDimensionnumberReference to user (joins to users).${CUBE}."userId"
shiftIdshift_idDimensionnumberReference to shift (joins to workShifts).${CUBE}."shiftId"
queueIdgroup_idDimensionnumberReference to group (joins to groups).${CUBE}."queueId"
loginTimelogin_timeDimensiontimeGroup login timestamp.${CUBE}."loginTime"
logoutTimelogout_timeDimensiontimeGroup logout timestamp.${CUBE}."logoutTime"
[NEW]login_duration_secondsDimensionnumberDuration logged into group in seconds.EXTRACT(EPOCH FROM (COALESCE(${CUBE}."logoutTime", NOW()) - ${CUBE}."loginTime"))
countlogin_event_countMeasurecountCount of login events.type: 'count'
[NEW]total_login_durationMeasurenumber (sum)Sum of logged-in duration.type: 'sum', sql: ${CUBE}.login_duration_seconds