Skip to main content

Sharing & Embedding

Starter+Professional+

CalabiIQ provides multiple ways to share insights: direct links, embedded iframes for external portals, and scheduled email reports. This guide covers all sharing options and their access control implications.


The simplest way to share a dashboard is a permalink — a stable URL that preserves the current filter state.

  1. Open the dashboard you want to share.
  2. Apply any filters you want recipients to see by default.
  3. Click the Share button (top-right).
  4. Select Copy permalink.
  5. Paste the URL into Slack, email, or any other communication channel.

Recipients must have a valid Calabi account to open the link. The dashboard respects their individual data permissions — they see only data they are authorized to access.

Sharing a specific chart

  1. Open the chart from the Charts list.
  2. Click ···ShareCopy link.

Access Control for Shared Dashboards

CalabiIQ uses role-based access control (RBAC) to determine who can view a dashboard.

Making a dashboard visible to all users

  1. Open the dashboard in Edit mode.
  2. Click the Draft badge next to the title.
  3. It changes to Published — all Calabi users with access to the underlying datasets can now view it.

Restricting a dashboard to specific roles

  1. In Edit mode, click ···Edit dashboard.
  2. Under Roles, add the roles that should have access.
  3. Remove other roles as appropriate.
  4. Click Save.

Embedding Dashboards

Professional+

Embed CalabiIQ dashboards inside external portals, internal tools, or customer-facing applications using an <iframe>.

Step 1 — Enable embedding for the dashboard

  1. Open the dashboard in Edit mode.
  2. Click ···Embed dashboard.
  3. In the Allowed Domains field, enter the domain(s) that will host the iframe (e.g., app.{yourdomain}, portal.yourcompany.com).
  4. Click Enable embedding.
  5. Copy the Embed ID (UUID).

Step 2 — Get an embed token (server-side)

Embedding requires a short-lived guest token generated from your backend using the CalabiIQ REST API. Never expose your API credentials in client-side code.

import requests

CALABI_BASE_URL = "https://calabi.yourdomain.com/bianalyst"
CALABI_API_KEY = "your-service-account-api-key" # keep secret

def get_guest_token(dashboard_id: str, user_email: str) -> str:
"""Generate a guest token for embedding dashboard_id."""
resp = requests.post(
f"{CALABI_BASE_URL}/api/v1/security/guest_token/",
json={
"resources": [{"type": "dashboard", "id": dashboard_id}],
"rls": [], # optional row-level security rules
"user": {
"username": user_email,
"first_name": "Embedded",
"last_name": "User",
},
},
headers={"Authorization": f"Bearer {CALABI_API_KEY}"},
)
resp.raise_for_status()
return resp.json()["token"]

Step 3 — Render the iframe

Pass the guest token to your frontend and mount the iframe:

<iframe
id="calabi-embed"
src="https://calabi.yourdomain.com/bianalyst/embedded/dashboard/<EMBED-UUID>?guest_token=<GUEST-TOKEN>"
width="100%"
height="800px"
frameborder="0"
allowfullscreen
></iframe>

Embedded SDK (JavaScript)

For more control — hiding the filter bar, listening to events — use the embedded SDK:

<script src="https://calabi.yourdomain.com/bianalyst/static/assets/embedded.js"></script>
<div id="calabi-container" style="height:600px;"></div>

<script>
const embed = calabi.embedDashboard({
id: "<EMBED-UUID>",
calabiiqDomain: "https://calabi.yourdomain.com/bianalyst",
mountPoint: document.getElementById("calabi-container"),
fetchGuestToken: () => fetchGuestTokenFromYourBackend(),
dashboardUiConfig: {
hideTitle: true,
hideChartControls: false,
filters: {
expanded: false,
visible: true,
},
},
});
</script>

Row-Level Security in embedded dashboards

Apply RLS rules so embedded viewers only see their own data:

# Server-side guest token with RLS
resp = requests.post(
f"{CALABI_BASE_URL}/api/v1/security/guest_token/",
json={
"resources": [{"type": "dashboard", "id": dashboard_id}],
"rls": [
{
"clause": f"tenant_id = '{viewer_tenant_id}'",
"dataset": 42, # dataset ID in CalabiIQ
}
],
"user": {"username": user_email, "first_name": "Guest", "last_name": "User"},
},
headers={"Authorization": f"Bearer {CALABI_API_KEY}"},
)

Embedding URL Parameters

Control the embedded dashboard's appearance with query parameters:

ParameterValuesEffect
standalone1Hides top navigation bar
standalone2Hides navigation and dashboard title
standalone3Minimal view — charts only
show_filters0Hides the filter bar
expand_filters0Collapses the filter bar by default

Full kiosk URL example:

https://calabi.yourdomain.com/bianalyst/embedded/dashboard/<UUID>?standalone=3&show_filters=0

Sharing Individual Charts

Charts can be shared independently of dashboards.

  1. Go to Charts → find the chart.
  2. Click ···ShareCopy link.

Download as image

  1. Open the chart or hover over it on a dashboard.
  2. Click ···DownloadDownload as image (PNG).

Download as CSV

  1. On a dashboard, hover over any chart.
  2. Click ···DownloadDownload as CSV.

This downloads the chart's underlying query results, not the visual.


Scheduled Email Reports

Send dashboard or chart snapshots to a distribution list on a recurring schedule.

See Scheduled Reports for the full guide.


Permissions Reference

ActionStarterProfessional
Share dashboard via permalinkYesYes
Publish dashboard (make visible to all users)YesYes
Restrict dashboard to specific rolesYesYes
Embed dashboard in external siteNoYes
Row-level security in embedded viewsNoYes
Scheduled email reportsNoYes
Slack report deliveryNoYes
Download chart as PNGYesYes
Download chart data as CSVYesYes