Daily Shopify competitor undercut watch in Slack

Every weekday at 6am, compare your Shopify prices to live Google Shopping offers, log every check to a sheet, and Slack alert only the SKUs that competitors are undercutting.

Deterministic Code
ShopifyReal-Time Product SearchGoogle SheetsSlackOperationsSalesNotifications & AlertsResearch & MonitoringDaily Digests
PromptCreate

Build me a deterministic code workflow that runs a competitor undercut watch for my Shopify store every weekday at 6am in my local time zone. The trigger is a cron schedule, not a webhook or poll. The workflow should be fixed nodes with a fixed loop, fixed comparison, and a fixed alert format. No agent reasoning in the middle.

Step 1. Call Shopify List Products to fetch my active catalog. Default to active products only. Expose a configurable filter so I can restrict to products with a specific tag (default: include all active products). Page through results until the catalog is complete. For each product, capture id, title, my current price (use the first variant's price if there are multiple variants), and SKU.

Step 2. For each product in the catalog, call Real-Time Product Search Search Products using the product title as the query. Take the top matching Google Shopping result that looks like the same product (best-match heuristic on title similarity is fine; if no result, skip and log skipped). Capture its product_id from the Real-Time Product Search response.

Step 3. For that matched product_id, call Real-Time Product Search Get Product Offers to pull every current seller offer across retailers. Pick the single lowest competitor offer by price (exclude offers from my own store domain). Capture lowest_competitor_price and competitor_store_name.

Step 4. Compute percent_gap = (my_price - lowest_competitor_price) / my_price * 100. A positive percent_gap means I am being undercut.

Step 5. Call Google Sheets Append Values to append one row per product checked to a configured pricing log spreadsheet and tab. Columns in this order: date (YYYY-MM-DD), product_title, my_sku, my_price, lowest_competitor_price, competitor_store, percent_gap, status ("checked", "skipped_no_match", or "undercut_alert"). Append a row for every product, including ones that aren't being undercut, so I build a price history.

Step 6. Only for products where percent_gap is greater than a configurable threshold (default 5 percent), call Slack Send a Message to a configured channel. The message format should be concise: product title, my SKU, my price, lowest competitor price, competitor store, and the percent gap. One message per undercut product. To avoid noise, alert at most once per SKU per day: before sending, check if today's sheet already has a row with status "undercut_alert" for the same SKU, and if so, skip the Slack send (still write the log row, but mark status as "undercut_already_alerted").

Configurable inputs that should be exposed at workflow level: cron time and time zone, the Shopify product tag filter (optional), the Google Sheets spreadsheet id and tab name, the Slack channel, and the undercut threshold percent (default 5). Everything else is fixed.

Use the Real-Time Product Search integration (Google Shopping). Use the Shopify integration. Use the Google Sheets integration. Use the Slack integration.

Additional information

What does this prompt do?
  • Pulls your active Shopify catalog every weekday morning so the watch always reflects what you're actually selling today.
  • Searches Google Shopping for each product and finds the lowest competitor offer, including which retailer it came from.
  • Writes a row to a Google Sheets pricing log for every product checked, so you build a daily history of how the market is moving.
  • Sends a Slack alert only when a competitor beats your price by more than your chosen threshold, and only once per product per day so the channel stays useful.
What do I need to use this?
  • A Shopify store you can connect with read access to your product catalog.
  • A Real-Time Product Search account for live Google Shopping price data.
  • A Google account with a Sheets file ready to receive the pricing log.
  • A Slack workspace and the channel where undercut alerts should land.
How can I customize it?
  • Change the schedule or time zone, for example run twice a day, only on Mondays, or skip weekends.
  • Adjust the undercut threshold from the default 5 percent, or set different thresholds for different product collections.
  • Limit the check to a tagged subset of products instead of the full catalog, useful if you want to watch only hero SKUs.
  • Swap the Slack channel, mention a specific person on big gaps, or route different product types to different channels.

Frequently asked questions

Will this work for any Shopify plan?
Yes. The workflow only reads your product catalog, so any Shopify plan that lets you connect a custom app with product read access will work.
Where does the competitor pricing come from?
Live Google Shopping listings via Real-Time Product Search. That covers most major retailers selling the same product, without you maintaining a list of competitor URLs.
Won't this spam Slack on a big catalog?
No. The workflow only posts in Slack when a competitor beats your price by more than your threshold, and it only alerts once per product per day so a single bad price doesn't pile up.
Can I watch only my hero products instead of everything?
Yes. You can scope the run to a Shopify tag, a collection, or a manual SKU list, so the watch focuses on the products where price matters most.
Do I still get a history of products that aren't being undercut?
Yes. Every product checked gets a row in the Google Sheets log, with your price, the lowest competitor price, the competitor store, and the gap. Slack only sees the undercuts.

Stop letting competitors quietly undercut your store.

Connect Shopify, Google Sheets, and Slack once, and this watch runs every weekday morning before you open your laptop.