One tag, everything.

ninelytics

Analytics, search, speed, uptime, revenue, AI. Hosted. No cookies unless you want them.

Start free

7-day trial. No card. Free plan included.

Ninelytics websites overview with a world map of visits, weekly totals, and a table of sites with their traffic and uptime

Visitors, everywhere

One map for every site you run. Close to the people on the page, close to the data you already have.

Under 50msThe beacon answers from the city your visitor is in, so the page never waits on analytics.
City, not countryEvery hit resolves to a city with MaxMind. No cookie, no fingerprint, no consent banner.

See them live

Who is on the site right now. Pages, devices, and a feed that updates without a refresh.

Down to the city

A map on MaxMind, not a country pie. Drill from the world to a city when you need it.

Share the number

Public links and embeddable widgets. Hand someone the view without handing them the account.

Stop stacking tools

What used to be seven tabs is now one login

Most teams run a site from a pile of free dashboards that do not talk to each other. Ninelytics puts the operator view in one hosted product.

  • Google Analytics
  • Search Console
  • Bing Webmaster
  • Uptime monitors
  • Core Web Vitals labs
  • Stripe dashboards
  • A separate AI chat
  • Replaced by Ninelytics

The product

Built for people who operate sites, not for ad networks

One script on the page. A real dashboard on the other side. The same account covers a county site, a SaaS marketing page, and a shop.

The morning check, in one screen

Today against yesterday across every site, the last seven days, and the charts you pinned, dragged into the order you read them.

Dashboard with today's visitors, page views, bounce rate, and average session, a seven-day chart, and pinned charts

What you get

A full operator stack, not a pageview counter

Privacy-first analytics is the floor. The product is everything you open after you look at the chart.

Traffic

See the visit, not a warehouse

Live visitors, sessions, identified people, channels, campaigns, and AI-assistant mentions. Funnels and goals when a pageview is not the point. Export CSV, Excel, or JSON if someone still wants a sheet.

Search and speed

GSC, Bing, and real vitals in the same login

Queries next to the sessions they produced. LCP, INP, CLS from people, not a lab. Vitals never hit the events meter. New URLs leave the sitemap and go to Google and IndexNow.

Money and uptime

Know it is up. Know it is paying.

Down, slow, SSL, content change. Alerts in the app, email, SMS, Telegram, Slack. Stripe, Polar, Paddle, Lemon, Creem, Dodo on the same chart family. A public status page per site.

Cookieless, or a banner

Daily server-side hash by default. Consent in the same tag if the rest of the site needs it.

Teams and roles

Admin, owner, viewer. Per-site access. Organizations. Optional white-label name and logos.

Share and embed

Public links and widgets. Hand someone the number without handing them the account.

A real API

Keys on /api/v1 and a typed @ninelytics/api-client for native apps.

Leave without a hole

Import GA4, Cloudflare, PostHog, Fathom, Umami, Simple Analytics, or a CSV zip. Live days are never overwritten.

We run the boxes

Hosted. Backups, upgrades, queues. Optional GitHub or GitLab PR that installs the snippet.

AI over your data

An analyst that already has the numbers

Claude, by Anthropic, in a panel next to every page. It reads analytics, Search Console, speed, and Stripe. You are not exporting a CSV into another tab.

The assistant comparing this week's traffic sources with last week's, next to the analytics page

Press Ctrl+J on any page. It already sees what you see: the week, the queries, the vitals, and the charges. When it wants to change something, it shows you the change and waits for your yes.

Try asking

  • Why did Tuesday drop?
  • Compare this week with last week
  • Which queries have impressions and no clicks?
  • Is mobile LCP the problem?

Anomalies

Spikes and drops in the last 30 days, found from the data, with the day and the size of the change.

Forecasts

Ask about next week and it runs a statistical forecast on the site's own history, not a guess.

Recommendations

What to fix first. High bounce, short sessions, a mobile LCP problem, in plain language.

Metered, honestly

20 to 2,000 messages a month depending on the plan. The meter is visible.

Speed Insights

Core Web Vitals from people, not a lab

Five metrics fire on a page view. We keep a sample and never bill you for them. Charging for vitals would pad every invoice by about half for a number the customer cannot see.

  • Real Experience Score

    A 0 to 100 score from all five vitals at p75. One number, then drill into the page.

  • Page and device

    Find the slow URL. Split mobile from desktop. Fix the one that is actually hurting people.

  • Native APIs

    Uses the browser Web Vitals APIs. Loaded only when you turn Speed Insights on for that site.

0RES
LCPLargest Contentful Paint
1.8s
INPInteraction to Next Paint
120ms
CLSCumulative Layout Shift
0.15

Search and indexing

New pages reach Google and Bing without a checklist

Ship the URL. The sitemap changes. We notice, inspect, and submit. You get a per-URL status instead of a spreadsheet of “did we ping this”.

01

Sitemap poll

Every 6 hours

02

Diff new URLs

Skip what is already in

03

Push

Google + IndexNow

Google Indexing API

New URLs go to Google with a 200/day quota and retries. Inspection runs first so you do not burn quota on pages already indexed.

IndexNow

Bing, Yandex, and the rest of the IndexNow network get the same URLs. Batched, no daily cap from our side.

Open Graph checker

See the card a share will render before you ship the page. Less “why is the image missing on Slack”.

Ahrefs Domain Rating

Optional badge when an Ahrefs key is set. Useful as a pulse, not a substitute for doing the work.

Reliability and money

Know it is up. Know it is paying.

Analytics without uptime is a diary. Analytics without revenue is a hobby. Both live on the site, next to the traffic that caused them.

Uptime checks

Down, slow, SSL about to expire, and unexpected content changes. The same worker that drains the rest of the queue.

Alerts where you already are

In-app, email via Resend, SMS via Twilio, Telegram, or a Slack incoming webhook. Set once on the account.

Public status page

Every site can have /status/:id. Hand it to a client instead of “it looks down on my phone”.

Revenue on the same chart family

Stripe plus Polar, Paddle, Lemon Squeezy, Creem, and Dodo. Daily revenue, refunds, charges, customers. Each provider tagged so you can tell them apart.

Leave without a blank chart

Import history. Connect the rest.

Traffic imports write a prefixed source. Re-sync deletes only that prefix. A source never writes a day that already has live tracking or another import, so charts do not double-count. Search Console, Bing, and revenue use their own tables.

Google Analytics 4

Live

Up to 364 days of history. Live days are never overwritten.

Cloudflare Analytics

Live

Zone token. Fills empty days. Live tracking wins.

Google Search Console

Live

Queries, clicks, impressions, CTR, position.

Bing Webmaster

Live

Search insights next to the Google ones.

PostHog

Live

HogQL traffic import for empty days.

Fathom / Umami / Simple Analytics

Live

Bring the old privacy tool with you.

CSV archive

Live

A zip of daily CSVs when that is all you have left.

Stripe

Live

Restricted key. Revenue, refunds, charges, customers.

Polar, Paddle, Lemon Squeezy, Creem, Dodo

Live

Same revenue series, tagged per provider.

Sitemap, IndexNow, Google Indexing

Live

New URLs leave the sitemap and arrive at the engines.

Telegram and Slack

Live

Uptime alerts on the account, not a third pager.

Ahrefs Domain Rating

Live

Optional badge when you have a key.

Privacy

No third-party cookies. Consent only if you need it.

We do not sell visitor data, do not share it between customers, and do not build a profile across sites. Exclude /admin/* and it never hits the meter.

Cookieless by default

A daily server-side visitor hash. Nothing stored on the device. Fine for most sites that only need analytics.

Banner in the same script

Turn it on per site. Categories, dark and light, no extra request and no layout shift from a second vendor.

Choices stay on the device

Consent is kept in localStorage and is not sent to us. Reset it from the dashboard or analytics.resetConsent().

You stay the controller

For visitor data you are the controller and we are the processor. The DPA is on this site. Export or delete a site any time.

How it works

Live in the time it takes to deploy a tag

No tag manager required. Works on any host: Next, Astro, WordPress, a static file, a government CMS.

01

Add the site

Sign up. Paste the domain. You get a tracking code. First account on a fresh instance is admin; here it is just your account.

02

Drop one script

Under 10kb gzipped, deferred. SPA navigations, sessions, and the consent gate live in that file. Engagement and vitals load only if you turn them on.

03

Operate from one dashboard

Live visitors, search, speed, uptime, revenue, AI. Import GA or Cloudflare if you are coming from somewhere else.

<script
  src="https://dash.ninelytics.com/analytics.js"
  data-tracking-code="YOUR_CODE"
  defer
></script>

Why this, not another counter

GA4 is a warehouse. A privacy clone is a counter. This is the desk.

If you only need page views, plenty of tools will do. If you run sites, you also need search, speed, uptime, and money in the same login.

CapabilityGoogle Analytics 4Privacy analytics onlyNinelytics
Privacy-first page viewsNoYesYes
Real-time + geo mapPartialSometimesYes
Search Console + BingSeparateNoYes
Core Web Vitals (RUM)NoNoYes
Uptime + public statusNoNoYes
Revenue (Stripe and others)NoNoYes
AI chat on your dataNoNoYes
Import GA / CF / PostHog / Fathomn/aRareYes
Sitemap auto-indexingNoNoYes
Starts atYour data$9+$0

Full table on the compare page.

Pricing

Simple plans. The numbers the product enforces.

Every plan starts with a 7-day trial. No card. Web vitals never count as events. Limits are per account, per calendar month in UTC.

Free

$0/ month

Enough to see whether it fits.

10,000 events / month

  • +1 website
  • +1 team member
  • +20 AI messages
  • +30 days of history
Start free

Starter

Most used
$9/ month

For a site that has started to matter.

100,000 events / month

  • +3 websites
  • +2 team members
  • +200 AI messages
  • +180 days of history
Start the trial

Growth

$29/ month

A portfolio of sites and a team.

1,000,000 events / month

  • +20 websites
  • +10 team members
  • +600 AI messages
  • +2 years of history
Start the trial

Scale

$79/ month

The ceilings come off.

5,000,000 events / month

  • +Unlimited websites
  • +Unlimited team members
  • +2,000 AI messages
  • +Unlimited history
Start the trial

On every plan

  • +Real-time dashboard and geo map
  • +AI chat, forecasts, anomalies
  • +Goals, funnels, custom reports
  • +CSV, Excel, JSON export
  • +Core Web Vitals (never billed)
  • +Cookieless mode or consent banner
  • +GA4, Cloudflare, PostHog, Fathom, Umami, Simple Analytics import
  • +Search Console and Bing
  • +Sitemap auto-indexing
  • +Uptime checks and status page
  • +Stripe and other revenue providers
  • +Share links, widgets, API keys

Hit the events cap and collection keeps running for 7 days while the dashboard locks. Data is kept 90 days after an account goes inactive. Paying clears the lock for every site at once.

Questions

The ones worth asking before the tag goes on

What counts as an event?
One accepted tracking request: a page view, a session start, a custom event, or a conversion. Unknown or excluded paths are dropped and cost nothing. Web vitals are never counted. Five fire per page view, so charging for them would inflate every bill by about half for a number you cannot see.
Do I need a cookie banner?
Not for analytics alone. The default is cookieless: a daily server-side visitor hash, nothing stored on the device. Turn on the built-in banner if the rest of the site needs consent for other tools.
What happens when I hit my plan limit?
Collection keeps running for seven days so the chart does not grow a hole. The dashboard locks on day 0. After the grace week, collection stops. Data is kept for 90 days on an inactive account, then deleted. Paying clears the lock for every site at once.
Can I import history from Google Analytics?
Yes. Connect Google, link a GA4 property, and history shows next to live traffic. The same connect covers Search Console. Cloudflare, PostHog, Fathom, Umami, Simple Analytics, and a CSV zip work the same way. Imports never write a day that already has live data.
Is there a free trial?
Every plan starts with a 7-day trial and no card. There is also a free plan with 10,000 events a month if you would rather not decide yet.
Will it slow my site down?
The core script is under 10kb gzipped and loads deferred. Engagement and Speed Insights are separate files and only load when you enable them. Native browser APIs, no extra library on the page.
Can I exclude my own traffic?
Yes. Add path patterns such as /admin/* in site settings. Matching requests are dropped before storage, before the live view, and before they hit the plan.
Whose data is it?
Yours. We do not sell it, do not share it between customers, and do not build a profile across sites. Export whenever you like. Deleting a site deletes what belongs to it.

Ready when you are

Put the tag on.

Free plan to try it. Paid plans from $9. Trial is 7 days, no card.