Product Price Monitor with Mailgun and MongoDB

⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template.
This workflow automatically scrapes multiple e-commerce sites, records weekly product prices in MongoDB, analyzes seasonal trends, and emails a concise report to retail stakeholders via Mailgun. It helps retailers make informed inventory and pricing decisions by providing up-to-date pricing intelligence.
Pre-conditions/Requirements
Prerequisites
- n8n instance (self-hosted, desktop, or n8n.cloud)
- ScrapeGraphAI community node installed and activated
- MongoDB database (Atlas or self-hosted)
- Mailgun account with a verified domain
- Publicly reachable n8n Webhook URL (if self-hosted)
Required Credentials
- ScrapeGraphAI API Key – Enables web scraping across target sites
- MongoDB Credentials – Connection string (MongoDB URI) with read/write access
- Mailgun API Key & Domain – To send summary emails
MongoDB Collection Schema
| Field |
Type |
Example Value |
Notes |
| productId |
String |
SKU-12345 |
Unique identifier you define |
| productName |
String |
Women's Winter Jacket |
Human-readable name |
| timestamp |
Date |
2024-09-15T00:00:00Z |
Ingest date (automatically added) |
| price |
Number |
79.99 |
Scraped price |
| source |
String |
example-shop.com |
Domain where price was scraped |
How it works
This workflow automatically scrapes multiple e-commerce sites, records weekly product prices in MongoDB, analyzes seasonal trends, and emails a concise report to retail stakeholders via Mailgun. It helps retailers make informed inventory and pricing decisions by providing up-to-date pricing intelligence.
Key Steps:
- Webhook Trigger: Starts the workflow on a scheduled HTTP call or manual trigger.
- Code (Prepare Products): Defines the list of SKUs/URLs to monitor.
- Split In Batches: Processes products in manageable chunks to respect rate limits.
- ScrapeGraphAI (Scrape Price): Extracts price, availability, and currency from each product URL.
- Merge (Combine Results): Re-assembles all batch outputs into one dataset.
- MongoDB (Upsert Price History): Stores each price point for historical analysis.
- If (Seasonal Trend Check): Compares current price against historical average to detect anomalies.
- Set (Email Payload): Formats the trend report for email.
- Mailgun (Send Email): Emails weekly summary to specified recipients.
- Respond to Webhook: Returns “200 OK – Report Sent” response for logging.
Set up steps
Setup Time: 15-20 minutes
- Install Community Node
In n8n, go to “Settings → Community Nodes” and install @n8n-community/nodes-scrapegraphai.
- Create Credentials
- Add ScrapeGraphAI API key under Credentials.
- Add MongoDB credentials (type: MongoDB).
- Add Mailgun credentials (type: Mailgun).
- Import Workflow
Download the JSON template, then in n8n click “Import” and select the file.
- Configure Product List
Open the Code (Prepare Products) node and replace the example array with your product objects { id, name, url }.
- Adjust Cron/Schedule
If you prefer a fully automated schedule, replace the Webhook with a Cron node (e.g., every Monday at 09:00).
- Verify MongoDB Collection
Ensure the collection (default: productPrices) exists or let n8n create it on first run.
- Set Recipients
In the Mailgun node, update the to, from, and subject fields.
- Execute Test Run
Manually trigger the Webhook URL or run the workflow once to verify data flow and email delivery.
- Activate
Toggle the workflow to “Active” so it runs automatically each week.
Node Descriptions
Core Workflow Nodes:
- Webhook – Entry point that accepts a GET/POST call to start the job.
- Code (Prepare Products) – Outputs an array of products to monitor.
- Split In Batches – Limits scraping to N products per request to avoid banning.
- ScrapeGraphAI – Scrapes the HTML of a product page and parses pricing data.
- Merge – Re-combines batch results for streamlined processing.
- MongoDB – Inserts or updates each product’s price history document.
- If – Determines whether price deviates > X% from the season average.
- Set – Builds an HTML/text email body containing the findings.
- Mailgun – Sends the email via Mailgun REST API.
- Respond to Webhook – Returns an HTTP response for logging/monitoring.
- Sticky Notes – Provide in-workflow documentation (no execution).
Data Flow:
- Webhook → Code → Split In Batches
- Split In Batches → ScrapeGraphAI → Merge
- Merge → MongoDB → If
- If (true) → Set → Mailgun → Respond to Webhook
Customization Examples
Change Scraping Frequency (Cron)
// Cron node settings
{
"mode": "custom",
"cronExpression": "0 6 * * 1,4" // Monday & Thursday 06:00
}
Extend Data Points (Reviews Count, Stock)
// In ScrapeGraphAI extraction config
{
"price": "css:span.price",
"inStock": "css:div.availability",
"reviewCount": "regex:\"(\\d+) reviews\""
}
Data Output Format
The workflow outputs structured JSON data:
{
"productId": "SKU-12345",
"productName": "Women's Winter Jacket",
"timestamp": "2024-09-15T00:00:00Z",
"price": 79.99,
"currency": "USD",
"source": "example-shop.com",
"trend": "5% below 3-month average"
}
Troubleshooting
Common Issues
- ScrapeGraphAI returns empty data – Confirm selectors/XPath are correct; test with ScrapeGraphAI playground.
- MongoDB connection fails – Verify IP-whitelisting for Atlas or network connectivity for self-hosted instance.
- Mail not delivered – Check Mailgun logs for bounce or spam rejection, and ensure
from domain is verified.
Performance Tips
- Use smaller batch sizes (e.g., 5 URLs) to avoid target site rate-limit blocks.
- Cache static product info; scrape only fields that change (price, stock).
Pro Tips:
- Integrate the IF node with n8n’s Slack node to push urgent price drops to a channel.
- Add a Function node to calculate moving averages for deeper analysis.
- Store raw HTML snapshots in S3/MinIO for auditability and debugging.