At a glance
- Product, growth, billing, CRM, and lifecycle data from 13+ systems unified into ClickHouse
- A cross-platform engagement model that flags at-risk users before they churn
- Acquisition channels ranked by real activation, not clicks or installs
Vero by Datum Labs built the unified analytics foundation for this client. A fast-growing voice-to-text AI product used for dictation across iOS, Mac, Windows, and Android. The platform runs a product-led growth model with paid acquisition across seven ad channels and subscription billing through Stripe and RevenueCat.
Every download looked like a win. But downloads and engagement are not the same thing, and the team had no way to tell which users were actually using the product and which had gone quiet after day one.
Nothing about this stack was broken. PostHog captured product events cleanly. Stripe and RevenueCat handled billing without issue. Seven ad platforms ran campaigns on their own terms. None of it agreed on who the user even was, and the question leadership actually needed answered, whether users were activating, staying, and growing, had no single source to pull from.
The Problem With Engagement Hidden Across Platforms
As the user base grew across four platforms, so did the difficulty of separating real growth from surface metrics. The team needed to know which users were genuinely engaged, which acquisition channels produced people who stayed, and whether ad spend was buying installs or activated users.
Revenue metrics had no automated source. MRR, ARR, and activation rates had to be pulled from exports, reconciled manually, and pasted into a spreadsheet before every board meeting. Slow, error-prone, and always slightly out of date.
Any product-led company managing growth at scale eventually asks these same questions. What this team could not do was answer them without someone pulling exports by hand before every meeting.
| Domain |
Sources |
What we track |
| Product Analytics |
PostHog |
Product events, feature usage, activation, retention |
| Growth and Ads |
Facebook, Google, AppLovin, Apple Ads, AppsFlyer, Vibe, Partnerships |
Ad spend, campaigns, conversions, attribution |
| Revenue |
Stripe, RevenueCat |
Subscriptions, billing, in app purchases |
| CRM and Support |
Pylon, Attio |
Accounts, support issues, customer records |
| Lifecycle |
Customer.io, Dub |
Campaign engagement, link attribution |
The data existed. The problem was connection. Without a warehouse underneath, every growth decision was based on whichever platform's numbers someone happened to pull that week.
Why the Standard Answer Did Not Fit
Hiring a data engineer to connect PostHog and the ad platforms is the obvious move. It is also the slow one. A new hire needs months to ramp up and still only covers one layer of a thirteen-system stack, with no team behind them when something breaks.
The team did not need another headcount. They needed a foundation built to handle real-time product events alongside batch ad and billing data, built by people who had done this exact model before.
What Vero Built?
The architecture runs on one constraint: every source, streaming or batch, lands in one warehouse with one shared user identity.
- ClickPipe streams PostHog, RevenueCat, and Customer.io in real time, so activation and billing signals are never more than seconds old
- dlt handles Pylon, Vibe, and Dub.co with incremental cursors and state management built in
- Fivetran runs managed connectors for Stripe, Meta Ads, Google Ads, AppLovin, Apple Search Ads, AppsFlyer, and Attio
- ClickHouse is the warehouse, built for the high-volume event queries product analytics demands
- dbt turns raw events and CRM data into one definition each for activation, retention cohorts, MRR, and ARR
- Every metric now rolls up from the same mart that powers every dashboard. No more reconciling numbers before a board meeting.
Every metric now rolls up from the same mart that powers every dashboard. No more reconciling numbers before a board meeting.
How the Rollout Happened?
The engagement moved in three stages.
- Discovery: mapped all 13+ systems, defined a shared user identity across product, billing, and ad platforms, and agreed on what activation actually means
- Warehouse setup: ClickPipe, dlt, and Fivetran stood up and validated, with Dagster Cloud orchestrating every schedule and posting failures to Slack
- Dashboards live: dbt models built incrementally, starting with activation and retention, then expanding into CAC, channel quality, and reverse ETL segments pushed back to Customer.io
ClickPipe, dlt, and Fivetran were streaming data within days. The activation and retention models followed as each platform's identity resolved into the shared model.
What Changed for the Team?
- ARR is tracked live in Hex, with manual exports no longer part of the standard reporting flow
- B2B NRR calculated automatically on a rolling 30-day basis, replacing what was previously a manual quarterly pull
- A significant portion of monthly ad spend is now tied to real activations, so CAC is known by platform instead of guessed from installs
- At-risk users are flagged the moment usage drops, well before the renewal conversation
- Device platform definitions of active reduced by 75%, from four separate definitions across iOS, Mac, Windows, and Android to one shared definition