Why weekly price monitoring beats occasional checks
Most teams look at competitor pricing when a deal is lost or when someone in sales hears a rumor. By then the change is weeks old, the sales deck is out of date and nobody knows exactly what moved. A weekly check turns pricing intelligence from a reaction into a habit.
The work itself is boring and repetitive, which is exactly why it gets skipped. Someone has to open twenty tabs, scroll to the plan table, compare numbers against a spreadsheet from memory and write a summary. If a product marketer spends two hours a week on that, it adds up to roughly a hundred hours a year, and the quality drops every time a busy week gets in the way.
A scheduled agent does the same routine with the same care every Monday. It never forgets a competitor, it keeps an exact record of last week, and it only interrupts people when something changes. That is the core idea behind recurring AI workflows: a task that used to depend on someone remembering now runs on its own and leaves a full log behind.
The rest of this playbook walks through the decisions that make the difference between a monitor people trust and one they mute after two weeks.
Choosing the competitors and pages to track
Start smaller than you think. A list of eight to fifteen competitors that your sales team actually meets in deals is more useful than fifty names from an analyst report. Every extra page adds a little noise and a little cost, so each one should earn its place.
Group competitors into tiers
- Tier one. Direct competitors that appear in most deals. Track pricing, plan limits and the feature comparison table every week.
- Tier two. Adjacent tools that sometimes replace you. Track the pricing page only.
- Tier three. New entrants and alternatives. Check once a month with a lighter cron so they do not crowd the weekly digest.
Pick the exact URLs
For each competitor, list the public pricing page and, if it exists, the plan comparison page and any enterprise or add-on page. Avoid the homepage unless prices appear there, because homepages change often for reasons that have nothing to do with pricing. If a pricing page loads its plan table with scripts, mark it for a browser action step so the agent renders the page fully before reading it.
Keep the list in one place. Many teams keep it in a Google Sheet that the cron reads at the start of each run, so adding a competitor is a one line edit rather than a change to the cron itself.
What to capture on every run
The agent should not store the whole page. It should extract a structured record that is easy to compare. A good record for each plan looks like a row in a spreadsheet: plan name, monthly price, yearly price, currency, main usage limits and the headline features listed under the plan.
| Item to capture | Example of a change | Why it matters to you |
|---|---|---|
| Plan names and order | A new middle plan appears between two existing ones | Signals repositioning or a push toward a new segment |
| Monthly and yearly prices | Entry plan goes from 39 to 49 per month | Direct input for discounting and sales talk tracks |
| Yearly discount | Discount for annual billing grows from 15 to 25 percent | Shows pressure to lock in customers for longer |
| Usage limits | Seats per plan drop from 10 to 5 | Quiet price increases often hide here |
| Free trial or free plan terms | Trial shortened from 14 to 7 days | Changes how prospects compare options |
| Feature placement | SSO moves from the top plan to the middle plan | Affects the arguments your team uses against them |
| Add-ons and overage pricing | New per user fee for an AI feature | Shifts total cost of ownership in larger deals |
| Call to action | Self serve checkout replaced by a request form on the top plan | Signals a move upmarket |
Ask the AI reasoning step to return this record in a fixed format and to write "not shown" when an item is missing. Consistent fields make the next step, the diff, reliable.
Diffing against last week
A monitor without memory is just a scraper that sends you the same table every week. The useful part is the comparison. Crons gives every cron its own memory, so the agent reads last week's records before it looks at today's pages and writes the new records after the run. You can read more about how that works on the memory and approvals page.
- 1Read the stored record for each competitor and plan from memory.
- 2Fetch the current pages with a web fetch step, or a browser action step for pages rendered by scripts.
- 3Extract the structured record for each plan.
- 4Compare field by field and label each difference as added, removed or changed.
- 5Write the new records to memory so next week compares against today.
Store the date of the first time each value was seen. That lets the digest say "price changed from 39 to 49, first seen at 39 on March 3" and helps sales answer the question of how long a competitor has held a price.
If a fetch fails, Crons retries the step up to three times with backoff. If the page still does not load, the record is kept as it was and the digest notes "could not check this week", rather than reporting every plan as removed.
Noise filters that keep the digest trustworthy
The fastest way to kill a monitor is false alarms. If the digest reports a "change" every week because of a currency symbol, a cookie banner or a rotating testimonial, people stop reading it. Build filters in from the first run.
- Ignore layout and copy tweaks. Compare extracted fields only, never raw page text.
- Normalize numbers. Treat 49, 49.00 and $49 as the same value, and convert yearly totals to a monthly equivalent before comparing.
- Handle geo and currency. Fetch pages from a consistent region and record the currency explicitly, so a different locale does not look like a price change.
- Ignore A/B tests with a confirmation rule. Only report a price change if it shows on two consecutive fetches a few minutes apart, or on two weekly runs in a row for tier three competitors.
- Set a minimum change. Skip rounding differences under one percent unless the plan name or limit also changed.
- Mute known seasonal promos. Keep a short list of recurring sales periods and label promotional prices as "promo" rather than as a new list price.
Write these rules into the cron description in plain English. The AI step follows them every run, and the run log shows which rule removed which candidate change, so you can tune the filters after a few weeks.
A digest format people read in Slack
The digest is the product your team sees, so keep it short and scannable. Post it to a dedicated channel such as #competitive-intel every Monday morning before the sales standup.
- 1A one line headline with the count of changes, for example "3 pricing changes across 2 competitors this week".
- 2One block per competitor that changed, with old value, new value and the plan affected.
- 3A short "what this means for us" line written by the AI step, phrased as a suggestion for sales and product.
- 4A quiet footer listing competitors checked with no change and any pages that could not be checked.
- 5A link to the run log for anyone who wants the raw extracted data.
When nothing changed, send a single short line rather than staying silent. Silence is ambiguous, and a "no changes, 12 competitors checked" message proves the monitor ran. The ready made competitor monitor template uses exactly this structure, and you can copy the Slack output into a Google Sheet or Notion page for a running history.
Escalation rules for changes that need action
Not every change deserves the same attention. A small add-on fee can wait for the weekly digest. A competitor cutting its entry price in half on the week of your launch should reach the right people immediately.
| Change type | Where it goes | Who owns follow up |
|---|---|---|
| Price drop of 20 percent or more on a tier one competitor | Direct message to the head of sales plus the digest | Sales leadership |
| New plan or removed plan | Digest with a mention of the product marketing lead | Product marketing |
| Feature moved between plans | Digest, flagged for the battlecard owner | Battlecard owner |
| Limit or add-on change | Digest only | No immediate owner |
| Page could not be checked twice in a row | Alert to the cron owner by email | Cron owner |
If the agent also drafts an update to a battlecard in Notion or a field in HubSpot, add an approval gate before that write. A person confirms the change, and only then does the cron update the shared record. The human approval guide covers how to choose which steps should wait.
Setting it up in Crons
You can start from the template or write the job from scratch. A typical description reads: "Every Monday at 8 AM Eastern, check the pricing pages in our competitor sheet, compare plans and prices with last week, ignore changes under 1 percent, and post a digest to #competitive-intel in Slack. Message the head of sales directly if a tier one competitor drops a price by 20 percent or more."
Crons turns that sentence into a schedule, a list of steps and a sample first result you can review before saving. Use dry run mode for the first week to see the digest without posting it. When it looks right, turn it on and let it run.
For sizing, a weekly monitor of fifteen competitors uses about four runs a month and a modest number of AI calls, so it fits easily on the Starter plan alongside other crons. Pages that need a full browser draw on browser minutes, which you can check on the pricing page. Teams that track many competitors daily usually move to Pro for the 15 minute minimum frequency and the larger run allowance.
Frequently asked questions
How often should competitor prices be checked?
Weekly works for most B2B software markets, because list prices rarely change more than a few times a year. Check daily only for direct competitors in fast moving markets, or during your own launch weeks.
Can the agent read pricing pages that load with scripts?
Yes. Mark those pages for a browser action step, which renders the page in a headless browser before the AI step reads it. Browser steps count toward the browser minutes in your plan.
What happens when a competitor redesigns its pricing page?
The AI step extracts plans by meaning rather than by fixed page structure, so most redesigns do not break the monitor. If the extraction looks very different from last week, the digest flags it for a quick human check instead of reporting every plan as changed.
Where can the results go besides Slack?
The same cron can append each change to a Google Sheet, update a Notion page, send a Gmail summary or call a webhook. See the integrations page for the full list.
Does the monitor change anything on its own?
Only if you let it. Reading pages and posting a digest happen automatically. Writing to your CRM or editing shared documents can sit behind an approval gate so a person confirms each change first.