Running a small portfolio of websites creates a deceptively repetitive analytics workflow. I would open Google Analytics to check traffic, move to Search Console for impressions and queries, then open Bing Webmaster Tools for another view of search performance. Then I would repeat that process for the next site.
None of those products are bad. The problem was the space between them. It took too much tab switching to build a useful picture of what was happening, and that made regular reviews slower than they needed to be.
So I built Site Analytics Tool, a self-hosted control center that brings Google Analytics 4, Google Search Console, and Bing Webmaster Tools into one private portfolio view.
Explore the project · View the public demo · Browse the source
One review, too many tabs
The old workflow was fragmented by design:
- Google Analytics is useful for traffic and engagement, but a review is focused on one property at a time.
- Search Console has its own view of queries, clicks, impressions, and pages.
- Bing Webmaster Tools is another separate place to check visibility and site performance.
That becomes a problem when the question is not simply “How did one site do?” but “Which site needs attention, and why?” A traffic change might be a search issue, a content issue, a stale data feed, or nothing important at all. Seeing the signals in isolation makes that judgment slower.
I wanted a single place to start the review, identify the outliers, and then drill into the site or source that needed attention.
A portfolio view first
The home screen is designed around the decisions I make during a regular review: what moved, what needs attention, and whether the data is current.

It combines portfolio-level traffic and search KPIs with top movers, anomaly signals, action items, and data-coverage warnings. The goal is not to recreate every report from the source products. It is to surface the useful signals first, then make it easy to investigate.
Built for the way I actually work
This is intentionally not a multi-tenant SaaS product. It is a self-hosted tool for a solo publisher or a small portfolio operator.
There is no public signup, billing flow, organization workspace, or role-management screen. That keeps the product focused on the practical job: connecting the sites I own, reviewing their performance, and deciding what to work on next.
Each site has its own integration status, so it is clear whether Google Analytics, Search Console, and Bing are connected and healthy.

The site view also makes it possible to inspect performance at the source level, including Search Console queries and pages, instead of relying only on a portfolio summary.
Reliable data matters as much as charts
A dashboard is only useful when you can trust that its data is current. The tool supports scheduled daily syncs and manual per-site syncs, then keeps a visible history of what happened.

I added stale-data detection, integration health, sanitized error messages, and data-coverage indicators because an empty chart can mean many things. It might be a genuine traffic drop, a missing integration, a failed sync, or a source that has not reported yet. Those are very different problems, and the interface should make that distinction visible.
Private by design
The dashboard contains real performance data, so security and privacy are part of the product rather than an afterthought. It uses an allowlisted admin account and requires TOTP multi-factor authentication before dashboard data can be read.
There is also a privacy mode for screen sharing. It masks site names, domains, account details, and timestamps, which makes it possible to discuss the product or share screenshots without exposing the portfolio behind it.
The public demo uses synthetic data only. It shows the product experience without reading from the private production setup.
From dashboard to report
Some reviews need to leave the browser. Site Analytics Tool can export data as CSV or ZIP files and generate a PDF performance report for a selected site and period.

That makes it easier to keep a record of progress, review results later, or share a focused update without manually assembling screenshots from several dashboards.
How it is put together
The frontend is built with React and TypeScript, hosted as a static application. Supabase provides authentication, Postgres, Row Level Security, Edge Functions, and scheduled jobs. The sync functions pull read-only data from Google Analytics 4, Google Search Console, and Bing Webmaster Tools.
That setup keeps the browser focused on presenting the data while credentials and provider calls stay on the server side. It also makes the tool portable: it can run in a project I control instead of depending on a new hosted analytics service.
What I am learning from using it
The main lesson so far is that analytics becomes more useful when it starts with a decision, not a dashboard. I do not need more charts for their own sake. I need a fast way to answer which site changed, what may have caused it, and what deserves attention next.
Site Analytics Tool is still evolving through day-to-day use, but it already turns a scattered review process into one focused workspace. If you want to see it in action, try the public demo or explore the repository.
View the public demo · Explore the project · Browse the source
