Six months ago I had a Mixpanel setup with 140+ custom events. Nobody on the team knew what half of them tracked. The engineer who set them up had left. The PM spent two weeks building dashboards before making any decision.
And after all that work, the dashboards told us what happened. Never why. Never what to do next.
So I started building something different.
The problem I kept running into
Every analytics tool I've used follows the same pattern: you track events, you build funnels, you stare at charts, you try to figure out what they mean.
The interpretation part — the "so what?" — is always left to you. And if you're a small team shipping fast, you don't have time to be a data analyst on top of everything else.
I wanted a tool that skips the dashboard phase entirely and just says: "Feature X has a drop-off problem at step 3. Here's what's likely causing it."
How it works under the hood
The core idea is simple. Instead of tracking hundreds of discrete events and hoping someone connects the dots, we track behavioral sequences and look for pattern changes over time.
Here's the basic mental model:
// Traditional analytics: track everything, interpret later
track('button_clicked', { button: 'signup' });
track('page_viewed', { page: '/onboarding' });
track('feature_used', { feature: 'import' });
// ...140 more of these
// What we do: drop in one script, auto-tracking handles the rest
// <script src="https://xora.es/sdk.js"></script>
xora.init({
projectId: 'YOUR_PROJECT_ID',
apiKey: 'YOUR_API_KEY'
});
// Auto-tracking enabled: pageviews, clicks, forms
// The system builds behavioral sequences from there
The SDK auto-captures session-level behavioral data — pageviews, clicks, form interactions — out of the box. On the backend, we build per-user behavioral profiles and track three things:
1. Time-to-value trends
Not just "how long until first action" but how that time changes over weeks. If a user's path to value is getting longer, that's friction building up — and it usually predicts churn 3-6 weeks before it happens.
2. Feature breadth per session
Healthy users explore. They touch multiple features, check settings, try integrations. Users who are about to leave narrow down to single-feature, in-and-out sessions. We track this as a rolling average and flag anomalies.
3. Post-support behavioral change
When a user contacts support and then doesn't change their behavior afterward, that's a strong signal they've mentally checked out. We track behavior deltas within 48 hours of support interactions.
The architecture (simplified)
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ JS SDK │────▶│ Event │────▶│ Sequence │
│ (auto-track)│ │ Pipeline │ │ Builder │
└─────────────┘ └──────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐
│ Pattern │
│ Analyzer │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Recommendations │
│ Engine │
└─────────────────┘
The Sequence Builder turns raw events into behavioral flows per user. The Pattern Analyzer compares current patterns against that user's historical baseline. When something shifts beyond a threshold, the Recommendations Engine generates a plain-English explanation of what changed and what likely caused it.
No dashboards. No funnels to build. Just alerts that say "here's what's broken and here's what to fix first."
What I learned building this
Devs don't want more dashboards. Every founder and dev I talked to during early user research said the same thing: "I don't have time to interpret charts." They wanted answers, not data.
Auto-tracking beats manual event setup. We started with a manual event tracking approach like everyone else. Adoption was terrible. Nobody wants to instrument 50 events. The moment we switched to auto-capture with a lightweight script tag, onboarding time dropped from days to minutes.
Behavioral sequences > individual events. A single event tells you almost nothing. The order and timing of events tells you everything. This was the biggest insight that shaped the product.
Current state
We're in early beta with a handful of teams. Still rough around the edges. The SDK is lightweight, drops into any site with a single script tag. Integration is copy-paste:
<!-- Add before </head> -->
<script src="https://xora.es/sdk.js"></script>
<script>
xora.init({
projectId: 'YOUR_PROJECT_ID',
apiKey: 'YOUR_API_KEY'
});
</script>
<!-- Identify logged-in users -->
<script>
xora.identify('user_123', {
$email: 'user@example.com',
plan: 'pro'
});
// Track custom events on top of auto-tracking
xora.track('feature_used', { name: 'export' });
</script>
Auto-tracking covers pageviews, clicks, and forms out of the box. You only need identify and track if you want to layer on user identity and custom events.
If you're building a SaaS product and tired of staring at Mixpanel dashboards without knowing what to actually do — I'd love to hear what you think. Still figuring out a lot of this in public.
What's your current analytics setup look like? And honestly — do you actually look at your dashboards?
Top comments (0)