Skip to content
Embedded analytics

Give your customers AI chat, dashboards, and insights on their own data without building analytics yourself. Your data team keeps one governed setup, and your engineers get back to the roadmap.

14-day trial. No credit card required.

FFieldbook

Reports

Service performance

Last 12 weeks

Jobs completed

1,284

+8%

First-time fix rate

87%

+2 pts

Revenue per job

$412

+5%

Jobs completed per week

Jul 7Aug 4Sep 1Sep 22

Powering analytics for 5000+ teams worldwide

Exa logoTiger Data logoPurpose logoGumloop logoComposio logoFullscript logoShiftrx logoDrata logoExa logoTiger Data logoPurpose logoGumloop logoComposio logoFullscript logoShiftrx logoDrata logo

React SDK

Install @basedash/embed, wrap a component like BasedashDashboards or BasedashChat in its provider, and point it at an endpoint that signs a short-lived token for the signed-in user. Other frameworks load the same token in a plain iframe.

import {  BasedashProvider,  BasedashDashboards,} from "@basedash/embed/react"; const fetchToken = () =>  fetch("/api/token").then((r) => r.text()); export function AnalyticsPage() {  return (    <BasedashProvider fetchToken={fetchToken}>      <BasedashDashboards hideSidebar />    </BasedashProvider>  );}
$npm install @basedash/embed

Multi-tenant

Create a Basedash organization for each customer through the API, with its own data sources and JWT secret. A token signed for one customer opens that organization and nothing else, and Basedash adds the user as a member the first time they load it.

Customer organizations

Created with the Basedash API · Embedding on

3 organizations

Embed token for [email protected]HS256

orgId
org_7hQ2nV4k
role
MEMBER
iat
1791382500
exp
1791383100
Signed with
Northside HVAC's JWT secret
Opens
Northside HVAC only

First load adds dana as a member of Northside HVAC.

Embedded AI chat

The AI analyst your team uses answers your customers in plain language, with tables and charts from their own data, and takes follow-up questions. They stop filing report requests, and you stop building one-off exports.

Which customers haven't booked a job in 90 days?

Three commercial customers last booked in June or early July. They spent $24,700 with you over the past four quarters, most of it before July.

Harbor Point ApartmentsJun 18$11,960

Greenway DentalJun 30$7,640

Elm Street BakeryJul 2$5,100

Chart their spend by quarter

Spend from the 3 lapsed customers, $K

Q4Q1Q2Q3

White-label

The embed's sidebar shows your customer's organization name and icon, not Basedash's. Match your app's light or dark theme, hide the sidebar when your app owns navigation, and choose which of chat, dashboards, insights, automations, and models appear.

FFieldbook/ Reports

What do you want to know?

Ask about jobs, customers, or invoices
  • Callbacks by technician
  • Revenue vs. last month
  • Customers due for maintenance

Theme

How embedding works

The pieces that keep an embed secure, current, and out of your engineers' way.

  • React SDK

    Open-source components for React 18.2 and 19.

  • Any framework

    A plain iframe and a signed URL for everything else.

  • Short-lived tokens

    Signed with HS256, valid for 10 minutes by default.

  • One org per token

    Each token opens one customer's organization.

  • Users on first load

    Basedash creates the member the first time they visit.

  • Allowed origins

    Limit which domains can load your embed.

  • Locked filters

    Signed filter values on shared dashboards, hidden from viewers.

  • Self-hosted too

    Point the SDK at your own Basedash instance.

What you can embed, how customers sign in, and how their data stays separate.

What parts of Basedash can I embed?

You can embed AI chat, the dashboards workspace, insights, automations, and models, each on its own or together in the full app, plus read-only shared dashboards. In React, each one is a component, such as BasedashChat or BasedashDashboards, and an ID prop opens a specific chat, dashboard, or automation. The full app takes props that hide the features you don't want, as long as one of the five stays visible. The embed is the real product, so new Basedash features reach your customers without a release on your side.

How do embedded users sign in?

Your app signs them in, not Basedash. When a signed-in user opens the page, your server creates a JWT with their email, the Basedash organization ID for their company, and an optional name and role, signs it with that organization's secret, and hands it to the embed. The SDK's createEmbedToken helper does this, with a 10-minute expiry by default. Basedash creates the user and their membership the first time a token is used, so there's no separate account or invite. Keep the secret on your server: anyone holding it can sign in as any user in that organization.

Should each customer get its own Basedash organization?

For customer-facing analytics, usually yes. An organization per customer, created through the Basedash API with embedding turned on, gives each one its own data sources, dashboards, members, and JWT secret, so a token for one customer can't reach another's data. If customers share one organization and one Postgres database, Basedash sets a basedash.groups session variable on every query, and your row-level security policies can filter rows by each member's groups. For shared dashboards, a signed filter token can lock a tenant ID instead.

Does the embed show the Basedash brand?

The embed's sidebar shows the organization's own name and icon rather than a Basedash logo, so customers see their company there. You can hide the organization name, remove the sidebar entirely when your app owns navigation, and pick which features appear. The theme can be light, dark, or follow the user's system setting, so it sits naturally in your app. Hiding parts of the embed is presentation only, so use Basedash permissions to control what each member can actually open.

Can customers use AI chat inside my product?

Yes. BasedashChat embeds the AI analyst on its own, and the full app includes it next to dashboards. Customers ask in plain language and get answers, tables, and charts from the data sources in their organization, limited to what their member account can access, and they can keep asking follow-up questions. You can hide the suggested prompts and open a specific chat by ID. Customer data is never used to train AI models.

Can I embed a dashboard without signing users in?

Yes. Share a dashboard to get a public link and render it with BasedashSharedDashboard or an iframe, with no Basedash user or token. Its filters stay hidden unless you choose to show them. To give each viewer only their own rows, create a filter token on your server that locks values such as a company ID: Basedash verifies the signature, applies the values server-side, and hides those filters, so viewers can't change them. Embedding a single chart on its own isn't available yet.

Which plan includes embedding?

Embedding is part of the Enterprise plan, along with self-hosting, SSO, and SCIM. You can embed Basedash Cloud or your own self-hosted instance: the SDK takes an instanceUrl, and tokens are created the same way for both. Book a demo to walk through your product, how many customer organizations you expect, and which features you want to show them.

What can't the embed do yet?

Embeds render Basedash in an iframe, including the React SDK's components, rather than as native React UI. Basedash doesn't expose a messaging API to the host page yet, so the frame doesn't resize itself, report navigation, or take commands from your app, and you give it a fixed or full height instead. Single charts can't be embedded on their own, only shared dashboards and the app itself. If one of these blocks what you're building, tell us about it.

Book a demo and we'll walk through embedding Basedash in your product, from tokens to tenants.