Automated Change Detection
Detect meaningful changes on your enrolled pages automatically - title rewrites, schema additions, structural updates, and more - without instrumenting your CMS.
Automated Change Detection captures meaningful changes to your enrolled pages on a recurring schedule, even when AirOps wasn't in the write path. Detected changes flow into the Content Updates feed and surface as a category-tagged before/after diff in each page's detail view - so you can connect what changed on a page with how its performance moved.
Early access - Automated Change Detection is currently available to a limited set of workspaces. Reach out to your AirOps contact if you'd like access.
How It Works
AirOps fetches every page in your Pages view once a week, compares the new capture against the last successful one, and records a Page Refreshed content update when the diff is meaningful. The diff is what powers the Changes table in the page detail view.
The check is bidirectional with Content Updates:
Logging a Content Update triggers a fresh capture. Every time you record a publish or refresh through a workflow, the API, or MCP, AirOps captures the page immediately so the diff in the Changes table stays current. This is one of the reasons to keep logging Content Updates even after Automated Change Detection is enabled.
Detected changes are written back as Content Updates. When the weekly check finds a meaningful change, AirOps records a
Page Refreshedcontent update tagged as auto-detected. These appear in the Content Updates feed alongside the ones you log.
What We Track
Every detected change is classified into one of five categories. A single content update can carry multiple categories at once - for example, a blog refresh that rewrites the H1, updates the meta description, and adds a FAQ JSON-LD block tags as Headings + Metadata + Schema.
Schema
Structured data (JSON-LD) that helps AI agents and search crawlers parse your page's meaning, entities, and relationships. A Schema change means a JSON-LD block was added, removed, or modified - for example a FAQPage, Product, BreadcrumbList, or Article block.
Metadata
Page-level signals that influence how search engines and AI tools summarize, route to, and classify your page.
Tracked fields: title tag, meta description, canonical URL, robots meta, Open Graph type, hreflang.
Headings
The page's topical hierarchy - what AI agents and skimmers use to understand the topic and the structure of the answer.
Tracked fields: H1 through H6, plus two synthetic roles: hero heading (prominent display copy at the top of the page, read like an H1) and tagline (supporting display copy that frames the main heading).
Content
Broad body-copy drift. Detected when the prose has substantially shifted, when content blocks have been rearranged across the page, or when the overall content fingerprint has moved beyond noise. Content changes are detected at the body level rather than per-field, so this category surfaces as a tag without a renderable diff - it signals that the body of the page meaningfully changed without pinning the change to a specific line.
Structure
How the page is wired and laid out: the internal-link graph, the page skeleton, and listings (enumerated regions like product cards, blog post lists, or related-items widgets).
Tracked fields: internal links, listings, page skeleton.
What We Filter Out
Not every detected diff becomes a content update. AirOps suppresses changes that don't represent real editorial work:
Rotation - a small set of items cycling in and out of a fixed-size list (recently-viewed widgets, randomized testimonials).
Volatile values - fields known to drift on every fetch (build hashes embedded in canonical URLs, session IDs, timestamps).
Templated tail-section noise - for example, the "Related articles" widget at the bottom of every post being rotated by the CMS when the rest of the page didn't move.
Redirected captures - when a page now redirects elsewhere (often to the brand homepage). The whole "diff" is real but doesn't represent a page edit, so the change is treated as a status event rather than an editorial change.
These filters keep the Changes table focused on actual editorial work, not crawler-detected jitter.
Viewing Detected Changes
Content Updates tab
Auto-detected changes show up in the Content Updates feed alongside the ones you log. The Source column identifies them, and the Type is Page Refreshed. Filter, sort, and bulk-delete from there just like any other content update.
Page detail view - Changes table
The page detail view includes a Changes table that lists every detected change for that page in reverse chronological order. Each row is tagged with one or more categories (Schema, Metadata, Headings, Content, Structure) and expands into a before/after view:
Scalar fields (title, meta description, canonical URL, individual headings, hero, tagline, OG type, robots meta)
List fields (internal links, hreflang, listing items)
JSON-LD blocks
Anti-bot challenges
If anti-bot protection on your site is blocking AirOps from capturing your pages, a banner may appear on the Content Updates dashboard.
This is typically caused by Cloudflare Managed Challenge, Cloudflare Bot Fight Mode, or a similar WAF rule that returns a challenge interstitial to our fetcher instead of the page.
To fix it, allowlist AirOps in your WAF. AirOps identifies itself with this User-Agent on every page-change capture:
Have your security team add a WAF rule that skips Managed Challenge, Bot Fight Mode, and Browser Integrity Check for requests carrying that User-Agent. If your team needs egress IP details for a stricter allowlist, contact AirOps support.
If anti-bot interstitials persist across multiple consecutive captures, the affected pages are paused and drop out of the auto-detection feed until the block is resolved.
Last updated
Was this helpful?