Monitor competitor prices with OpenAI, Google Sheets, Slack, and Notion

Go to Workflow
0 views
Built by Syed Hassan Ali Syed Hassan Ali
Created on August 18, 2026

Description

Quick overview
This workflow runs daily to read competitor product URLs from Google Sheets, fetch each page, use OpenAI to extract price and stock status, and send Slack alerts and Notion logs for significant price drops while updating the latest prices back in Google Sheets.

How it works
Runs every day on a schedule.
Loads configuration values and pulls all competitor rows (including product name, URL, and last known price) from Google Sheets.
Fetches each competitor product page URL with retries and, if the request fails, posts an error alert to Slack and continues to the next item.
Cleans the fetched HTML into plain text and sends it to OpenAI to extract a price, stock status, and a confidence level.
Routes low-confidence extractions to a Slack “manual check” alert, otherwise compares the extracted price to the last known price to detect drops beyond the configured threshold.
For significant drops, posts a Slack alert and creates a Notion database entry, then writes the latest checked time and new last-known price back to Google Sheets.
After all rows are processed, posts a daily Slack summary with counts of checked items, detected drops, fetch errors, and low-confidence extractions.

Setup
Connect credentials for Google Sheets, OpenAI, Slack, and Notion.
Create a Google Sheet with columns such as productName, competitorUrl, ourPrice, lastKnownPrice, and checkedAt, and set the sheet/document ID and sheet tab in the Google Sheets steps.
Update the Config step values for slackAlertChannelId, slackErrorChannelId, notionDatabaseId, googleSheetId, and priceDropThresholdPercent.
Ensure the HTTP request step is set to continue on error (so failed fetches route to Slack error alerts instead of stopping the run).
Create or choose a Notion database with properties matching the fields being written (for example New Price, Change %, and Competitor URL).

Requirements
Google Sheet with columns: productName, competitorUrl, ourPrice, lastKnownPrice, checkedAt
Google Sheets OAuth2 credential
OpenAI API key
Slack workspace with two channels (one for price alerts, one for errors/review)
Notion database for logging price drops

Customization
Adjust the price drop threshold percentage in the Config node
Change the schedule frequency (default: daily)
Extend the AI prompt to extract additional fields like promotional badges or shipping cost
Swap Notion for Airtable if preferred

Nodes Used (6)

Code
n8n-nodes-base.code
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest
Notion
n8n-nodes-base.notion
OpenAI
@n8n/n8n-nodes-langchain.openAi
Slack
n8n-nodes-base.slack