Content MonitorEnterprise
Broken-link tools tell you what's broken. Content Monitor tells you what's missing.
Tell PerfBee which elements each page type should carry, from energy labels to the Documents tab. Each scan with Content Monitor on checks every page and shows where they are missing, empty or hidden.
Compare plansProduct detail · 1,860 pagescatalog.example/products/*
| Element | Coverage · all pages | /products/washer-wm-8120 | /products/fridge-rf-5410 | /products/oven-bo-2260 | /products/dishwasher-dw-6300 |
|---|---|---|---|---|---|
| Energy labelCSS selector | 1,860 / 1,860100% | Present | Present | Present | Present |
| User manualAttribute | 1,844 / 1,86099% | Present | Present | Present, hidden | Present |
| Documents tabRule · must exist | 1,620 / 1,86087%−240 since last scan | Absent | Absent | Present | Absent |
| Spec tableContent check | 1,798 / 1,86097% | Present | Present | Present | Present, empty |
| Review widgetIframe src · needs JS | Not evaluated · needs JS rendering | Not evaluated | Not evaluated | Not evaluated | Not evaluated |
- Present
- Present, empty
- Present, hidden
- Absent
- Not evaluated (needs JS)
The review widget is drawn by JavaScript, and this scan did not render it, so it was not evaluated.
Content doesn't break. It disappears.
Nothing returns an error when a block goes missing. Status codes stay green, links still resolve, and the gap ships.
- Template refactor
A refactor drops a block
A new product template ships without the Documents tab component. Nobody removed it on purpose.
- CMS migration
A field comes back empty
After a migration the spec table still renders. There is nothing in it.
- Third-party widget
A widget stops loading
The review provider changes its embed. The frame on every product page stays blank.
Every page returns 200. Every link works. And the Documents tab is gone from 240 product pages.
Four steps. Then it runs with your scans.
Set it up once per site. After that, every crawl you turn it on for checks your elements too.
Define page types
Say where elements are required: URL patterns to include or exclude, a DOM marker only that template has, or both. PerfBee suggests page types from your URL folders and previews the matching URLs.
Define elements
Name the element, pick its page type and add up to 20 match strategies, in order. The first one that matches wins.
Test it on a live URL
Before you save, PerfBee fetches a live page twice, plain and rendered, and tells you which scans can find the element.
It runs with your scans
Checks run inside the crawl that already fetches each page, manual or scheduled, as often as daily. No separate job and no extra page loads.
One element. Three ways to find it.
Templates change. With a strategy chain, a renamed ID falls back to the next strategy instead of reporting the element as gone.
Checked on Product detail pages only (1,860). A page without it is a violation.
- 1CSS selector
#pdp-documentsNo match - 2Text contains“Documents” inside
.pdp-tabsMatched - 3Attribute equals
data-tab="documents"Not needed
On /products/oven-bo-2260 the ID was renamed. Strategy 2 still found the tab.
Count a[href$=".pdf"] inside the elementmin 1max none
Scope and mode
An element belongs to one page type or to all pages. In Rule mode it must exist, or must not exist. In Inventory mode it only measures coverage.
Strategy chain
Up to 20 strategies, tried in order. When a class or ID changes, the next strategy picks the element up.
Content check
Optional. Count a selector inside the element, with a minimum and a maximum. Outside that range the page reads Present, empty.
Present is not a yes or no.
Each page gets one status per element. An element can be on the page and still not do its job.
- Present
- A strategy found it, and it has content.
- Spec table · 14 rows, min 8
- Present, empty
- Found, but it has no text or media in it, or the content check is out of range.
- Spec table · 0 rows, min 8
- Present, hidden
- In the HTML, but hidden by the hidden attribute, aria-hidden or an inline style. Hiding done in a CSS file is not seen.
- User manual link · style="display:none"
- Absent
- No strategy in the chain matched.
- Documents tab · /products/washer-wm-8120
- Not evaluated (needs JS)
- The element only appears after JavaScript runs, and this scan did not render JavaScript. It is left out of coverage.
- Review widget · scan without rendering
Measure first. Enforce what matters.
Each element runs in one of two modes. Inventory tells you where you stand. Rule tells you what broke.
Coverage, and nothing else
Measures how many pages in scope carry the element. It raises no violations.
- Present1,712
- Absent148
No violations raised.
Must exist, or must not exist
A page that breaks the rule is a violation, listed with its URL.
12 violationsFound on live product pages
- /products/washer-wm-9140
- /products/washer-wm-9160
- /products/dryer-td-7100
- /products/dryer-td-7120
- /products/fridge-rf-6620
- /products/fridge-rf-6640
- /products/oven-bo-3380
- /products/hob-ih-6420
- /products/hood-ch-9060
- /products/dishwasher-dw-7410
- /products/dishwasher-dw-7430
- /products/freezer-fz-2210
Common elements, and the strategy that fits.
Examples from product catalogs. Each one pairs an element with the strategy that finds it most reliably.
Energy label
CSS selector.energy-labelRequired on many appliance pages.
User manual
Attribute containshref contains ".pdf"The link has to point at a real PDF.
Review widget
Iframe src*/reviews/embed*Third-party frames that can stop loading.
Product schema
Schema @typeProductStructured data your templates emit.
Spec table
Content checktr · min 8Present with fewer rows reads as empty.
“Coming soon”
Rule · must not existtext "Coming soon"Placeholders that should never go live.
Warranty block
Text contains"warranty" in .pdp-infoCopy that lives in a shared CMS block.
Documents tab
Attribute equalsdata-tab="documents"Survives a renamed class or ID.
See what changed since the last scan.
Each Content Monitor scan is compared with the previous one for the same site. When pages lose an element, the people on that schedule hear about it.
| Element | Coverage | Lost | Gained |
|---|---|---|---|
| Energy label | 100% | 0 | 0 |
| User manual | 99% | 0 | 0 |
| Documents tab | 100% → 87% | 240 | 0 |
| Spec table | 97% | 0 | 0 |
| Review widget | Not evaluated | — | — |
- /products/washer-wm-8120Absent
- /products/fridge-rf-5410Absent
- /products/dishwasher-dw-6300Absent
When it fires
After a scheduled scan, when at least 5 pages lost an element or rule violations went up.Who gets it
The schedule's notification list by email, plus an in-app notification.No repeats
The same regression is not sent again on later scans.Export
The page × element matrix, with status filters, as CSV or Excel.
For sites built from templates, at scale.
If thousands of your pages come from a handful of templates, one change can reach all of them.
- E-commerce
Large catalogs
Thousands of product pages from a few templates. One refactor can touch every one of them.
- Compliance
Manufacturers
Energy labels, user manuals and declarations are often legal requirements. Know which pages lack them.
- Groups
Multi-brand groups
Several brand sites on shared templates. Set up the elements for each site and compare coverage across brands.
- Media
Publishers
Author blocks, article schema and disclosures across a large archive.
AgenciesRun it on a client's catalog and hand over the CSV or Excel export with your report.
Included in Enterprise
- CSV & Excelexport
- 120 daysdata retention
- Unlimitedschedules, as often as daily
- Unlimitedteam members
What is Content Monitor?
An Enterprise feature of PerfBee that checks whether the elements your pages should carry are on them. It runs on every page in scope during the site crawls you turn it on for, and reports a status per page and element.
How is it different from a broken-link checker?
A broken-link checker finds links that fail. Content Monitor finds elements that are no longer there, on pages that return 200 and whose links all work.
How do I define an element?
Give it a name, choose its page type and add up to 20 match strategies in order: CSS selector, text contains, attribute, iframe src pattern or schema @type. Then test it on a live URL before you save.
Will it flag pages that never had the element?
It only checks pages in the element's page type. Inventory mode raises no violations. A must-exist rule lists every page in scope without the element, whether or not it had it before. Drift alerts compare with the previous scan, so they only fire when pages lose an element.
Does it add load to my site?
No extra page loads. The checks run inside the crawl that already fetches each page. JavaScript rendering is optional, for elements a script injects.
When do I get an alert?
After a scheduled scan, when at least 5 pages lost an element or rule violations went up. The email goes to that schedule's notification list with the first pages that lost it and a link to the report, and the alert also shows in the app. The same regression is not sent again.
Which plan includes it?
Content Monitor is part of the Enterprise plan, which we set up with each customer. Tell us about your catalog and the elements every page must have.
Works alongside Content Monitor.
- Site Crawler
Broken links, redirect chains, status codes and indexability on every page.
Explore Site Crawler - Performance Boost
Performance tests on mobile and desktop, with suggested fixes for your team to review.
Explore Performance Boost - Real User Monitoring
Core Web Vitals from real visitors, collected with one script tag.
Explore Real User Monitoring - Critical CSS
The CSS your first screen needs, so pages render sooner.
Explore Critical CSS
Find out what your templates stopped rendering.
Tell us about your catalog. We'll go through your page types and elements with you.