QueryPanel vs Embeddable
Composable charts and builder-oriented embedding.
Embeddable focuses on composable analytics UI. Teams that enjoy owning chart configuration, layout, and presentation details often evaluate builder-first tools.
Last reviewed . Vendor facts are checked against public docs and pricing pages on that date.
Comparison at a glance
This table summarizes typical positioning. Every vendor changes over time—validate details against current documentation and your security review.
| Dimension | Embeddable | QueryPanel |
|---|---|---|
| In-app experience for end users | Dashboards mount through the `<em-beddable>` web component in your DOM, authorized by a short-lived token from Embeddable's Tokens API; no iframe. | First-class `@querypanel/react-sdk` components—`QuerypanelEmbedded` for a full dashboard, or `QueryPanelProvider` with `QueryInput` / `QueryResult` for a bespoke flow. They render in your React tree like any other product screen (layout, router, modals, tokens)—not a separate iframe "mini app" on another origin. Mint short-lived JWTs on your server; never ship your workspace private key to the browser. |
| Core value | Composable embedding and builder workflows for charts and dashboards. | AI-driven generation plus a ready-made React embed: less manual assembly per new customer question. |
| Trainable knowledge & steering | Knowledge lives in Cube data models (measures, dimensions, joins, descriptions) that you version in code; the AI chatbot and AI endpoints work over those models. | Gold SQL queries (curated examples the model prioritizes), database annotations (business context on tables/columns, re-embedded with schema), glossary (domain terms and definitions), and tenant-level definitions (isolation field, enforcement, and per-tenant sync context so every ask() is grounded in the right customer slice—not a one-size global prompt). |
| SQL generation | Cube generates SQL from the measures and dimensions a chart requests; new questions need the matching model in place first. | First-class NL→SQL with validation hooks meant for production SaaS backends. |
| React SDK | Developers write custom chart components in React and register them with Embeddable; the published dashboard is a web component rather than a React component. | `@querypanel/react-sdk` ships `QuerypanelEmbedded` and composable pieces you render directly in your React tree. |
| AI / natural language | AI chatbot for end users and AI endpoints, scoped to each user's security context and allowed data models. | AI assistant in the tenant's dashboard workspace, plus headless `ask()` from your API routes. |
| End-user dashboard editing | Custom Canvas lets end users build dashboards from the datasets and chart templates you expose. | Tenants fork and customize dashboards in the Notion-like workspace and add charts by asking the AI assistant. |
| Pricing shape | Flat monthly subscription quoted after a scoping call; unlimited usage, white-label included, no public prices (checked October 19, 2026). | Tenant-based: unique tenants per billing month, not seats; AI chart generation metered separately; free tier. |
| Developer workload | Higher control often means more integration and UI assembly work. | Opinionated paths to ship faster: `@querypanel/react-sdk` for full workspace embeds, `@querypanel/node-sdk` when you want headless `ask()` from the server. |
| Multi-tenant | Security context passed in the Tokens API request; SQL-based row-level security or access policies in Cube models filter each tenant's rows. | Tenant context is part of the ask() / generation contract for safer customer queries. |
| Ideal team | Front-end heavy teams with time to craft the analytics experience. | Small product teams that need analytics shipped without a dedicated visualization squad. |
Code-first components versus a ready workspace
Embeddable is built for developers who want to write the analytics experience: custom chart components in React, data models in Cube, dashboards assembled in its builder, then deployed into your app as the `<em-beddable>` web component. That gives full control over every chart. QueryPanel starts from a finished, Notion-like workspace (`QuerypanelEmbedded`) where tenants fork dashboards and add charts by asking the AI assistant. Pick by how much analytics UI your team wants to own.
Cube data models versus trainable knowledge
Embeddable's data layer is Cube: measures, dimensions, joins, and row-level security live in model files, either on Embeddable's managed Cube or your own Cube Core or Cube Cloud. That is a semantic layer you version and review. QueryPanel does not ask for a model first. It syncs your schema and learns from gold SQL, database annotations, a glossary, and tenant definitions, so new questions can be answered before a measure exists for them.
Security context versus a tenant JWT
Embeddable's Tokens API issues a short-lived token from your backend with a security context, and SQL-based RLS or access policies in the Cube models use that context to filter rows; its AI endpoints respect the same context. QueryPanel's model is similar in spirit: your backend mints an RS256 JWT with the tenant id using `@querypanel/node-sdk`. The difference is that QueryPanel applies tenancy during SQL generation and the SQL then runs in your environment.
When Embeddable is the better fit
Honest tradeoffs help your team pick faster—and match how buyers actually decide.
- You want maximum front-end control over every chart and interaction primitive.
- Your team already has strong opinions on visualization libraries and design systems.
- You are building a highly custom analytics canvas rather than a standard dashboard shell.
When QueryPanel is the better fit
Choose QueryPanel over Embeddable when you want a ready dashboard workspace with an AI assistant that tenants customize themselves, rather than authoring components and Cube data models in code first. Keep Embeddable when your front-end team wants to own every chart component and define analytics as code.
- You want a trainable knowledge system—gold queries, DB annotations, glossary, and tenant-aware definitions—so NL→SQL and charts reflect your business, not generic schema-only guesses.
- You want a batteries-included embedded workspace as React (`QuerypanelEmbedded`) instead of building chart components, data models, and dashboard definitions in code first.
- You want the full loop from customer language to SQL to visualization as one product workflow.
- You care about tenant-scoped SQL generation as the backbone of self-serve customer questions.
- You still want a headless Node `ask()` path when you need server-side or fully custom UI.
Pricing notes
Checked . Pricing changes; confirm on the vendor pages before you budget.
Embeddable
As checked October 19, 2026, Embeddable's pricing page publishes no tiers or prices (vendor-stated). It sells a flat monthly subscription with unlimited usage, every feature, and white-labelling by default, quoted after a short scoping call. Its FAQ says pricing is based mainly on project scope, not on MAUs, dashboard views, or query volume, with startup, scale-up, and enterprise packages differing in governance, SLAs, and rollout support. Ask for a written quote before you compare costs.
QueryPanel
QueryPanel pricing is tenant-based: plans count unique tenants per billing month, not end-user seats or sessions. AI chart generation is metered separately, and a free tier lets you ship a first embedded route before committing.
Sources: Embeddable pricing, QueryPanel pricing
Migrating from Embeddable to QueryPanel
1. Inventory dashboards, components, and Cube models
List the Embeddable dashboards customers use, the custom React components behind them, and the Cube models and measures they read. Separate standard charts, which QueryPanel covers out of the box, from bespoke components you may still want as custom UI.
2. Map the security context to a tenant claim
Read the security context your backend sends to the Tokens API and the RLS rules or access policies that use it. Map the customer key to the tenant field in QueryPanel and mint a JWT with `@querypanel/node-sdk` that carries the tenant id, in the same backend route that requests Embeddable tokens today.
3. Sync the schema and port Cube measures
Run schema sync on the Postgres, ClickHouse, or BigQuery database behind your Cube models. Rewrite key measures and joins as gold SQL queries, copy model descriptions into database annotations, and add glossary entries for measure names customers see.
4. Embed QuerypanelEmbedded on one route behind a flag
Install `@querypanel/react-sdk` and render `QuerypanelEmbedded` on one analytics route for internal accounts or a few pilot tenants, behind a feature flag. Leave the `<em-beddable>` component on the existing route.
5. Compare numbers per tenant
For each pilot tenant, compare Embeddable chart values with QueryPanel results for the same filters and periods. Differences often come from Cube measure definitions or pre-aggregations; fix them in gold SQL.
6. Cut over and remove the Embeddable path
Move tenants in batches, then remove the `<em-beddable>` component, the Tokens API call, and the component and model deployment step from CI once no tenant uses them.
Comparison FAQ
Is QueryPanel a good Embeddable alternative for a React SaaS product?
Yes, when you want a ready AI dashboard workspace in React rather than building components and data models first. QueryPanel's primary product is its headful React SDK with a Notion-like dashboard management system and AI assistant for tenant customization. Embeddable is the better fit when your developers want full code-level control over every chart and model.
Does Embeddable use iframes or React?
Neither exactly. As checked October 19, 2026, Embeddable's docs show developers writing custom components in React, while the published dashboard mounts through the `<em-beddable>` web component in your page, authorized by a server-issued token. QueryPanel's `QuerypanelEmbedded` is a React component that renders directly in your React tree.
How much does Embeddable cost compared with QueryPanel?
As checked October 19, 2026, Embeddable's pricing page publishes no tiers or prices: it sells a flat monthly subscription, quoted after a short scoping call, with unlimited usage and white-labelling included, and says MAUs, dashboard views, and query volume are not the main pricing driver. QueryPanel pricing is tenant-based, counting unique tenants per billing month, with AI chart generation metered separately and a free tier.
How does Embeddable handle multi-tenancy compared with QueryPanel?
Embeddable passes a security context in a token requested from its Tokens API, and Cube data models apply SQL-based row-level security or access policies using that context. QueryPanel carries the tenant id in a short-lived JWT your backend signs with `@querypanel/node-sdk`, and applies it during SQL generation so every query targets one customer.
Does Embeddable have AI features?
Yes. Embeddable documents an AI chatbot for end users and AI endpoints whose responses are scoped to the user's security context and the data models they can access. QueryPanel's AI assistant sits inside the tenant's dashboard workspace and generates SQL and charts steered by gold SQL, annotations, glossary, and tenant definitions you train.
Is QueryPanel a full replacement for Embeddable?
For customer-facing dashboards and AI questions in a React app, yes. It is not a replacement if you depend on Cube as a semantic layer for other consumers, or on fully custom chart components. QueryPanel is not a semantic-layer product and is a smaller vendor, so check NL-to-SQL accuracy on your own schema.
Related reading
- Embeddable alternativesEmbeddable alternatives for multi-tenant SaaS, with embed models and pricing.
- Embeddable vs LuzmoTwo developer-facing embedded analytics vendors side by side, with QueryPanel.
- Headful vs headless embedded analytics SDKsChoosing between a ready workspace and building your own UI.
- Iframe vs native React embedded analyticsWeb components, React SDKs, and iframes compared.
- QueryPanel React SDK docs
Still evaluating Embeddable and QueryPanel?
Start on the free tier, embed one dashboard, and compare implementation time against your current shortlist.