vlozi/docs

Analytics

Contact analytics

Understanding engagement trends, identifying at-risk contacts, and reading mood distribution.

Contact Intelligence gives you three analytics views across your contact base: engagement trends (who is active and how relationships are progressing), churn risk (which contacts are about to go quiet), and mood distribution (how your customers are feeling in aggregate).

Contact Intelligence → Analytics → Trends

GET /analytics/trends

Response:

{
  "total_contacts": 734,
  "active_last_7_days": 512,
  "stage_distribution": {
    "new": 102,
    "building": 231,
    "established": 178,
    "deep": 89,
    "fading": 108,
    "dormant": 26
  }
}

Reading the stage distribution:

  • A healthy account has most contacts in building, established, or deep
  • A large fading cohort means you have contacts going quiet — this is where outreach can help
  • dormant contacts are 30+ days inactive and typically out of reach without an external re-engagement campaign

Churn risk report

Contact Intelligence → Analytics → At-risk contacts

GET /analytics/churn?limit=20

Response:

{
  "summary": {
    "high_risk": 24,
    "medium_risk": 87
  },
  "at_risk_contacts": [
    {
      "contactId": "ct_01j...",
      "displayName": "Rahul S.",
      "channel": "whatsapp",
      "churnRisk": 0.91,
      "relationshipStage": "fading",
      "lastActiveAt": "2026-06-05T11:00:00Z",
      "totalMessages": 63
    }
  ]
}

Churn risk scores:

Score Risk level Typical situation
0.7 – 1.0 High 14+ days inactive, previously active
0.3 – 0.7 Medium 7–13 days inactive or early-stage with few messages
0.0 – 0.3 Low Active recently, strong relationship

The score is computed from: days since last message, relationship stage, current vs longest streak, and total message count. An established contact who suddenly goes quiet scores higher than a new contact who has only sent 2 messages.

Tip: Enable proactive outreach for contacts in the 0.7+ range. CI will automatically create inactivity triggers for contacts who hit the configured inactivity threshold.

Mood distribution

Contact Intelligence → Analytics → Mood distribution

GET /analytics/moods

Response:

{
  "moods": {
    "happy": 210,
    "neutral": 348,
    "frustrated": 67,
    "sad": 31,
    "anxious": 22,
    "excited": 94,
    "confused": 28
  },
  "energy": {
    "high": 315,
    "medium": 384,
    "low": 35
  }
}

This shows the current mood of every contact in your account — what they were feeling the last time they sent a message. It is a snapshot, not a time series.

Interpreting the distribution:

  • A high frustrated count can signal product issues, shipping problems, or poor bot performance — worth investigating alongside session logs
  • A high confused count may mean your bot is giving unclear answers or the product itself is hard to understand
  • A spike in sad may correlate with an external event (service outage, delivery delay) — cross-reference with the time of last messages

Mood distribution resets gradually as contacts message you again and their mood is reclassified.

Contact Intelligence · AnalyticsEdit on GitHub