KPI Report / JourneyAnalytics Showing Incorrect or Mismatched Data

FrequentlyAsked Question / Exact Problem

  1. “KPI report sales values don’t match what I see in the store-wise analysis screen.”
  2. “Journey Builder shows 76,963 targeted but Campaign Analytics shows different numbers.”
  3. “Mufti journey analytics shows incorrect failed count.”
  4. “Pepe KPI report shows data twice when I select a Business Unit.”
  5. “Journey analytics shows higher click count than view count.”

Affected Tenant / Context
Pepe Jeans (KPI Report duplication + data mismatch), Otto (Campaign Analytics), Mufti
(JourneyAnalytics failed count), general across all tenants.

Root Cause

  1. KPI report vs dashboard: different bill filtering logic — The KPI report was only counting invoice-type bills, while the store-wise analysis and transaction report count all bill types. After a POS data re-upload (which included returns), the KPI report showed lower values.
  2. Duplicate rows in bill upload (no timestamp = deduplication failure) — Pepe’s CSV upload data didn’t include timestamps. ClickHouse uses timestamps to determine which row to keep during deduplication. Without timestamps, duplicate rows were all inserted, inflating sales figures.
  3. JourneyAnalytics vs Campaign Analytics: different unique keys — JourneyAnalytics
    uses unique passed_rule_id ; Campaign Analytics uses unique contact_mobile . For
    customers with duplicate passed_rule_id entries, this causes visible count differences.
  4. KPI report duplication when BU is selected — When a user selects a Business Unit in the KPI report, data appears at both tenant level and BU level — causing every metric to appear twice. Expected behaviour for multi-BU tenants, but confusing for single-BU tenants.
  5. Mufti targeted count vs failed count logic disagreement — Targeted metric was using unique customer count while Failed , Delivered , Clicked used total (including
    retarget) count. This made the math appear wrong.

Common Debugging Steps (For CS Team)

  1. For KPI mismatch: confirm which date range and BU the customer is selecting. For singleBU tenants, do not select a BU when downloading the KPI report — download at tenant level instead.
  2. For journey analytics discrepancy: explain that Journey Builder shows all targeted
    (including waits/retargets) while Campaign Analytics shows unique delivered contacts. A difference is expected.
  3. For sales value mismatch post-upload: ask “Was any data re-uploaded or deduplicated
    recently?” — Check with dev if timestamps were included in the upload file.
  4. Check if the mismatch is consistent (same every time) or dynamic (changes on refresh) — consistent = data issue, dynamic = query/cache issue.
  5. For Mufti failed count: the targeted count shows unique customers; failed/delivered/clicked show total attempts (including retargets). This is by design.

Fix Made & Developer Conclusion

  1. Pepe KPI/dashboard mismatch: Code change to make KPI report count all bill types (same as transaction report and store analysis). Cohort and Gap Analysis still use invoice-only bills.
  2. Pepe data mismatch (May bills): Full data wasn’t shared by the client initially. After receiving it, deduplication was done manually by Suriya. Shriram identified 22 missing live bills worth ~₹1.08 lakh.
  3. Journey vs Campaign count: Duplicate passed_rule_id investigation ongoing. Enhancement raised to add a description tooltip in the analytics screen.
  4. KPI duplication: Documented as expected behaviour for multi-BU. Enhancement raised: auto-hide BU selector for single-BU tenants.
  5. Muftifailed count: Dharshini reverted a hasty fix. Correct logic to be discussed and reimplemented.

Exact Dev to Reach Out To
Suganth — KPI report logic, bill type filtering
Shriram — Pepe data reconciliation, store analysis queries, bill deduplication
Suriya — Overall data correctness, ClickHouse deduplication
Dharshini — Journey analytics, targeted/failed count logic, CH queries