Analytics Events (MVP)
This document defines recommended analytics instrumentation conventions.
Page docs should list relevant events and link here.
Principles
Section titled “Principles”- Track activation and value moments (connection completed, first reply sent, first KB published).
- Include workspace/org identifiers (non-PII, internal IDs).
- Avoid logging message content or PII in event payloads.
Suggested global events
Section titled “Suggested global events”auth.sign_in.successauth.sign_in.failureworkspace.createdworkspace.switchedkb.createdkb.publishedchannel.connectedchannel.disconnectedcomment_responder.reply.generatedcomment_responder.reply.sentchatti_live.conversation.assignedbilling.plan_changed
Dashboard enablement events (future)
Section titled “Dashboard enablement events (future)”These events are recommended when the platform begins turning the Dashboard customer-signals concept into real analytics.
They exist to support future dashboard aggregates and should be implemented only with strict scope, privacy, and governance controls.
Signal events
Section titled “Signal events”customer_signal.detected- A message, review, or comment has been classified into a dashboard-relevant signal bucket
customer_signal.severe_negative_detected- A high-risk negative expression has been identified
customer_signal.success_detected- A praise or success-oriented signal has been identified
customer_signal.theme_clustered- A signal has been grouped into a dashboard-relevant friction or opportunity theme
Suggested optional payloads:
channel_typeapp_surfacesignal_typeseveritytheme_id
System and triage events
Section titled “System and triage events”ai_triage.completed- The system has classified and routed an inbound item
ai_triage.escalation_triggered- The item was escalated to human review or a protected workflow
ai_reply.generated- A candidate reply was generated
ai_reply.sent- A reply was actually sent
ai_reply.kb_gap_detected- A missing or weak knowledge signal affected confidence or reply quality
Suggested optional payloads:
triage_resultconfidence_bandescalation_reasonreply_mode(auto,assisted,human)kb_gap_type
Outcome events
Section titled “Outcome events”interaction.outcome_resolved- The issue appears to have been resolved
interaction.outcome_recovered- A previously negative interaction appears to have improved
interaction.outcome_reopened- The issue returned after an apparent resolution
interaction.outcome_handoff_completed- Human escalation completed successfully
Suggested optional payloads:
outcome_typeprevious_signal_typetime_to_resolution_mshandoff_targetresolution_path
Dashboard event priorities
Section titled “Dashboard event priorities”Minimum required for first real dashboard analytics
Section titled “Minimum required for first real dashboard analytics”customer_signal.detectedcustomer_signal.severe_negative_detectedcustomer_signal.theme_clusteredai_triage.completedai_triage.escalation_triggeredai_reply.kb_gap_detected
Required before outcome metrics become trustworthy
Section titled “Required before outcome metrics become trustworthy”interaction.outcome_resolvedinteraction.outcome_recoveredinteraction.outcome_reopenedinteraction.outcome_handoff_completed
Dashboard event to metric mapping
Section titled “Dashboard event to metric mapping”| Dashboard metric / module | Minimum event inputs |
|---|---|
| Dissatisfaction detected | customer_signal.detected with signal_type=dissatisfaction |
| Severe negative count | customer_signal.severe_negative_detected |
| Top friction themes | customer_signal.theme_clustered |
| Escalated for human review | ai_triage.escalation_triggered |
| Auto / assisted / escalated handling split | ai_triage.completed, ai_reply.sent |
| KB gaps affecting replies | ai_reply.kb_gap_detected |
| Resolved / recovered | interaction.outcome_resolved, interaction.outcome_recovered |
| Reopened issues | interaction.outcome_reopened |
| Successful human handoff | interaction.outcome_handoff_completed |
Payload guidelines
Section titled “Payload guidelines”- Required:
org_id,workspace_id,user_id(internal),timestamp - Optional:
channel_type,app_surface,result,error_code
Dashboard-oriented optional fields:
signal_typeseveritytheme_idconfidence_bandtriage_resultreply_modekb_gap_typeoutcome_typetime_to_resolution_ms