Skip to content
Metric VaultHelp Center
Open app

Competitor monitor

Watch competitor pages for changes to price, copy, structure and availability, and read the change feed Metric Vault builds from every check.

Last updated 2026-08-06

Summary#

Competitor Monitor, called Watchtower on screen, re-fetches the competitor pages you give it every six hours and tells you what changed since last time. It compares prices, titles, meta descriptions, headings, navigation, structured data, contact details and page size, grades each change as High, Medium or Low, and collects them into a change feed. Adding a URL costs nothing and takes one field.

Purpose#

Competitors announce almost nothing. A price moves, a plan is renamed, a claim on the pricing page is softened, a product quietly disappears — and the only people told are the ones who happened to look that day. Checking a handful of pages by hand is the sort of task that gets done for two weeks and then forgotten.

Watchtower does the looking. Because it keeps a copy of what the page said last time, it can tell you what changed rather than just that the page is different, which is the difference between a useful alert and a notification you learn to ignore.

Requirements#

  • A signed-in Metric Vault account. Tracked URLs are saved to your account, so they keep running when the dashboard is closed.
  • A publicly reachable http or https URL. Pages behind a login, on a private network, or on an internal hostname are rejected.

No plan upgrade and no credits are needed.

Permissions#

WhoWhat they can do
Any signed-in accountAdd, pause, check, and delete monitored URLs, and read the change feed
Teammates in your workspaceSee and act on the same monitored URLs
Signed outNothing. The screen has no data to show

Monitored URLs belong to the workspace rather than the individual, so a teammate you have invited sees your list and you see theirs. See What teammates share.

Competitors & Backlinks → Competitor Monitor

The screen's own heading is Watchtower.

Step-by-Step Guide#

Add a URL to watch#

  1. Enter the address in the first field, placeholder e.g. nike.com. A bare domain works; https:// is added for you. Point it at a specific page such as a pricing page rather than a homepage — a homepage changes for reasons that are rarely about you.
  2. Choose what you are watching for in the dropdown: Watch everything, Pricing only, Titles & meta, Page structure or Availability. This is recorded against the URL and shown in the Type column.
  3. Optionally add a label, placeholder Label (optional, e.g., 'Pricing'). The label is what appears in alerts, so name it for the thing you care about.
  4. Leave the interval dropdown on Check every 6h (recommended).
  5. Press Monitor URL. The button reads Adding + first check… while it works, then returns to + Monitor URL.

The first check runs immediately, which is why adding a URL takes a few seconds rather than being instant. That first check records a baseline and produces no changes; there is nothing yet to compare against. The screen switches to the Monitored URLs tab so you can see what was added.

Note

Note: Every URL added from this screen is saved with a six-hour interval. The Every column on the Monitored URLs tab is the authoritative view of what a URL is actually using.

Screenshot
The Watchtower add row on the Competitor Monitor screen, showing the URL field, watch-type dropdown, label field, interval dropdown, the email checkbox and the Monitor URL button.

Try it without picking targets#

Press Start with sample URLs on the empty state. Four public pages are added with a Pricing or product label — Shopify's pricing page, Stripe's pricing page, a Notion product page and Figma's what's-new page — and the screen switches to the Monitored URLs tab. Delete them once you have seen how a change row looks.

Force a check now#

On the Monitored URLs tab, press Check now on the row. The button reads Checking… while the page is fetched, and the table refreshes with the new Last Check time. This counts as that URL's check, so the next automatic one is six hours later.

Use it after you know a competitor has just shipped something, rather than as a routine. Two checks minutes apart usually find nothing.

Pause or remove a URL#

  • Pause stops the automatic checks and keeps the history. The Status column changes from Active to Paused and the button becomes Resume.
  • The × button deletes it. You are asked to confirm with Stop monitoring this URL? All snapshots and change history will be deleted. and the confirm button reads Stop monitoring. That deletion cannot be undone, so pause first if you are unsure.

Read the change feed#

The Change Feed tab lists the most recent changes across every monitored URL, newest first, up to 200 rows. Each row carries a change-type chip, a severity label, the page it happened on, its label, and how long ago it was detected. Where a value changed, the old value is struck through in red above the new value in green, and a price move shows the numeric difference.

Two buttons on each row: the eye marks the change as read and dims it, and the × dismisses it so it never appears again. Mark all read at the top of the bar clears them in one go, and Refresh re-reads the feed.

Screenshot
The Change Feed tab showing several change rows with type chips, severity labels, struck-through old values and new values.

What each check captures#

Watchtower stores a snapshot of the page on every visit and compares it with the previous one. These are the signals it keeps.

GroupWhat is captured
ResponseHTTP status code, Last-Modified and ETag headers
MetadataPage title, meta description, canonical URL
Socialog:image, og:title, og:description
StructureFirst H1, the first 25 H2 headings, navigation link text, item and heading names
CommercialPrices in dollars, pounds and euros, with the minimum, maximum, average and count
ContentWord count, page size, a fingerprint of the page text, image count
LinksInternal link count, external link count, newly seen external URLs
TechnicalStructured-data types declared on the page
ContactPhone numbers, email addresses, links to social profiles

Only the first 500,000 characters of a page are examined, which covers ordinary pages comfortably. Content that a browser loads afterwards with JavaScript is not seen, because the page is fetched as the server sends it.

What counts as a change#

ChangeSeverityFires when
HTTP status changed from 200 to 404High for a 404 or a server error, otherwise MediumThe status code differs
Page title changedHighThe <title> differs
H1 heading changedHighThe first H1 differs
Meta description changedMediumThe description differs
Canonical URL changedMediumThe canonical tag differs
Social share image changedLowThe og:image differs
Minimum price dropped from 199 to 149High when the move is larger than 10, otherwise MediumThe lowest price on the page moved
Maximum price rose from 499 to 599Same ruleThe highest price moved
Price points added: 2MediumThe number of prices on the page changed
Word count increased by 640High above 500 words, otherwise MediumThe word count moved by more than 100
New item/heading appeared: "Enterprise"HighA new H2 or H3 appeared, up to 10 per check
Item/heading removed: "Starter"MediumA heading disappeared, up to 10 per check
Navigation item added: "Pricing"MediumA nav link appeared or disappeared, up to 5 per check
Structured-data type added: ProductLowA JSON-LD type appeared or disappeared
Social link added: …LowA social profile link appeared or disappeared, up to 3
New contact email: …LowA new address appeared on the page, up to 3
New external link detected: …LowA new outbound URL appeared, up to 5
Minor content changes detected (below individual thresholds)LowThe page text moved but nothing above crossed a threshold

A page that is edited heavily produces several rows from one check, which is intended: each is a separate fact you might act on.

What does not become an alert#

Every row above is recorded in the change history. Two kinds are held back from the alert channels, because an alert you learn to ignore is worse than no alert.

The same event twice. An event is identified by the page, the kind of change, and the values before and after. If the identical event is detected again within 24 hours, it is recorded and counted but not sent a second time. A change that is genuinely news again the next day still reaches you, and "the title became B" and "the title went back to A" are different events, so a page that flips between two titles is not silenced, it is reported as the two facts it is.

Elements that rotate. A carousel, a "recently viewed" strip or a rotating testimonial makes a heading, nav item, schema type or social link appear and disappear on its own. Each flip looks like a real addition or removal to the differ, and used to be sent as one.

Those four kinds of event are now held for one check and released only if the next check finds the element still in the state that was reported. If it flipped back, the element is treated as rotating page furniture and silenced for 48 hours. A carousel that changes on every crawl now produces no alerts at all, where over two days it used to produce eight.

The cost is that a genuine addition or removal reaches you one check interval later than it used to, six hours on the default setting. Status codes, titles, prices and word counts are not held: the value itself is the news there, so they are sent as soon as they are seen.

The Monitored URLs table#

ColumnWhat it shows
URLThe domain and path, linking out to the live page, with your label beneath
DomainThe competitor domain, with www. removed
TypeThe watch type you chose
SensitivityThe value stored on the row when it was created. On URLs added from this screen it repeats the interval label
EveryThe check interval in hours. URLs added here read 6h
Last CheckA relative time such as 2h ago, or before the first check
StatusActive or Paused
ActionsCheck now, Pause or Resume, and delete

The Price Tracker tab#

For each monitored URL that has produced prices, this tab shows the current minimum, maximum, average and number of prices found, a small trend line of the recent minimums, and the last check time. It reads the last twenty snapshots of up to thirty URLs.

Before any prices have been detected it reads No prices detected yet. Prices are extracted from common currency formats ($X.XX, £X.XX, €X.XX). They appear here after the first check. A page whose prices are drawn by JavaScript after load, or written in a currency format outside those three, will stay empty.

Alerts and where they go#

Every change is written to the change feed, and competitor changes from the last 14 days also appear in the notifications feed behind the bell icon, controlled by the Competitor Alerts switch in Account → Preferences.

Slack, webhook and email delivery are configured on the individual monitored URL rather than on your account. Until an alert channel is stored on a URL, the card near the top of the screen reads Watchtower alert channels / Not configured — changes detected but no alerts sent, and that is exactly what it means: changes are still detected, recorded and shown in the app, but no message is sent anywhere.

The Email me on high-severity changes checkbox records a preference against the URL. Watchtower's own emails are addressed to the alert address stored on that monitored URL, which this screen does not collect, so ticking the box on its own does not produce email. Every notification you can receive lists every channel and where each is configured.

Limitations#

  • Pages are fetched as the server sends them, so anything rendered by JavaScript in the browser is invisible to the check.
  • The Advanced: CSS selector (optional) field is stored against the URL but every check compares the whole set of signals above.
  • The severity and change-type dropdowns above the feed do not narrow the list today. Read the severity label on each row instead.
  • Private, internal and loopback hosts are refused with That URL host is not allowed.
  • A page needs two checks before it can report anything.

Troubleshooting#

SymptomLikely causeFix
Please enter a URL to monitor.The URL field was emptyEnter an address and press Monitor URL again
Failed: That URL host is not allowedThe address points at a private or internal hostMonitor a publicly reachable page
Failed: Invalid URLThe text is not a usable addressCheck for typos and missing dots
No changes detected yet after several daysThe pages genuinely have not moved, or they render their content in the browserConfirm by opening the page. Try a page whose text is in the HTML source
A change you expected is missingIt fell below a threshold, such as a word-count move under 100 wordsLook for a Minor content changes detected row, which covers small edits
Changes are appearing but nothing reaches Slack or emailNo alert channel is stored on that URL. The card reads Not configuredUse the in-app feed, or see Why didn't my alert fire?
Last Check is old on every rowThe page could not be fetched, or checks have not resumed after a pausePress Check now on one row. A failing page is still stamped as checked so it is not retried every cycle
The Sensitivity column shows an interval labelThe value stored when the URL was createdCosmetic. The Every column is what governs the check
Error loading feed: …The feed request failedPress Refresh. If it persists, see The dashboard is stuck loading

FAQs#

How many URLs can I monitor? There is no cap on how many you add. Up to 50 due URLs are processed on each pass of the scheduler, so a very large list is worked through over successive passes rather than all at once.

Does monitoring cost credits? No. Adding a URL and every automatic check are free, on every plan.

Can I change how often a URL is checked? URLs added from this screen run on the six-hour interval, which the Every column confirms. Use Check now when you need an answer sooner.

Will it tell me about a competitor's whole site? No. Watchtower watches the exact pages you give it. Add the handful that carry real signal: pricing, key landing pages, a product or changelog page.

Does deleting a URL delete its history? Yes. The confirmation says so: Stop monitoring this URL? All snapshots and change history will be deleted. Pause instead if you might want the history later.

Can a teammate see what I am monitoring? Yes. Monitored URLs belong to the workspace. See What teammates share.

Why does the hero say Quiet (no recent changes)? You have URLs monitored but nothing has changed in the last seven days. The other two verdicts are No URLs Monitored and Monitoring Active.

See also

Was this article helpful?