Ghost Analytics: Built-In and Third-Party
Set up Ghost 6 native analytics (Tinybird), fix the empty Traffic dashboard on self-hosted installs, and add GA4 or privacy-focused tools via code injection.
What Ghost Tracks Natively
Ghost includes built-in analytics on the Publisher plan and above. These focus on what matters for publishers: member growth, email performance, and content engagement. No external tools required.
On the Starter plan, analytics are limited to basic post views. Advanced analytics, including email performance and member conversion tracking, require Publisher ($29/month) or higher.
Since Ghost 6.0, this goes further. Ghost now ships native first-party web analytics: a Traffic dashboard with visitors, sources, and per-post views built into the admin. The next section covers it, along with the setup steps self-hosters need to make it work. After that, this guide walks through the built-in dashboard, how to add GA4 or a privacy-focused tool through code injection, and which metrics we think matter most.
Ghost 6 Native Web Analytics (Tinybird)
Ghost 6.0 introduced detailed, first-party web analytics directly in the dashboard. The Traffic section shows visitors, referral sources, and top content, and since early 2026 it has filters for slicing that data. Under the hood it is powered by Tinybird, a third-party real-time analytics platform. Ghost sends page-hit events to a Tinybird workspace and queries them back into the admin UI.
On Ghost(Pro), all of this is wired up for you. Traffic analytics appears without any setup.
On self-hosted Ghost, there is a catch that confuses many people. There are two common ways to self-host Ghost: the Ghost-CLI install on Ubuntu, and the Docker Compose install. Native web analytics only works with the Docker Compose install. If you installed with Ghost-CLI on Ubuntu, there is no Traffic tab to fill. The analytics stack, a separate traffic-analytics service, only exists in the Docker setup. This is part of Ghost’s broader shift toward Docker-based tooling for new features like ActivityPub.
Setting It Up on Self-Hosted Ghost 6
With the official Docker Compose install, Ghost’s docs say to:
- Create a Tinybird account and workspace at tinybird.co
- Run the setup commands from your Ghost directory:
Terminal window docker compose run --rm tinybird-logindocker compose run --rm tinybird-syncdocker compose run --rm tinybird-deploydocker compose run --rm tinybird-login get-tokens - Add the tokens to
.env:TINYBIRD_API_URL,TINYBIRD_ADMIN_TOKEN,TINYBIRD_WORKSPACE_ID, andTINYBIRD_TRACKER_TOKEN - Enable the analytics service by adding
analyticstoCOMPOSE_PROFILES, then restart the stack
Visit your homepage in a browser, then check the Analytics section in Ghost admin. The visit should appear.
”My Tinybird Dashboard Is Empty”: The Usual Causes
The most common Ghost 6 analytics problem is a Traffic dashboard that stays empty, with no errors anywhere. Work through these causes in order:
- You’re not on the Docker install. Ghost-CLI installs don’t get traffic analytics at all. No amount of Tinybird configuration fixes this. Migrating to the Docker Compose setup is the only path.
- The Tinybird setup is incomplete. All four steps matter: login, sync, deploy, and tokens. Skipping the deploy step (
tinybird-deploy) means the schema and endpoints never exist in your workspace, so events have nowhere to land. - A malformed tracker endpoint. In one documented case, the tracker endpoint setting (
tinybird__tracker__endpoint) had?name=analytics_eventsappended. That produced a doubled query string and aquerystring/name must be equal to constantvalidation error in the traffic-analytics logs. Removing the suffix fixed it. If your dashboard is empty, read the traffic-analytics service logs. Schema-validation errors hide there, not in Ghost’s own log. - Your reverse proxy bypasses the analytics service. A reverse proxy is the server that sits in front of Ghost and forwards requests to it. Page hits are collected via a proxied analytics endpoint. In the stock setup, the Caddy config routes those requests to the analytics service (the
TrafficAnalyticssnippet in the Caddyfile). If an external proxy forwards traffic straight to the Ghost container and skips that routing, no events are ever collected. Proxy chains must preserve it. - Your own ad blocker. It is easy to spend hours debugging your stack while a browser extension silently blocks the tracking request. Check your browser’s Network tab, or test from a clean browser before touching config.
When to Use Plausible or Fathom Instead
Native analytics is the right default on Ghost(Pro) and on Docker-based self-hosted installs. It is first-party, free, and integrated with member data. A third-party tool from the section below is the better fit when:
- You self-host with Ghost-CLI and don’t want to migrate to Docker only for a traffic graph. A Plausible or Fathom script via code injection works on any install in two minutes.
- You don’t want a Tinybird dependency. Some self-hosters prefer not to route visitor data through an additional third-party platform, or want fewer moving parts to debug.
- You need features Ghost’s dashboard lacks, such as custom events, goals, funnels, UTM-level campaign reporting, or long-term data portability.
Running both is also fine: Ghost’s native numbers for the integrated member view, and Plausible or Fathom as an independent second opinion. Expect small discrepancies between the two. Different bot filtering and blocked-script rates mean no two analytics tools ever agree exactly.
Ghost’s Built-In Dashboard
The Dashboard in Ghost Admin shows a real-time overview of your publication:
Member Analytics
- Total members: Free and paid counts with growth over time
- Net new members: New signups minus cancellations per period
- MRR (Monthly Recurring Revenue): Total predictable monthly income from paid subscribers
- Paid conversion rate: Percentage of free members upgrading to paid
- Top converting posts: Which articles drive the most paid signups
Email Analytics
Per-newsletter and per-post email metrics:
- Open rate: Percentage of recipients who opened the email
- Click rate: Percentage who clicked at least one link
- Per-link clicks: Which specific links in the email received clicks
- Delivery stats: Total sent, delivered, opened, clicked
- Feedback: Positive and negative reactions (if enabled in your newsletter settings)
As industry benchmarks go, a 35-45% open rate is healthy for subscriber newsletters, and a 2-5% click rate is solid. Ghost publishers typically beat these averages because subscribers opted in directly.
Post Performance
For each published post:
- Total views: Page views over time
- Member signups from post: How many readers signed up after reading
- Paid conversions from post: How many free members upgraded after reading
- Email performance: If the post was sent as a newsletter, open and click metrics
This per-post attribution shows which content drives business results. A post with 500 page views but 20 signups is more valuable than a post with 5,000 page views and 2 signups.
Adding External Analytics
Ghost’s built-in analytics focus on member and email metrics. For broader website analytics, such as traffic sources, user behavior, geographic data, and page flows, add a third-party tool through code injection. Code injection is the place in Ghost Admin where you paste a script so it loads on every page without editing theme files. Our Ghost code injection guide explains what the header and footer fields can and cannot do.
Google Analytics 4
The most comprehensive option, and free. Add the GA4 snippet under Settings → Code injection → Site Header:
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script><script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-XXXXXXXXXX');</script>GA4 provides:
- Traffic sources and referrers
- User demographics and geography
- Page-level engagement metrics
- User flow and navigation paths
- Conversion tracking
- Real-time visitor data
The trade-off: GA4 uses cookies and requires GDPR consent banners for EU visitors. The interface has a steep learning curve.
Privacy-Focused Alternatives
If you prefer analytics that do not track individual users or require cookie consent:
Plausible Analytics ($9/month):
<script defer data-domain="yourdomain.com" src="https://plausible.io/js/script.js"></script>- Lightweight (under 1KB script)
- No cookies, no personal data collection
- GDPR, CCPA, and PECR compliant without consent banners
- Simple, clean dashboard
- Open-source (self-hostable)
Fathom Analytics ($14/month):
<script src="https://cdn.usefathom.com/script.js" data-site="XXXXXXXX" defer></script>- Cookie-free tracking
- EU isolation option (data stays in EU)
- Simple dashboard focused on essential metrics
- Lifetime plan available
Simple Analytics ($9/month):
- No cookies, no personal data
- Open-source option available
- Minimal dashboard
Umami (Free, self-hosted):
- Open-source, self-hosted analytics
- Privacy-focused, no cookies
- Runs on your own server alongside Ghost
Which to Choose
| Need | Recommendation |
|---|---|
| Maximum data, free | Google Analytics 4 |
| Privacy-first, paid | Plausible or Fathom |
| Self-hosted, free | Umami |
| Simple + lightweight | Plausible |
| Enterprise compliance | Fathom (EU isolation) |
For most Ghost publishers, Plausible or Fathom alongside Ghost’s built-in member analytics covers everything you need. GA4 is worth the complexity if you need detailed user behavior data or run advertising campaigns.
Tracking Member Conversions
The most important metric for Ghost publishers is not page views. It is member conversions. Ghost tracks this natively:
- Signup attribution: Ghost records which post or page triggered each signup
- Conversion tracking: For paid upgrades, Ghost tracks which content led to the upgrade
- Revenue attribution: Connect member signups to MRR impact
To see this data:
- Go to Posts in Ghost Admin
- Sort by Signups or Conversions
- Identify your top-performing content
Use this data to write more content like your best converters. If long-form comparison articles drive signups, write more comparisons. If tutorials drive paid upgrades, write more tutorials.
Email Analytics in Detail
Ghost’s email analytics are more detailed than most dedicated newsletter platforms provide:
Open Rate Tracking
Ghost tracks email opens with a tracking pixel, a tiny invisible image that loads when the email is opened. Open rates are approximate, because some email clients block tracking pixels, but they are useful for comparing posts against each other.
- Declining open rates suggest subject line fatigue or list quality issues
- Suddenly low open rates may indicate deliverability problems
- Consistently high open rates indicate strong subscriber engagement
Click Tracking
Ghost tracks every link in your email individually. The per-link report shows:
- Which links were clicked most
- Click-through rate per link
- Total clicks vs unique clicks
Use this to understand what content and calls to action resonate. If readers consistently click article links but ignore product links, your audience prefers educational content over promotional content.
Subscriber Engagement
Ghost segments subscribers by engagement level. In the Members section, you can filter by:
- Active: Opened or clicked in recent emails
- Inactive: No engagement in recent emails
- New: Recently subscribed
This helps identify subscribers who may need re-engagement or who are candidates for a targeted campaign.
Analytics and Ghost Themes
Your theme can affect analytics accuracy:
- Single-page applications (SPAs): Some sites swap content in place instead of loading a new page, which is called client-side routing. If your theme works that way, standard analytics scripts may not track page transitions. Most Ghost themes use standard page loads, so this is rarely an issue.
- Caching: Aggressive caching can affect real-time analytics accuracy. Ghost(Pro) handles caching appropriately for analytics.
- Content loading: Lazy-loaded content may not trigger scroll-depth tracking in external analytics tools.
Any theme that follows Ghost’s standard architecture works correctly with all analytics tools. Our themes use standard page loads and do not interfere with analytics tracking.
The Metrics That Matter
For Ghost publishers, focus on these metrics in order of importance:
- Paid member growth: Are paying subscribers increasing month over month?
- Free-to-paid conversion rate: Are free members upgrading?
- Email open rate: Are subscribers engaged with your newsletter?
- Top converting posts: What content drives the most signups?
- Traffic sources: Where are new readers discovering your publication?
Ghost’s built-in analytics cover the first four. Add an external tool for the fifth.
With that in place, you have member and email numbers from Ghost itself, and traffic data from either the native dashboard or an external tool. Our themes are designed for publishers who track these metrics, starting at $69.
Frequently Asked Questions
Does Ghost have built-in analytics?
How do I add Google Analytics 4 or Plausible to Ghost?
What are privacy-friendly analytics options for Ghost?
Why is my Traffic analytics dashboard empty on self-hosted Ghost 6?
How does code injection work for Ghost analytics?
Keep reading
Ghost Portal Guide: Settings, Links & Customization
How Ghost's Portal works and how to shape it: signup options, default billing cycle, the floating button, every Portal link and data attribute, translation.
Ghost Code Injection: The Complete Guide
How Ghost code injection works: site vs post level, what it can and cannot change, loading order, and paste-ready examples for analytics, fonts, CSS, and JS.
Customize the Members CTA on Gated Ghost Posts
Replace the fixed wording on Ghost's members-only post box with your own copy per tier, using Ghost's built-in code editor. Paste-ready snippet included.
Ghost Plugins: What to Use Instead (2026)
Ghost has no plugin system — and doesn't need one. Integrations, Zapier, code injection, APIs, and themes cover the same jobs. Here's the full 2026 map.
Recommended Themes
These themes excel at the features discussed in this article.
Comparing options? Browse all premium Ghost themes side by side.
Get every theme in one bundle
The complete Luxe Themes bundle — every theme, one purchase.