← Statpro dev log

2026-10-24

The bug where working pages linked to a 404

webseodata

Flat editorial illustration of one amber URL arrow pointing at a glowing page while several gray arrows point at a broken 404 stub

Googlebot kept hitting a 404 on StatPro, and the pages doing the pointing were all fine. The pattern: a player's market page would render correctly, link up to their prop hub, and the hub would 404. Both pages drew from the same database. It took a while to see why one of them lied.

Two definitions of "has data"

The market pages and the hub answered slightly different questions. A market page renders whenever the player has any recorded line for that market, whenever it was posted. The hub filtered differently: it listed markets with a line posted in the last 60 days. For most players the two answers match. For a few, they didn't. Take a pitcher whose last posted line was 90 days ago: his market page is alive and indexed, its link points at a hub that filtered him out. A broken link, generated by our own pages, on a schedule.

The hub now asks the question the market pages ask: every recorded market, newest first, same cap as before. The mismatch is gone at the source.

When 404 is the right answer

Some of those URLs belong to players who've moved on, and we don't pretend otherwise. A retired player's prop URL keeps returning 404, which is what Google's guidance suggests. But the 404 itself used to be a dead end. Now it names the player, links their stats page and the league props board, and for unknown names it just offers the board. Same status code, much better next step for whoever hit it, human or crawler.

Then we told Bing ourselves

The 7-day window on this work also covers the rest of the discoverability push: player prop directories per league, descriptive titles on standings pages, and an IndexNow key file so we can submit new pages to search engines directly instead of waiting for a crawl. Small plumbing, all of it in service of the same goal: the pages that exist should be findable, and the pages that shouldn't exist shouldn't pretend to.

this is the build log of statpro · statpro.io · all entries · essays