Iframe embedding is available on Premium and Enterprise plans.
- Private embedding — for internal users with Cube accounts (e.g., embedding in Notion, Salesforce, internal tools)
- Signed embedding — for external/customer-facing applications using server-generated sessions
Embed with private embedding
To embed a dashboard for internal users:- Open your dashboard in Cube
- Click Share → Embed
- Copy the generated iframe code
Embed with signed embedding
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:Pre-set dashboard filters and granularities via URL
You can pre-set the values of a dashboard’s controls by adding URL parameters:
The semantic view and member must match the internal names (not display titles)
configured on the widget — as must the member on the right-hand side of
ms_,
which is a measure rather than a dimension when the field switcher’s Field
Type is Measure. For filters, an omitted filter type defaults to equals.
Granularities are lowercase and must be one of the switcher’s allowed
granularities —
day, week, month, quarter, year, plus second, minute, and hour
for time dimensions that expose them.
Example:
src="…" of the iframe
snippet above, its raw " closes the attribute and truncates the URL.
This works on both regular and published (embedded) dashboards. A parameter is
applied only if a matching control for that member already exists on the
dashboard; a granularity outside the switcher’s allowed list is ignored, as is a
member the field switcher doesn’t offer — its
Alternatives,
plus the member it replaces.
The reverse direction works on published dashboards: when a viewer changes a
control there, the new value is written back into the dashboard’s own URL, so the
state a link carries and the state a viewer reaches by clicking are the same
format. Reading the parameters works anywhere; it’s the writing that is
published-only. See Controls → Sharing the current
selection.
Allow chart and dashboard export
By default, embedded dashboards do not expose a download action on individual widgets or on the dashboard as a whole. To let viewers download a chart widget as a CSV, PNG, or PDF file, and download the whole dashboard as a PNG or PDF, add theallowExport=true query parameter to the embed
URL:
allowExport is the
single switch for all of these — there is no way to allow one format while
blocking another, or to allow chart-level export without dashboard-level
export. 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. The account-wide Allow data downloads switch outranks it —
see Restricting data
downloads.
To turn on per-widget downloads without the whole-dashboard ⋮ menu — for a
host that surfaces its own dashboard-level export, for example — add
showDashboardExportMenu=false:
false hides
the menu; it has no effect unless allowExport=true is also set.
Show or hide the AI chat
Embedded dashboards show an AI chat (the agent panel and its launcher bubble) by default. You can control it in two ways:- Globally, in the UI. Toggle Show AI chat on embedded dashboards under Embed → Settings in the Cube console. This switch is account-wide — it turns the AI chat on or off for the entire embedded surface, i.e. every embedded dashboard.
- Per session, via the API. Pass
settings.showDashboardChatwhen you generate the session. A per-session value takes precedence over the global toggle —falsehides the chat for that session even when it is enabled account-wide, andtrueshows it even when it is disabled:
settings.allowAi instead. See Show and hide
features.
Show or hide header controls
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 iframesrc:
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 are URL-only — they aren’t accepted in the Generate
Session
settings
object, unlike showDashboardChat, and they have no account-wide default
under Embed → Settings.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.
Creator Mode workbook header
The Creator Mode workbook header — which carries the workbook name, tabs, Publish changes, and Share — is a separate surface with its own back-button switch:showWorkbookBackButton is independent of showDashboardBackButton above —
the two headers are separate surfaces, so a host that wants neither back
button sets both. The rest of the workbook header (name, tabs, Publish
changes, Share) has no equivalent switch, since those actions are part of the
authoring flow. The workbook actions menu still offers View all, so
hiding the back button never removes a way back to the workspace. It follows
the same rules as the parameters above: only the exact literal string false
hides it, and it is URL-only — not accepted in the Generate Session settings
object, and with no account-wide default under Embed → Settings.
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).
Set the language
Embedded dashboards render their UI in the account’s default language, which you can override per embed by adding the?locale= query parameter: