This workflow corresponds to n8n.io template #6179 — we link there as the canonical source.
This workflow follows the Discord → HTTP Request 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "646a8d10-7ded-4f80-aa17-86c53bddbc43",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-680,
140
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "c5199922-2c7e-4752-b016-b9c7715f6ed1",
"name": "Discord1",
"type": "n8n-nodes-base.discord",
"position": [
560,
180
],
"parameters": {
"content": "Price checks complete.",
"options": {},
"authentication": "webhook"
},
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "e21bf2ed-e964-479e-9097-3b35d834d9ee",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
380
],
"parameters": {
"width": 660,
"height": 380,
"content": "## setting checked column to \"0\" for next day checks"
},
"typeVersion": 1
},
{
"id": "f5dbaff2-5cdc-474c-8f6e-0ec299730a0f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
500,
120
],
"parameters": {
"color": 4,
"width": 200,
"height": 200,
"content": "price checks completed message to discord"
},
"typeVersion": 1
},
{
"id": "b5d5c422-af74-408a-b060-3e5bf8c6578d",
"name": "get unchecked row",
"type": "n8n-nodes-base.googleSheets",
"position": [
-300,
140
],
"parameters": {
"options": {
"returnFirstMatch": true
},
"filtersUI": {
"values": [
{
"lookupValue": "0",
"lookupColumn": "checked"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit?usp=drivesdk",
"cachedResultName": "price-check-sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6,
"alwaysOutputData": true
},
{
"id": "cee99b2f-6d63-40dc-bbfc-d98dc6bd3449",
"name": "HTTP Request to product page",
"type": "n8n-nodes-base.httpRequest",
"position": [
420,
-105
],
"parameters": {
"url": "={{ $json['Competitor URL'] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "0b842eec-6f2d-4c62-ab00-403164951e64",
"name": "price extract from page",
"type": "n8n-nodes-base.html",
"position": [
640,
-105
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": ".price_color"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "cce7d4e7-98a5-4c70-b90f-007ee6402e94",
"name": "Code to convert price into number",
"type": "n8n-nodes-base.code",
"position": [
860,
-105
],
"parameters": {
"jsCode": "const priceStr = $input.first().json.price\nconst priceNumber = parseFloat(priceStr.replace(\"\u00a3\", \"\").trim());\n\nreturn [{ json: { price: priceNumber } }];\n"
},
"typeVersion": 2
},
{
"id": "f74511f8-a89b-44ab-be06-74bc6522cec5",
"name": "price greater than ours?",
"type": "n8n-nodes-base.if",
"position": [
1080,
-105
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "37f18553-eb25-4f11-9803-73db6f67091c",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $json.price }}",
"rightValue": "={{ $('get unchecked row').item.json['my Price'] }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d597ca2e-2e41-45c0-a8da-b1285bde2cd6",
"name": "Discord price alert",
"type": "n8n-nodes-base.discord",
"position": [
1300,
-180
],
"parameters": {
"content": "=competitor has decreased price on product: {{ $('get unchecked row').item.json['Product Name'] }}\n\nour price: {{ $('get unchecked row').item.json['my Price'] }}\ncompetitor's price:{{ $('Code to convert price into number').item.json.price }}",
"options": {},
"authentication": "webhook"
},
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "ded0c28b-e4d1-494a-bd6f-e2b88bb12c61",
"name": "Update status to 1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1520,
95
],
"parameters": {
"columns": {
"value": {
"checked": "1",
"Product Name": "={{ $('get unchecked row').item.json['Product Name'] }}",
"competitor price": "={{ $('Code to convert price into number').item.json.price }}"
},
"schema": [
{
"id": "Product Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Product Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "my Price",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "my Price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Competitor URL",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Competitor URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "competitor price",
"type": "string",
"display": true,
"required": false,
"displayName": "competitor price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "checked",
"type": "string",
"display": true,
"required": false,
"displayName": "checked",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Product Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit?usp=drivesdk",
"cachedResultName": "price-check-sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "6b784dd4-681b-4e80-83ca-80dbe0e1e519",
"name": "Get status row",
"type": "n8n-nodes-base.googleSheets",
"position": [
840,
520
],
"parameters": {
"options": {
"returnFirstMatch": true
},
"filtersUI": {
"values": [
{
"lookupValue": "1",
"lookupColumn": "checked"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit?usp=drivesdk",
"cachedResultName": "price-check-sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6,
"alwaysOutputData": true
},
{
"id": "af9aea9b-5370-439f-8bf7-84159b3bb1cf",
"name": "row returned?",
"type": "n8n-nodes-base.if",
"position": [
1060,
440
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "998fc0d0-8d33-43cb-b6e8-f9516c28b55f",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "af494912-3a5a-4b78-a0c4-57a3f1be5af6",
"name": "Update status back to 0",
"type": "n8n-nodes-base.googleSheets",
"position": [
1280,
520
],
"parameters": {
"columns": {
"value": {
"checked": "0",
"Product Name": "={{ $json[\"Product Name\"] }}"
},
"schema": [
{
"id": "Product Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Product Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "my Price",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "my Price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Competitor URL",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Competitor URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "competitor price",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "competitor price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "checked",
"type": "string",
"display": true,
"required": false,
"displayName": "checked",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Product Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/16-hEaIl8Tng5SB5jbpu26kT7G-g1cFM5_w2AILwT3Pc/edit?usp=drivesdk",
"cachedResultName": "price-check-sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "6c1fe1cd-56af-4c51-91b3-d5eaa9ce2948",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-820,
40
],
"parameters": {
"width": 300,
"height": 280,
"content": "## start at desired schedule\n### daily in this example"
},
"typeVersion": 1
},
{
"id": "2a156baa-d3fc-4d73-8241-d6021ddf1514",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
360,
-220
],
"parameters": {
"width": 860,
"height": 300,
"content": "## get price from competitor's product page and convert into number\n"
},
"typeVersion": 1
},
{
"id": "5e3db4b8-4bb7-477e-873c-ac77a5536ce1",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-340,
-20
],
"parameters": {
"width": 180,
"height": 340,
"content": "## get un checked roe\n- ### extract name, page-url, our price"
},
"typeVersion": 1
},
{
"id": "644a8dbc-6f7b-49cb-bc7b-96157db7a4ea",
"name": "row exist?",
"type": "n8n-nodes-base.if",
"position": [
100,
140
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8dd1be30-0d27-4c75-9d0b-c0db05a0fb4f",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json}}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "2bae4c20-dabc-4833-9524-46308c3017b3",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1260,
-380
],
"parameters": {
"color": 3,
"width": 180,
"height": 380,
"content": "## discord alert \n- ### our price is greater than competition"
},
"typeVersion": 1
},
{
"id": "5e289971-7536-4c4f-a508-eb8af7e63fb9",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1480,
-20
],
"parameters": {
"width": 260,
"height": 260,
"content": "## set checked to 1"
},
"typeVersion": 1
},
{
"id": "107fdca7-f641-4237-851a-776b63f5949c",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-100
],
"parameters": {
"width": 260,
"height": 360,
"content": "## if unchecked row exist?\n- ### yes? (then extracts data)\n- ### else sends message checks are done and set checks to 0 for next day checks "
},
"typeVersion": 1
}
],
"connections": {
"Discord1": {
"main": [
[
{
"node": "Get status row",
"type": "main",
"index": 0
}
]
]
},
"row exist?": {
"main": [
[
{
"node": "HTTP Request to product page",
"type": "main",
"index": 0
}
],
[
{
"node": "Discord1",
"type": "main",
"index": 0
}
]
]
},
"row returned?": {
"main": [
[
{
"node": "Update status back to 0",
"type": "main",
"index": 0
}
]
]
},
"Get status row": {
"main": [
[
{
"node": "row returned?",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "get unchecked row",
"type": "main",
"index": 0
}
]
]
},
"get unchecked row": {
"main": [
[
{
"node": "row exist?",
"type": "main",
"index": 0
}
]
]
},
"Update status to 1": {
"main": [
[
{
"node": "get unchecked row",
"type": "main",
"index": 0
}
]
]
},
"Discord price alert": {
"main": [
[
{
"node": "Update status to 1",
"type": "main",
"index": 0
}
]
]
},
"Update status back to 0": {
"main": [
[
{
"node": "Get status row",
"type": "main",
"index": 0
}
]
]
},
"price extract from page": {
"main": [
[
{
"node": "Code to convert price into number",
"type": "main",
"index": 0
}
]
]
},
"price greater than ours?": {
"main": [
[
{
"node": "Discord price alert",
"type": "main",
"index": 0
}
],
[
{
"node": "Update status to 1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request to product page": {
"main": [
[
{
"node": "price extract from page",
"type": "main",
"index": 0
}
]
]
},
"Code to convert price into number": {
"main": [
[
{
"node": "price greater than ours?",
"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.
discordWebhookApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow monitors product prices from BooksToScrape and sends alerts to a Discord channel via webhook when competitor's prices are lower than our prices. Schedule (for daily or required schedule) If nodes (to check if checked or unchecked data exists) HTTP Request (for…
Source: https://n8n.io/workflows/6179/ — 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.
This workflow provides an automated, intelligent solution for global weather monitoring. It goes beyond simple data fetching by calculating a custom "Comfort Index" and using AI to provide human-like
AmazonLuna-Games-Fetch. Uses httpRequest, scheduleTrigger, googleSheets, stickyNote. Scheduled trigger; 16 nodes.
Automatically fetch, organize, and maintain an updated catalog of Amazon Luna – Included with Prime games.This workflow regularly queries Amazon’s official Luna endpoint, extracts complete metadata, a
AI-Powered Short-Form Video Generator with OpenAI, Flux, Kling, and ElevenLabs and upload to all social networks. Uses httpRequest, openAi, stickyNote, googleDrive. Scheduled trigger; 51 nodes.
AI Automated TikTok/Youtube Shorts/Reels Generator. Uses httpRequest, openAi, stickyNote, googleDrive. Scheduled trigger; 41 nodes.