Content Updates
Track when pages are published or refreshed across your workflows, Grid exports, API, and MCP. Audit content updates without manually refreshing pages.
Open Insights → Onsite → Content Updates to review your content publishing activity. Every time a page is published or refreshed through AirOps, the update is recorded and surfaced here, whether it was made via MCP, API, or a workflow step. Use this history to measure output, correlate content changes with visibility outcomes like citations and clicks, and identify pages that need a refresh.
Content updates are captured automatically when you use native CMS integration steps in workflows or Grid exports. For custom integrations (Code steps, API calls), you can log content updates explicitly using the Track Content Update workflow step, the Content Updates API, or the track_aeo_page_content_update MCP tool.
If Automated Change Detection is enabled for your workspace, every content update you log also triggers a fresh page capture so the diff in the page detail's Changes table stays current. Detected changes flow back into this feed as Page Refreshed content updates tagged as auto-detected.
How Content Updates Are Captured
A weekly capture of every enrolled page records a Page Refreshed content update when a meaningful change is detected, no CMS integration required
None (early access)
Native CMS step (workflow)
Automatically detected when a supported CMS step creates or updates content
None
Grid export
Automatically detected when exporting rows to a supported CMS via Grid
None
Track Content Update step
Manually added to a workflow to record a content update
Add step and configure URL + type
MCP
The track_aeo_page_content_update tool records content updates from any MCP client
Call the tool with URL and type
POST /public_api/brand_kits/{brand_kit_id}/content_updates creates content updates programmatically
Send API request
Automatic Detection from CMS Integrations
When a workflow uses a native CMS step to create or update content, AirOps captures the content update automatically. The system resolves the page URL from the CMS API response and determines whether the action was a publish or refresh.
Supported integrations in workflows
Webflow
Create collection item
Update collection item
WordPress
Create post
Update post
Shopify
Create article, Create collection
Update product, Update collection
Ghost
Create post, Publish post
Update post
Supported integrations in Grid exports
Webflow
New row export
Existing row update
WordPress
New row export
Existing row update
Only the integrations listed above support automatic detection. Other CMS integrations (Builder.io, ContentStack, Contentful, Craft CMS, Framer, HubSpot CMS, Sanity, Strapi, Storyblok) do not track content updates automatically. For workflows that publish content through these or any unsupported integration, add a Track Content Update step after the CMS step to record the content update manually.
Types
Page Published
A new page was created and published
Page Refreshed
An existing page had its content updated
Brand Kit Association
Every content update requires the page URL to match a domain configured in your workspace's Brand Kit. AirOps checks the URL domain against all Brand Kit domains and brand URLs automatically. No manual Brand Kit selection is needed.
A page URL can match more than one Brand Kit. If your workspace has multiple Brand Kits on the same domain (for example, regional or archived variants), a separate content update is recorded for each matching Brand Kit.
When Brand Kits use path-specific brand URLs, such as locale subpaths like example.com/es/, content updates route to the most specific matching Brand Kit. A URL under example.com/es/… is recorded against the /es/ Brand Kit, while a URL that isn't under any path-specific Brand Kit is recorded against the domain-level Brand Kit(s).
If no match is found, automatic detection silently skips the content update. Manual sources (Track Content Update step, API, MCP) return an error so you can correct the URL.
Content Updates Dashboard
Insights → Onsite → Content Updates has two main views:
Updates Over Time
A line chart with daily counts of publish and refresh content updates over the selected date range. Each type has its own line, so you can see publishing velocity and refresh cadence at a glance.
Content Updates History
A sortable, filterable table with the following columns:
Type
Page Published or Page Refreshed
Source
Where the content update originated (workflow, grid, api, mcp)
URL
The page URL associated with the content update
Date
When the content update was recorded
Metadata
Key-value pairs with additional context
Bulk selection and deletion are supported for cleanup.
Content Updates in the Page Detail View
When viewing a page's detail view, a Related Content Updates card appears at the bottom showing all content updates whose URL matches that page. This gives you a timeline of every publish and refresh for that specific page, with columns for type, source, date, and metadata.
Last Refreshed and Stale Pages
The Pages table includes a Last Refreshed column showing how long ago the most recent content update was recorded for each page (for example, "6 months ago"). This column is only visible while a stale pages filter is active.
Use the Stale Pages smart filter to surface pages whose most recent content update is older than 6 months. Additional filter presets are available: over 1 month, 3 months, 6 months, and 1 year. Pages with no content update record are not included in the filtered results. Pair the Stale Pages filter with Refresh Opportunities to prioritize which pages to refresh first based on visibility impact.
Content Update Metadata
Each content update can carry metadata, which are key-value pairs providing additional context about the content update.
System metadata
Automatically attached to every content update:
airops_app_id
The workflow ID that generated the content update
airops_app_type
The type of AirOps app (e.g., workflow)
airops_execution_id
The workflow execution ID
airops_integration_page_status
The page status reported by the CMS (e.g., published, draft)
airops_grid_table_id
The Grid table ID (for Grid export content updates)
Custom attributes
You can add your own key-value pairs (up to 20 per content update) when using the Track Content Update step, API, or MCP. In the Track Content Update step, both keys and values support Liquid templating.
Programmatic Access
Create, list, and retrieve content updates programmatically using the Content Updates API. Content updates created via the API have source api. The URL must match a Brand Kit domain in your workspace.
The track_aeo_page_content_update and list_aeo_page_content_updates MCP tools provide the same capabilities from any MCP-compatible client.
Last updated
Was this helpful?