Tooling

Embedded Analytics

Putting dashboards, charts, and metrics inside your own product UI.

"Embedded analytics" means showing analytics to your customers, inside your app — not "we build internal dashboards." That changes the calculus on licensing (most BI tools charge for embedding), multi-tenancy, and theming. See also BI & Dashboards and Charts.

Headless / API-first (you build the UI)

  • Cube (cube.dev) — semantic layer + REST/GraphQL/SQL API; you write the chart UI (Recharts, Tremor, etc.). Apache 2.0 core; paid Cube Cloud. The default OSS pick for embedded analytics in 2026.
  • dbt Semantic Layer / MetricFlow — define metrics once in dbt; query via JDBC / GraphQL. Free; paid for dbt Cloud's hosted Semantic Layer.
  • GoodData.CN — semantic layer + visualization SDK; open core.
  • Steampipe / Spice.ai OSS — SQL APIs over many sources; usable as a query backend for embedded charts.

Embed an existing BI dashboard

  • Metabase Embedding — signed JWT iframe embeds; "static" embedding free in OSS; "interactive" embedding requires paid Pro / Enterprise.
  • Apache Superset — supports embedded dashboards via the Embedded SDK; permissive license but ops-heavy.
  • Lightdash Embedded — paid feature; iframe + JWT.
  • Evidence — static-rendered Markdown dashboards; trivially embeddable as iframes since they're just hosted HTML.
  • Tableau Embedded, Looker Embedded, Sisense, ThoughtSpot Embedded — paid SaaS; large enterprise.
  • Explo, Luzmo (formerly Cumul.io) — purpose-built embedded analytics SaaS; paid; nicer multi-tenancy than retrofitting BI tools.

Component / SDK approach

  • Tremor + your own data layer — Tailwind-native dashboard components; pair with Cube or your API. See Charts.
  • Plotly Dash Enterprise / Dash Embedded — paid; embeds Dash apps.
  • Vizro — Python; render-as-iframe.
  • Streamlit + streamlit.components.v1 — embed Streamlit apps in your product (be aware of session model).

Multi-tenancy patterns

  • Row-level security in your warehouse — Postgres RLS, Snowflake row policies, BigQuery authorized views.
  • Per-tenant filter injection — Cube and dbt Semantic Layer expose query-level filters; supply tenant_id from the user JWT.
  • Pre-aggregations / cubes — Cube's pre-aggregations cache results per tenant; dramatically faster than re-running on the warehouse.
  • JWT signing for iframe embeds — Metabase / Superset / Lightdash all support short-lived signed tokens carrying tenant context.

When to build vs. buy

  • 3 dashboards, 1 chart each: build with Recharts + your API. Don't pull in BI infra.
  • Many dashboards, drilldowns, you keep adding: Cube + Tremor / Recharts.
  • Customers want to build their own dashboards: Metabase / Superset embedded, or paid Explo / Luzmo.
  • Customers want to write SQL: unusual; consider an internal Metabase per tenant, or query API + the code-playgrounds editor.

Pick this if…

  • Default embedded analytics, OSS: Cube + Recharts / Tremor.
  • You already have BI dashboards and want to share them: Metabase or Superset embedded.
  • Code-first reports embedded as iframes: Evidence.
  • You'll pay for a polished multi-tenant experience: Explo or Luzmo.
  • Metrics consistent across embed and internal BI: Cube or dbt Semantic Layer as the source of truth.

On this page