See llms.txt for all machine-readable content.

Back to Templates

Monitor competitor Shopify price and stock changes with Apify and Gmail

Quick overview

This workflow runs every morning to monitor specified Shopify competitor stores with Apify’s Shopify Products Scraper and emails a Gmail alert summarizing only product changes, including new items, removed items, and updates to price, title, or stock status.

How it works

  1. Runs daily at 8:00 AM using a schedule trigger.
  2. Loads the competitor store domains, alert email address, and per-store product limit from configured settings.
  3. Uses Apify (Shopify Store Products Scraper) in monitoring mode to fetch only new, changed, and removed products for the listed stores.The first run saves each store's catalogue, so it reports every product as new; after that you only get real changes. Keep the store list the same between runs: changing it starts a new baseline. Tested end to end on n8n Cloud with real Shopify stores.
  4. Builds an HTML email report that groups changes by type, includes key product details, and skips sending if there are no changes (while also listing any store read errors).
  5. Sends the formatted change summary to the configured recipient via Gmail.

Setup

  1. Add an Apify connection (OAuth2 on n8n Cloud or an Apify API token) and ensure the workflow can run the Shopify Products Scraper actor.
  2. Add a Gmail credential/connection for sending email.
  3. Update the store domain list, alert recipient email, and optional maxProductsPerStore value in the workflow settings before enabling the schedule.

Requirements

  • An Apify account (the free plan works; the scraper is pay per result)
  • A Gmail account (or swap in any email node)
  • The verified Apify community node (n8n Cloud or self-hosted)

Customization

  • Watch one collection only, e.g. sale: add "collection": "sale" to the Apify input
  • Only discounted or in-stock items: set onlyOnSale or onlyInStock to true
  • Send to Slack or Telegram instead by replacing the Gmail node