- Home
- Monitoring
- Web change detection
Web change detection: be told when a page or file changes
Tenium fetches a page, reduces it to visible text, hashes it and raises an alert when the hash changes. Point it at a price list, a terms page, a competitor or your own home page.
- From $7 a month on Starter
- Free plan: 30 monitors for HTTP(S), keyword, ping and port
- No credit card for Free
- Amsterdam97msunchanged
- London142msunchanged
- Fingerprinta41f9c…
- Compared withbaseline 3 days ago
- Fetched in55 ms
Illustrative example
Check it now, in your browser
No account. Web change detection: type a target and see roughly what it looks at. Nothing you type is stored.
One real request from a Tenium checker. It follows redirects and reads the certificate. Nothing is saved.
The public test shows whether the page answers. The text fingerprint needs a saved monitor to remember the baseline.
What a web change detection monitor looks at
Text fingerprint
Scripts, styles, comments and tags are stripped, and the remaining text is hashed. Markup-only edits do not trigger.
Watch one section
Narrow the check with a simple selector (#id, .class, tag, tag#id or tag.class). If the element disappears, the check fails.
Baseline and one alert
The first run stores the baseline. After a change you get one alert and the new text becomes the baseline.
Context in the alert
The alert carries the first 600 characters of the new text and the previous hash, so you can judge the change quickly.
Web change detection: what an alert looks like
The same event arrives as an e-mail, a Telegram message or a Slack card. This is the wording the channels send; the host, times and numbers are made up.
clienta.com/terms
clienta.com/terms · Content changed since the last check
| Error | Content changed since the last check |
|---|---|
| Since | 14:02:11 UTC |
| Target | https://clienta.com/terms |
| Next step | Open the monitor to review what changed on the page. |
AcknowledgeOpen incident
Tenium · checked from Amsterdam · 14:02 UTC
Tenium alerts
🟠 CHANGED · clienta.com/terms · Content changed since the last check
open
TTenium APP 2:02 PM
CHANGED · clienta.com/terms
clienta.com/terms · Content changed since the last check
- Error: Content changed since the last check
- Target: https://clienta.com/terms
AcknowledgeOpen incident
Open the monitor to review what changed on the page. · checked from Amsterdam
Web change detection: e-mail, Discord and Google Chat work on every plan; Slack, Telegram, Teams and Mattermost start on Starter. There are no SMS or voice-call alerts.
Response time with a threshold
Every check stores how long the response took. Web change detection: drag the threshold and see when a slow-response alert would have fired.
How fast you find out
Pick a plan to see its check interval and how long a failure takes to reach you, including the confirmation round.
Web change detection: a failure lands at a random moment between two checks, so on average you wait half an interval, and the worst case is a whole interval plus the confirmation window. A single failing region is not enough: all two regions must agree before an incident opens. The other regions are asked straight away, and we allow up to 60 seconds for the answers.
How to set up web change detection in 30 seconds
Enter the target
Add the page or file URL, choose the Change type, and Tenium fills in a sensible timeout and default confirmation settings.
Pick an interval
Fastest check interval: 30 s on Pro and Agency, 1 min on Starter, 5 min on Free. Slower intervals are available on every plan.
Optionally add a selector
Choose who is told. Email, Discord and Google Chat work on every plan, Slack, Telegram, Teams and Mattermost start on Starter, webhooks on Pro.
Save
The first check runs within seconds. If a check ever fails, other regions re-check it before an incident opens, so one bad route does not page you.
What each error means
This is the text an incident shows in its Error line, the usual cause, and the first thing to look at.
CHANGEDContent changed since the last check
The visible text hash differs. One alert goes out and the new text becomes the baseline. The alert carries the first 600 characters.
Shown as: Content changed since the last check
SELECTORSelector "#price-table" not found
The element you watch disappeared: a redesign, a renamed id, or a page error. Fix the selector or the page.
Shown as: Selector "#price-table" not found
HTTP 404404 Not Found
The URL no longer exists, which is itself a change worth knowing about.
Shown as: 404 Not Found
TIMEOUTTimeout after 30 s
The page was not fetched, so nothing was compared.
Shown as: Timeout after 30 s
Web change detection by plan
| Free $0/mo | Starter $7/mo | Pro $29/mo | Agency $59/mo | |
|---|---|---|---|---|
| Available | — | ✓ | ✓ | ✓ |
| Monitors | 30 | 100 | 300 | 1000 |
| Fastest interval | 5 min | 1 min | 30 s | 30 s |
| Regions | 1 | 2 | 2 | 2 |
| Custom headers | — | — | ✓ | ✓ |
| Response-time alerts | — | — | ✓ | ✓ |
| Escalation to a second contact | — | — | ✓ | ✓ |
| Status pages | 1 | 3 | 10 | Unlimited |
This check starts on the Starter plan. HTTP(S), keyword, ping and port checks are on every plan.
Other monitor types
What gets compared
A change monitor fetches the page like a website check, removes scripts, style blocks, HTML comments and tags, collapses whitespace, and takes a SHA-256 hash of the remaining text. The first run stores that hash as the baseline and reports "first run" in its details. On every later run the new hash is compared with the stored one. If they differ, Tenium opens a "Content changed" incident, shows the monitor as degraded rather than down, includes the first 600 characters of the new text, and promotes the new hash to be the baseline. The next unchanged check closes the incident automatically.
So the behaviour is one alert per change, not a continuous complaint until you acknowledge. There is no side-by-side visual diff; you get an excerpt, the old and new fingerprints, and the page itself one click away. It is a tripwire, not a review tool.
Narrowing the watch with a selector
Whole pages change for many harmless reasons, so the optional selector field limits the comparison to one element. The grammar is intentionally tiny: #id, .class, a tag name, or a combination of tag with id or class, such as table.prices, section#plans or main. Nested selectors with spaces, attribute selectors and positional pseudo-classes are not supported, even though the editor's placeholder shows a longer example. If your element is deep in the page, give a container an id and select that.
If the element is not found, the check fails with 'Selector "#plans" not found' and an ordinary down incident opens. That is often exactly what you want when a redesign silently removes the pricing table, but be ready for it after planned template changes.
Taming noisy pages
A monitor that fires every hour is worthless, so look for volatile content before you commit. The usual noise comes from timestamps and "last updated" lines, CSRF tokens in hidden text, visitor counters, rotating testimonials and banners, cookie-consent text, and A/B tests. Remedies: select the stable block, monitor a plain-text or JSON URL instead of the styled page, or choose a different representation of the same data such as a feed. JSON and text files work well because there are no tags to strip; the hash covers the whole body.
The reverse limitation applies as well: only server-rendered text is visible. A price table filled in by JavaScript after load is invisible, so find the API or JSON file the page reads and watch that.
Good uses
Pages that should change rarely, and where a change matters:
- A supplier's price list, a shipping carrier's rates page, or a vendor's terms and privacy policy, so you hear about changes before an invoice does.
- Your own robots.txt: a staging rule like "Disallow: /" slipping into production can quietly remove a site from search results.
- security.txt, ads.txt and similar files that other systems rely on.
- A brochure site's home page, as a cheap alarm for defacement or unexpected edits by someone with admin access.
- Public notices that you would otherwise check by hand, such as a regulator's page or a client's job board.
What it will not catch
Change detection is not file-integrity monitoring. Because scripts and markup are removed before hashing, a malicious script tag injected into the page, which is how payment-skimming attacks usually work, leaves the text untouched and goes unnoticed. If you need to watch a script for tampering, monitor the script file's own URL; for most minified files the hash covers the whole content, but treat it as a tripwire, not a guarantee. Equally, modified images, CSS and anything outside the visible text will not trip it.
Respect the sites you watch: pick a sensible interval (hourly or daily is plenty for terms and prices), and only monitor pages you are allowed to fetch.
Settings that apply
The monitor uses the same request options as a website check: method (HEAD is treated as GET), expected status range, redirect following, timeout, basic auth, and on Pro custom headers. A WAF challenge is recorded as a blocked incident instead of being hashed, so a bot filter never produces a false "change". Change detection is available from the Starter plan ($7 a month), with 1 min the fastest interval there; the Free plan does not include it. To be told in the right place, attach contacts like for any other monitor, and read the evidence in the incident view described under incident management.
Web change detection questions
Do I get a diff of what changed?
You get the first 600 characters of the new text and the hash fingerprints, not a line-by-line comparison. Keep your own copy of the page if you need to see exactly which words moved.
What happens after a change is detected?
The new content becomes the baseline immediately, so you receive a single alert. The incident closes on the next check that sees the same content.
Can I watch a PDF or an image?
Binary files are read as text, which makes the hash fragile and the excerpt unreadable. It will notice a replaced file, but this is not a feature built for documents.
Can it ignore specific words or numbers?
There are no ignore rules. Use a selector for the stable part of the page, or point the monitor at a cleaner source of the same data.
Try web change detection on Starter
This check starts on the Starter plan at $7 a month. The Free plan, no card needed, covers 30 monitors with HTTP(S), keyword, ping and port checks.