Pricing pages change quietly: a plan gets more expensive, a limit moves, a feature drops from the cheaper tier. Product and sales teams want to hear about it the day it happens, with the exact lines that changed.
What to watch
Point one monitor at each pricing page, narrowed to the plans with selector
so a new blog post in the footer doesn't count:
{
"url": "https://competitor.example/pricing",
"name": "Competitor A pricing",
"selector": "main",
"every_minutes": 360,
"confirm": true,
"webhook_id": "YOUR_WEBHOOK_ID"
}
confirm: true waits for a second check before reporting, so a price shown
only to some visitors in an experiment doesn't page anyone. Checking every six
hours costs about 120 checks a month per page.
Send it to Slack
Your webhook endpoint gets monitor.changed with data.change.added and
data.change.removed, the lines as they read on the page. A Slack message
from them:
const { monitor, change } = data;
const text = [
`*${monitor.name}* changed: ${change.summary}`,
...change.removed.map((l) => `~${l}~`),
...change.added.map((l) => `*${l}*`),
].join('\n');
await fetch(process.env.SLACK_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text }),
});
When pages look different but read the same
Some changes are visual: a new badge, a reordered comparison table. Set
"watch": "both" and Watchmint also compares screenshots, reporting a change
when at least threshold percent of the picture differs, with before, after
and highlighted images in the event.
Let an assistant do it
Watchmint is also an MCP server. An AI assistant can call watch_page for each
competitor and get_changes when you ask what moved this week, instead of
re-reading every page itself.