Change detection

How Numative records every page change: the snippet fingerprint, instant pings, crawling, sitemap polling and chart markers.

Numative keeps a timeline of every change on your site so traffic movement can be attributed to something concrete: an edited title, a republished post, a new backlink, a Google update. Three detection layers feed that timeline. The first two need no setup beyond the tracking snippet; the third catches everything the first two miss.

Layer 1: the snippet fingerprint

Once per path per session, the tracking snippet computes a tiny fingerprint of the page's own content: the title, the meta description, the first H1, and the body text length bucketed to the nearest 200 characters, hashed with FNV-1a. It is sent to /api/page-signal during browser idle time, so it never competes with your page, and it is not billed as an analytics event.

The server compares the fingerprint to the last one it saw for that path. A mismatch means the page changed since the last crawl, and a targeted recrawl of just that page is queued immediately. The result: any edit to a page that gets traffic is detected on the first visit after it ships, on any platform, with no webhooks or plugins.

  • A path Numative has never tracked that receives real traffic is probed; it only becomes a tracked page when it responds with a status below 400, so 404s stay out.
  • A 15-minute cooldown after each snapshot and a cap of 30 triggered snapshots per site per hour keep per-visitor dynamic content (greetings, related-post widgets) from causing churn.
  • The fingerprint contains no visitor data. See Privacy & data.

Layer 2: exact-time pings

When your CMS or deploy pipeline tells Numative the moment something was published, the change lands on the timeline with an exact timestamp instead of a detection time.

WordPress

The Numative Analytics plugin pings on publish, update, and unpublish with one checkbox. Nothing else to configure.

Any other stack

Call POST /api/v1/ping from a publish or deploy hook with a write-scoped API key (created under Account > API). The body is a single absolute url; its hostname must belong to one of your organization's sites (the site's domain, a subdomain of it, or a configured allowed host). The endpoint is limited to 60 requests per minute per key.

Ping a page after publishingbash
curl -X POST "https://app.numative.com/api/v1/ping" \
  -H "Authorization: Bearer nmv_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/blog/new-post"}'

# 200 OK
# {"accepted": true, "path": "/blog/new-post"}

Layer 3: sitemap polling and the sampling crawl

  • Hourly sitemap delta polling. Every hour, each site's sitemap files are conditionally fetched and hashed; only files that changed are parsed. New URLs get a launch date (first seen), removed URLs are recorded, and this stays cheap at any site size.
  • Sampling crawl every 6 hours. A scheduled crawl spends a per-plan page budget (500, 2,500, or 10,000 pages per cycle on Starter, Growth, and Scale) on top-traffic pages, per-template samples, and a rotating long-tail cursor, so even very large sites get structural coverage over time. It also monitors robots.txt and flags changed Disallow rules.

This layer catches what traffic-driven detection cannot: zero-traffic pages, template-level changes, and removals.

What gets snapshotted and diffed

Each crawl extracts a snapshot and diffs it against the previous one. A change record describes exactly what moved:

SignalChange recorded
TitleTitle changed (old and new value)
Meta descriptionMeta description changed
H1 headingH1 heading changed
Word countContent updated, with the word count delta
Robots noindexnoindex added or removed (the highest-impact signal tracked)
Canonical URLCanonical URL changed
Open Graph tagsOG title, description, or image changed
Structured dataJSON-LD types added or removed
HTTP statusStatus code changed (e.g. 200 to 404)
RedirectsRedirect added, removed, or target changed
Content hashA hash over the page content; when it moves and nothing above did, a generic update is recorded

Alongside page diffs, the crawler fingerprints the site's technology: the platform (WordPress, Shopify, Next.js, Wix, Squarespace, Webflow, Ghost), the generator meta tag, and server headers. When the signature changes, a site-level change is recorded, so a migration or replatform shows up on the timeline too.

Chart markers

Detected changes and related events are overlaid on the traffic chart as colored markers, each group with its own toggle:

ColorMarker group
AmberDetected page and site changes
Sky blueBacklink gains and losses
EmeraldYour annotations (deploys, campaigns, notes)
RoseReferral traffic spikes (hover for the source)
VioletConfirmed Google algorithm updates

Annotations are the manual layer: mark a deploy, a campaign, an email send, a content push, or a plain note from the chart itself, or create them from CI with POST /api/v1/annotations (see the Stats API).

The spike hunter

Every 3 hours, Numative looks for referral spikes and tries to find the exact page that sent the traffic. A referrer domain counts as a spike when its last-24-hour visits clear an absolute floor (50 visits by default) and reach at least 3 times its trailing 14-day daily average; a domain never seen before spikes on the floor alone. Search engines are excluded, since organic traffic grows gradually rather than in attributable bursts.

For each spike, the hunter first checks stored full referrer URLs (many platforms send the exact page). If the referrer was stripped to its origin, it searches Hacker News, Reddit, YouTube, Google, and X for the thread, video, or post that matches the timing and landing pages. A found source is pinned to the chart as a rose marker with a link to the exact page. At most 5 new spikes are hunted per site per run.

Google algorithm updates

Numative ships a hand-maintained, append-only list of Google ranking updates confirmed on the Google Search Status Dashboard, covering core, spam, helpful content, and reviews updates from January 2023 onward. They appear as violet markers on every site's chart, so a traffic shift that coincides with an update is not misattributed to your own changes.

Very recent Google updates can lag the list briefly: entries are added by hand when Google confirms them, not scraped.