Why your app needs embedded analytics (and why it's harder than it looks to build yourself)
Build embedded analytics for your app: why customers demand it, the complexity, and how to deliver it without massive engineering investment.
Why your app needs embedded analytics (and why it's harder than it looks to build yourself)
Quick answers
| Question | Answer |
|---|---|
| What is embedded analytics? | Analytics built directly into your product so your customers can explore and understand their own data without leaving your app. Not a separate tool β a native feature that feels like part of what you built. |
| Why do customers ask for analytics features? | Because they need to understand what's happening with their data in your product. Usage, performance, spend, outcomes β customers make decisions based on this information and they want it where their data already lives. |
| What's the difference between internal analytics and embedded analytics? | Internal analytics is your team looking at your data (how is the product doing?). Embedded analytics is your customers looking at their data (how am I doing inside your product?). Different audience, different data, different permission requirements. |
| How hard is it to build embedded analytics from scratch? | Much harder than it looks. A production-ready embedded analytics feature requires a query engine, visualization layer, permission model, multi-tenant data isolation, and ongoing maintenance. Each piece is non-trivial; together they're a significant long-term investment. |
| How does Metabase solve this? | The Metabase embedding options let you embed charts, dashboards, and a query builder directly into your app. Your customers see their data inside your product; Metabase handles the query engine, permissions, and visualization layer underneath. |
| How fast can I get a working embedded dashboard? | With Metabase modular embedding, you put together a dashboard get an embed-ready code snippet in 5 mins. |
At some point, most SaaS products get a version of the same request: "Can we see our data inside the app?"
It sounds like a small ask. It almost never is.
Where the request comes from
Customers who use your product generate data. That data tells them something important β how many orders they processed, how their team is performing, what their spending looks like, whether they're hitting their goals. Right now, they're either exporting that data to a spreadsheet, building their own reports, or asking your support team for it manually.
None of those are good answers. Exporting to a spreadsheet doesn't scale. Asking support creates tickets for data that should be self-serve. Building their own reports means they're solving a problem that's already solved if you just show them the data inside your product.
The ask isn't a feature request β it's a signal that your product is missing a layer customers need to get full value from it.
Why it affects retention
Customers who can see and understand their data in your product are more likely to stay. Not because of the charts themselves, but because seeing the impact of what they do makes the product stickier.
There's also a competitive dimension. Analytics features have become table stakes in most B2B SaaS categories. A competitor who shows customers their data clearly and interactively has a real advantage over one who doesn't. "Can I see my data?" is increasingly a question asked during evaluation, not after signing up.
What customers actually want
Not just a chart. Customers want answers to their specific questions:
- "How many X did I do this week vs. last week?"
A static screenshot or a CSV export doesn't answer these in a way that's useful at the moment of need. An embedded dashboard with filters does.
The difference between internal analytics and embedded analytics is the audience. You're not building for your team to understand your product β you're building for your customers to understand their own usage, performance, and outcomes within your product.
Why building it from scratch is harder than it looks
The typical scope when a team decides to build their own analytics feature:
Visualization layer. Pick a charting library, build wrappers for each chart type you need, handle responsive sizing, theming, and export. Doable, but takes real time.
Query logic. Either hardcode queries for each chart (brittle, breaks every time the data model changes) or build a dynamic query layer that generates SQL from a UI. The latter is a significant engineering project.
Multi-tenant isolation. Every customer sees only their data. Every query, every chart, every filter β the isolation has to hold across all of them. Get this wrong and you have a data leak.
Permission model. Who in the customer's organization can see which reports? Can they save and share? Can they build their own charts? Each capability requires a permission layer.
Ongoing maintenance. Every data model change touches the analytics layer. Every new customer request for a chart type is engineering work. This doesn't end at launch.
Most teams that decide to build discover the real cost six to twelve months in, when the analytics feature is competing with core product work for engineering time on a permanent basis.
What the embedding approach changes
Embedding an analytics platform means the query engine, visualization layer, permission model, and multi-tenant isolation are already built. You configure them for your product instead of building them.
With Metabase embedding, you embed individual components β a dashboard, a chart, a query builder β into your app. Your layout, your navigation, your branding. Metabase's data engine underneath.
The typical path:
Steps 4 and 5 are where multi-tenant isolation happens β each customer's session is scoped by a token your backend generates, and Metabaseβs row-level security policies ensure queries are automatically filtered to that customer's data.
See the embedding introduction for the full picture of available embedding options.
When to add it to your roadmap
Not day one. Embedded analytics makes sense when:
The right time to build it is before it becomes urgent β before a competitor makes it a deal-breaker, before your support queue fills with data export requests.
Key takeaways
| Point | Detail |
|---|---|
| Embedded analytics = customers seeing their data in your product | Not internal analytics β different audience, different data, different permissions |
| Customers asking for data visibility is a retention signal | They need it to get full value from your product |
| Building from scratch is consistently underestimated | Query engine, multi-tenant isolation, permission model, ongoing maintenance β each is non-trivial |
| Metabase embedding options handle the hard parts | You configure for your product; Metabase provides query engine, permissions, and visualization |
| One command to try it locally | npx @metabase/embedding-sdk-react@latest start β working embedded dashboard in minutes |
| Data sandboxes handle per-customer data isolation | Defined once, enforced on every query automatically |