Competitor price watchboard with stock and promo tracking

By General Input

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.

Integrations

  • Bright Data
  • Google Sheets
  • Slack

Type

App

Categories

  • Operations

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats