← field notes
case study

Competitor Price Monitoring Bot That Runs Every Morning

Apr 13, 2026 5 min read

An online electronics retailer was spending 2 hours every morning manually checking competitor prices across 250 SKUs. We built an n8n pipeline that scrapes, compares, and delivers a Slack digest before the trading day starts — and found 12% of their margin sitting on the table.

The problem

James runs a five-person online electronics shop. Every morning, someone on his team would open a spreadsheet, manually visit four competitor websites, find matching products, and log the prices. It took about two hours. On the days they skipped it — bank holidays, busy periods — they were flying blind.

Twice in six months they'd missed a competitor running a weekend flash sale and watched conversion drop without understanding why until Monday morning. By then it was too late.

Proper repricing tools exist, but they're built for Amazon and priced accordingly. James didn't need dynamic repricing. He needed visibility — fast enough to act on it.

What we built

A fully automated price monitoring pipeline on n8n. Here's the flow:

price monitor — n8n, runs daily at 06:00
Cron Trigger
06:00 daily
──▶
🕷️
Scraper ×4
HTTP + CSS selectors
──▶
🛒
Shopify API
Own prices
──▶
🔍
Compare + Flag
Risk / Opportunity
──▶
📊
Log to Sheets
Rolling history
──▶
💬
Slack Digest
06:30 delivery
↳ Team wakes up to a Slack message: top 10 price gaps, any new competitor drops, and a "clear" signal if nothing material changed

The scraper hits four competitor sites at 6 AM using plain HTTP requests and CSS selectors — no headless browser needed since prices are server-rendered. Each scraped price is matched against a Google Sheet mapping table (competitor URL → James's SKU) and compared with live Shopify prices via the Admin API.

Items where a competitor is more than 3% cheaper get flagged as exposure. Items where James is cheaper than all competitors get tagged as potential margin upside. Everything logs to a rolling Google Sheet — one row per SKU per day — giving him a 90-day price history he'd never had before.

The Slack message lands at 6:30 AM. On quiet days it's two lines. On the day a competitor ran a 15% category flash sale at 7 PM, the midnight re-run caught it and the team matched prices before Friday opened.

The edge cases

A few things that aren't obvious until you're building it:

The result

after 6 weeks
~2 hours/day saved — zero manual checking since launch
12% average margin improvement — 42 SKUs repriced after discovering they were underpriced vs. all competitors
Flash sale caught in real-time — matched competitor promotion within 90 minutes
90-day price history now available on every SKU
Runs on the same $12/month VPS as their other n8n workflows

The margin finding was the real surprise. By surfacing SKUs where James was cheaper than all four competitors — often by 10–20% — he raised prices on 42 products in the first three weeks. Conversion didn't move. Revenue did.

"I'd been leaving money on the table for two years without knowing it," he told us. "The bot paid for itself in week one."

The build

We scoped this under our single-flow Starter tier. The build took about two and a half days: scraper and Shopify integration on day one, comparison logic and Sheets logging on day two, Slack output tuning and edge-case testing on day three.

James got the full n8n workflow JSON, the Google Sheets mapping template, and a short doc for adding new competitors or updating SKU mappings himself. No ongoing dependency on us.

Running an e-commerce store and still doing price research manually? Let's talk.

[ let's talk ]

📖 Further Reading


home work pricing blog about