diff --git a/docs/account-settings.md b/docs/account-settings.md index 632e08b4..b7d7c97d 100644 --- a/docs/account-settings.md +++ b/docs/account-settings.md @@ -21,6 +21,11 @@ To open your account settings, click your account name in the top-right menu and - [Login management](login-management.md): view and remotely end active sessions - [Reset password](reset-password.md): change your account password +**Guest sites** + +Shown when you've been invited to sites owned by other teams. +- [Leave a site you're a guest on](users-roles.md#leaving-a-site-youre-a-guest-on): see the sites you have guest access to and remove yourself from any of them + **Subscription and API keys** When you're viewing **My personal sites**, your subscription and API keys are managed here. When you've selected a team in the top right menu, they're in [team settings](team-settings.md) instead. diff --git a/docs/authors.md b/docs/authors.md index 7024712e..13d496c0 100644 --- a/docs/authors.md +++ b/docs/authors.md @@ -18,6 +18,7 @@ Plausible is built and run by a small, fully remote team. No office, no outside * Hricha - Content and community * Artur - Product engineer * Sanne - Product designer +* Vini - Product engineer ## Contributors diff --git a/docs/bot-traffic-filtering.md b/docs/bot-traffic-filtering.md index 02138a50..ec8ea899 100644 --- a/docs/bot-traffic-filtering.md +++ b/docs/bot-traffic-filtering.md @@ -26,7 +26,7 @@ This is a tradeoff of aggressive bot filtering. It keeps automated traffic out o ## Why you might still see some bot traffic -No filter is perfect. Bots emerge constantly and there is always a gap between when a new bot appears and when we identify and block it. If you see a sudden spike from an unfamiliar source with a very high bounce rate and near-zero visit duration, it may be bot traffic we haven't classified yet. Check time on page, scroll depth and goal conversions for stronger signals. +No filter is perfect. Bots emerge constantly and there is always a gap between when a new bot appears and when we identify and block it. A visit that shows in your dashboard has already passed these filters: it didn't come from a known data center IP range or match a traffic pattern we exclude. That's why a new kind of automated traffic can be hard to tell apart from real visitors at first. Our filtering is updated continuously as bot traffic evolves, and improvements apply to every site automatically. If you see a sudden spike from an unfamiliar source with a very high bounce rate and near-zero visit duration, it may be bot traffic we haven't classified yet. Check time on page, scroll depth and goal conversions for stronger signals. ## Investigating a suspicious traffic spike diff --git a/docs/custom-event-goals.md b/docs/custom-event-goals.md index 3b078ec3..76ef7451 100644 --- a/docs/custom-event-goals.md +++ b/docs/custom-event-goals.md @@ -15,7 +15,7 @@ Custom events let you measure button clicks, subscription signups or any other a - **Using CSS class names**: add a class to any HTML element you want to track. No JavaScript required. This is the easiest approach for most use cases and is covered in the first section below. - **Using JavaScript**: call the `plausible()` function directly for more advanced tracking needs such as dynamic values, conditional logic or tracking non-click interactions. See the [manual JavaScript approach](#trigger-custom-events-manually-with-a-javascript-function) section. -If you're using WordPress or Google Tag Manager, you can set up custom events with our [WordPress plugin](wordpress-integration.md#track-custom-events-with-css-class-names) or [GTM template](https://plausible.io/gtm-template) without writing code. Plausible also offers automated tracking for [outbound link clicks](outbound-link-click-tracking.md), [file downloads](file-downloads-tracking.md) and [form submissions](form-submissions-tracking.md) straight from your site settings, [pageview goals](pageview-goals.md) for tracking visits to specific pages and [404 error pages](error-pages-tracking-404.md) with a small snippet of code. +If you're using WordPress or Google Tag Manager, you can set up custom events with our [WordPress plugin](wordpress-integration.md#track-custom-events-with-css-class-names) or [GTM template](google-tag-manager-integration.md#create-custom-event-tags) without writing code. Plausible also offers automated tracking for [outbound link clicks](outbound-link-click-tracking.md), [file downloads](file-downloads-tracking.md) and [form submissions](form-submissions-tracking.md) straight from your site settings, [pageview goals](pageview-goals.md) for tracking visits to specific pages and [404 error pages](error-pages-tracking-404.md) with a small snippet of code. +Tag Manager installation tab in Plausible with the site's script ID + + +For a site you've already added, you'll find the same screen in your [site settings](website-settings.md) under **General** > **Site installation** > **Tag Manager**. + +## Install the Plausible template in GTM + +Add the [Plausible Analytics template](https://tagmanager.google.com/gallery/#/owners/plausible/templates/plausible-gtm-template) from the GTM template gallery to your container. + +
+Plausible Analytics template in the Google Tag Manager template gallery +
+ +### Create a new tag + +In your GTM workspace, go to **Tags** and click **New**. + +
+New tag button in Google Tag Manager +
+ +Choose the Plausible Analytics template you just installed. + +
+Choosing the Plausible Analytics tag template +
+ +The tag has a **Type** option with two choices: + +* **Initialization** loads Plausible on your site. You need exactly one tag of this type. +* **Custom Event** sends a custom event to Plausible when a GTM trigger fires. This is optional and you can create as many as you like. + +
+Type option in the Plausible tag with Initialization and Custom Event +
+ +## Set up the initialization tag + +Create a tag with the type **Initialization** and paste your script ID into the **Script ID** field. + +Under **Triggering**, choose **All Pages** (Page View) so Plausible loads on every page. + +That's all a basic installation needs. Save the tag, then [test](#test-your-setup) and [publish](#publish-your-container) your container. + +### Optional measurements + +The initialization tag also has options for enhanced measurements. Some are ticked by default. Untick the ones you don't need and tick the ones you want. + +
+Optional settings in the Plausible initialization tag +
+ +| Option | What it does | +| --- | --- | +| **File Downloads** | Automatically [tracks file downloads](file-downloads-tracking.md) | +| **Form Submissions** | Automatically [tracks form submissions](form-submissions-tracking.md) | +| **Outbound Links** | Automatically [tracks clicks on outbound links](outbound-link-click-tracking.md) | +| **Hash Based Routing** | Tracks page paths that use a `#` in the URL. See [hash-based routing](hash-based-routing.md) | +| **404 Tracking** | Tracks [404 error pages](error-pages-tracking-404.md). Tick the box and enter the title of your site's 404 page | +| **Custom Props** | Attaches [custom properties](custom-props/introduction.md) to pageviews. See [Add custom properties](#add-custom-properties) | +| **Capture on Localhost** | Records events on localhost | +| **Logging** | Logs ignored events to the browser console with a warning | +| **Auto Capture Pageviews** | Sends pageviews automatically. If you untick it, the script loads but sends no pageviews until you send them yourself with another tag, for example one with a **Page View** trigger | +| **Custom File Download Types** | Replaces the default file extensions for file download tracking, so only the types you list are tracked | + +## Create custom event tags + +Custom event tags send a [custom event](custom-event-goals.md) to Plausible whenever a GTM trigger fires. Add the event as a custom event goal in your site settings first so it shows in your dashboard. + +Create a tag with the type **Custom Event** and enter the **Event Name**. It must match the goal name in Plausible. You can also set it from a GTM variable with the icon next to the field. + +Then choose a trigger. Two useful ones are **Click - All Elements**, which fires on any click on your site, and **Click - Just Links**, which fires on link clicks. You'll find them under **Triggers** > **New** > **Trigger Configuration**. + +For example, to send an event called "Login Click" whenever someone clicks a button with the text "Login", the tag looks like this: + +
+Plausible custom event tag for a Login Click event +
+ +And the trigger, using **Click - All Elements**, like this: + +
+Click trigger that fires when the clicked text is Login +
+ +### Send revenue with a custom event + +To attach revenue to an event, tick **Revenue Tracking** in the custom event tag and enter the currency and amount. For an amount of $10.29 it looks like this: + +
+Revenue Tracking settings in a Plausible custom event tag +
+ +The goal needs revenue tracking turned on in Plausible. See [ecommerce revenue tracking](ecommerce-revenue-tracking.md) for the details. + +## Reuse events from your data layer + +If your site already sends events to Google Analytics 4 through GTM, you don't need to change anything on your site. Those events are already in the data layer and the Plausible tag can listen for them too. + +This works for any event your site pushes, such as `sign_up`, `generate_lead`, `add_to_cart`, `begin_checkout` or `purchase`. For each one you want in Plausible: + +1. **Create the goal.** In your [site settings](website-settings.md) add a custom event goal, for example "Add to Cart". +2. **Create the trigger.** In GTM go to **Triggers** > **New** > **Custom Event** and enter the data layer event name, for example `add_to_cart`. It needs to match exactly what your site pushes. +3. **Create the tag.** Add a new Plausible Analytics tag, choose **Custom Event** and enter the goal name from step 1. Select the trigger from step 2 and save. + +To send extra details with the event, such as a product category or a form name, create a Data Layer Variable for that field and add it as a [custom property](#add-custom-properties). + +Signups and lead forms are often covered by the **Form Submissions** option without any extra setup, so check that before recreating them from the data layer. + +### Example: purchases with revenue + +GA4 ecommerce setups push a `purchase` event that includes the order value and currency, so you can send revenue to Plausible as well: + +1. In Plausible, add a custom event goal called "Purchase", turn on revenue tracking and choose your base currency. +2. In GTM go to **Variables** > **New** > **Data Layer Variable**. Create one with the name `ecommerce.value` and another one with `ecommerce.currency`. Leave the Data Layer Version on Version 2. +3. Create a **Custom Event** trigger for `purchase`. +4. Create a Plausible Analytics **Custom Event** tag called "Purchase" with that trigger. Tick **Revenue Tracking**, click the icon next to **Currency** and pick your currency variable, then do the same next to **Amount** with your value variable. + +To test it, place a test order in Preview mode and check in Tag Assistant that the Plausible tag fired with the amount and currency filled in. + +## Add custom properties + +Both tag types can send [custom properties](custom-props/introduction.md). On the initialization tag they're attached to pageviews. On a custom event tag they're attached to that event. The setup is the same for both. + +For example, to send the full URL of every page as a property, click **Add Custom Property** in the initialization tag. Enter a **Custom Property Name**, such as `page_url`. Click the icon next to **Custom Property Value** and choose the built-in **Page URL** variable. The field then shows `{{Page URL}}`. + +
+Custom property page_url set to the Page URL variable +
+ +If you know the name of a GTM variable, you can also type it straight into the field. + +You can use your own variables too. To send the page title, create a new variable with the plus icon, name it "Page Title" and choose **JavaScript Variable** as the type. + +
+Choosing JavaScript Variable as the variable type in GTM +
+ +Under **Global Variable Name**, enter `document.title`. + +
+JavaScript Variable configured with document.title +
+ +Then add it as a custom property, for example as `page_title`. With both properties set up, the configuration looks like this: + +
+Plausible tag with page_url and page_title custom properties +
+ +## Test your setup + +1. Click **Preview** in your GTM workspace. +2. Your site opens in a new tab with the GTM container active. +3. In the Tag Assistant panel, check that the Plausible tag fires. You can see which events triggered it and what data was sent. + +If the tag fires and the visit shows in your Plausible dashboard, your setup works. + +## Publish your container + +Preview mode only runs in your own browser session. To start tracking real visitors, publish the container: + +1. Click **Submit** in the top-right corner of your GTM workspace. +2. Add a version name and description if you like. It helps you keep track of changes. +3. Click **Publish**. + +Until you publish, no data is collected from visitors to your site. + +## Troubleshooting + +### No stats after setting up + +Make sure the container is published, not only saved, and that the initialization tag uses the **All Pages** trigger. Then check that the script ID matches the one in your Plausible site settings. For other causes, see [troubleshoot your integration](troubleshoot-integration.md). + +### Custom events not firing + +Use GTM's **Preview** mode to confirm the tag fires. Check that the trigger conditions match the actual interaction, that the event name matches your goal in Plausible exactly, and that the container is published. See [custom events troubleshooting](custom-event-goals.md#custom-event-not-showing-up) for more. + +## What's next? + +* [Get the most out of Plausible](your-plausible-experience.md) +* [Connect Google Search Console](google-search-console-integration.md) to see the search terms bringing you traffic +* Build custom reports with the [Data Studio connector](looker-studio.md) diff --git a/docs/guided-tour.md b/docs/guided-tour.md index 0c5522c4..a1370a82 100644 --- a/docs/guided-tour.md +++ b/docs/guided-tour.md @@ -12,7 +12,7 @@ Here’s what you can discover on your Plausible dashboard. You can also explore ## Top Graph
- Plausible Analytics overview graph with visitors, visits, pageviews, views per visit, bounce rate and visit duration + Plausible Analytics overview graph with visitors, visits, pageviews, views per visit, bounce rate and visit duration
See the number of unique visitors, total visits (sessions), total page views, views per visit, the bounce rate (the percentage of sessions that had one page view only) and the visit duration. You can **click on a particular metric to display it in the top graph**. @@ -32,7 +32,7 @@ You can also **add annotations** to the chart to mark important events like a de You can **set a different unit of time the stats on the chart are grouped by** in the options menu (the **⋮** icon in the top right of the chart). Open the menu and choose an option under **Graph interval**. The available interval options depend on the date range you've selected. For example, if you select "Today", you can display the stats by minute or by hour.
- Plausible graph interval menu showing minute and hour groupings for a single day + Plausible graph interval menu showing minute and hour groupings for a single day
Or if you select "Last 28 days", you can display the stats by day or by week. You can display the stats by days, weeks or months if you choose a wider timeframe. @@ -70,7 +70,7 @@ See all the acquisition channels and sources of traffic ranked by the number of You can use the **Campaigns** tab to view your campaigns separately from other traffic sources. These are visitors coming from UTM tagged links such as those in your emails, social media or in your paid advertising campaigns. Click on **Medium**, **Source**, **Campaign**, **Term** and **Content** to explore these. :::tip Referral sources are counted per session -UTM parameters and other referral sources are only recorded when they start a new session. [Read more about how sources are counted](top-referrers.md). If your UTM link returns a 202 response but nothing appears in the **Campaigns** tab, see [UTM parameters not appearing in Campaigns](troubleshoot-integration.md#utm-parameters-not-appearing-in-campaigns). +UTM parameters and other referral sources are only recorded when they start a new session. [Read more about how sources are counted](top-referrers.md). If your UTM link returns a 202 response but nothing appears in the **Campaigns** tab, see [UTM parameters not appearing in Campaigns](top-referrers.md#utm-parameters-not-appearing-in-campaigns). ::: [Read more here](top-referrers.md). @@ -91,8 +91,8 @@ You can see the device, browser and operating system your visitors are using. Cl ## Goals, properties, funnels and journeys -
- Goal conversions section in the Plausible Analytics dashboard showing conversion counts and conversion rate by goal +
+Goal conversions section in the Plausible Analytics dashboard showing conversion counts and conversion rate by goal
You can track goal conversions to see which pages and referral sources drive signups, purchases, downloads and other actions. Revenue tracking, funnel analysis, form completions, file downloads and more are all available. diff --git a/docs/integration-guides.md b/docs/integration-guides.md index 84ccefc5..5472ff2a 100644 --- a/docs/integration-guides.md +++ b/docs/integration-guides.md @@ -31,7 +31,7 @@ The [official WordPress plugin](wordpress-integration.md) handles installation, ### Google Tag Manager template -The [official GTM template](https://plausible.io/gtm-template) is available in the Google Tag Manager community gallery. Install Plausible and configure event tracking from the GTM dashboard with no code changes, including reusing events you already send to GA4. Works well for agencies managing multiple sites from a single GTM account. +The [official GTM template](google-tag-manager-integration.md) is available in the Google Tag Manager community gallery. Install Plausible and configure event tracking from the GTM dashboard with no code changes, including reusing events you already send to GA4. Works well for agencies managing multiple sites from a single GTM account. ### Data Studio connector @@ -163,7 +163,7 @@ Step-by-step guides for popular website builders and content management systems. | [Google AMP Pages](https://github.com/plausible/analytics/discussions/220#discussioncomment-904022) | Declare an AMP-analytics object on your AMP pages to track with Plausible | | [Google Chrome extensions](https://gist.github.com/Joelkw/31b798f69c714c00e9e097b1fd4bb3c8) | Instructions for tracking Chrome browser extensions with Plausible | | [DNT and offline](https://github.com/ian/analytics/tree/main/packages/plausible) | Add Do Not Track and offline functionality via the analytics library | -| [Segment](https://www.twilio.com/docs/segment/connections/destinations/catalog/google-tag-manager) | No official integration, but you can connect it through our [Google Tag Manager template](https://plausible.io/gtm-template) | +| [Segment](https://www.twilio.com/docs/segment/connections/destinations/catalog/google-tag-manager) | No official integration, but you can connect it through our [Google Tag Manager template](google-tag-manager-integration.md) | | [Stripe, Paddle, Lemon Squeezy and Polar](ecommerce-revenue-tracking.md#track-payments-from-stripe-paddle-lemon-squeezy-and-polar) | Send revenue from hosted and overlay checkouts to Plausible | ### Monitoring and automation diff --git a/docs/introduction.md b/docs/introduction.md index bb5417b2..21b6a3b0 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -26,7 +26,7 @@ import CtaBox from '@site/src/components/CtaBox';
  • Add your website
  • Add the script to your site
  • WordPress: install via plugin
  • -
  • Google Tag Manager: deploy without touching your code
  • +
  • Google Tag Manager: deploy without touching your code
  • NPM package: bundle the tracker into your JavaScript app
  • All installation guides: Shopify, Webflow, Squarespace, Wix, Next.js, Ghost, Hugo and more
  • Verify the integration is working
  • diff --git a/docs/metrics-definitions.md b/docs/metrics-definitions.md index 4c3f64f2..65094208 100644 --- a/docs/metrics-definitions.md +++ b/docs/metrics-definitions.md @@ -136,11 +136,11 @@ The percentage of visitors that take a desired action such as subscribing to a n ### Unique Conversions -When a visitor converts for a particular goal they'll be counted as a unique conversion. +When a visitor converts for a particular goal they'll be counted as a unique conversion. In the Goals report this is the **Uniques** column. When you open a goal's breakdown, such as the file URLs under File Downloads, it's the **Visitors** column. ### Total Conversions -If the same goal is completed multiple times by the same visitor, all the completed conversions will be counted within the total conversions. +If the same goal is completed multiple times by the same visitor, all the completed conversions will be counted within the total conversions. In the Goals report this is the **Total** column. In a goal's breakdown it's the **Events** column. ### Funnels diff --git a/docs/outbound-link-click-tracking.md b/docs/outbound-link-click-tracking.md index 1909f914..4dfb3816 100644 --- a/docs/outbound-link-click-tracking.md +++ b/docs/outbound-link-click-tracking.md @@ -40,8 +40,8 @@ The NPM package doesn't read your site settings. Set `outboundLinks: true` in `i Click on **Outbound Link: Click** goal in the **Goals** tab of your Plausible dashboard to see the full list of all clicks on all external links and have your dashboard filtered by external clicks only. You can see: -* The number of total external link clicks -* The number of unique external link clicks +* The number of total external link clicks (the **Events** column), including repeat clicks by the same visitor +* The number of unique external link clicks (the **Visitors** column), counting each visitor once * The conversion rate * Top referral sources that lead to clicks * Top pages that drive the clicks diff --git a/docs/pageview-goals.md b/docs/pageview-goals.md index d9478817..3519740e 100644 --- a/docs/pageview-goals.md +++ b/docs/pageview-goals.md @@ -38,7 +38,7 @@ Then click the **Add goal** button and you’ll be taken back to the goals page. ## How to group your pages -Do you want to analyze the total traffic to specific sections of your site or to group your dynamically created pages? You can use an asterisk (`*`) to match patterns in your page path URLs. Asterisks can be placed on either end or in the middle of any page path URL. +Do you want to analyze the total traffic to specific sections of your site or to group your dynamically created pages? You can use an asterisk (`*`) to match patterns in your page path URLs. Asterisks can be placed on either end or in the middle of any page path URL. An asterisk stands for any part of the path, slashes included, so `/*products/*` matches `/products/shoes` as well as `/fr/products/shoes`. You can for instance group all of your blog posts by creating a pageview goal `/blog*` (if your blog subdirectory is named `blog`) or track Woocommerce checkout pages for your ecommerce by creating a pageview goal `/checkout/order-received/*`. diff --git a/docs/plausible-script.md b/docs/plausible-script.md index 25bb836c..430884c8 100644 --- a/docs/plausible-script.md +++ b/docs/plausible-script.md @@ -35,7 +35,7 @@ Installing Plausible on a site can be a slightly different process depending on - Are you using WordPress? Use our [official plugin](wordpress-integration.md) instead of adding the snippet manually. It excludes your own visits by default, lets you see the stats directly in your WordPress dashboard and avoids conflicts with WP Rocket and similar caching plugins. -- Are you using Google Tag Manager? We have a guide on [how to integrate Plausible with our GTM template](https://plausible.io/gtm-template) +- Are you using Google Tag Manager? We have a guide on [how to integrate Plausible with our GTM template](google-tag-manager-integration.md) - Are you using NPM? We have an NPM library: [@plausible-analytics/tracker](npm-package.md). It bundles the tracker into your own code, so the script on your site only changes when you update the package diff --git a/docs/register-account.md b/docs/register-account.md index 89e11638..23ca2f06 100644 --- a/docs/register-account.md +++ b/docs/register-account.md @@ -34,7 +34,7 @@ Once verified, your 30-day trial starts immediately. [Register your account →] After verification, [add your website](add-website.md). Plausible then offers to [set up a team](users-roles.md#creating-a-new-team) so you can invite colleagues or clients. You can skip any of these steps and come back to them later. Then use the guide for your setup: - [WordPress: install and connect the official plugin](wordpress-integration.md) -- [Google Tag Manager: use the official template](https://plausible.io/gtm-template) +- [Google Tag Manager: use the official template](google-tag-manager-integration.md) - [Other platforms and installation methods](integration-guides.md) Finish by checking that your site is receiving traffic. Creating an account alone does not start collecting visits. diff --git a/docs/script-update-guide.md b/docs/script-update-guide.md index 9802bbbf..2dde1709 100644 --- a/docs/script-update-guide.md +++ b/docs/script-update-guide.md @@ -106,7 +106,7 @@ plausible.init({ If you were already using these features, no additional steps are required. See: - [Custom events](/custom-event-goals) -- [Ecommerce revenue and attribution tracking](docs/ecommerce-revenue-tracking.md) +- [Ecommerce revenue and attribution tracking](ecommerce-revenue-tracking.md) ### 10. Removed: `data-exclude` and `data-include` @@ -118,4 +118,4 @@ The new script no longer supports sending stats to multiple dashboards simultane ## Google tag manager {#gtm} -If you previously installed Plausible through Google Tag Manager, remove the old tag and reinstall it [using tag manager gallery](https://plausible.io/gtm-template) instructions. +If you previously installed Plausible through Google Tag Manager, remove the old tag and reinstall it [using tag manager gallery](google-tag-manager-integration.md) instructions. diff --git a/docs/scroll-depth.md b/docs/scroll-depth.md index 417b2b33..82e780e0 100644 --- a/docs/scroll-depth.md +++ b/docs/scroll-depth.md @@ -47,7 +47,7 @@ When creating a scroll depth goal, you can optionally narrow it down using custo Add goal form with a 90% scroll threshold for /blog/remove-google-analytics and an optional custom property
    -Do you want to analyze the scroll depth for a specific section of your site? You can use an asterisk (`*`) to match patterns in your page path URLs. Asterisks can be placed on either end or in the middle of any page path URL. +Do you want to analyze the scroll depth for a specific section of your site? You can use an asterisk (`*`) to match patterns in your page path URLs. Asterisks can be placed on either end or in the middle of any page path URL. An asterisk stands for any part of the path, slashes included, so `/*blog/*` matches `/blog/my-post` as well as `/fr/blog/my-post`. You can for instance group all of your blog posts by using `/blog*` (if your blog subdirectory is named `blog`) or your Woocommerce checkout pages by using `/checkout/order-received/*`. diff --git a/docs/sso.md b/docs/sso.md index 4df29d16..67dac313 100644 --- a/docs/sso.md +++ b/docs/sso.md @@ -88,6 +88,8 @@ When setting up SAML SSO for any other identity provider, please keep the follow - The `NameID` attribute must be a persistent and unique value that **does not change** between user sessions. This value identifies the user. This is the default for most identity provider services. For self-hosted IdP instances, you have to ensure it's configured properly. - **ACS URL / Single Sign-On URL / Reply URL**: Enter the URL you have obtained in the previous stage. This URL is unique to your workspace and is an entry point for accepting identity information obtained from identity provider. Some identity providers also call it **Consumer URL**. - **Entity ID / Issuer / Identifier**: Enter the ID you have obtained in the previous stage. This is a unique value identifying your team. Some identity providers also call it **Audience** or **SP Entity ID** +- **Service provider metadata**: Plausible doesn't publish a metadata URL or XML file. Enter the ACS URL and Entity ID above by hand. +- **Relay State**: Leave it empty. Plausible sets the relay state itself for each login, since logins always start from Plausible's login form. - **Attributes**: Some identity providers also expose them under **Attributes & Claims** or **Attributes Statements**. Make sure you have created and properly mapped following attributes in your identity provider: - `email` - at least one of `first_name` or `last_name` diff --git a/docs/top-referrers.md b/docs/top-referrers.md index 0afbacac..73f50693 100644 --- a/docs/top-referrers.md +++ b/docs/top-referrers.md @@ -67,7 +67,7 @@ With Plausible, there's no need for you to manually exclude unwanted referral so Referral sources are counted only when they start a new visit on your site. A visit continues as long as there are fewer than 30 minutes between a visitor's events. When visitors briefly leave to pay on an external gateway and come back, the gateway doesn't show up as a source, and the original source keeps the credit. If a visitor spends more than 30 minutes on the payment page, their return starts a new visit. -If you expect UTM attribution but nothing appears in the **Campaigns** tab, see [UTM parameters not appearing in Campaigns](troubleshoot-integration.md#utm-parameters-not-appearing-in-campaigns). +If you expect UTM attribution but nothing appears in the **Campaigns** tab, see [UTM parameters not appearing in Campaigns](#utm-parameters-not-appearing-in-campaigns). ### Consolidation of duplicate sources @@ -129,6 +129,21 @@ Due to Plausible’s privacy-first approach, which avoids using cookies or long- Plausible Analytics referral sources report filtered by a custom goal showing conversion rate per traffic source +### UTM parameters not appearing in Campaigns + + +UTM parameters are only attributed to the first pageview of a new session. If a visitor already has an active session on your site, pageviews with UTM parameters will not update the attribution. A session stays active for 30 minutes after the last pageview. + +Common causes during testing: + +- You visited the site earlier in the same browser, even without UTM parameters +- Another device on the same network visited the site recently +- You tested multiple UTM links without waiting 30 minutes between each + +If your campaign link points to a URL that redirects, for example to another subdomain, the redirect must keep the query string. If it drops it, the UTM parameters never reach the page where Plausible runs. The visit is then attributed to its referrer, or shows as **Direct / None** when there's no referrer. + +To test UTM attribution reliably, use a device and network combination that has not visited your site in the past 30 minutes. Mobile data on a phone that hasn't visited the site recently is the most reliable option. Check the **Campaigns** tab after the visit to confirm attribution. + ## How to reduce the volume of dark traffic Not all traffic to your website will have the referrer header specified in the browser. This "dark traffic" is why you see the "Direct / None" source in the **Sources** tab. These are typically clicks from emails, documents, instant messengers, mobile apps or bookmarks. diff --git a/docs/troubleshoot-integration.md b/docs/troubleshoot-integration.md index db58ff9b..90cfac03 100644 --- a/docs/troubleshoot-integration.md +++ b/docs/troubleshoot-integration.md @@ -34,14 +34,6 @@ description: "Troubleshoot your Plausible Analytics installation. Diagnose why v "text": "The most common causes are a stale cache after a snippet or plugin update, a performance optimization plugin altering the script, or a consent banner blocking the script from loading. Clear your cache and check your browser's developer tools Console and Network tabs for errors." } }, - { - "@type": "Question", - "name": "Why are UTM parameters not appearing in the Campaigns tab?", - "acceptedAnswer": { - "@type": "Answer", - "text": "UTM parameters are only attributed to the first pageview of a new session. If a visitor already has an active session on your site, UTM parameters will not update the attribution. A session stays active for 30 minutes after the last pageview." - } - }, { "@type": "Question", "name": "Why are some visitors not being counted?", @@ -50,14 +42,6 @@ description: "Troubleshoot your Plausible Analytics installation. Diagnose why v "text": "Some visitors use browser extensions, privacy-focused browsers, network-level blockers such as Pi-hole, or corporate firewalls that block analytics scripts. You can accept this as a small share of traffic or set up a proxy to serve the Plausible script as a first-party request from your own domain." } }, - { - "@type": "Question", - "name": "Why are Events API events not appearing in the dashboard?", - "acceptedAnswer": { - "@type": "Answer", - "text": "Plausible can return HTTP 202 Accepted even when an event is not recorded. Check the response headers for x-plausible-dropped: 1. Bot filtering and site exclusion rules can cause events to be dropped. The most common cause is a misconfigured X-Forwarded-For header forwarding a server IP instead of the real visitor IP." - } - }, { "@type": "Question", "name": "Why are my Plausible numbers lower than Google Analytics?", @@ -65,14 +49,6 @@ description: "Troubleshoot your Plausible Analytics installation. Diagnose why v "@type": "Answer", "text": "Plausible and Google Analytics measure differently by design. Plausible counts unique visitors by IP and user agent without cookies, applies aggressive bot filtering, and is not affected by cookie consent losses. A 10-20% difference is normal. Larger gaps usually reflect GA4 counting bot traffic or consent-bypassed sessions that Plausible correctly excludes." } - }, - { - "@type": "Question", - "name": "Why is the WordPress plugin proxy not recording stats?", - "acceptedAnswer": { - "@type": "Answer", - "text": "After enabling or changing the proxy, you must clear all caches. The correct sequence is: disable the proxy, clear all caches, re-enable the proxy, clear all caches again. If you recently migrated or cloned your WordPress site, the proxy file path may be stale or still point to your old server. The same reset sequence will regenerate it." - } } ] } @@ -119,13 +95,13 @@ Find your symptom and jump straight to the right section: - **[Installation check is still running or shows an error](#no-data-recorded-yet)**: site unreachable, snippet not loading, cache issue or incorrect URL - **[Tracking was working, then it stopped](#tracking-stopped-working)**: cache, plugin update or script change -- **[WordPress plugin issues](#wordpress-plugin-issues)**: admin exclusion, proxy not working, cache conflict or invalid/unresponsive token link +- **[WordPress plugin issues](wordpress-integration.md#troubleshooting)**: admin exclusion, proxy not working, cache conflict or invalid/unresponsive token link - **[My own visits are not showing](#my-own-visits-are-not-showing)**: ad blocker, VPN or WordPress admin exclusion - **[Some visitors are not being counted](#some-visitors-are-not-being-counted)**: browser extensions or network-level blockers - **[Numbers seem lower than expected](#numbers-seem-lower-than-expected)**: methodology differences, bot filtering or blockers -- **[UTM parameters not appearing in Campaigns](#utm-parameters-not-appearing-in-campaigns)**: active session when UTM link was visited -- **[Referral source is missing](#referral-source-is-missing)**: session attribution logic -- **[Events API events not appearing](#events-api-events-not-appearing)**: bot filtering or misconfigured IP forwarding +- **[UTM parameters not appearing in Campaigns](top-referrers.md#utm-parameters-not-appearing-in-campaigns)**: active session when UTM link was visited +- **[Referral source is missing](top-referrers.md#no-need-to-manually-exclude-unwanted-sources)**: session attribution logic +- **[Events API events not appearing](events-api.md#debugging)**: bot filtering or misconfigured IP forwarding --- @@ -135,19 +111,19 @@ Find your symptom and jump straight to the right section: We've put together [many integration guides](integration-guides.md) covering WordPress, Ghost and other popular platforms. Check that the snippet is in the `` of every page you want to track. -### Have you cleared your cache? +### Have you cleared your cache? {#have-you-cleared-the-cache-of-your-site} If you use caching, visitors may still see an older version of your site without the snippet. Purge your cache after adding or changing the snippet. ### Are you using Google Tag Manager? -Follow [our GTM guide](https://plausible.io/gtm-template) for the correct setup using our official template. +Follow [our GTM guide](google-tag-manager-integration.md) for the correct setup using our official template. It has its own [troubleshooting section](google-tag-manager-integration.md#troubleshooting). ### Are you using the NPM package? The NPM package doesn't read your site settings. Outbound links, file downloads and form submissions only work once you turn them on in `init`. `init` also has to run in the browser, not during server-side rendering. [See the NPM package guide](npm-package.md). -### Does your site use a Content Security Policy? +### Does your site use a Content Security Policy? {#does-your-site-use-a-content-security-policy-csp} If it does, add `plausible.io` to the allowed domains list. [More details here](https://github.com/plausible/docs/issues/20). @@ -193,52 +169,15 @@ Plausible is privacy-first and compliant with GDPR and ePrivacy regulations. You ## WordPress plugin issues -These cover the most common plugin problems. For full setup and every plugin setting, see [Adding Plausible to WordPress](wordpress-integration.md). - -### Admin visits are not showing - -Our WordPress plugin excludes logged-in administrator visits by default. This is intentional. If you want to track your own visits, go to the "Track analytics for user roles" section in the plugin settings and enable the Administrator role. - -### Proxy not recording stats after setup - -After enabling or changing the proxy, you must clear your cache. The correct sequence is: +Fixes for the WordPress plugin are on the [WordPress page](wordpress-integration.md#troubleshooting): -1. Disable the proxy -2. Clear all caches (WordPress, hosting, Cloudflare) -3. Re-enable the proxy -4. Clear all caches again - -Skipping any step often leaves a stale script in place that the verification tool cannot confirm. - -### Stats stopped after migrating or cloning your WordPress site - -The proxy creates a randomly named file in `/wp-content/uploads/` and saves its full address. When you migrate or clone your site, that file path may no longer match what the plugin expects, or the address may still point to your old server. If the old server is offline, your pages can take a long time to load while browsers wait for the script. To fix this, disable the proxy, clear all caches, re-enable the proxy and clear all caches again. This forces the plugin to generate a fresh proxy file at the correct path on your new host. - -### Proxy script is slow - -The plugin notifies you if the proxy takes too long (over 500ms) to send pageviews. This usually means the speed module failed to install automatically. To install it manually: - -1. Access your server using (S)FTP, SSH or your host's file manager -2. Go to the plugin directory, usually `wp-content/plugins/plausible-analytics` -3. Open the `mu-plugin` directory inside it and copy `plausible-proxy-speed-module.php` to `wp-content/mu-plugins` (create the `mu-plugins` folder first if it doesn't exist) - -### Plugin token showing as invalid - -Plugin tokens are site-specific. Make sure the token you are pasting was created for the exact domain you are trying to connect. Tokens always start with `plausible-plugin-`. If in doubt, create a new token in your Plausible site settings and connect it again. - -### Token link doesn't do anything - -Some browser privacy settings, extensions or ad blockers silently block the click. If nothing happens when you click the token link in the plugin settings, create the token manually instead: - -1. Go to `https://plausible.io/YOURDOMAIN.COM/settings/integrations?new_token=WordPress`, replacing `YOURDOMAIN.COM` with your site's domain. -2. Click **Create Plugin Token** and copy the token. -3. Back in the plugin, paste it into the **Plugin Token** field and click **Connect**. - -This opens the same page the link normally would, so the rest of the steps are identical. - -### WP Rocket or another caching plugin is interfering - -Performance and caching plugins can minify, combine or delay the Plausible script in ways that break tracking. If you see errors in the browser console related to the Plausible script, add the script URL to the exclusion list in your caching plugin's settings. Our official WordPress plugin includes fixes for the most common conflicts, so make sure you are using it rather than the manual snippet. +- [Admin visits are not showing](wordpress-integration.md#admin-visits-are-not-showing) +- [Proxy not recording stats after setup](wordpress-integration.md#proxy-not-recording-stats-after-setup) +- [Stats stopped after migrating or cloning your WordPress site](wordpress-integration.md#stats-stopped-after-migrating-or-cloning-your-wordpress-site) +- [Proxy script is slow](wordpress-integration.md#proxy-script-is-slow) +- [Plugin token showing as invalid](wordpress-integration.md#plugin-token-showing-as-invalid) +- [Token link doesn't do anything](wordpress-integration.md#token-link-doesnt-do-anything) +- [WP Rocket or another caching plugin is interfering](wordpress-integration.md#wp-rocket-or-another-caching-plugin-is-interfering) --- @@ -252,7 +191,7 @@ If the verification tool has already confirmed that tracking is working, the res ### Are you on WordPress? -See the [WordPress plugin issues](#wordpress-plugin-issues) section above for admin exclusion, proxy problems and cache conflicts. +The plugin excludes logged-in administrators by default. See [WordPress troubleshooting](wordpress-integration.md#admin-visits-are-not-showing) to track your own visits. ### Is your visit being filtered out? @@ -278,7 +217,7 @@ You have two options: ### Are some VPN visitors being filtered as bots? -Most VPN and Tor visitors are tracked normally and appear under "Anonymous VPN Service" in the [Countries report](countries.md). Some VPN IP ranges overlap with data center infrastructure, so those visits are filtered along with bot traffic. This is a tradeoff of aggressive bot filtering. See [bot and spam traffic filtering](bot-traffic-filtering.md) for details. +Some VPN and iCloud Private Relay IP ranges overlap with data centers, so those visits are filtered with bot traffic. See [VPN users and bot filtering](bot-traffic-filtering.md#vpn-users-and-bot-filtering). --- @@ -300,35 +239,19 @@ In [a test we ran](https://plausible.io/blog/testing-bot-traffic-filtering-googl ## UTM parameters not appearing in Campaigns -UTM parameters are only attributed to the first pageview of a new session. If a visitor already has an active session on your site, pageviews with UTM parameters will not update the attribution. A session stays active for 30 minutes after the last pageview. - -Common causes during testing: - -- You visited the site earlier in the same browser, even without UTM parameters -- Another device on the same network visited the site recently -- You tested multiple UTM links without waiting 30 minutes between each - -If your campaign link points to a URL that redirects, for example to another subdomain, the redirect must keep the query string. If it drops it, the UTM parameters never reach the page where Plausible runs. The visit is then attributed to its referrer, or shows as **Direct / None** when there's no referrer. - -To test UTM attribution reliably, use a device and network combination that has not visited your site in the past 30 minutes. Mobile data on a phone that hasn't visited the site recently is the most reliable option. Check the **Campaigns** tab after the visit to confirm attribution. +UTM parameters only count on the first pageview of a new visit, so testing in a browser that already has an active visit won't show them. See [UTM parameters not appearing in Campaigns](top-referrers.md#utm-parameters-not-appearing-in-campaigns) for how to test them reliably. --- ## Referral source is missing -Referral sources are only counted when they start a new session. If you click several UTM-tagged links in the same session, only the first one is recorded. Wait 30 minutes or use a different device, browser or IP address to start a new session before testing again. - -This same mechanism keeps payment gateways and other redirect domains out of your referral sources. [Learn more about how referral attribution works](top-referrers.md). +Referral sources only count when they start a new visit, which also keeps payment gateways out of your sources. See [how referral attribution works](top-referrers.md#no-need-to-manually-exclude-unwanted-sources). --- ## Events API events not appearing -If you are using the [Events API](events-api.md) or a proxy for server-side tracking, Plausible can return HTTP 202 Accepted even when an event is not recorded. To check whether an event was dropped, inspect the response headers for `x-plausible-dropped: 1`. When that header is present, the event was not recorded. Bot filtering and site exclusion rules can cause events to be dropped. - -The most common cause is a misconfigured `X-Forwarded-For` header. If your proxy or backend forwards its own server IP instead of the real visitor's IP, Plausible's bot filter will drop the event. Make sure `X-Forwarded-For` is set to the real client IP before the request reaches Plausible. - -To confirm which IP address Plausible is seeing, add `X-Debug-Request: true` to your request. The API will return HTTP 200 with the IP it will use for unique visitor counting, so you can verify the header is being passed through correctly. +The Events API returns 202 Accepted even when an event is dropped, usually because `X-Forwarded-For` carries a server IP instead of the visitor's. See [debugging the Events API](events-api.md#debugging) for how to check. --- @@ -336,7 +259,7 @@ To confirm which IP address Plausible is seeing, add `X-Debug-Request: true` to -## How to manually check your integration +## How to manually check your integration {#how-to-manually-check-your-integration} diff --git a/docs/users-roles.md b/docs/users-roles.md index 69995d8b..1b290c1e 100644 --- a/docs/users-roles.md +++ b/docs/users-roles.md @@ -188,7 +188,17 @@ You can remove a guest from having access to a site at any time: That's it. The guest has now been removed from the specific site. -Note that you need to be an owner or an admin of the team that owns the site to remove a guest. +Note that you need to be an owner or an admin of the team that owns the site to remove a guest. Guests can also [leave a site themselves](#leaving-a-site-youre-a-guest-on). + +### Leaving a site you're a guest on + +If you've been invited to someone else's site as a guest, you can remove yourself at any time: + +* In the top right menu, click on your account name and choose **Account settings** +* Click on **Guest sites** in the left-hand sidebar. You'll see every site you're a guest on, who owns it and your role +* Click **Leave** next to the site and confirm + +That's it. You no longer have access to the dashboard and stats of that site. To get access again, the owner or an admin needs to invite you again. ## How the team member limit is counted diff --git a/docs/wordpress-integration.md b/docs/wordpress-integration.md index 7257d47d..d8f3b7c2 100644 --- a/docs/wordpress-integration.md +++ b/docs/wordpress-integration.md @@ -48,7 +48,7 @@ To manage everything from WordPress without visiting your Plausible account, gen 3. Copy the token displayed on the next screen. It won't be shown again after you close the modal. 4. Back in the plugin, paste it into the **Plugin Token** field and click **Connect**. -If clicking the link in step 1 does nothing, see [token link doesn't do anything](troubleshoot-integration.md#token-link-doesnt-do-anything) to create the token manually. +If clicking the link in step 1 does nothing, see [token link doesn't do anything](#token-link-doesnt-do-anything) to create the token manually.
    Create a Plausible plugin token for WordPress: enter WordPress as the description, then click Create plugin token @@ -212,11 +212,57 @@ In the **Bypass adblockers** section, turn on **Enable proxy**. If you use a cac Enable the proxy in the Plausible WordPress plugin
    -The proxy uses WordPress' API with a randomly generated endpoint under `yourdomain.com/wp-json` and creates a randomly named file in `/wp-content/uploads/`. If stats stop after enabling the proxy or after a site migration, see [WordPress plugin issues](troubleshoot-integration.md#wordpress-plugin-issues). +The proxy uses WordPress' API with a randomly generated endpoint under `yourdomain.com/wp-json` and creates a randomly named file in `/wp-content/uploads/`. If stats stop after enabling the proxy or after a site migration, see [troubleshooting](#troubleshooting). ## Troubleshooting -Most plugin problems come down to caching, admin exclusion, an invalid token or a proxy reset. For step-by-step fixes, see [WordPress plugin issues](troubleshoot-integration.md#wordpress-plugin-issues). + +### Admin visits are not showing + +Our WordPress plugin excludes logged-in administrator visits by default. This is intentional. If you want to track your own visits, go to the "Track analytics for user roles" section in the plugin settings and enable the Administrator role. + +### Proxy not recording stats after setup {#proxy-not-recording-stats-after-setup} + +After enabling or changing the proxy, you must clear your cache. The correct sequence is: + +1. Disable the proxy +2. Clear all caches (WordPress, hosting, Cloudflare) +3. Re-enable the proxy +4. Clear all caches again + +Skipping any step often leaves a stale script in place that the verification tool cannot confirm. + +### Stats stopped after migrating or cloning your WordPress site + +The proxy creates a randomly named file in `/wp-content/uploads/` and saves its full address. When you migrate or clone your site, that file path may no longer match what the plugin expects, or the address may still point to your old server. If the old server is offline, your pages can take a long time to load while browsers wait for the script. To fix this, disable the proxy, clear all caches, re-enable the proxy and clear all caches again. This forces the plugin to generate a fresh proxy file at the correct path on your new host. + +### Proxy script is slow {#proxy-script-is-slow} + +The plugin notifies you if the proxy takes too long (over 500ms) to send pageviews. This usually means the speed module failed to install automatically. To install it manually: + +1. Access your server using (S)FTP, SSH or your host's file manager +2. Go to the plugin directory, usually `wp-content/plugins/plausible-analytics` +3. Open the `mu-plugin` directory inside it and copy `plausible-proxy-speed-module.php` to `wp-content/mu-plugins` (create the `mu-plugins` folder first if it doesn't exist) + +### Plugin token showing as invalid {#plugin-token-showing-as-invalid} + +Plugin tokens are site-specific. Make sure the token you are pasting was created for the exact domain you are trying to connect. Tokens always start with `plausible-plugin-`. If in doubt, create a new token in your Plausible site settings and connect it again. + +### Token link doesn't do anything + +Some browser privacy settings, extensions or ad blockers silently block the click. If nothing happens when you click the token link in the plugin settings, create the token manually instead: + +1. Go to `https://plausible.io/YOURDOMAIN.COM/settings/integrations?new_token=WordPress`, replacing `YOURDOMAIN.COM` with your site's domain. +2. Click **Create Plugin Token** and copy the token. +3. Back in the plugin, paste it into the **Plugin Token** field and click **Connect**. + +This opens the same page the link normally would, so the rest of the steps are identical. + +### WP Rocket or another caching plugin is interfering + +Performance and caching plugins can minify, combine or delay the Plausible script in ways that break tracking. If you see errors in the browser console related to the Plausible script, add the script URL to the exclusion list in your caching plugin's settings. The plugin includes fixes for the most common conflicts, so use it rather than adding the snippet by hand as well. + +For problems that aren't specific to the plugin, such as no stats at all or your own visits missing, see [troubleshooting](troubleshoot-integration.md). ## What's next? diff --git a/sidebars.js b/sidebars.js index b5b6fc51..30c15559 100644 --- a/sidebars.js +++ b/sidebars.js @@ -8,6 +8,7 @@ module.exports = { 'integration-guides', 'npm-package', 'wordpress-integration', + 'google-tag-manager-integration', 'troubleshoot-integration', 'landing-page', 'your-plausible-experience', diff --git a/static/img/gtm-choose-variable-type.png b/static/img/gtm-choose-variable-type.png new file mode 100644 index 00000000..6653347d Binary files /dev/null and b/static/img/gtm-choose-variable-type.png differ diff --git a/static/img/gtm-custom-props-configured-template.png b/static/img/gtm-custom-props-configured-template.png new file mode 100644 index 00000000..7737d5a5 Binary files /dev/null and b/static/img/gtm-custom-props-configured-template.png differ diff --git a/static/img/gtm-init-tag-settings.png b/static/img/gtm-init-tag-settings.png new file mode 100644 index 00000000..ada467c1 Binary files /dev/null and b/static/img/gtm-init-tag-settings.png differ diff --git a/static/img/gtm-new-custom-property.png b/static/img/gtm-new-custom-property.png new file mode 100644 index 00000000..20de6e7f Binary files /dev/null and b/static/img/gtm-new-custom-property.png differ diff --git a/static/img/gtm-revenue-tracking.png b/static/img/gtm-revenue-tracking.png new file mode 100644 index 00000000..46731982 Binary files /dev/null and b/static/img/gtm-revenue-tracking.png differ diff --git a/static/img/gtm-setting-up-a-custom-event.png b/static/img/gtm-setting-up-a-custom-event.png new file mode 100644 index 00000000..144d2180 Binary files /dev/null and b/static/img/gtm-setting-up-a-custom-event.png differ diff --git a/static/img/gtm-tag-basic-settings.png b/static/img/gtm-tag-basic-settings.png new file mode 100644 index 00000000..06f2b9d4 Binary files /dev/null and b/static/img/gtm-tag-basic-settings.png differ diff --git a/static/img/gtm-tag-manager-installation.png b/static/img/gtm-tag-manager-installation.png new file mode 100644 index 00000000..f28fdde6 Binary files /dev/null and b/static/img/gtm-tag-manager-installation.png differ diff --git a/static/img/gtm-trigger-for-custom-event.png b/static/img/gtm-trigger-for-custom-event.png new file mode 100644 index 00000000..835916c6 Binary files /dev/null and b/static/img/gtm-trigger-for-custom-event.png differ diff --git a/static/img/gtm-variable-configuration.png b/static/img/gtm-variable-configuration.png new file mode 100644 index 00000000..55ecbc83 Binary files /dev/null and b/static/img/gtm-variable-configuration.png differ diff --git a/static/img/plausible-dashboard-goal-conversions.webp b/static/img/plausible-dashboard-goal-conversions.webp new file mode 100644 index 00000000..6e8abbec Binary files /dev/null and b/static/img/plausible-dashboard-goal-conversions.webp differ diff --git a/static/img/plausible-dashboard-graph-interval-menu.webp b/static/img/plausible-dashboard-graph-interval-menu.webp new file mode 100644 index 00000000..177194ac Binary files /dev/null and b/static/img/plausible-dashboard-graph-interval-menu.webp differ diff --git a/static/img/plausible-dashboard-top-graph.webp b/static/img/plausible-dashboard-top-graph.webp new file mode 100644 index 00000000..e6361cc2 Binary files /dev/null and b/static/img/plausible-dashboard-top-graph.webp differ