# Competitor price watchboard with stock and promo tracking

> Open one board every morning to see every competitor product you track, what changed since the last check, and which moves are big enough to act on.

- Workflow type: app
- Services: Bright Data, Google Sheets, Slack
- Categories: Operations
- Published: 2026-08-16

## What it does

- Lists every competitor product page you track in one board, showing the current price, whether it is in stock, any promotion running, and how much it moved since the last check
- Sorts the biggest moves to the top so your pricing team sees what matters first instead of scrolling a flat list
- Only flags a change when it crosses the threshold you set for that product, so one cent wobbles never fill the board
- Keeps a timestamped price history for every product and draws a 30 day trend line, and lets you post the day's notable moves to your pricing channel with one click

## What you'll need

- A Bright Data account for collecting the competitor pages you track
- A Google Sheet listing the product pages you watch, your own prices and your target prices, plus a tab where price history gets recorded
- A Slack workspace and the channel where your pricing team talks
- The web addresses of the competitor product pages you want on the board

## Prompt

Build me a competitor price watchboard that my pricing team opens every morning. The main screen is a single board with one row per competitor product URL we track. Each row shows the product name, the competitor or retailer it belongs to, the current price, stock status, any promotion or discount badge running on the page, and the change since we last checked shown both as an amount and as a percentage with a clear up or down direction. Rows are sorted with the biggest moves at the top so the team sees what matters before anything else. Show our own price and our target price from our sheet alongside the competitor price so the gap is obvious at a glance, and show the timestamp of the last successful check on every row so nobody mistakes stale data for fresh data.

Our tracked product list loads from Google Sheets using Get Values. That sheet is the source of truth for what appears on the board: each row holds the product name, the competitor product URL, our own price, our target price, an optional per product change threshold, and a marker for whether the item is a marketplace SKU along with any dataset identifier it needs. Read the sheet when the app loads and use it to build the board. Do not hardcode the product list in the app.

Fetching happens on demand, never on a schedule. Put a Refresh all button at the top of the board and a small refresh control on each row so a single product can be rechecked without pulling everything. For a normal competitor product page, the handler fetches it with Bright Data using Scrape URL with Web Unlocker and extracts the price, the stock status and any promo or sale badge from the returned page. For products flagged as marketplace SKUs, the handler instead calls Trigger Dataset Collection, then polls Check Snapshot Status until the snapshot is ready, then reads the data with Download Snapshot Results. Snapshot collection is asynchronous and can take a while, so show per row progress while a refresh is running and let the rest of the board stay usable rather than blocking the whole screen.

Every refresh appends a timestamped row to a history tab in the same Google Sheet using Append Values, recording the product, the competitor, the price, the stock status and the time of the check. That history tab is what makes the board more than a snapshot. Read it back with Get Values to draw a 30 day trend line on each row as a small inline sparkline, and let the user open a row to see a larger chart plus the recent check by check history in a table.

Only flag a change when it crosses a per product threshold, defaulting to 3 percent when the sheet does not specify one for that product. Movements under the threshold still update the displayed price and still get written to history, but they are not highlighted, not counted as a notable move, and do not push the row toward the top. This matters because cent level fluctuations are constant and would otherwise fill the board with noise. Make the threshold visible and editable per product from the row so the team can tighten it for products where small moves really do matter.

Competitors that just went out of stock must stay on the board with a clear out of stock badge rather than dropping off the list. A competitor selling out is a pricing signal the team wants to see, so treat the transition from in stock to out of stock as a notable change in its own right, independent of the price threshold. Do the same for coming back into stock. If a fetch fails or a page cannot be parsed, keep the row visible with its last known values, mark it as stale with the time of the last successful check, and let the user retry that row rather than silently showing old data as if it were current.

Add a Share moves button that posts the day's notable changes to our pricing channel using Slack Send a Message. The message should be a short scannable summary of only the changes that crossed their thresholds plus any stock status flips, each with the product, the competitor, the old and new price and the percentage move, ordered biggest first. Let the user preview and edit the message before it sends, and pick the destination channel. If nothing crossed a threshold, say so plainly instead of posting an empty update.

Keep this cross retailer and URL driven. It must work for any direct to consumer or retailer product page we point it at and must not assume a single marketplace. Also keep it strictly read only with respect to our own store: this app reports what competitors are doing and how it compares to our targets, and it never changes or pushes a price anywhere.

## How to customize

- Change the default change threshold from 3 percent, or set a tighter or looser one per product for items where small moves still matter
- Decide what counts as notable enough to share with the team, and reword the message that gets posted to your pricing channel
- Add your own columns to the tracking sheet, such as competitor tier, category owner or currency, and group or filter the board by them
- Adjust how far back the trend line looks if 30 days is too short or too long for your buying cycle

## FAQ

### Does this change prices in my own store?

No. This board is read only when it comes to your store. It shows you what competitors are doing and what your target price is, and leaves the decision and the repricing to your team.

### Does it only work for Amazon listings?

No, and that is the point. It tracks any competitor product page you can link to, including direct to consumer brand sites and smaller retailers. Marketplace listings are handled too, so you can keep every competitor on one board.

### What happens when a competitor sells out?

The product stays on the board with an out of stock badge rather than disappearing. A competitor going out of stock is useful pricing information, so hiding it would lose the signal.

### Why do I need a Google Sheet for this?

The sheet holds the products you track and your target prices, and it is where every price check gets recorded with a timestamp. That saved history is what makes the trend line and the change since last check possible.

### How often does it check prices?

Whenever you ask it to. There is a refresh button for the whole board and one on each row, so you can pull everything fresh each morning or recheck a single product after a competitor makes a move.

### Can I stop small price changes from cluttering the board?

Yes. Changes are only flagged once they cross a threshold you set, which starts at 3 percent. You can tighten or loosen it per product for items where even a small move is worth knowing about.

Use this prompt in General Input: https://www.generalinput.com/prompts/competitor-price-watchboard-with-stock-and-promo-tracking