# Dashboards & Access

- URL: https://betteranalyst.com/docs/embeddings/dashboards-and-access
- Updated: 2026-10-28
- Author: Better Analyst

Show read-only dashboards inside an embed, choose what visitors can do on them, and control which sites and people can use your embed.

## Dashboards in an embed

Open **Embeddings**, select an embed and find **Dashboards** under **Contents**. Tick the widget dashboards visitors should see. The one marked **Opens first** is shown when chat is turned off.

Visitors open dashboards from a **Dashboards** section in the embed sidebar. They can change filters, date ranges and comparisons, switch tabs, open cards full screen and read AI notes. Nothing they do changes your dashboard.

### Each customer's own rows

Visitors see the same numbers on a dashboard, except from data sources that filter rows by the tenant in the [signed embed token](https://betteranalyst.com/docs/embeddings/dynamic-filtering) your app sends. There each visitor sees only their own tenant's rows: the dashboard's queries on that source run again for their tenant, the first time someone from that tenant opens it, and visitors of the same tenant share the result for a day. The Dashboards list says when a dashboard is shown per visitor.

When a visitor's token expires (tokens last at most an hour), those cards show no data and ask them to reload the page; your app then sends a new token.

A dashboard can't be added, and stops showing if it was added earlier, when:

- one of its data sources shows each team member only their own rows (per-member rules), or it shows each viewer their own data;
- a table built on a tenant-filtered source isn't a database query (a file, a Google source or saved rows), or runs Python, so it can't re-run for each tenant;
- more than 6 tables would re-run for each tenant;
- it belongs to a private Project or another workspace;
- it isn't a widget dashboard.

The Dashboards list says why a dashboard can't be added.

### Viewer actions

Under **Dashboard viewer actions** you choose whether visitors can:

| Setting | What it allows |
| - | - |
| Downloads | CSV, Excel and PNG downloads on cards |
| Show underlying data | The rows behind a card |
| AI notes | Written summaries on note cards. When off, notes are computed from the numbers |
| Ask about this data | Questions on Q\&A cards, answered only from the dashboard's own numbers |

Filters, date ranges, comparisons and full screen are always available.

### Dashboards only

Turn off **AI chat** under **Contents** to show only dashboards. The embed then opens on the dashboard marked **Opens first**.

## Access and security

Find these under **Access & security**.

### Allowed websites

List the exact sites that may show your embed, such as `https://app.example.com`. Browsers refuse to load the embed anywhere else. When the list is empty, any site can show it.

### Who can join

Each visitor who joins is a billable seat, so choose who can join:

- **Anyone with access to the page**
- **Only visitors your site signs in**: the iframe URL must carry a token your server signs (see [Dynamic User Filtering](https://betteranalyst.com/docs/embeddings/dynamic-filtering))
- **Only these email domains**: for example `acme.com` (subdomains count)
- **Your site signs visitors in automatically**: your server signs a token naming the user, and the embed signs them in with no sign-up form (see [Sign Visitors In From Your Site](https://betteranalyst.com/docs/embeddings/host-issued-identity))

With the first three options, visitors confirm their email with a 6-digit code before they join.

### Limits

- **Seat cap**: new visitors can't join once this many seats are taken. Existing visitors keep their access.
- **Messages per visitor per month**: chat messages each visitor can send per calendar month (UTC).

### Terms and privacy links

Add links to your terms and privacy policy. Visitors see them when they create an account.
