This workflow corresponds to n8n.io template #6685 — we link there as the canonical source.
This workflow follows the Emailsend → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "azsNX19ORoakJxeu",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Competitor Price & Feature Tracker for Real Estate Projects",
"tags": [],
"nodes": [
{
"id": "8ac2caf3-a568-499c-b19c-c8bda3aec69c",
"name": "Cron",
"type": "n8n-nodes-base.cron",
"position": [
-1100,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6c9875ce-1e1a-4720-ae4b-18d9f0b8f8c0",
"name": "Fetch Competitor Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
-880,
0
],
"parameters": {
"url": "={{$node['Cron'].parameter['cronExpression'] === '0 0 * * *' ? 'https://api.competitor1.com/projects' : 'https://api.competitor2.com/projects'}}",
"options": {
"timeout": 10000
}
},
"typeVersion": 1
},
{
"id": "4ca2aabd-5816-42bc-a3e3-4d584031c4fe",
"name": "Parse Data",
"type": "n8n-nodes-base.function",
"position": [
-440,
0
],
"parameters": {
"functionCode": "return items.map(item => {\n const project = item.json;\n return {\n json: {\n projectName: project.name,\n price: project.price,\n features: project.features || [],\n location: project.location,\n timestamp: new Date().toISOString()\n }\n };\n});"
},
"typeVersion": 1
},
{
"id": "d4fa57e7-ffe7-43f9-aa13-b9e1dbb1d981",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-220,
0
],
"parameters": {
"range": "CompetitorData!A:E",
"options": {},
"sheetId": "your-google-sheet-id",
"operation": "append"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "88731364-e054-42cb-96e8-8bc4b9a016cf",
"name": "Check Price Change",
"type": "n8n-nodes-base.if",
"position": [
0,
0
],
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$node['Parse Data'].json['price']}}",
"value2": "={{$node['Parse Data'].json['previousPrice'] || $node['Parse Data'].json['price']}}",
"operation": "changed"
}
]
}
},
"typeVersion": 1
},
{
"id": "a1bd7b91-8b15-4d6c-9050-b76e0de6360d",
"name": "Wait For Data",
"type": "n8n-nodes-base.wait",
"position": [
-660,
0
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "8a366005-3e4f-4133-9607-4b3a47d85632",
"name": "Send Alert Email",
"type": "n8n-nodes-base.emailSend",
"position": [
220,
0
],
"parameters": {
"text": "=\ud83c\udfe0 Price Change Alert: {{$node['Parse Data'].json['projectName']}} at {{$node['Parse Data'].json['location']}} changed from {{$node['Parse Data'].json['previousPrice'] || 'N/A'}} to {{$node['Parse Data'].json['price']}}. Features: {{$node['Parse Data'].json['features'].join(', ')}}",
"options": {},
"subject": "Price Change Alert",
"toEmail": "user@example.com",
"fromEmail": "user@example.com",
"emailFormat": "text"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "32be80e1-6174-4860-98be-a350162405c2",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
-520
],
"parameters": {
"color": 4,
"width": 960,
"height": 420,
"content": "## Operational Process\n- **Set Cron**: Triggers the workflow on a scheduled basis (e.g., hourly).\n- **Fetch Competitor Data**: Performs GET requests to retrieve competitor pricing and feature data (e.g., https://api.competitor.com).\n- **Wait For Data**: Introduces a delay to ensure data is fully retrieved.\n- **Parse Data**: Processes and extracts relevant pricing and feature details.\n- **Log to Google Sheets**: Appends the parsed data to a Google Sheet for tracking.\n- **Check Price Change**: Evaluates if there\u2019s a significant price change.\n- **Send Alert Email**: Sends an email notification if a price change is detected.\n- **No Action for Minor Changes**: Skips action if no significant price change is found.\n\n\n## Customization Options\n- Adjust the Cron schedule for different intervals (e.g., daily).\n- Modify the HTTP node to fetch additional competitor data (e.g., features, availability).\n- Customize email alert content in the `Send Alert Email` node.\n- Enhance Google Sheets log with additional fields (e.g., timestamp, competitor name).\n- Add Slack or WhatsApp notifications for additional alert channels."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "113728ef-35f9-4b06-8ef3-9c95ca42aeb2",
"connections": {
"Cron": {
"main": [
[
{
"node": "Fetch Competitor Data",
"type": "main",
"index": 0
}
]
]
},
"Parse Data": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Wait For Data": {
"main": [
[
{
"node": "Parse Data",
"type": "main",
"index": 0
}
]
]
},
"Check Price Change": {
"main": [
[
{
"node": "Send Alert Email",
"type": "main",
"index": 0
}
]
]
},
"Log to Google Sheets": {
"main": [
[
{
"node": "Check Price Change",
"type": "main",
"index": 0
}
]
]
},
"Fetch Competitor Data": {
"main": [
[
{
"node": "Wait For Data",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleApismtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This solution monitors competitor pricing and features for real estate projects by fetching data from a competitor API, parsing it, logging it to Google Sheets, and sending email alerts for significant price changes. It runs on a scheduled basis to keep real-time track of market…
Source: https://n8n.io/workflows/6685/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Security teams, DevOps engineers, vulnerability analysts, and automation builders who want to eliminate repetitive Nessus scan parsing, AI-based risk triage, and manual reporting. Designed for orgs fo
This n8n workflow automatically finds apartments for rent in Germany, filters them by your city, rent budget, and number of rooms, and applies to them via email. Each application includes: A personali
👤 Who it’s for Blue Team leads, CISOs, and SOC managers who want automated visibility into threat metrics, endpoint alerts, and response actions — without needing a full SIEM or BI platform.
Workflow Overview Zoom Attendance Evaluator with Follow-up is an n8n automation workflow that automatically evaluates Zoom meeting attendance and sends follow-up emails to no-shows and early leavers w
This workflow automatically monitors Amazon product prices, tracks price changes, and sends alerts when significant price fluctuations occur. Built with ScrapeOps' structured data API, it provides a r