Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

App
HyperbrowserShopifyGoogle SheetsOperationsFinanceResearch & MonitoringData Sync
PromptCreate

Build me a repricing console my merchandiser opens every morning to decide which Shopify prices to move. The shape of the job is: look at where I sit against the competition, send a check out on the products that look wrong, let a rule propose a new price, and approve the handful I agree with. Two things must always be true. A rule proposes, a person applies, so no price in my store ever changes without someone ticking a row and pressing Apply. And every competitor number on screen is clickable through to the page it came from, because a price I cannot verify is a price I will not act on.

The main view is a dense grid of my products, one row per variant. Load the catalogue with Shopify List Products and Shopify List Variants, and show product title, variant name, SKU, my current price, my unit cost and my current margin percent. Next to that, show the competitor picture from the last check: the cheapest in-stock competitor price, which competitor it was, the gap in money in my store currency and the gap in percent, and when that competitor price was last checked, shown as a relative age like 2 hours ago or 9 days ago. Sort the grid by default so the products that most need attention float to the top, combining the size of the gap with the staleness of the check, so a big gap checked this morning and a product nobody has checked in two weeks both surface. Let me re-sort by percent gap, money gap, margin, or check age, and filter by collection, vendor and product type so a merchandiser can work one category at a time.

Margin needs a unit cost. Pull cost from Shopify with Get Inventory Item where the store already carries one, and let me enter or override a cost per variant inside the app, including pasting a list of SKUs and costs. Where no cost exists, still show the price gap but render the margin cell as Cost needed with an inline field to fill it in, and keep that variant out of any rule that depends on a margin floor until it has one.

Selecting rows and pressing Check competitors starts a background agent on that selection, and the grid shows those rows as checking while it runs. For each selected product the agent works through my registered competitor domains one at a time. If I have already pinned a competitor URL for that product and competitor, it goes straight to that page and skips searching. Otherwise it uses Hyperbrowser Search Web, scoped to that competitor domain, with the product title, brand and any identifying attributes, then uses Hyperbrowser Start Scrape Job on the promising results to read the candidate pages. It then runs Hyperbrowser Start Extract Job over the matching product pages, polling Get Extract Job Result, to pull back a structured price, currency, availability such as in stock, out of stock or preorder, and the page title. For a competitor site that resists a plain scrape, for example one that hides the price behind a size or region selector, the agent can fall back to Hyperbrowser Start Browser Use Task to drive the page and read the price the way a shopper would. Everything it finds writes back into the app against the product: competitor name, price, availability, page title, source URL and a checked-at timestamp, so the grid updates in place and every figure links out to the page.

Product matching is the hard part and the agent will sometimes be wrong, so treat confidence as a first-class state. When the agent is unsure it has the same product, for example a different pack size, a different colourway, a bundle rather than a single unit, or a page where the price it read looks ambiguous, mark that competitor reading as needs review with a short note explaining the doubt, keep it out of the pricing rule, and surface a needs review count at the top of the console. From a needs review item I can open the page, confirm it as the right match, correct the price by hand, or reject it. Confirming pins that URL to the product for that competitor so future checks go straight there instead of searching again, and I can also paste a competitor URL onto a product by hand at any time. Pinned URLs are the manual override that makes the console get better the more it gets used.

Competitors that are out of stock get flagged and excluded from the rule, since there is no point chasing a price nobody can actually buy. Show them on the expanded row, greyed out and clearly labelled sold out, so the merchandiser can still see the full picture, and let me toggle them back in for a specific product if I want to price against them anyway.

The console then proposes a new price for every row that has a usable competitor reading. I pick the rule: match the lowest in-stock competitor, undercut the lowest in-stock competitor by a percentage I set, or hold, meaning propose no change. Let me set a default rule in settings and override it for a selection of products, so I can undercut on the lines I compete hard on and hold on everything else. Every proposal is clamped by a margin floor I set: if the rule would produce a price that lands below the floor, propose the lowest price that still clears the floor instead and mark the row as clamped so I can see the rule was overruled by margin. Show the old price and the new price side by side on the row, with the resulting margin percent and a note of which competitor and which rule drove it. Rows where the proposal equals the current price should be visibly quiet so they do not compete for attention.

Only when I tick rows and press Apply does anything get written to my store. Show a confirmation step listing the ticked changes with old price, new price and resulting margin, and call out any clamped rows. On confirm, call Shopify Update Variant for each ticked variant to set the new price, and for every one that succeeds append a row to my price history tab with Google Sheets Append Values: timestamp, product title, variant, SKU, old price, new price, the competitor name, competitor price and competitor URL that drove the change, the competitor availability at the time, the rule that was used, whether it was clamped by the margin floor, the resulting margin, and the name of the person who approved it. If a Shopify update fails, say so clearly on that row and write nothing to the sheet for it, so the sheet only ever records changes that really landed. Give me a History view that reads the tab back with Google Sheets Get Values so I can see every price we have moved and filter it by product, by person and by date.

A settings area holds the competitor list as names paired with domains, used both to scope the searches and to label prices on the grid, plus the price history spreadsheet and tab, the margin floor, the default pricing rule and its undercut percentage, and how many days old a check can be before the row is called stale. Persist the competitor readings, the pinned competitor URLs, the unit costs and the needs review queue in the app, so the console is fully populated the moment someone opens it, before any check has run that morning.

Make it readable at a glance for someone standing with a coffee before the day starts. Dense table, money formatted the way the store shows it, a clear visual difference between a price checked this morning and one checked last month, obvious flags for sold out competitors, clamped proposals and needs review rows, and the tick boxes and Apply button always within reach. The measure of success is that a merchandiser opens it, reads the top of the grid, checks a dozen products, and applies five deliberate price changes in under ten minutes.

What does this prompt do?

  • Opens on a grid of your Shopify variants showing current price, unit cost and margin right next to the competitor prices you last found, the gap in money and in percent, and how long ago each competitor was checked.
  • Tick the products you care about and press Check competitors: an assistant searches the competitor sites you registered, opens the matching product pages, and reads back the price, whether it is in stock, and the page title, with a link to the exact page behind every number.
  • Your chosen rule proposes the new price, whether that is matching the lowest in-stock competitor, undercutting by a percentage you set, or holding steady, and no proposal is ever allowed to break the margin floor you set.
  • Nothing moves until you tick rows and press Apply, which writes the new prices to Shopify and appends every change to a price history tab in Google Sheets with the competitor that drove it and who approved it.

What do I need to use this?

  • A Shopify store you can edit product prices in
  • A Hyperbrowser account for reading competitor pages
  • A Google Sheets file with a tab to hold price history
  • The list of competitor websites you want checked
  • Unit costs for the products you want margin figures on

How can I customize it?

  • Switch the pricing rule per product group: match the lowest in-stock competitor, undercut it by a percentage you choose, or hold the current price.
  • Set the margin floor no proposed price is allowed to break, and decide how many days old a competitor check can be before the row is called stale.
  • Change the competitor sites that get searched, and pin the exact competitor page for a product so every future check goes straight to it.

FAQs

Will it change my prices on its own?
No. Checking competitors and proposing a price are separate from applying it. Prices only move in your store when you tick the rows you agree with and press Apply, and you see the old and new price side by side before you do.
What happens when a cheaper competitor is out of stock?
It gets flagged and left out of the pricing rule. There is no point chasing a price nobody can actually buy, so the proposal is built from the cheapest competitor that is genuinely in stock. The sold out ones still show on the row so you can see them.
How does it know which competitor page matches my product?
It searches the competitor sites you registered for that exact product, opens the promising pages, and shows you the page title and a link with every price so you can check it yourself. When you confirm the right page, you pin it to the product and future checks go straight there instead of searching again.
What if it is not confident about a price it read?
That row is marked needs review rather than being quietly priced. Uncertain readings are kept out of the rule until a person looks at the page and confirms or corrects the number.
Where does the price history live?
In a tab of your own Google Sheet. Every applied change appends a row with the product, the old price, the new price, the competitor price and link that drove it, and the name of whoever approved it, so you have the pricing record Shopify does not keep for you.

Related templates

White glove queue for the VIP customers waiting on you

Open one board each morning that ranks the high value customers waiting on a reply by the revenue sitting behind their silence.

Kustomer
Shopify
App
Review desk for portal forms your team still fills in by hand

Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.

Kernel
Google Sheets
Slack Bot
App
Audit what Intercom's Fin AI actually resolved before you pay

Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.

Intercom
Google Sheets
Slack Bot
App
Returns and warranty claim desk that follows your policy

Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.

Kustomer
Shopify
Google Sheets
App
Fraud lookup desk for any email, phone, IP address or link

Paste anything a customer gave you, get one clean risk profile back, and see what your team decided the last time that address showed up.

IPQualityScore
Shopify
General Input Database
App
Turn last week's cafe sales into this week's grocery order

See exactly which ingredients next week needs based on what you actually sold, adjust anything by hand, then build a one-click grocery cart.

Instacart
Square
Google Sheets
App

Stop guessing which prices to move this morning.

Open one console, check the competitors that actually matter, and apply only the price changes you approve.