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.

Luxe Themes Updated 10 min read

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:

  1. Create a Tinybird account and workspace at tinybird.co
  2. Run the setup commands from your Ghost directory:
    Terminal window
    docker compose run --rm tinybird-login
    docker compose run --rm tinybird-sync
    docker compose run --rm tinybird-deploy
    docker compose run --rm tinybird-login get-tokens
  3. Add the tokens to .env: TINYBIRD_API_URL, TINYBIRD_ADMIN_TOKEN, TINYBIRD_WORKSPACE_ID, and TINYBIRD_TRACKER_TOKEN
  4. Enable the analytics service by adding analytics to COMPOSE_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:

  1. 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.
  2. 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.
  3. A malformed tracker endpoint. In one documented case, the tracker endpoint setting (tinybird__tracker__endpoint) had ?name=analytics_events appended. That produced a doubled query string and a querystring/name must be equal to constant validation 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.
  4. 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 TrafficAnalytics snippet 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.
  5. 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

NeedRecommendation
Maximum data, freeGoogle Analytics 4
Privacy-first, paidPlausible or Fathom
Self-hosted, freeUmami
Simple + lightweightPlausible
Enterprise complianceFathom (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:

  1. Signup attribution: Ghost records which post or page triggered each signup
  2. Conversion tracking: For paid upgrades, Ghost tracks which content led to the upgrade
  3. 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:

  1. Paid member growth: Are paying subscribers increasing month over month?
  2. Free-to-paid conversion rate: Are free members upgrading?
  3. Email open rate: Are subscribers engaged with your newsletter?
  4. Top converting posts: What content drives the most signups?
  5. 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.

Browse Ghost themes →

Frequently Asked Questions

Does Ghost have built-in analytics?
Yes. Ghost includes built-in analytics on the Publisher plan and above, focused on member growth, email performance, and content engagement, with no external tools required. The Dashboard shows total members, MRR, paid conversion rate, and per-post views. The Starter plan is limited to basic post views, while advanced metrics need Publisher or higher.
How do I add Google Analytics 4 or Plausible to Ghost?
Add the tracking snippet via code injection in Settings then Code injection then Site Header. For GA4, paste the gtag script using your G-XXXXXXXXXX measurement ID. For Plausible, add its defer script tag with your data-domain attribute. Both load on every page, giving you traffic sources, referrers, and engagement data alongside Ghost native member analytics.
What are privacy-friendly analytics options for Ghost?
The article lists several cookie-free, GDPR-conscious options that avoid consent banners: Plausible ($9/month, under 1KB, open-source), Fathom ($14/month, with EU isolation), Simple Analytics ($9/month), and self-hosted Umami (free, open-source). For most Ghost publishers, Plausible or Fathom alongside Ghost native member analytics covers everything needed.
Why is my Traffic analytics dashboard empty on self-hosted Ghost 6?
Ghost 6's native web analytics is powered by Tinybird and, on self-hosted installs, only works with the Docker Compose setup — Ghost-CLI installs don't get the Traffic tab. If you are on Docker and the dashboard is still empty, the usual causes are an incomplete Tinybird setup (login, sync, deploy, and tokens must all be run), a malformed tracker endpoint value, a reverse proxy that bypasses the analytics service, or an ad blocker in your own browser.
How does code injection work for Ghost analytics?
Ghost built-in analytics focus on member and email metrics, so broader website analytics are added through code injection. Paste your analytics script into Settings then Code injection then Site Header, which inserts it into every page header. This is how GA4, Plausible, Fathom, and similar tools are installed without editing theme files directly.

Keep reading