How to Add Analytics to a Notion Page (2026 Guide)
Updated May 2026 · 8 minute read · Written by the team behind PageInsight
You publish a Notion page, share it on Twitter, watch a click spike in your link shortener — and then have no idea whether anyone read past the first paragraph. Notion has no built-in analytics for shared pages, the obvious answer (Google Analytics) literally cannot run inside a Notion-published page, and most of the workarounds you'll find on the first page of search are either dated, paid for a different problem, or quietly broken.
This guide gives you the full picture: why standard analytics fails on Notion, the four options that actually work in 2026, the honest pros and cons of each (yes, including ours), and a step-by-step setup if you decide to use the option we make. We'll tell you when something else is the right call.
Not sure which option applies to your page?
Paste your Notion URL into the free Notion Embed Compatibility Checker — it tells you in two seconds whether script tags, iframe embeds, or both will fire on your specific page.
In this guide
Why Google Analytics doesn't work on Notion
The single technical fact that drives this whole question: Notion strips arbitrary <script> tags from published pages.
When you Publish a Notion page to the web, Notion's renderer reads the page's blocks and emits HTML for visitors. Anywhere a typical analytics tool would inject a script tag — at the bottom of the body, in a Code block, anywhere — the renderer either removes it or escapes it as plain text. There is no first-class "custom HTML" block on a published Notion page that lets you ship executable JavaScript. That's how Google Analytics, Plausible, Fathom, Simple Analytics, and every other script-tag analytics product works. None of them can fire from inside a published Notion page.
What Notion does support is the /embed block. An embed renders an iframe pointing to a third-party URL. The third-party URL serves arbitrary HTML and JavaScript inside the iframe, sandboxed from the parent Notion page but free to run analytics code that pings home. That iframe is the only sanctioned place to run code inside a published Notion page, and it's the mechanism every Notion-native analytics tool — including PageInsight — uses.
The one caveat for iframes: Notion lazy-loads them. An embed only fetches its source URL when it scrolls into the visitor's viewport. If your tracker iframe is at the bottom of a 4000-word guide and most readers bounce after the intro, those bouncers don't count. The fix is to place the tracker block near the top of the page (we automate that on activation).
The exception to the script-tag rule: if you serve your Notion content through a custom subdomain proxy like Super.so or Potion, the proxy renders the Notion content as static HTML at yoursite.comand you can inject any site-wide script you want from the host's settings panel. There, GA / Plausible / Fathom all work normally — but you've just paid $12-39/month for a proxy you wouldn't need otherwise.
The four real options in 2026
Every working solution falls into one of these four buckets. We'll cover them in order of decreasing setup overhead, with honest pros and cons.
Custom subdomain + Plausible / Fathom / GA
Setup: Move your Notion content behind Super.so, Potion, or a similar host that renders Notion at your own domain, then add a site-wide analytics script in their settings.
Cost: $12-39/mo for the proxy + $0-9/mo for the analytics tool
Pros
- Full-featured analytics — every metric a normal site has
- Site-wide aggregation, custom events, conversion tracking
- Choose any analytics vendor (Plausible, Fathom, GA, Simple Analytics)
Cons
- Highest setup overhead: domain config, host signup, DNS, billing
- Two ongoing subscriptions
- Notion content quirks can break with renderer updates
- Only works for pages you've routed through the host
Best for: A single Notion-based blog or marketing site that you'd treat like a real domain.
More on the custom-domain comparisonNotionlytics
Setup: Sign up, paste each Notion page URL into their dashboard, copy a per-page tracker block back into the Notion page.
Cost: $19/mo Personal, $49/mo Pro, 7-day trial (card required)
Pros
- Notion-native, no custom domain needed
- Per-page tracking with a long product track record
- Per-section heatmap on Pro tier
Cons
- Daily-rollup dashboard, not real-time
- CSV export gated to $49/mo Pro
- No free tier — 7-day trial requires card
- Manual paste per page (no auto-insert via Notion API)
Best for: Existing customers and anyone who specifically needs the per-section heatmap.
More on NotionlyticsPageInsight
Setup: Sign up, click Connect Notion (one-click OAuth via the official Notion API), pick a page, click Enable. The tracker auto-inserts at the top of the page. Done in 3 minutes.
Cost: Free for 5 trackers, $10/mo for 100, $30/mo unlimited, $90/mo for 100 members
Pros
- Real-time dashboard — page views and live readers within seconds
- Heartbeat-based time-on-page, not a fake bounce-rate number
- Auto-inserts the embed via Notion API — no copy-paste
- Free forever for 5 trackers, no card
- CSV export on every plan
- Powered-by link gives you a free brand impression on every published page
Cons
- Newer product than Notionlytics (April 2026 launch)
- No per-section heatmap
- Best results require placing the embed near the top of the page (we do this automatically on activation)
Best for: Notion creators with multiple published pages who want fast setup and a real-time dashboard.
More on PageInsightBit.ly / Rebrandly + Twitter Analytics (free hack)
Setup: Shorten the link to your Notion page through Bit.ly or Rebrandly. Share the shortened link. Read clicks from the URL shortener; read tweet reach from Twitter analytics.
Cost: Free (Bit.ly free tier) up to a few hundred clicks/month
Pros
- Genuinely free, zero setup beyond the link shortener
- Works for any platform (Twitter, Reddit, Slack, email)
Cons
- Click count only — no time-on-page, no signal whether visitors actually read
- Per-link, not per-page (a Notion page shared via three different links shows up as three separate stats)
- Doesn't reveal direct traffic, search, or the visitors not coming through your tracked link
- Bit.ly's free analytics is intentionally light
Best for: Validating whether a single tweet drove clicks; anything more serious outgrows this fast.
Decision tree — which one is right for you
You have one Notion-based blog or marketing site you treat like a real domain. Custom subdomain (Super.so, Potion) + Plausible. Highest ceiling, highest setup cost, but you get full-featured analytics including custom events and conversion tracking.
You have many shared Notion pages and want a real-time dashboard fast. PageInsight. Connect via Notion OAuth, pick the pages, done in 3 minutes. Free for 5 trackers, $10/mo for 100. (Yes, this is us — but the "many pages, fast setup" combination is specifically what we built for.)
You only need to know "did anyone click" and don't care about time-on-page. Notionlytics or even just Bit.ly. If you specifically need their per-section heatmap and your budget covers $19+/mo, Notionlytics has a longer track record. If you just want raw click counts for one share of one page, the Bit.ly approach is fine.
You're a team and want everyone's shared docs tracked together. PageInsight Team plan ($30/mo, 5 members, unlimited trackers) or a custom subdomain rolled out at the workspace level if you also want a public site.
3-minute step-by-step setup (PageInsight)
If you've decided to use PageInsight, here's the literal sequence. The whole thing usually takes under three minutes from a fresh signup.
- 1. Sign up. Visit pageinsight.satosushi.co/signup, create an account with email + password (no card). You'll land on the dashboard.
- 2. Connect Notion. Click Connect Notionin the dashboard header. You'll be redirected to Notion's official OAuth flow. Pick the pages you want PageInsight to see — only those pages are imported. You can revoke access any time from Notion's connections panel.
- 3. Sync pages and pick one. Once you're back on the dashboard your shared pages appear in the Notion Pages section. Find the page you want to track and click Enable. PageInsight auto-inserts a tracker iframe near the top of the page via Notion's API — there's nothing for you to copy-paste.
- 4. Open the page in a browser. Visit your published Notion page in any browser. The first page-view event fires the moment the iframe loads. You'll see the dashboard's "Live" counter tick up within seconds.
- 5. Watch real reads. Page views, sessions, locations, and heartbeat-based time-on-page roll into the dashboard in real time. The Top Pages section shows which of your tracked pages is pulling weight, sorted by views with average time alongside.
That's the whole setup. If something goes wrong (most common: the embed is below the fold and visitors are bouncing before scrolling to it), the help page covers the eight most common gotchas.
What metrics actually matter for Notion creators
A trap when you finally get analytics on a Notion page: drowning in metrics that don't help you make decisions. The metrics that actually move the needle for Notion content:
- Views per page. Which Notion guide is pulling weight. A guide that gets 10x the views of others is telling you what to write more of.
- Average time-on-page (heartbeat-based). Did people actually read the guide or did they bounce after seeing the title? A 4-minute average on a long-form guide means your audience is engaged. A 12-second average on the same guide means the title is doing all the work and the content is letting them down.
- Referrer. Where they came from. A spike from Twitter on the day you tweeted is expected; a spike from Google search a week later is the real signal — the content is ranking, the audience is finding it organically, you should write more like it.
- Coarse geo. Country and city. If 80 percent of your readers are in the US and you're writing for a European market, you have a positioning problem.
- Live readers (real-time). Less for analysis, more for psychology — when you tweet a guide and watch the live counter go up in real time, you know your distribution worked.
You don't need bounce rate, scroll depth, click maps, or session recording to make better Notion content. Those are tools for marketing teams running A/B tests on a homepage. Notion creators need to know which guide got read, for how long, by whom — that's it.
Frequently asked questions
Why doesn't Google Analytics work on Notion pages?
Notion's published-page renderer strips arbitrary <script> tags from page content. The Google Analytics snippet relies on injecting a script that loads gtag.js from googletagmanager.com — Notion removes it on render, so no events ever fire. The same applies to Plausible, Fathom, Simple Analytics, or any analytics tool that ships as a script tag.
Can I get analytics on a Notion page without a custom domain?
Yes. Tools like Notionlytics and PageInsight embed an iframe (which Notion does allow inside its /embed block), so you don't need a custom domain or a Super.so / Potion proxy. The iframe pings home with view and heartbeat data and you read the dashboard on the analytics tool's own site.
Will an embedded tracker slow down my Notion page?
An embed iframe loads asynchronously, in parallel with the rest of the page. PageInsight's tracker iframe is under 20 KB and renders a 26-pixel-tall live indicator; visitors don't notice it. The bigger lever is where you place the embed — Notion lazy-loads embeds far down the page, so put it near the top so visitors trigger it before scrolling away.
Does an analytics embed work on Notion's free plan?
Yes. Anyone with a Notion workspace can paste an /embed block into any page they own — paid plans aren't required. The page does need to be Published to web (Share → Publish → toggle on) for non-Notion-account visitors to see it.
Is page-level analytics on Notion GDPR-compliant?
It depends on the tool's data model. Tools that don't set third-party cookies, don't fingerprint, and don't transmit personal identifiers are typically out of scope of GDPR consent banners for the basic case. PageInsight stores an anonymous visitor ID in localStorage scoped to the embed origin and reports country only (not full IP). Always check your specific tool's privacy policy for your jurisdiction.
What about Notion private (un-published) pages?
An /embed block inside a private page only fires when someone with workspace access opens the page in the Notion app. That works for internal handbook tracking — you'll see workspace-member views — but if you want to track external readers you have to publish the page to the web first.
Does it work on Super.so / Potion / Notion Sites?
Yes. Custom-subdomain Notion site builders (Super.so, Potion, Oopy, Typedream) render the underlying Notion content as static HTML at your domain. Embed blocks inside those pages ship through. If you go this route you can also use any standard JavaScript analytics (GA, Plausible, Fathom) by adding a site-wide script via the host's settings — that's the case where script-tag analytics actually does work.
Per-page or per-workspace analytics?
PageInsight is per-page: each tracker is a unique embed and reports separately so you can tell which Notion page is pulling weight. Notionlytics is also per-page. Custom-subdomain analytics (GA, Plausible) typically aggregate by URL path, which works for paged Notion sites but is harder to set up for a handful of standalone published pages.
Can I export the data?
PageInsight exports CSV from any plan, including Free. Notionlytics gates CSV export behind their $49/mo Pro tier. If data portability matters, check the export policy before paying.
Will Notion penalize my page for embedding a tracker?
No. Notion's terms allow public embeds via the /embed block — that's the supported mechanism. There's no anti-tracking ban or downgrade. The only practical limit is that Notion lazy-loads embeds when they enter the viewport, so trackers below the fold may not fire for visitors who bounce; place the tracker near the top.
Related guides
Stop guessing. Start measuring.
5 trackers free forever. No card. Connect Notion, pick a page, watch the live counter tick within seconds.