Skip to content
Docs
Data & analytics

Plausible

Let hires read your website analytics in Plausible, on Plausible Cloud or your own server.

Explore 2 actions and their permissionsExact inputs, sign-in scopes, access limits and approval rules.

With Plausible, a hire can:

  • read a site's headline numbers for a period: visitors, visits, pageviews, views per visit, bounce rate and visit duration,
  • break any metric down by page, source, channel, UTM tag, country, device, goal, custom property, or by day, week or month for a trend, with filters and an order.

Hires only read: nothing they do changes anything in Plausible, whichever access you give them.

1. Make a Stats API key in Plausible

Straight there: plausible.io/settings/api-keys, or /settings/api-keys on your own Plausible.

  1. In Plausible, open Account settings → API keys and click New API key.
  2. Choose Stats API, name it Roster and create it. Copy the key: Plausible shows it once.

2. Connect it in Roster

  1. Open Integrations → Tools → Add a tool, search for Plausible and choose it.
  2. Stats API key: paste it.
  3. Plausible address: leave https://plausible.io for Plausible Cloud, or give the address of your own Plausible.
  4. Click Connect.

Roster checks the key when you click Connect. Once it's accepted, the connection shows Connected as Plausible and the address it's at. If it's refused, Roster says what to fix (a mistyped key, a missing permission) and saves nothing.

3. Give hires access

On the hire's Tools tab, click Give access on Plausible:

  • Sites: the site domains it may read, as they're named in Plausible, one per line. Any other site is refused. Leave it empty for every site the key can read.

What hires get back

A breakdown returns at most 50 rows unless the hire asks for up to 200, with a note when there are more. Plausible keeps no personal data about visitors; if a site sends an email address as a custom property, hires see [email] instead.

If something goes wrong

  • "Site not found": check the site's domain as it's named in Plausible, and that the key's team owns it.
  • Too many requests: Plausible allows 600 requests an hour per key; Roster spaces requests out and waits when asked to.

Tools and permissions reference

This reference is built from the same definitions Roster uses to connect Plausible and give hires access. It updates with each release.

Authentication and requested permissions

The account or app you connect sets the outer limit. Each hire's access can narrow it further. Connecting a tool gives it to no hire until you give access on that hire's Tools tab.

API key or access token

In Plausible: Account settings → API keys → New API key → Stats API.

No fixed permission list is declared for this connection. Review the sign-in consent screen, the account's roles, and the service's own documentation before connecting.

Connection fields

Plausible connection fields
FieldWhat to provide
Stats API key
token
Required · sealed secret
In Plausible: Account settings → API keys → New API key → Stats API.
Plausible address
url
Optional
https://plausible.io for Plausible Cloud, or the address of your own Plausible.

Starts with: https://plausible.io.

Per-hire limits

Read-only hires receive only actions that read. Read-and-write access also allows actions that change things, where the connection itself permits them. An empty resource allowlist usually means everything the connected account can reach; each field below explains its meaning.

Plausible per-hire limits
FieldWhat to provide
Sites
sites
Optional
Site domains as they're named in Plausible, one per line. Leave empty for every site the key can read.

Actions

2 actions: 2 only read and 0 change something. A read action may still need approval when your workspace or hire is set to ask. A locked approval requirement always applies.

2 of 2 actions. Open an action for its arguments and full input schema.

site_overviewRead only

A site's headline numbers for a period: unique visitors, visits, pageviews, views per visit, bounce rate and average visit duration.

Approval: Uses your workspace and hire approval settings.

Arguments for site_overview
ArgumentTypeDetails
siteRequiredstringthe site's domain, as named in Plausible
periodOptional"day" | "24h" | "7d" | "28d" | "30d" | "91d" | "month" | "6mo" | "12mo" | "year" | "all"a period ending now (default 30d); or give from and to
fromOptionalstringfirst day, YYYY-MM-DD (with to)
toOptionalstringlast day, YYYY-MM-DD (with from)
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253,
      "description": "the site's domain, as named in Plausible"
    },
    "period": {
      "description": "a period ending now (default 30d); or give from and to",
      "type": "string",
      "enum": [
        "day",
        "24h",
        "7d",
        "28d",
        "30d",
        "91d",
        "month",
        "6mo",
        "12mo",
        "year",
        "all"
      ]
    },
    "from": {
      "description": "first day, YYYY-MM-DD (with to)",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "description": "last day, YYYY-MM-DD (with from)",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "site"
  ]
}
query_statsRead only

Metrics for a site broken down by dimensions (pages, sources, countries, goals, UTM tags, devices, custom properties, or time for a trend), with filters and an order. Example: metrics [visitors, conversion_rate], dimensions [visit:source], filters [{dimension: event:goal, operator: is, values: [Signup]}].

Approval: Uses your workspace and hire approval settings.

Arguments for query_stats
ArgumentTypeDetails
siteRequiredstringthe site's domain, as named in Plausible
metricsRequired"visitors" | "visits" | "pageviews" | "views_per_visit" | "bounce_rate" | "visit_duration" | "events" | "scroll_depth" | "percentage" | "conversion_rate" | "group_conversion_rate" | "average_revenue" | "total_revenue" | "time_on_page"[]See input schema below.
dimensionsOptionalstring[]See input schema below.Default: []
filtersOptionalobject[]See input schema below.Default: []
order_byOptionalobject[]a metric or one of the dimensions; default: the first metric, highest first
periodOptional"day" | "24h" | "7d" | "28d" | "30d" | "91d" | "month" | "6mo" | "12mo" | "year" | "all"a period ending now (default 30d); or give from and to
fromOptionalstringfirst day, YYYY-MM-DD (with to)
toOptionalstringlast day, YYYY-MM-DD (with from)
limitOptionalintegerSee input schema below.Default: 50
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253,
      "description": "the site's domain, as named in Plausible"
    },
    "metrics": {
      "minItems": 1,
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "visitors",
          "visits",
          "pageviews",
          "views_per_visit",
          "bounce_rate",
          "visit_duration",
          "events",
          "scroll_depth",
          "percentage",
          "conversion_rate",
          "group_conversion_rate",
          "average_revenue",
          "total_revenue",
          "time_on_page"
        ]
      }
    },
    "dimensions": {
      "default": [],
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "filters": {
      "default": [],
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "dimension": {
            "type": "string"
          },
          "operator": {
            "type": "string",
            "enum": [
              "is",
              "is_not",
              "contains",
              "contains_not",
              "matches",
              "matches_not"
            ]
          },
          "values": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          }
        },
        "required": [
          "dimension",
          "operator",
          "values"
        ]
      }
    },
    "order_by": {
      "description": "a metric or one of the dimensions; default: the first metric, highest first",
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "by": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "direction": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        "required": [
          "by",
          "direction"
        ]
      }
    },
    "period": {
      "description": "a period ending now (default 30d); or give from and to",
      "type": "string",
      "enum": [
        "day",
        "24h",
        "7d",
        "28d",
        "30d",
        "91d",
        "month",
        "6mo",
        "12mo",
        "year",
        "all"
      ]
    },
    "from": {
      "description": "first day, YYYY-MM-DD (with to)",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "description": "last day, YYYY-MM-DD (with from)",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "required": [
    "site",
    "metrics"
  ]
}

Watches and incoming events

  • No built-in watch is declared. Give a hire a scheduled responsibility if it should check this service regularly.
  • No incoming webhook handler is declared for this integration.

Limits and troubleshooting

  • Permission errors: check both the connected account's rights and the hire's resource and read/write limits.
  • Expired or revoked access: reconnect or replace the key on the connection.
  • Rate limits and unavailable services can interrupt work. The hire's timecard records the outcome.
  • The action schema describes accepted inputs. It does not grant additional access or bypass approvals.

Service documentation · Integration source reference

On this page