> AI agents: this is one page from Mammoth Analytics documentation. The index of all pages as Markdown is https://mammoth.io/docs/llms.txt. Append `.md` to any docs URL, or send `Accept: text/markdown`, to get Markdown.

# Row-level security: show each viewer only their rows

> Set up row-level security on a Mammoth dashboard: pick a filter column, assign values to each viewer, preview as a viewer, and fix unassigned viewers.

Row-level security (RLS) filters a published dashboard per viewer. You pick one column, assign each viewer one or more values from it, and each signed-in viewer sees only the rows that match their values. Set it up in the dashboard's **Share** panel under **Advanced: row-level security, viewer Q&A**. It needs the **Pro** plan and **Sign-in required** access.

## Before you start

- **Plan.** Row-level security needs the **Pro** plan. On other plans the toggle shows a premium icon and "Row-Level Security isn't included in your plan. Upgrade to give each viewer their own slice of the data."
- **Access.** The dashboard must use **Sign-in required** access. With any other access the panel reads "RLS requires authenticated sharing mode". See [Publish and share a dashboard](https://mammoth.io/docs/learn/share-and-export/share-a-dashboard/#choose-who-can-open-the-dashboard-link).
- **Viewers.** Invite the people who will view the board, so you can assign them values.

## Turn on row-level security

1. In the Share panel, open **Advanced: row-level security, viewer Q&A**. When RLS is on, this row reads **Row-level security on**.
2. Turn on **Row-level security** ("Each viewer sees only the rows matching their assigned value").
3. In **Filter column**, choose the column to filter on ("Select a column…"). Each option shows how many values it has. Until you pick one, the panel reads "Row-level security is not active yet" and asks you to choose a filter column to turn it on.
4. Check the column's **Distinct values**. A coverage line shows how many viewers are scoped, have all-access, or are unassigned, for example **5** scoped · **1** all-access · **3** unassigned.

The column must exist in every View the dashboard reads. If it doesn't, you see: 'Column "Region" not found in: Q3 orders. RLS requires the filter column to exist in all source Views.'

## Assign values to each viewer

1. In **Viewers**, click **Manage**. Each viewer row has a values chip that reads **Not assigned** or lists their values.
2. Click the chip to open **Assign values**. The panel shows the filter column ("Filter: Region", for example).
3. Use **Search values…** and tick the values this viewer may see. Or choose **Grant access to all values** ("This viewer will see the complete dataset").
4. Click **Save**.

You must pick at least one value: with nothing chosen, the panel warns "Select at least one value before sharing". **Remove rule** keeps the viewer's access, but they see no rows ("Keeps access, sees no rows").

### Example: one region per manager

To give each regional manager their own region:

1. Set **Filter column** to Region.
2. Assign "North" to the North manager and "South" to the South manager.
3. Give the head of sales **Grant access to all values**.

## What unassigned viewers see

A viewer with no values sees no data. The panel warns, for example, "3 viewers have no assigned values (will see no data)". On the board, that viewer sees "No data available for your account."

While RLS is on, readers don't see the Explore page ("Readers don't see the Explore page while it's on"). Signed-in viewers see a note in their account menu: "You see only the rows shared with you. Other people may see different numbers." Two viewers can see different totals on the same board. That's expected.

## Preview the dashboard as a viewer

When RLS is on, a band above the editor canvas reads "Row-level security · filtering on Region".

1. Click **Viewing as**. A menu opens with **All data (creator view)** and each value of the column.
2. Pick a value to see the board as a viewer with that value. The band then reads, for example, "Previewing as West · 1,240 of 5,000 rows visible".
3. Click **Switch viewer** to pick another value.

## Where else row-level security applies

| Feature | How RLS applies |
| --- | --- |
| Chart actions (drill down, **See the rows**) | Both respect each viewer's rows. See [What viewers see](https://mammoth.io/docs/learn/share-and-export/what-viewers-see/#click-a-chart-to-filter-drill-down-or-see-the-rows) |
| [Email updates](https://mammoth.io/docs/learn/share-and-export/email-updates/) | Each person gets only their own numbers ("Each person gets the numbers they're allowed to see.") |
| Embeds | The **Advanced** embed option (a token per viewer) can carry row-level security. See [Embedding](https://mammoth.io/docs/build/embedding/) |
| Explore page | Hidden from readers while RLS is on |

## Turn row-level security off

Turn off the **Row-level security** toggle. Mammoth confirms: "Disabling RLS will remove data filtering for all viewers. Assignments will be preserved and restored if you re-enable. Continue?"

Changing **Access** away from **Sign-in required** also turns RLS off, after the confirm "Switching away from authenticated sharing will disable Row-Level Security. Continue?"

## Troubleshooting

| Symptom or message | Cause | Fix |
| --- | --- | --- |
| "RLS requires authenticated sharing mode" | Access is a link or password link | Set **Access** to **Sign-in required** |
| "Row-Level Security isn't included in your plan…" | Your plan isn't **Pro** | Upgrade to give each viewer their own slice |
| 'Column "Region" not found in: Q3 orders…' | A source View lacks the filter column | Add the column to that View, or pick a column every View has |
| A viewer sees "No data available for your account." | They have no assigned values, or **Remove rule** was used | Assign them at least one value |
| "Select at least one value before sharing" | No value ticked in **Assign values** | Tick a value or choose **Grant access to all values** |

## Related

- [Publish and share a dashboard](https://mammoth.io/docs/learn/share-and-export/share-a-dashboard/): access options and inviting viewers.
- [What viewers see](https://mammoth.io/docs/learn/share-and-export/what-viewers-see/): the board from a viewer's side, including the RLS note.
- [Email updates](https://mammoth.io/docs/learn/share-and-export/email-updates/): per-viewer numbers in update emails.
- [Explore and Q&A pages](https://mammoth.io/docs/learn/dashboards/explore-and-qa/): what readers lose while RLS is on.
- [Billing and plans](https://mammoth.io/docs/learn/workspace/billing-and-plans/): which plan you're on.

---
Source: https://mammoth.io/docs/learn/share-and-export/row-level-security.md · Updated: 2026-11-08
