Back to Portfolio
analyticsConsumer SaaSGA4MixpaneldbtBigQuery

Case Study — Analytics

Orbit — GA4 + Mixpanel Migration

Migrated a 6-year-old Universal Analytics setup to a clean GA4 + Mixpanel stack with a single shared event schema. Marketing and product finally speak the same language.

312 → 47
Events deduplicated
99.6%
Pipeline reliability
4d → 1hr
Time-to-insight
Orbit — GA4 + Mixpanel Migration

What was broken

Orbit had 312 distinct event names across their UA property, half of which were typos or A/B variants nobody had cleaned up. Product was instrumenting in Mixpanel, marketing was looking at UA, and the two never matched.

The unified schema

We reduced everything to 47 canonical events with a strict naming convention:

{object}_{action}
e.g. signup_started, checkout_completed, plan_upgraded

Each event ships with the same six properties everywhere it fires. Marketing and product now look at the same numbers — and when they disagree, it's always a real disagreement, not a tracking bug.

The pipeline

  • GA4 → BigQuery export (native)
  • Mixpanel → S3 → BigQuery (via Mixpanel's data pipelines)
  • dbt models on top to merge sessions across both sources
  • Looker Studio dashboards for marketing, Mixpanel for product

Want to build something like this?

Every project starts with a free audit. We'll show you exactly where the wins are.