# SEO Monitoring Dashboard
> A private dashboard that watches backlinks, Google positions, index status and Core Web Vitals across my own sites — built entirely on free Google APIs, with alerts when something moves.
- URL: https://spoko.space/seo-monitoring-dashboard/
- Published: 2026-05-14
- Tags: laravel, filament, mysql, seo, google-api, core-web-vitals
---## At a glance

This one is not a client project and not a product you can sign up for. It runs for my own sites and a handful of people close to me, and it exists because the alternative was paying a monthly subscription for numbers Google already gives away.

## The problem

Search visibility fails slowly and quietly. A backlink you paid for or earned goes dead when someone redesigns their site. A page drops out of the index after a template change. Your average position slides two places a week for a month, which is nothing on any given day and a lot by the end. Core Web Vitals degrade because a plugin update shipped a heavier script.

None of that announces itself. You notice when traffic is already down and then spend an afternoon working out when it started — and usually you cannot, because nobody was writing the numbers down.

Commercial tools solve this and charge per month per project for it. That is fair for an agency running fifty clients. It is a poor deal when you want to watch a handful of your own sites and the underlying data is free.

## What it watches

## The interesting part: it all runs on free quotas

The reason a tool like this can exist without a subscription is that Google publishes the data through its own APIs, at no cost, to anyone willing to build the plumbing.

25 000 calls a day</strong>, per project; a sync spends five to fifteen.' },
    { term: 'Search Console — URL Inspection', detail: 'Whether a specific URL is indexed and why. <strong>2 000 a day</strong> per property; the scheduler spends fifty per run on the top pages.' },
    { term: 'PageSpeed Insights', detail: 'Lab Core Web Vitals plus performance, accessibility, SEO and best-practice scores. <strong>25 000 a day</strong>; two calls per site, mobile and desktop.' },
    { term: 'Chrome UX Report', detail: 'Field data — what Chrome users actually experienced, per origin and per URL. <strong>150 a minute</strong>, no daily cap.' },
  ]}
/>

Those numbers are the whole design constraint. They are generous enough that the system would carry roughly 1 500 projects before Search Console became the limit — which is far more than it will ever need, and the reason nothing here is rationed or paywalled internally.

What you do not get for free is the part that makes it useful: something that calls those APIs on a schedule, keeps the answers, compares today against last week, and tells you when the comparison is bad. That is the product.

## How it stays current

Everything heavier than a single HTTP call goes through a queue rather than the scheduler itself, so a slow crawl or a rate-limited API never holds up the rest of the run.

## My role

All of it. The project is mine end to end: the data model — twenty-five tables, most of them history rather than current state — the OAuth flow against Search Console, the three Google API clients, the scheduler and queue workers, the Filament panel, the charts and the alerting rules. Ninety-eight commits over about three and a half weeks in April 2026.

## Result

## Technologies