docs-mintlify/embedding/iframe/dashboards.mdx
Embed any dashboard into your application using an iframe. Dashboards can be embedded with either authentication mode:
To embed a dashboard for internal users:
Then paste the iframe code into your application:
<iframe
title="Dashboard"
src="https://your-account.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID"
width="100%"
height="800"
></iframe>
Users will be prompted to sign in with their Cube credentials when accessing the embedded dashboard. See Private embedding for details on the auth model and integration examples (Notion, Salesforce).
Signed embedding must be allowed on the dashboard first: open the dashboard, click Share → Embed, and turn on Allow signed embedding. You can also toggle it without opening the UI using the Cube CLI:
cube embed enable-dashboard YOUR_DASHBOARD_PUBLIC_ID
cube embed disable-dashboard YOUR_DASHBOARD_PUBLIC_ID
To embed a dashboard for external/customer-facing applications, generate a session on your backend and pass the session ID into the iframe:
<iframe
title="Dashboard"
src="https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID"
width="100%"
height="800"
></iframe>
See Signed embedding for the full session generation flow, API key setup, and a complete working example.
You can pre-set dashboard filter values by adding URL parameters in the format
?f_<semantic_view>.<dimension>=<JSON>. The <semantic_view> and <dimension>
must match the internal names (not display titles) of the semantic view and
dimension configured on the filter widget. If the filter type is omitted, it
defaults to equals.
Example:
https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID&f_orders_transactions.users_country={"value":"USA"}
This works on both regular and published (embedded) dashboards. The filter is only applied if a matching filter widget for that dimension already exists on the dashboard.
By default, embedded dashboards do not expose a download action on individual
widgets. To let viewers download a chart widget as a CSV, PNG, or
PDF file, add the allowExport=true query parameter to the embed URL:
https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID&allowExport=true
When enabled, each chart widget's ⋮ menu shows Download as CSV, Download
as PNG, and Download as PDF actions. allowExport is the single switch
for all three formats — there is no way to allow one format while blocking
another. Only the exact literal string true opts in: allowExport=1,
allowExport=TRUE, a bare ?allowExport, and omitting the parameter (the
default) all leave every download action hidden.
The CSV is generated client-side from the data already loaded into the
widget, so no additional query is issued. Inside an embed, allowExport —
not the viewer's own Cube role — is the authority on whether the download
actions appear.
Embedded dashboards show an AI chat (the agent panel and its launcher bubble) by default. You can control it in two ways:
settings.showDashboardChat when you
generate the session. A per-session
value takes precedence over the global toggle — false hides the chat for that
session even when it is enabled account-wide, and true shows it even when it
is disabled:body: JSON.stringify({
deploymentId: DEPLOYMENT_ID,
externalId: "[email protected]",
settings: {
// Hide the AI chat for this viewer only
showDashboardChat: false,
},
}),
This applies to embedded published dashboards; it does not affect the standalone Analytics Chat surface, where embedding the chat is itself the opt-in.
By default, an embedded dashboard's header shows its title, back button, and
— when the viewer has permission — the Edit and Duplicate actions. Hide any
of them individually with URL parameters on the embed iframe src:
| Parameter | Hides |
|---|---|
showDashboardHeader=false | The entire header bar |
showDashboardBackButton=false | The back button |
showDashboardTitle=false | The dashboard title |
showDashboardEditButton=false | The Edit action |
showDashboardDuplicateButton=false | The Duplicate action |
https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID&showDashboardBackButton=false&showDashboardTitle=false
Every one of these defaults to shown. Only the exact literal string false
hides a control — =0, =False, =FALSE, and a bare ?showDashboardTitle
(no value) all leave it visible. Note this is the inverse of allowExport
above, where only the literal string true opts in.
These parameters apply to the dashboard header only — the workbook header (which carries Publish and Share) is unaffected.
Setting showDashboardHeader=false overrides the other four: the whole bar
disappears regardless of their values. showDashboardEditButton can only
hide the Edit action; it can never show one to a viewer who lacks edit
permission.
These parameters are read from the URL the host loaded the iframe with and stay pinned for the life of the embed, so they survive in-app navigation (for example, from the home-page dashboard card, or after publishing a draft).
Embedded dashboards render their UI in the account's default language, which you can
override per embed by adding the ?locale= query parameter:
https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID&locale=es-MX
See Localization for the list of supported languages and the other ways to set the language.
You can style an embedded dashboard — background, padding, widget borders, titles, and fonts — from the Styling panel in the Dashboard Builder. See Dashboards → Styling for the full list of options.