---
title: Plans and what is gated
description: No publish quota and no access gate tied to a plan. What a paid plan buys, how the two seat kinds are counted, and what a lapsed plan does to a live dashboard.
updated: 2026-09-22
---

Start with what is **not** gated, because it is the opposite of what people
expect from a BI tool:

- **There is no publish quota.** Publish as many dashboards as you like on a free
  plan.
- **Access is not plan-gated.** Every dashboard is access-gated to the members of
  its workspace, on every plan. It is not a paid feature.
- **Sharing, version history, folders, workspaces and the URL are not gated.**

A free account can publish, share with its audience, version and organize an
unlimited number of dashboards.

## Seats

**A plan is counted in two kinds of seat, and every member of a workspace holds
one of them.**

- A **creator** builds dashboards and connects data. The Admin and Creator roles
  both hold a creator seat.
- A **viewer** reads the dashboards shared with them and builds nothing.

Both are billable on the paid plans, and a viewer seat costs less than a creator
seat on every plan. The free plan includes one seat of each kind. Current prices
are on [the pricing page](https://dashies.ai/pricing) and are not repeated here,
because a price written in two places is a price that will be wrong in one of them.

Which role holds which seat is the database's own split rather than a billing
simplification: `admin` and `member` are the creator roles, and `viewer` is the
third role in the same enum. The app labels `member` **Creator**, after the seat
it spends, so the role you pick in the invite dialog and the seat you are billed
for carry the same word.

## What is gated

Five things, and they are all downstream of one idea: **building a dashboard on
your own data, and keeping it current, is the paid product.**

| Gated | What happens without a paid plan |
|---|---|
| Creating a warehouse connection | refused when you try to create it |
| Uploading a CSV or Excel file | refused, with `A paid plan is required to upload a file. Uploaded files are available on paid plans and during a trial.` |
| Setting any cadence other than manual | refused, with "a paid plan is required to schedule automatic refresh" |
| Refreshing on demand | refused, with the message below |
| Alerts, on both email and Slack | not sent, and Slack cannot be connected |

**The upload row is the reason that idea is stated as "your own data" rather than
as "your own warehouse".** An uploaded file is neither a warehouse nor a
schedule, and it is gated exactly as a warehouse connection is, on the same
`(paid or trialing)` reading of the workspace's plan: the two are the same act,
which is putting your own numbers into Dashies. Creating an upload also needs a
**creator seat**, which is a different question from the plan and is refused with
its own sentence. See
[Build a dashboard from a file](/guides/upload-a-file).

A sixth thing is decided by the plan and is deliberately NOT in that table, because it
refuses nothing. **A dashboard built on the shared Dashies sample data is prepared
differently on a free plan:** it carries its numbers inside the page rather than keeping
them with Dashies, so it publishes and serves on every plan and there is no upgrade prompt
anywhere in it. What a trial or a paid plan adds is the other preparation, which is what
[the mode ladder](/concepts/dataset-modes) calls the choice only sample data has. It is
listed here rather than above because a reader scanning that table for "what will refuse
me" should not find it.

The payer is the workspace the dashboard lives in, so the refusal names it and
the one role that can act on its plan:

> Refreshing on demand requires a paid plan on this workspace. Only a workspace
> admin can change the plan.

That message means the plan has to go on **this** workspace. A plan on another
workspace you belong to does not reach it, and there is no plan of your own to upgrade. This
is the same rule as
[the effective tier](#the-effective-tier) below, stated by the message itself.

Setting a schedule **back** to manual is always allowed, on any plan. You are
never locked out of turning something off.

A plan that is **trialing** counts as paid, so a trial exercises the whole
product.

## The effective tier

**The plan that applies is the plan of the place you are working in.** There is
one rule and it has two arms, picked by where the dashboard or connection lives:

- **Inside a workspace**, the workspace's own subscription decides, while it is
  active or trialing.

There is no second arm. Every dashboard belongs to a workspace and so does every data
connection, so there is nowhere else for work to live, and plans are sold to workspaces rather
than to people.

A subscription that is neither active nor trialing counts as no plan, whichever
arm it sits on.

**Membership does not carry a plan around with you.** Being a member of a paid
workspace entitles you *in that workspace*, and nowhere else: not in another
workspace that has not paid. The reverse holds too, and is the half people are
more often surprised by: a plan on one workspace does not entitle another workspace you
belong to, so a control you can use in one space can be refused in another.

If you need a colleague entitled, put the plan on the workspace they are working
in. Adding them to a paid workspace does not entitle any other workspace they
belong to.

Nothing is charged to a person, so there is no personal subscription for the Plan page to
show. If that page shows a **paid** plan, it is the plan of the workspace you are in. Free is
the one it labels differently, as "On your account", because an unpaid reader has no workspace
plan for it to name.

## Where the check happens, and when

Three separate moments, checking three different people. Treating them as one
thing is the most common misreading.

**Arming a schedule** checks whoever is setting it, once, at the moment they set
it. It is a one-shot check. A dashboard armed while you were paid **keeps its
schedule** after the plan lapses, and hits the run-time gate instead.

**Creating a warehouse connection** checks whoever is creating it, at creation.

**Every scheduled run** checks the plan of the workspace the dashboard lives in,
by the same rule as everything else.

This used to be the sharp edge for teams, and it no longer is. The plan checked
at run time on a workspace dashboard was once the one held by **whoever created
the data source**, so that person's lapse silently stopped a whole team's
dashboards. A workspace can hold its own subscription now, so the workspace is
what is checked and the creator's own plan is not consulted at all. See
[Connections and scope](/concepts/connections-and-scope).

## What a lapsed plan actually does

This is the part worth reading carefully, because the fear is usually worse than
the behaviour.

**Nothing fails, and the only thing that can be removed is stored data you are warned
about first.**

- Your dashboards keep serving, at the same URLs, with their last good numbers.
- **A dashboard that reads a warehouse keeps its data with Dashies rather than inside the
  file, and that stored data can be removed once the plan has ended.** The notice is what
  settles it rather than this page: you are told before anything is removed, the notice
  names the date, and if you have not had that notice nothing has gone. Nothing about the
  dashboard itself is reconfigured or deleted either way: its URL, its schedule and its
  settings all survive, and re-subscribing before that point changes nothing at all.
- A dashboard built on the data Dashies provides is not affected, because on a free plan it
  carries its numbers inside the page rather than keeping them with Dashies.
- The schedule is **preserved**, not cleared.
- Each due run records a **skip**, not a failure. In the run log it reads as a
  lapsed tier; in the web app it renders as a neutral **paused** state with an
  upgrade link, never as a red failure.
- Because it is not a failure, the failure-alert machinery deliberately stays
  quiet. Instead you get **one notice about the lapse**, and one more when
  refresh resumes.
- **On upgrade it just resumes.** No reconfiguration, no republish, no
  re-arming. The next due run refreshes normally.

The one thing to watch for is that a paused dashboard looks completely fine.
Nothing is red, the URL works, the numbers are plausible. They are just older
than they look, which is why the lapse notice exists at all: it was the most
common way to reach "why is my data old" with nothing anywhere reporting a
problem.

Free users receive no failure alert emails, but a failure episode is still
tracked, so upgrading in the middle of an outage alerts on the next failure
rather than swallowing it.

## Failure alerts

On a paid plan, the dashboard owner is alerted after **N consecutive failed
scheduled runs**. The threshold is yours to set in Settings, from 2, 3, or 5;
the default is 3.

What you get is not one message per failed run:

- **one message** when the threshold trips
- **one reminder** per re-alert interval while it stays broken, which is a week
  for anything up to weekly and one cadence period for slower schedules
- **one confirmation** when a run genuinely succeeds again

Alerts can be muted per dashboard from its schedule dialog, by the dashboard's
author or by an admin of the workspace it lives in. Muting leaves the episode
state untouched, so unmuting during an outage does not retroactively fire a
backlog.

A lapsed plan does not trigger these, and a lapsed-then-resumed dashboard does
not count as a recovery. The recovery message waits for a real refresh.

**On a free plan nothing is sent at all.** The outage is still tracked, so
upgrading during one alerts on the next failure rather than swallowing it, but no
message goes out and Slack cannot be connected. That is deliberate: the alerts
are about a schedule, and setting a cadence other than manual is itself one of
the gated rows in [What is gated](#what-is-gated).

### The categories, and which plan sees them

Alerts are grouped into seven categories, each switchable per channel by a
workspace admin under Settings, then **Notifications**:

| Category | Plan |
|---|---|
| Refresh failures | Any paid plan |
| Data source health | Any paid plan |
| Suspended schedules | Any paid plan |
| Billing | Any paid plan |
| Platform incidents | Any paid plan |
| **Workspace security** | **Enterprise only** |
| Row-level security refusals | Any paid plan |

**Workspace security is the one gated above Pro.** It reports admin changes,
member removals, SSO disconnections and released domains, which are the events
only an Enterprise workspace has in the first place. The row is hidden from the
matrix on any other plan.

**The entitlement is checked again when the alert fires**, not only when the
switch is set. A category switched on while a workspace held Enterprise stops
sending the moment that plan lapses, rather than firing on a stored setting.

Everything about what each category covers, who receives it, and how Slack is
connected is on [Alerts, channels and retries](/operate/failure-alerts).

## The badge

No published dashboard carries a Dashies badge today, on any tier. The badge was
only ever added to personal dashboards, and every dashboard is now a workspace
dashboard, which the serve never badges.

## The tiers

Three: **Free**, **Pro**, and **Enterprise**. Both paid plans are priced per
seat in the two kinds above, billed monthly or yearly, and differ in price and
in what they unlock rather than in how they are counted. Enterprise adds SSO
and SAML, SCIM provisioning, domain verification, and **per-viewer row-level
security**: a workspace dashboard there can be published so each viewer is
served only the rows they were granted, rather than every viewer seeing the same
numbers. It is optional per dashboard and declared in that dashboard's own spec.
See [Row-level security](/reference/spec#row-level-security).

Row-level security is the one capability on this page that is gated by TIER
rather than by paid-or-not, so the table above does not carry a row for it: a
Pro workspace is refused it exactly as a free one is.

Current prices are on the [pricing page](https://dashies.ai/pricing), which is
the source rather than this page: a price quoted here would be one more thing to
keep true.

## Next

Back to [Core concepts](/concepts), or on to the
[Quickstart](/start/quickstart-refresh) that needs a paid plan.
