n8n Price Monitoring: Track Competitor Prices with Google Sheets and Slack
This n8n workflow reads a watchlist of competitor product pages from Google Sheets each morning, fetches each page, extracts the price with a CSS selector and compares it with the last recorded price. It updates the sheet with the new price and check time, then sends one Slack message summarising every change and any page where the price could not be found.
- Difficulty
- Intermediate
- Setup time
- About 1 hour, depending on how many pages you track
- Nodes
- 11
- Checked against
- n8n 2.41
- Google Sheets
- HTTP Request
- OpenAI or Anthropic
- Slack
Last reviewed October 2026
What this workflow does
Retailers and ecommerce brands often learn about a competitor's price cut from a customer, or from a drop in their own sales. Checking competitor pages by hand works for a few products but falls apart once the list grows, and it is the kind of task nobody remembers to do on a busy Monday.
This template suits online retailers, wholesalers, and service businesses with published price lists that want a simple daily record of what competitors charge. It uses plain HTTP requests and a Google Sheet you control, so there is no separate scraping subscription for straightforward pages. You get a price history in the sheet and a short Slack summary only when something moves.
Who it's for
- →Online retailers watching a handful of direct competitors on key products
- →Shopify and WooCommerce store owners who want to know when rivals run a sale
- →Category and pricing managers who need a daily record of competitor prices
- →Service businesses tracking published package prices from local competitors
How it works, step by step
- 1
Run every morning
A Schedule Trigger starts the workflow at 7am in the workflow's Australia/Sydney timezone. Change the hour or add weekday rules as needed.
- 2
Read the watchlist
The Google Sheets node reads every row from the Watchlist tab: product name, competitor, page URL, the CSS selector for the price, the last price and the last check time.
- 3
Fetch each competitor page
An HTTP Request node downloads each page one at a time with a short pause between requests and an identifying User-Agent, so the workflow behaves politely.
- 4
Extract the price
The HTML node applies the row's CSS selector to the page and returns the text of the price element.
- 5
Compare with the last price
A Code node strips currency symbols, converts the price to a number, compares it with the stored price and marks the row as changed, unchanged or price not found.
- 6
Update the watchlist
Google Sheets updates each row, matched on URL, with the current price, check time and status, so the sheet always holds the latest known price.
- 7
Keep only changes and problems
A Filter node passes on rows where the price changed or could not be found, then an Aggregate node combines them into one list.
- 8
Summarise and alert in Slack
A Basic LLM Chain with an OpenAI or Anthropic chat model writes a short summary from the data only, and Slack posts it to your pricing channel.
What you need
Google Sheets
A spreadsheet with a Watchlist tab and the columns product_name, competitor, url, price_selector, last_price, last_checked and status, plus a Google Sheets OAuth2 credential.
Competitor product URLs and selectors
The public page for each product and the CSS selector for its price, found with your browser's Inspect tool.
OpenAI or Anthropic API key
Used to write the Slack summary. You can remove the chain and post the raw list if you prefer.
Slack workspace
A Slack credential that can post to your pricing or alerts channel.
Set it up in n8n
- 1
Create the Google Sheet with a Watchlist tab and the seven column headers listed above, then add a few products.
- 2
For each product, open the competitor page, right-click the price, choose Inspect and copy a stable selector such as .price or [itemprop=price] into price_selector.
- 3
Check each competitor site's robots.txt and terms of use, and remove any site that does not permit automated access.
- 4
Import the workflow, connect Google Sheets in Read Watchlist and Update Watchlist, and replace YOUR_GOOGLE_SHEET_ID.
- 5
In Fetch Competitor Page, replace the contact address in the User-Agent header with your own business address.
- 6
Add your OpenAI key, or swap the chat model for an Anthropic Chat Model connected to Summarise Price Changes.
- 7
Connect Slack in Send Slack Alert and change the #competitor-prices channel to your own.
- 8
Run the workflow once to record starting prices, edit a last_price value to test an alert, then activate it.
Ways to customise it
- +Add an email alert with Gmail or Outlook for team members who are not on Slack.
- +Append every check to a separate History tab to chart price trends over time.
- +Use a scraping API or headless browser service for pages that load prices with JavaScript.
- +Add a stock status selector to track when competitors sell out as well as price moves.
- +Only alert when the change exceeds a set dollar amount by adding a condition to the Filter node.
For Australian businesses
Only monitor publicly available pages, and check each site's robots.txt and terms of use first. Robots.txt is a convention rather than a law, but site terms can prohibit automated access, and ignoring them can create contract and access risks. Collect prices only; product descriptions and images are likely protected by copyright under the Copyright Act 1968. Watching competitors' public prices is ordinary practice, but discussing or agreeing prices with a competitor can be cartel conduct under the Competition and Consumer Act 2010. If you change your own prices in response, the Australian Consumer Law still applies: displayed prices must be accurate, include mandatory fees, and any was/now comparison must reflect a genuine previous price. The schedule runs in Australia/Sydney time; adjust for Perth or Brisbane.
Tools in this workflow
n8n
Free plan + paidAutomation
A workflow automation platform that combines a visual node editor with code when you need it. It connects hundreds of apps and APIs and includes AI agent nodes that can call language models, tools and memory. Teams can self-host the free Community Edition on their own servers or use n8n's hosted cloud.
Best for: Australian organisations that need automation data to stay onshore
n8n review →ChatGPT (OpenAI)
Free plan + paidGeneral Assistant
OpenAI's general-purpose AI assistant. It handles writing, coding, file and image analysis, data analysis and web research through a chat interface, with an API for building it into your own systems.
Best for: Small and mid-sized teams wanting one general assistant for everyday writing and analysis
ChatGPT review →Claude (Anthropic)
Free plan + paidGeneral Assistant
Anthropic's AI assistant, known for careful reasoning, long-document analysis, writing and coding. It can work through large documents and codebases in a single conversation, paid plans include the Claude Code agentic coding tool, and it is available through an API and major cloud platforms.
Best for: Legal, policy and consulting teams reviewing long documents
Claude review →Make
Free plan + paidAutomation
A visual automation platform, formerly Integromat, where workflows called scenarios are built on a drag-and-drop canvas. It handles branching, iteration and error routes across a large library of apps, and adds AI agents and AI modules that can reason over data within a scenario. Make is owned by process mining company Celonis.
Best for: Operations teams building complex multi-step workflows without code
Make review →
Frequently asked questions
Can n8n scrape competitor prices?
Yes. The HTTP Request node fetches a page and the HTML node extracts text using a CSS selector. This works for pages where the price is in the HTML. Pages that build prices with JavaScript need a headless browser or scraping API service instead.
Is it legal to monitor competitor prices in Australia?
Looking at prices competitors publish is ordinary market research. The risks come from breaching a site's terms of use, copying copyright content, or coordinating prices with competitors. Check each site's terms and robots.txt, and get legal advice if you are unsure.
Why does a row show price not found?
Either the CSS selector no longer matches because the competitor changed their page layout, the page loads the price with JavaScript, or the site blocked the request. Open the page, inspect the price again and update the selector in the sheet.
How often should the workflow check prices?
Daily is enough for most retailers and keeps request volumes low. If you need more frequent checks during sale periods, add a second schedule rule, keep the pause between requests, and make sure the sites' terms allow it.
Do I need the AI summary?
No. The comparison is done in a Code node, not by AI. The chat model only turns the list of changes into a readable message. You can delete the chain and send the aggregated list straight to Slack.
More marketing & content templates
Other n8n templates
- Speed to Lead: AI Lead Qualification from Website Form to HubSpot
- AI Company Research Agent: Lead Research Briefs Saved to HubSpot
- AI Email Triage for Gmail: Labels, Draft Replies and a Daily Digest
- RAG Website Support Chatbot from Your Google Drive Docs with Human Handoff
- Supplier Invoice Email to Xero Draft Bill with AI Extraction
- Tiered Overdue Invoice Reminders from Xero
Want this running in your business?
AI Lab Australia sets up n8n workflows end to end: hosting in Australia, connecting your systems, testing with real data and handing over documentation.
