Watchmint.

Track competitors' pricing pages and get the changed lines in Slack

Updated

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.