Daily Shopify competitor undercut watch in Slack

By General Input

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.

Integrations

  • Shopify
  • Real-Time Product Search
  • Google Sheets
  • Slack

Type

Deterministic Code

Categories

  • Operations
  • Sales

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.

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