- Home
- Monitoring
- Keyword monitoring
Keyword monitoring: catch the error page that still returns 200
Require a phrase to be on the page, or require another phrase to be absent. It is the cheapest way to notice a database error that your server answers with a happy status code.
- 30 monitors free
- No credit card
- Failures confirmed from other regions
- Amsterdam97msfound
- London142msfound
- Keyword“Add to cart” present
- Forbidden“Error establishing” absent
- TTFB55 ms
Illustrative example
Check it now, in your browser
No account. Keyword monitoring: 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 checks that the page answers. The keyword rule itself (must contain, must not contain) runs in a saved monitor.
What a keyword monitor looks at
Must be present
Fail when a phrase vanishes, for example "Add to cart" missing from a product page after a theme update.
Must be absent
Fail when a phrase shows up, for example "Fatal error", "Error establishing a database connection" or a leftover maintenance banner.
Plain text match
Scripts, styles and tags are stripped first, then the phrase is matched case-insensitively against the visible text. Regular expressions are not supported.
Served HTML only
The match runs on the HTML your server returns, up to about 1 MB. Text that only appears after JavaScript runs is not seen.
Keyword monitoring: 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.
www.clienta.com
www.clienta.com · Keyword "Add to cart" missing · confirmed from Amsterdam (AMS), London (LON)
| Error | Keyword "Add to cart" missing |
|---|---|
| Confirmed by | Amsterdam (AMS), London (LON) |
| Since | 14:02:11 UTC |
| Target | www.clienta.com |
| Next step | Check the server / hosting panel. Acknowledge so the team knows you are on it. |
AcknowledgeOpen incident
<h1>Error establishing a database connection</h1>
Tenium · checked from Amsterdam · 14:02 UTC
Tenium alerts
🔴 DOWN · www.clienta.com · Keyword "Add to cart" missing · confirmed from Amsterdam (AMS), London (LON)
reply /ack or acknowledge · open incident
TTenium APP 2:02 PM
DOWN · www.clienta.com
www.clienta.com · Keyword "Add to cart" missing · confirmed from Amsterdam (AMS), London (LON)
- Error: Keyword "Add to cart" missing
- Confirmed by: Amsterdam (AMS), London (LON)
- Target: www.clienta.com
AcknowledgeOpen incident
Check the server / hosting panel. Acknowledge so the team knows you are on it. · checked from Amsterdam
Keyword monitoring: 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. Keyword monitoring: 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.
Keyword monitoring: 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 keyword monitoring in 30 seconds
Enter the target
Add the page URL, choose the Keyword 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.
Set present and absent phrases
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.
KEYWORDKeyword "Add to cart" missing
The page answered but the phrase is not in it: a cached error page, a half-rendered template, an empty product feed. This is exactly what status-only checks miss.
Shown as: Keyword "Add to cart" missing
KEYWORDForbidden keyword "Error establishing a database connection" present
The error text appeared in the body, usually with a cheerful 200. WordPress and many CMSs do this when the database is gone.
Shown as: Forbidden keyword "Error establishing a database connection" present
BLOCKEDBlocked by WAF challenge (Cloudflare)
A bot challenge replaced the page, so the keyword cannot be found. Flagged as blocked, not down; allow the checker and it clears.
Shown as: Blocked by WAF challenge (Cloudflare)
TIMEOUTTimeout after 15 s
The page never finished. Keyword checks read up to about 1 MB of the body, so a very slow origin fails here before the text is judged.
Shown as: Timeout after 15 s
CERT_HAS_EXPIREDTLS error: certificate has expired
The certificate is no longer valid, so the page cannot be fetched securely. Renew it.
Shown as: TLS error: certificate has expired
Keyword monitoring 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 |
Other monitor types
The pages that lie with a 200
A status code reports what the web server decided, not what the visitor sees. Plenty of broken states still answer 200: a CMS that prints a database error into the template, a PHP fatal error with display_errors on, a maintenance plugin that serves its splash page with a happy code, a CDN that cached an error body, an expired hosting account showing the provider's parked page, and a staging banner that went live by accident. Each of those has a recognisable sentence, and a keyword monitor turns that sentence into an alarm.
Typical absent phrases are "Fatal error", "Error establishing a database connection", "Briefly unavailable for scheduled maintenance", "Service Unavailable" and "This domain is for sale". Typical present phrases are the company name in the footer, a product page's "Add to cart", or the text of a login button.
Present, absent, or both
A keyword monitor has two optional fields: the phrase that must be present and the phrase that must be absent. Use both on important pages. The present phrase protects you from blank pages and unexpected redirects, the absent phrase from error text that appears next to normal content. If both are filled in, both conditions must hold, and the failure names the one that broke, for example Keyword "Add to cart" missing or Forbidden keyword "Fatal error" present.
Leave both fields empty and the monitor degrades to a status check with a note in its details, which is rarely what you want; use a plain website monitor for that.
Choosing a phrase that survives redesigns
The best phrases are boring. Legal footer text, the registered company name, a copyright line or a form label change far less often than headlines or promotional copy, so they will not trigger an alert every time marketing runs a test. Avoid text that varies by visitor (greetings, prices in a local currency, "3 items in your cart"), text from A/B experiments, and anything inside a cookie banner. Keep the phrase short enough to survive line breaks and word-wrap edits, but long enough to be unique: "Add to cart" is better than "cart".
Use two monitors with different phrases on the same page when you want to separate a missing header from a missing footer. It costs one more monitor and makes the failure message self-explanatory.
What the matcher actually does
The response is fetched like any other HTTP check, then scripts, style blocks, comments and tags are removed, a handful of common HTML entities are decoded, and whitespace is collapsed. The phrase is searched in that text with a case-insensitive, plain substring comparison. Consequences worth remembering:
- No regular expressions. A pattern such as order #[0-9]+ cannot be expressed; pick a fixed neighbour phrase instead.
- Only text nodes count. A word that appears in an alt attribute, a meta description tag or inside JavaScript is not visible to the matcher, while text in hidden elements still is.
- Only the HTML as served is searched, up to about 1 MB. Text that a framework inserts after load is invisible, so test single-page apps against their server-rendered output or the API behind them.
- All conditions use the same fetch, so the expected status range, redirects, basic auth and timeout settings apply to keyword monitors exactly as they do to website monitors.
Plans and interactions with other monitors
Keyword checks are included on every plan, Free too. JSON assertions begin on the Starter plan ($7 a month). A keyword monitor produces the same incident, alert and status-page data as any other monitor, and it can be switched into a maintenance window when you plan to change the page. If your site sits behind a bot filter, a challenge page will be recorded as a blocked incident rather than as a missing keyword, so a Cloudflare rule change does not look like a content problem.
Keyword monitoring questions
Is the match case-sensitive?
No. Both the page text and your phrase are compared in lower case, so "Add To Cart" and "add to cart" are the same. There is no option to make it case-sensitive.
Can I check text that is loaded by JavaScript?
Not from the page itself, because scripts are not executed. Monitor the JSON endpoint the script reads with the JSON API type, or serve the critical text in the initial HTML.
How do I catch a phrase on every client site at once?
Create one keyword monitor per site and import them from a CSV with a keyword column; the import guide in the docs lists the columns. Tags make it easy to filter the whole group.
What if the phrase appears twice on the page?
One occurrence is enough for a present check, and any occurrence trips an absent check. There is no counting of matches.
Start keyword monitoring free
30 monitors on the Free plan, no card needed, with failures confirmed from other regions (2 regions live today). Upgrade when the client list grows.