Introduction

Embeddable Docs

Embeddable is a developer toolkit for building fast, scalable customer-facing analytics experiences into your application.

Use it to build embedded dashboards, self-serve analytics, and AI-powered insights on top of the same governed, code-based foundation.

Engineers define components, data models, themes, and access policies in code. Your team can then assemble and publish native-feeling analytics experiences using the no-code builder or your existing development workflow.

Image 0

Getting started with Embeddable

New here? Follow the Set up path top to bottom. Already building? Jump to a common task or reference below.

Set up

Common tasks

Reference

How Embeddable works

Embeddable has four main parts.

1. Code-first foundation

Define reusable components (optionally starting with Embeddable's production-grade component suite), themes, and data models in your own repository. These are version-controlled, reviewable, and extendable by your developers or agents.

2. Governed semantic layer

Your data models are a semantic layer that centralises metrics, joins, dimensions, and access policies — so every dashboard and AI experience is built on the same trusted definitions as you scale.

3. Dashboards and AI experiences

Assemble interactive dashboards and AI experiences from your models and components using Embeddable’s no-code builder or in code in your repo. Your team can publish directly, or route changes through your existing engineering release process.

4. Native embedding

Embed dashboards using Embeddable's HTML web component and a server-side token. The token tells Embeddable what to load, who the user is, and which access policies to apply.

Architecture

At a high level, Embeddable separates what you define and publish at build time from what each end user is allowed to see at run time.

Build time

Your components, data models, and (optionally) dashboards live in your repo. Running npm run embeddable:push makes them available in your workspace, where you can manage everything in code, or build dashboards with the no-code builder. Either way, you publish a version, and that's what gets embedded.

Build-time flow: from your repo, pushed to the platform, to a published version

Run time

When an end-user loads a page, the web component loads its published dashboard, then fetches data through a pipeline that applies row-level security and caches results before reaching your database. Embeddable does not replicate your database - it queries it directly and can cache query results to improve performance.

You can set up multiple environments e.g. production, staging, or a per-tenant database connection. Your server-side token request (explained below) specifies which environment to use, so a single deployment can serve different customers from isolated databases, or point at staging data without touching production.

Run-time flow: the web component down through the cache and security pipeline to your database

Securing the embed

The component never holds your credentials. When a user opens a dashboard, your server calls the Tokens API server-side, so your API key stays secret, and receives a short-lived, scoped token.

The token tells Embeddable which dashboard and version to load, who the user is, which environment to query, and which filters, roles, and row-level security context to apply.

You embed the component as <em-beddable token="…" />. It sends the token with every request, so the runtime returns only the rows that token permits.

Authorization handshake: your server to the token API to the web component to the runtime