Daily MAP violation and unauthorized reseller alerts in Slack
Every morning at 6am, check live Google Shopping offers for your products, then flag every price below your MAP floor and every unauthorized seller in Slack.
Every morning at 6am, check whether anyone is undercutting our minimum advertised price or selling our products without authorization. This runs on a daily cron schedule.
Start by reading our product list from Google Sheets with the Get Values operation, from a tab called Products. Each row holds a product name or model number, our MAP floor price for that product, and the list of authorized sellers allowed to carry it. Treat the authorized sellers cell as a comma separated list, and compare seller names case insensitively with surrounding whitespace trimmed so that "BestDeals Inc" and "bestdeals inc " are the same seller.
Before scanning, also read the Violations tab of the same spreadsheet with Get Values. Use it to build the set of seller and price combinations already logged in the last 7 days, so we do not re-alert on something we have already reported. Anything older than 7 days no longer suppresses an alert.
For each product in the list, run a SerpApi Google Shopping Search using the product name or model number as the query, and pull back every live offer with its price and seller name. If a product returns no offers, skip it completely: log nothing and alert on nothing for that product.
For every offer that comes back, apply two checks. First, if the offer price is below our MAP floor for that product, flag it as a below MAP violation and compute the gap as the MAP floor minus the offer price, in both dollars and as a percentage of the floor. Second, if the seller name is not on the authorized list for that product, flag it as an unauthorized seller violation. An offer can be both at once, in which case log it as a single row that names both reasons rather than logging it twice.
Drop any flagged offer whose seller and price combination already appears in the last 7 days of the Violations tab. Everything that survives that filter is a new violation.
Append every new violation to the Violations tab in the same Google Sheet using the Append Values operation, with one row per flagged offer containing the date, the product, the seller, the offer price, our MAP floor, the gap versus MAP in dollars and percent, the violation type (below MAP, unauthorized seller, or both), and the offer link when one is available.
Finally, post one Slack Bot message with Send a Message to our brand protection channel, grouping the new violations by seller so the brand protection lead can act on one seller at a time. Under each seller, show how many products they are violating on and list each offer with the product, their price, our floor, and the gap. Put the sellers with the largest total gap at the top, and open the message with a one line count of new violations and sellers involved. If there are no new violations after deduplication, do not post anything at all.
What does this prompt do?
- Reads your product list from Google Sheets, including the minimum advertised price you set for each item and the sellers you have authorized to carry it
- Searches Google Shopping every morning for live offers on each product and captures the price and the seller behind every one
- Flags two kinds of problem: any offer priced under your floor, and any seller who is not on your approved list
- Logs each flagged offer to a violations tab with the date, product, seller, price, and how far under your floor it sits, then posts one Slack message grouped by seller
What do I need to use this?
- A Google Sheet with one row per product: the product name or model number, your minimum advertised price, and the sellers you allow to sell it
- A SerpApi account, which is what pulls back the live Google Shopping offers
- A Slack workspace and a channel where your brand protection lead wants the alerts
How can I customize it?
- Change the 6am schedule, or run it twice a day during peak season and promotional periods
- Add a tolerance so you only hear about offers more than a set percentage or dollar amount below your floor, instead of every cent
- Change how long the workflow stays quiet on a repeat seller and price, which starts at 7 days, and route different product lines to different Slack channels
FAQs
What is MAP and why would I need to monitor it?
What happens if a product has no offers on a given day?
Will I get the same alert every single morning until the seller fixes it?
Can it catch sellers on marketplaces like Amazon and eBay?
What counts as an unauthorized seller?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Stop hearing about MAP violations from your best retailer.
Run this every morning and see exactly who is undercutting your floor or selling your products without authorization, grouped by seller and ready to act on.