Map user journeys in real time and tune with remote config
Spot drop-offs, understand paths, and change configs on the fly—no deploys. Real-time journey analytics for the web. Privacy-ready (GDPR/CCPA). Try the live demo and add the SDK in 5 minutes.
We built Grain because funnels don’t tell the whole story. Real users zig-zag. They loop, hesitate, bounce, and return. We wanted a way to see actual paths in real time—then change app behavior without a deploy.
What Grain is
• Tracks (real-time journeys): Map how users move from a start event to a goal. See paths, hubs (important steps), and the last step before drop-off.
• Remote Config: Flip variants and typed variables from the dashboard to tune UX—no redeploys.
• Fast Ingestion (SDK + REST): Lightweight web SDK with automatic batching/retries, and consent-aware delivery (no non-essential storage pre-consent in the EU/UK/TR).
• Overview (live): A real-time dashboard where new events stream in. See starters, converters, core metrics such as MAUs and new users, plus top events and trends.
• Built-in Database View: Query your raw events and curated views in a tenant-scoped database view. Filter by events, custom properties, timeframes, and more using our visual query builder.
Tracks is that view. It reconstructs journeys from any start to any goal and surfaces the moments that matter—dominant paths, the hubs where traffic concentrates, and last steps before drop-off. When you see something, you don’t have to ship code to test an update: remote config is built in, so you can flip variants and typed variables from the dashboard and watch the change land immediately in clients.
Why it’s different
• Truth over sketches: Tracks reconstructs actual routes—not just a static step list—so you catch loops, dead ends, and hidden shortcuts.
• Fast by default: Built with Cassandra and ClickHouse with performance and reliability as priority
What’s shipping today: real-time journey maps with hubs and abandonment, remote config (variants + typed variables) with cache-first fetch, consent modes and cookie controls, retention & deletion, the live Overview, and the read-only database view. It’s web-only at launch, by design—kept scope tight to make the core experience great. Experiments/A/B will come later; for now, remote config is about safe rollouts and fast tuning.
Where this goes next: a Matrices lens for 1D/2D pivots (e.g., conversion rate or time-to-goal by country, device, or campaign) with instant drill-through to Tracks, campaign cost import for ROAS, and deeper compare views. If you’ve got an opinion on which of these you’d use first, I’d genuinely love to hear it.
If you try the demo, I’m happy to help set up your first Track for your own app. Thanks for taking a look at Grain—and for any feedback on what feels clear, what doesn’t, and what you wish existed here. 🙌
Hello everyone 👋
I'm Eray, founder of Grain ♦️♦️
We built Grain because funnels don’t tell the whole story. Real users zig-zag. They loop, hesitate, bounce, and return. We wanted a way to see actual paths in real time—then change app behavior without a deploy.
What Grain is
• Tracks (real-time journeys): Map how users move from a start event to a goal. See paths, hubs (important steps), and the last step before drop-off.
• Remote Config: Flip variants and typed variables from the dashboard to tune UX—no redeploys.
• Fast Ingestion (SDK + REST): Lightweight web SDK with automatic batching/retries, and consent-aware delivery (no non-essential storage pre-consent in the EU/UK/TR).
• Overview (live): A real-time dashboard where new events stream in. See starters, converters, core metrics such as MAUs and new users, plus top events and trends.
• Built-in Database View: Query your raw events and curated views in a tenant-scoped database view. Filter by events, custom properties, timeframes, and more using our visual query builder.
Tracks is that view. It reconstructs journeys from any start to any goal and surfaces the moments that matter—dominant paths, the hubs where traffic concentrates, and last steps before drop-off. When you see something, you don’t have to ship code to test an update: remote config is built in, so you can flip variants and typed variables from the dashboard and watch the change land immediately in clients.
Why it’s different
• Truth over sketches: Tracks reconstructs actual routes—not just a static step list—so you catch loops, dead ends, and hidden shortcuts.
• Fast by default: Built with Cassandra and ClickHouse with performance and reliability as priority
• Privacy-ready: Consent modes, cookie settings, GDPR/CCPA support, data retention & deletion tools.
What’s shipping today: real-time journey maps with hubs and abandonment, remote config (variants + typed variables) with cache-first fetch, consent modes and cookie controls, retention & deletion, the live Overview, and the read-only database view. It’s web-only at launch, by design—kept scope tight to make the core experience great. Experiments/A/B will come later; for now, remote config is about safe rollouts and fast tuning.
Where this goes next: a Matrices lens for 1D/2D pivots (e.g., conversion rate or time-to-goal by country, device, or campaign) with instant drill-through to Tracks, campaign cost import for ROAS, and deeper compare views. If you’ve got an opinion on which of these you’d use first, I’d genuinely love to hear it.
If you try the demo, I’m happy to help set up your first Track for your own app. Thanks for taking a look at Grain—and for any feedback on what feels clear, what doesn’t, and what you wish existed here. 🙌
Live demo + 5-minute SDK → grainql.com