A page returning 200 OK does not mean it is working correctly. Keyword monitors scan the response body to verify actual content is present or absent. Heartbeat monitors verify that your cron jobs and background workers check in on schedule — even when they have no public URL.
Beacony loads your URL and scans the full response body for a word or phrase. You choose whether the keyword must be present or absent, and whether matching is case-sensitive or case-insensitive. If the condition fails, an incident is opened and alerts are sent.
Condition: keyword present
Keyword: "Welcome back"
Result: ✓ Found — UP
Beacony gives you a unique heartbeat URL. Your cron job, background worker, or script makes a simple HTTP GET or POST to that URL after each successful run. If Beacony does not receive a ping within the expected interval plus grace period, it opens an incident and alerts you.
Expected every: 5 minutes
Grace period: 2 minutes
Last ping: 3 min ago — UP
Not directly via login forms. Keyword monitors load a URL as a plain HTTP request. For token-gated endpoints, add an Authorization or Cookie header in the custom headers field — the same way you would test an API.
When you create a heartbeat monitor, you set the expected check-in interval (e.g. every 5 minutes) and a grace period (e.g. 2 minutes). If the full window passes — 7 minutes in this example — with no ping received, Beacony opens an incident and fires alerts on all your configured channels.
Your unique heartbeat URL is https://api.beacony.io/api/heartbeat/YOUR_TOKEN. A simple curl call from your cron job is all it takes: curl -s https://api.beacony.io/api/heartbeat/YOUR_TOKEN. You can rotate the token at any time from your dashboard to invalidate old integrations.
Your choice, configured per monitor. Case-sensitive matching is exact — "Error" and "error" are treated differently. Case-insensitive matching catches any capitalisation. You also choose whether the keyword must be present or absent to define what constitutes a passing check.