Skip to content
All case studies
ShippedPriority: High2026

Analytics Tracking Consistency

Mixpanel and WebEngage disagreed about what users were doing. Rebuilt the event contract so prioritisation stopped running on contradictory numbers.

My role
Spec owner, event schema definition
Team
Product (lead) · Mobile — React Native · Web — ReactJS · Growth
Stack
Mixpanel · WebEngage · React Native · ReactJS
  • 6

    Tickets shipped

    Tracked in Linear

  • 3

    Surfaces aligned

    Mobile, web, delivery app

  • 1

    Event contract

    Single shared schema

01

The Problem

Two analytics systems were instrumented independently across mobile and web, with drifting event names and inconsistent properties. Funnels built in Mixpanel did not reconcile with WebEngage campaign data, which meant every prioritisation argument could be won by whoever picked the more flattering source.

  • Divergent event naming between platforms and vendors
  • Missing or inconsistent event properties
  • Funnel numbers that could not be reconciled
  • Prioritisation decisions resting on untrustworthy data
02

The Architecture

One event contract, defined in product, implemented identically on every surface. The tracking plan became a reviewable artifact rather than tribal knowledge in each codebase.

  • Canonical event taxonomy with fixed names, required properties and expected types.
  • Shared instrumentation helpers on mobile and web to make the correct call the easy call.
  • Parity checks between Mixpanel and WebEngage on the same user journeys.
  • Documented tracking plan as the single reference for growth and engineering.
03

The Execution

  • Audited existing events across React Native and ReactJS apps to find drift and gaps.
  • Defined the corrected schema and reviewed it with growth before any code changed.
  • Rolled corrections out per surface, validating each against a known user journey.
  • Retired duplicate and dead events rather than leaving them to confuse future analysis.
04

The Impact

  • Funnels reconcile across vendors, so feature prioritisation runs on one number.
  • Growth campaigns trigger on events that mean what they claim to mean.
  • New features ship with instrumentation specified in the ticket, not retrofitted after launch.

Source: Linear — Mixpanel & WebEngage Correction and Tracking Consistency