diff --git a/docs/looker-studio.md b/docs/looker-studio.md
index c0d354e0..b5398ce1 100644
--- a/docs/looker-studio.md
+++ b/docs/looker-studio.md
@@ -5,12 +5,13 @@ description: "Connect Plausible Analytics to Google Looker Studio using the offi
---
import useBaseUrl from '@docusaurus/useBaseUrl';
+import PlanFeatureNote from '@site/src/components/PlanFeatureNote';
Plausible keeps its dashboard intentionally simple. For cases where you need more flexibility, such as custom client reports, branded dashboards or views that combine Plausible data with ad spend or CRM data, we have an official connector for Google Looker Studio (formerly Data Studio).
Looker Studio is Google's free data visualization tool. The Plausible connector lets you pull your analytics data directly into Looker Studio and build any report layout you need.
-**Looker Studio connector is a Business plan feature.** [Compare plans →](https://plausible.io/#pricing)
+
})
diff --git a/docs/plausible-script.md b/docs/plausible-script.md
index f1b855b4..a0aa9992 100644
--- a/docs/plausible-script.md
+++ b/docs/plausible-script.md
@@ -5,6 +5,7 @@ description: "Add the Plausible tracking snippet to your site's header. One ligh
---
import useBaseUrl from '@docusaurus/useBaseUrl';
+import CtaBox from '@site/src/components/CtaBox';
To integrate your website with Plausible Analytics, you need to insert a Plausible tracking snippet into the header section of your site. Place the snippet within the ` … ` tags.
@@ -14,6 +15,12 @@ Click on the menu icon on the right-hand side of the site you'd like to get the
There you can also enable any [optional enhanced measurements](script-extensions.md).
+
+
diff --git a/docs/proxy/introduction.md b/docs/proxy/introduction.md
index 2e6f9ccf..5dbd6d6e 100644
--- a/docs/proxy/introduction.md
+++ b/docs/proxy/introduction.md
@@ -3,10 +3,20 @@ title: Bypass adblockers with a proxy
description: "Some adblockers block Plausible. A proxy routes analytics through your own domain to capture those visits. Choose between one-click, self-setup and managed options."
---
+import CtaBox from '@site/src/components/CtaBox';
+
Some visitors use adblockers or privacy tools that block analytics scripts. Plausible is blocked far less than Google Analytics. Firefox and Safari do not block it by default, but some blocklist maintainers block all analytics regardless of privacy practices.
A proxy routes the Plausible script through your own domain as a first-party request, making it indistinguishable from your own files. This bypasses most blockers and lets you count visits that would otherwise be missed.
+
+
## Which option fits you
### No proxy (default)
diff --git a/docs/raw-data-export.md b/docs/raw-data-export.md
index d4607cc9..c6ca273d 100644
--- a/docs/raw-data-export.md
+++ b/docs/raw-data-export.md
@@ -4,7 +4,9 @@ title: Scheduled raw event exports
description: "Get event-level data from Plausible delivered automatically on a schedule. For data warehousing, compliance and internal analytics where aggregated stats are not enough."
---
-**Scheduled raw event exports are an Enterprise plan feature.** [Contact us →](https://plausible.io/contact)
+import PlanFeatureNote from '@site/src/components/PlanFeatureNote';
+
+
The Stats API and CSV export give you aggregated data: totals, breakdowns and time series across your sites. For cases where you need the underlying event-level data, Plausible offers scheduled raw event exports.
diff --git a/docs/sites-api.md b/docs/sites-api.md
index 2a98ad64..26135106 100644
--- a/docs/sites-api.md
+++ b/docs/sites-api.md
@@ -4,8 +4,9 @@ description: "Reference for the Plausible Sites API. Create, update and delete s
---
import {Required, Optional} from '../src/js/api-helpers.tsx';
+import PlanFeatureNote from '@site/src/components/PlanFeatureNote';
-**Sites API is an Enterprise plan feature.** [Contact us →](https://plausible.io/contact)
+
The Plausible Site provisioning API offers a way to create and manage sites in your Plausible account programmatically. This is useful if you run many websites or if you're [offering a web analytics dashboard powered by Plausible to your customers](https://plausible.io/white-label-web-analytics). The Site API allows these operations:
diff --git a/docs/sso.md b/docs/sso.md
index a36efd20..47242520 100644
--- a/docs/sso.md
+++ b/docs/sso.md
@@ -4,6 +4,9 @@ description: "How SSO works with Plausible Analytics. Supports SAML 2.0 and iden
---
import useBaseUrl from '@docusaurus/useBaseUrl';
+import PlanFeatureNote from '@site/src/components/PlanFeatureNote';
+
+
Your team can sign in to Plausible Analytics using single sign-on (SSO). This removes the need for manual account creation, simplifies access management and gives you more control over who can log in.
@@ -11,8 +14,6 @@ SSO works by logging in through an identity provider (IdP). We support the SAML
User accounts are provisioned just-in-time. As long as the IdP session is active and the email matches, users can log in to Plausible automatically.
-SSO is available on our [Enterprise plan](https://plausible.io/enterprise-web-analytics). [Contact us](https://plausible.io/contact) to learn more.
-
:::tip What is SAML?
**Security Assertion Markup Language (SAML)** is an XML-based protocol for secure exchange of information between an authority (Identity Provider or IdP) and a consumer (Service Provider or SP - in this case, Plausible).
:::
diff --git a/docs/stats-api.md b/docs/stats-api.md
index c06020b4..0ffcf553 100644
--- a/docs/stats-api.md
+++ b/docs/stats-api.md
@@ -10,17 +10,16 @@ import { Required, Optional } from '../src/js/api-helpers.tsx';
import { getExampleCode, EXAMPLE_RESPONSE_META } from '../src/js/examples.tsx';
import CodeBlock from '@theme/CodeBlock';
import { SiteContextProvider } from '../src/js/sites.tsx';
+import PlanFeatureNote from '@site/src/components/PlanFeatureNote';
Plausible Stats API is a powerful single endpoint HTTP interface to **view historical and real-time stats**. In a nutshell, the endpoint `/api/v2/query` accepts both simple and complex stats queries in the POST request body and returns the metrics as JSON.
-**Stats API is a Business plan feature.** [Compare plans →](https://plausible.io/#pricing)
-
-[Try it now for your own site!](#examples)
-
:::tip[Not what you need?]
Take a look at our [Events API Reference](events-api.md) if you want to record pageviews or custom events for your sites, or [Sites API Reference](sites-api.md) if you want to manage your sites over the API.
:::
+
+
## Authentication
To create a new stats API key, log in to your Plausible Analytics account. In the top-right menu, click on your account name and go to settings.
diff --git a/docs/subscription-plans.md b/docs/subscription-plans.md
index f13d47ff..ebd5c86b 100644
--- a/docs/subscription-plans.md
+++ b/docs/subscription-plans.md
@@ -5,10 +5,17 @@ description: "Compare Plausible subscription plans. 30-day free trial, no credit
---
import useBaseUrl from '@docusaurus/useBaseUrl';
+import CtaBox from '@site/src/components/CtaBox';
Plausible gives you full control over your subscription. Choose a plan, pick monthly or yearly billing and upgrade or downgrade as your needs change. No long-term contracts.
-[View plans and pricing →](https://plausible.io/#pricing) · [Start free trial →](https://plausible.io/register)
+
## Which plan should I choose?
@@ -82,7 +89,3 @@ Everything is self-serve in your account settings:
- **[Download invoices](download-invoices.md)** - get invoices, add VAT numbers and change billing address.
Have a question? Check the [Billing FAQ](billing.md) or [contact us](https://plausible.io/contact).
-
----
-
-**Not yet subscribed?** [Start a free trial](https://plausible.io/register). 30 days free, no credit card required. For enterprise needs, [contact us](https://plausible.io/contact).
diff --git a/docs/user-journeys.md b/docs/user-journeys.md
index 267e1359..f28c0b06 100644
--- a/docs/user-journeys.md
+++ b/docs/user-journeys.md
@@ -4,10 +4,11 @@ description: "Explore the paths visitors take on your site. Start from any page
---
import useBaseUrl from '@docusaurus/useBaseUrl';
+import PlanFeatureNote from '@site/src/components/PlanFeatureNote';
The **Explore** tab lets you map the paths visitors actually take on your site. Pick any page, goal or event as a starting point and see what they did next. Or work backwards from a conversion to see what led visitors there.
-**User journeys is a Business plan feature.** [Compare plans →](https://plausible.io/#pricing)
+
* Works with your pages and events. No extra setup required.
* Pages from the same directory are automatically grouped to reduce noise and surface patterns more clearly
diff --git a/src/components/CtaBox.js b/src/components/CtaBox.js
new file mode 100644
index 00000000..5d55feff
--- /dev/null
+++ b/src/components/CtaBox.js
@@ -0,0 +1,25 @@
+import React from 'react';
+
+export default function CtaBox({ headline, link, linkText, secondaryLink, secondaryText }) {
+ const track = (button) => {
+ if (typeof window !== 'undefined' && window.plausible) {
+ window.plausible('Inline CTA Click', { props: { page: window.location.pathname, button } });
+ }
+ };
+
+ return (
+
+ );
+}
diff --git a/src/components/PlanFeatureNote.js b/src/components/PlanFeatureNote.js
new file mode 100644
index 00000000..3293187d
--- /dev/null
+++ b/src/components/PlanFeatureNote.js
@@ -0,0 +1,32 @@
+import React from 'react';
+
+export default function PlanFeatureNote({ feature, plan, label }) {
+ const isBusiness = plan === 'business';
+ const planLabel = isBusiness ? 'Business' : 'Enterprise';
+ const article = isBusiness ? 'a' : 'an';
+ const link = isBusiness ? 'https://plausible.io/#pricing' : 'https://plausible.io/contact';
+ const linkText = isBusiness ? 'Compare plans →' : 'Contact us →';
+
+ const track = () => {
+ if (typeof window !== 'undefined' && window.plausible) {
+ window.plausible('Plan Feature Click', { props: { feature } });
+ }
+ };
+
+ return (
+
+
{planLabel}
+
+ {label} is {article} {planLabel} plan feature.
+
+
+ {linkText}
+
+
+ );
+}
diff --git a/src/css/custom.css b/src/css/custom.css
index f30f6abf..ea86e8c4 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -642,4 +642,120 @@ html[data-theme='dark'] {
.docs-card-full {
grid-column: 1 / -1;
+}
+
+/* Inline CTA box */
+.cta-box {
+ margin: 1.5rem 0;
+ padding: 1.25rem 1.5rem;
+ border-radius: 0.5rem;
+ border: 1px solid var(--ifm-color-primary-lighter);
+ background-color: var(--ifm-color-primary-lightest);
+}
+
+.cta-box p {
+ margin: 0;
+ font-size: 0.95rem;
+ font-weight: 500;
+ color: var(--ifm-font-color-base);
+}
+
+.cta-box-actions {
+ margin-top: 0.75rem;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+}
+
+.cta-box-primary {
+ display: inline-flex;
+ align-items: center;
+ padding: 0.4rem 0.9rem;
+ border-radius: 0.375rem;
+ font-size: 0.875rem;
+ font-weight: 500;
+ color: #ffffff !important;
+ background-color: var(--ifm-color-primary);
+ text-decoration: none !important;
+ border: none;
+ transition: background-color 0.15s ease;
+}
+
+.cta-box-primary:hover {
+ background-color: var(--ifm-color-primary-dark);
+ color: #ffffff !important;
+}
+
+.cta-box-secondary {
+ display: inline-flex;
+ align-items: center;
+ padding: 0.4rem 0.9rem;
+ border-radius: 0.375rem;
+ font-size: 0.875rem;
+ font-weight: 500;
+ color: var(--ifm-color-primary) !important;
+ background-color: var(--ifm-background-color);
+ text-decoration: none !important;
+ border: 1px solid var(--ifm-color-primary-lighter);
+ transition: background-color 0.15s ease;
+}
+
+.cta-box-secondary:hover {
+ background-color: var(--ifm-color-primary-lightest);
+}
+
+[data-theme='dark'] .cta-box {
+ background-color: rgba(99, 102, 241, 0.08);
+ border-color: rgba(99, 102, 241, 0.25);
+}
+
+[data-theme='dark'] .cta-box-secondary {
+ background-color: rgba(255, 255, 255, 0.06);
+ border-color: rgba(99, 102, 241, 0.4);
+}
+
+/* Plan feature notice */
+.plan-feature-note {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ padding: 0.6rem 1rem;
+ margin: 1.25rem 0;
+ border-radius: 0.375rem;
+ border-left: 3px solid var(--ifm-color-primary);
+ background-color: var(--ifm-color-primary-lightest);
+ font-size: 0.875rem;
+}
+
+.plan-feature-badge {
+ display: inline-flex;
+ align-items: center;
+ padding: 0.1rem 0.5rem;
+ border-radius: 9999px;
+ font-size: 0.75rem;
+ font-weight: 600;
+ background-color: var(--ifm-color-primary);
+ color: #ffffff;
+ white-space: nowrap;
+}
+
+.plan-feature-text {
+ color: var(--ifm-font-color-base);
+ font-weight: 500;
+}
+
+.plan-feature-link {
+ font-weight: 600;
+ white-space: nowrap;
+ text-decoration: none !important;
+}
+
+.plan-feature-link:hover {
+ text-decoration: underline !important;
+}
+
+[data-theme='dark'] .plan-feature-note {
+ background-color: rgba(99, 102, 241, 0.08);
+ border-left-color: var(--ifm-color-primary-light);
}
\ No newline at end of file