Daily competitor price monitoring with Slack alerts

Every morning we check your competitors' prices, log them to a history tab, and post a Slack alert only when something actually moved.

Deterministic Code
HyperbrowserGoogle SheetsSlackOperationsSalesResearch & MonitoringNotifications & Alerts
PromptCreate

Every morning at 6am, monitor my competitors' prices and alert me in Slack only when something actually changed.

Start by reading my competitor tracking sheet in Google Sheets using Get Values. Each row holds a product name, a competitor product URL, and my own current price for that product. The spreadsheet is the control panel: I add and remove products there, so read whatever rows exist at run time and never hardcode URLs into the workflow.

Take every competitor URL from that sheet and run them through Hyperbrowser as a single Start Batch Scrape Job, not one job per URL. Then use Start Extract Job with a JSON schema covering price as a number, currency as a string, and in-stock status as a boolean, so I get clean structured numbers off each page instead of raw text I have to parse myself. Both of these are asynchronous jobs, so poll for completion and read the results with Get Batch Scrape Job Result and Get Extract Job Result before moving on.

Before writing anything new, read the existing history tab with Get Values and find the most recently recorded price and stock status for each competitor URL. Do this comparison read first, because appending today's rows before reading would make today's numbers look like the previous run and every product would appear unchanged.

Append every result as a dated row to a history tab in the same spreadsheet using Append Values: one row per product per run, carrying the run date, product name, competitor URL, extracted price, currency, in-stock status, and my own price. Log every product on every run, including the ones that did not move, so the history tab builds a complete price history over time that I can chart.

Then compare each new price against the previous run and post a Slack message with Send a Message only when at least one of these rules fires: a competitor price changed by more than a configurable percentage threshold that defaults to 5 percent, an item went out of stock or came back in stock, or a competitor price is now below my own price for that product.

Each alert line should show the product name, the old price, the new price, the percent change, and a link to the competitor product page, and should make clear which rule fired. Group everything that moved into one message rather than sending a separate message per product.

Stay silent when nothing crossed the threshold. If no product triggered a rule, skip the Slack step entirely so the channel does not get noisy. On the very first run there is no history to compare against, so log the baseline rows and do not alert. If a page fails to scrape or the extraction returns no usable price, skip that product for alerting rather than treating it as a change to zero, and carry on with the rest. Only compare prices when the currency matches the previous run, so a currency switch on the page does not look like a huge price move.

Keep the percentage threshold, the spreadsheet id, the two tab names, and the Slack channel as easy-to-edit settings at the top of the workflow.

Additional information

What does this prompt do?
  • Reads your tracking spreadsheet each morning, where every row is a product, a competitor page to watch, and your own current price.
  • Checks all of those competitor pages in one pass and pulls out the current price, the currency, and whether the item is in stock.
  • Adds a dated row for every product to a history tab, so you build a real price history you can chart over time.
  • Posts a Slack alert only when something changed: a price moved more than your threshold, stock flipped, or a competitor dropped below your price.
What do I need to use this?
  • A Google account with a tracking spreadsheet: one tab listing your products, competitor page links, and your own prices, plus a second tab for price history
  • A Hyperbrowser account, which is what reads the competitor pages for you
  • A Slack workspace and the channel where price alerts should land
How can I customize it?
  • Change the alert threshold, which defaults to 5 percent, or the time it runs each morning
  • Add or remove products by editing the spreadsheet directly, with no need to touch the automation itself
  • Decide which alerts matter to you: price moves, stock changes, competitors undercutting you, or only some of them
  • Point it at a different Slack channel, or split urgent undercutting alerts into their own channel

FAQs

Do I have to edit the automation every time I want to track a new product?
No. The spreadsheet is the control panel. Add a row with the product name, the competitor page link, and your price, and it gets picked up on the next morning run. Delete the row and it stops being tracked.
Will this spam my Slack channel every day?
No. It stays completely silent when nothing crosses your threshold. On a quiet day it still logs prices to your history tab, but posts nothing at all, so a message in the channel always means something genuinely moved.
What happens on the very first run?
The first run has nothing to compare against, so it records a baseline row for every product and does not send any alerts. From the second run onward it compares each new price against the previous one.
Does this work on any online store?
It works on public product pages that anyone can open in a browser. Pages that sit behind a login, or that require items to be added to a cart before showing a price, are less reliable.
What if one competitor page fails to load?
That single product is skipped for alerting rather than being treated as a price drop to zero, and the rest of your products are checked and logged as normal.
Can I track more than a handful of products?
Yes. All of your competitor pages are checked together in a single batch rather than one at a time, so a long list of products still finishes in one morning run.

Related templates

Turn website roof inspection requests into JobNimbus leads

New roof inspection requests from your website form land in JobNimbus within a minute, with no duplicate records and nothing retyped by your team.

JobNimbus
Google Forms
Slack
Agentic Task
Flag at-risk students in Canvas before they fall behind

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Canvas
Google Sheets
Slack Bot
Agentic Task
Triage new Jira Service Management requests before anyone opens them

Every new customer request gets a priority, triage labels, a friendly reply with the right help article, and a Slack ping only when it is truly urgent.

Jira Service Management
Jira
Slack
Agentic Task
Weekly Canvas grading backlog report in Slack and Sheets

Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.

Canvas
Slack Bot
Google Sheets
Deterministic Code
Risk-check every dependency upgrade pull request in GitHub

When a bot opens a version bump pull request, we read the real documentation for that exact version and tell you whether it is safe to merge.

Context7
GitHub
Slack
Agentic Task
Launch an Ironclad contract when a HubSpot deal is won

The moment a deal hits Closed Won, the right contract starts in Ironclad, the link lands on the deal, and your sales channel hears who owns the next step.

Ironclad
HubSpot
Slack
Agentic Task

Stop checking competitor prices by hand.

Let this run every morning and only hear about it when a price actually moves.