This workflow corresponds to n8n.io template #5217 — we link there as the canonical source.
This workflow follows the Gmail → 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": "HPuntqVPRH2UITi4",
"name": "Bitcoin_Price_Drop_Alert_System_via_Bright_Data",
"tags": [],
"nodes": [
{
"id": "8746bf3b-5e6b-4f14-815d-4b774c3302c3",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
2040,
780
],
"parameters": {},
"typeVersion": 1
},
{
"id": "1a5d6ae5-9491-4199-a6fe-ae01593ebedd",
"name": "Get Last Recorded Price",
"type": "n8n-nodes-base.googleSheets",
"position": [
2880,
780
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15DSwLkRw9NK2RIhXLMjzysmF9QYa5afreDXFrDQNXPM/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15DSwLkRw9NK2RIhXLMjzysmF9QYa5afreDXFrDQNXPM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15DSwLkRw9NK2RIhXLMjzysmF9QYa5afreDXFrDQNXPM/edit?usp=drivesdk",
"cachedResultName": "Bitcoin latest price"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "b48cce2e-63f3-4b4a-b9e7-f7506695dd8a",
"name": "Send Alert Email",
"type": "n8n-nodes-base.gmail",
"position": [
3780,
600
],
"parameters": {
"sendTo": "user@example.com",
"message": "=Hello,\n\nThe price of Bitcoin has dropped by {{ $json.dropPercent }}% since the last check.\n\nPrevious Price: {{ $json.previousPrice }}\nCurrent Price: {{ $json.currentPrice }}\n\nPlease review accordingly.\n\nBest regards,\nYour Crypto Monitor Bot\n`;\n",
"options": {
"appendAttribution": false
},
"subject": "=Bitcoin Price has dropped {{ $json.dropPercent }}%",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "d1f96797-9558-403d-a37c-604e07e76563",
"name": "No Alert Needed",
"type": "n8n-nodes-base.noOp",
"position": [
3780,
900
],
"parameters": {},
"typeVersion": 1
},
{
"id": "208006b9-4cae-4199-9342-d7646fe38672",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 4,
"width": 1300,
"height": 320,
"content": "=======================================\n WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n - YouTube: https://www.youtube.com/@YaronBeen/videos\n - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
},
"typeVersion": 1
},
{
"id": "403e8b40-1a0f-464e-8d81-a162c0308252",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
340
],
"parameters": {
"color": 4,
"width": 1289,
"height": 2558,
"content": "# \ud83d\udcc9\ud83d\udcb0 **Bitcoin Price Drop Alert Workflow**\n\nThis automated workflow checks the current Bitcoin price and **sends an email alert if it drops by 5% or more** compared to the last recorded value. It\u2019s split into 3 easy-to-understand sections:\n\n---\n\n## \ud83d\udd0e **Section 1: Fetch the Current Bitcoin Price**\n\n\ud83e\udde9 **Nodes:**\n\n1. **\u26a1 Manual Trigger**\n2. **\ud83c\udf10 Fetch Bitcoin Price**\n3. **\ud83e\uddf1 Extract Price**\n\n### \ud83e\udde0 What Happens:\n\n* **\u26a1 Manual Trigger**\n This starts the process manually. Think of it like pressing a \"Start\" button.\n\n* **\ud83c\udf10 Fetch Bitcoin Price**\n Uses the [Bright Data API](https://brightdata.com/) to scrape the live Bitcoin price from a specific website using a POST request.\n\n* **\ud83e\uddf1 Extract Price**\n Extracts the **exact price value** from the scraped HTML using selectors (like CSS paths).\n\n### \ud83d\udca1 Why It\u2019s Useful:\n\nYou can track the **real-time price** of Bitcoin straight from any public site, even those not offering official APIs. It's like building your own live feed.\n\n---\n\n## \ud83d\udcca **Section 2: Calculate and Compare with Historical Price**\n\n\ud83e\udde9 **Nodes:**\n4\\. **\ud83d\udd04 Convert Type**\n5\\. **\ud83d\udcd7 Get Last Recorded Price (Google Sheet)**\n6\\. **\ud83d\udcc9 Find Drop Percentage**\n\n### \ud83e\udde0 What Happens:\n\n* **\ud83d\udd04 Convert Type**\n Converts the price from a text format to a number so we can calculate with it.\n\n* **\ud83d\udcd7 Get Last Recorded Price**\n Pulls the **previous Bitcoin price** from a Google Sheet (a record from last check). Acts like your \u201cmemory\u201d.\n\n* **\ud83d\udcc9 Find Drop Percentage**\n Calculates how much the price has dropped:\n\n $$\n \\text{Drop (\\%)} = \\frac{\\text{Previous Price - Current Price}}{\\text{Previous Price}} \\times 100\n $$\n\n### \ud83d\udca1 Why It\u2019s Useful:\n\nYou\u2019re comparing real-time data with past values automatically\u2014no spreadsheets or calculators needed! This makes it ideal for **traders or enthusiasts** watching for price alerts.\n\n---\n\n## \ud83d\udea8 **Section 3: Send Alert if Drop \u2265 5%**\n\n\ud83e\udde9 **Nodes:**\n7\\. **\ud83d\udd00 If droppercentage >= 5**\n8\\. **\ud83d\udce7 Send Alert Email**\n9\\. **\u27a1\ufe0f No Alert Needed**\n\n### \ud83e\udde0 What Happens:\n\n* **\ud83d\udd00 If Statement**\n Checks: Has the price dropped by **5% or more**?\n\n* **\ud83d\udce7 Send Alert Email** (if true)\n Automatically sends an email to notify you about the drop. This could go to your inbox, or a team.\n\n* **\u27a1\ufe0f No Alert Needed** (if false)\n The workflow ends quietly without doing anything else.\n\n### \ud83d\udca1 Why It\u2019s Useful:\n\nIt **only alerts you when it matters**, saving your attention for big changes. You don\u2019t need to monitor prices all day.\n\n---\n\n## \ud83c\udf81 **Final Benefits:**\n\n\u2705 **No coding required**\n\u2705 **Real-time price check**\n\u2705 **Smart alerts based on thresholds**\n\u2705 **Great for traders, analysts, or crypto fans**\n\u2705 **Fully extendable** \u2013 you could log alerts, update the sheet, send Slack/Telegram messages, etc.\n\n---\n\n## \ud83c\udf08 BONUS IDEA:\n\nWant it to run automatically? Add a **\ud83d\udd52 Cron Trigger** to check every 10 mins, 1 hour, or even daily!\n\n---\n"
},
"typeVersion": 1
},
{
"id": "201e7c73-d960-47c5-934e-f8fe0630ca2c",
"name": "Fetch Bitcoin Price",
"type": "n8n-nodes-base.httpRequest",
"position": [
2240,
780
],
"parameters": {
"url": "https://api.brightdata.com/request",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "zone",
"value": "n8n_unblocker"
},
{
"name": "url",
"value": "https://coinmarketcap.com/currencies/bitcoin/"
},
{
"name": "country",
"value": "us"
},
{
"name": "format",
"value": "raw"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ff6d0c30-0e72-4a28-9628-b94606461a20",
"name": "Extract Price",
"type": "n8n-nodes-base.html",
"position": [
2440,
780
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": "<span class=\"sc-65e7f566-0 esyGGG base-text\" data-test=\"text-cdp-price-display\">$105,095.42</span>"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "759e26b7-a260-469e-ba17-fc5bee7be762",
"name": "Convert type",
"type": "n8n-nodes-base.code",
"position": [
2660,
780
],
"parameters": {
"jsCode": "return items.map(item => {\n const priceStr = item.json.price;\n const priceNumber = parseFloat(priceStr.replace(/[$,]/g, ''));\n return {\n json: {\n price: priceNumber\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "c33e81f4-f06e-4e47-942f-4764027f270c",
"name": "Find drop percentage",
"type": "n8n-nodes-base.code",
"position": [
3100,
780
],
"parameters": {
"jsCode": "// Extract current and previous price from separate input items\nconst currentPrice = $('Convert type').first().json.price;\nconst previousPrice = $input.first().json.Price;\n\nconst dropPercent = previousPrice !== 0 \n ? ((previousPrice - currentPrice) / previousPrice) * 100 \n : 0;\n\nreturn [{\n json: {\n currentPrice,\n previousPrice,\n dropPercent: parseFloat(dropPercent.toFixed(2))\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "cb64ae28-6086-4301-85b7-a8bdac6c2370",
"name": "If droppercentage >= 5",
"type": "n8n-nodes-base.if",
"position": [
3420,
780
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9b9dfa4e-92d1-408e-90f0-355141f73d54",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $json.dropPercent }}",
"rightValue": 5
}
]
}
},
"typeVersion": 2.2
},
{
"id": "08bcbb20-2f85-45c9-b56e-61edb70ccd74",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
2020,
0
],
"parameters": {
"color": 3,
"width": 540,
"height": 980,
"content": "## \ud83d\udd0e **Section 1: Fetch the Current Bitcoin Price**\n\n\ud83e\udde9 **Nodes:**\n\n1. **\u26a1 Manual Trigger**\n2. **\ud83c\udf10 Fetch Bitcoin Price**\n3. **\ud83e\uddf1 Extract Price**\n\n### \ud83e\udde0 What Happens:\n\n* **\u26a1 Manual Trigger**\n This starts the process manually. Think of it like pressing a \"Start\" button.\n\n* **\ud83c\udf10 Fetch Bitcoin Price**\n Uses the [Bright Data API](https://brightdata.com/) to scrape the live Bitcoin price from a specific website using a POST request.\n\n* **\ud83e\uddf1 Extract Price**\n Extracts the **exact price value** from the scraped HTML using selectors (like CSS paths).\n\n### \ud83d\udca1 Why It\u2019s Useful:\n\nYou can track the **real-time price** of Bitcoin straight from any public site, even those not offering official APIs. It's like building your own live feed.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "9c153740-4fb9-4ab7-b129-c6bc8c61c274",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
-40
],
"parameters": {
"color": 5,
"width": 600,
"height": 1020,
"content": "## \ud83d\udcca **Section 2: Calculate and Compare with Historical Price**\n\n\ud83e\udde9 **Nodes:**\n4\\. **\ud83d\udd04 Convert Type**\n5\\. **\ud83d\udcd7 Get Last Recorded Price (Google Sheet)**\n6\\. **\ud83d\udcc9 Find Drop Percentage**\n\n### \ud83e\udde0 What Happens:\n\n* **\ud83d\udd04 Convert Type**\n Converts the price from a text format to a number so we can calculate with it.\n\n* **\ud83d\udcd7 Get Last Recorded Price**\n Pulls the **previous Bitcoin price** from a Google Sheet (a record from last check). Acts like your \u201cmemory\u201d.\n\n* **\ud83d\udcc9 Find Drop Percentage**\n Calculates how much the price has dropped:\n\n $$\n \\text{Drop (\\%)} = \\frac{\\text{Previous Price - Current Price}}{\\text{Previous Price}} \\times 100\n $$\n\n### \ud83d\udca1 Why It\u2019s Useful:\n\nYou\u2019re comparing real-time data with past values automatically\u2014no spreadsheets or calculators needed! This makes it ideal for **traders or enthusiasts** watching for price alerts.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "58dbf6d5-371f-4123-8838-5c6f40185711",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
3380,
100
],
"parameters": {
"color": 6,
"width": 540,
"height": 940,
"content": "## \ud83d\udea8 **Section 3: Send Alert if Drop \u2265 5%**\n\n\ud83e\udde9 **Nodes:**\n7\\. **\ud83d\udd00 If droppercentage >= 5**\n8\\. **\ud83d\udce7 Send Alert Email**\n9\\. **\u27a1\ufe0f No Alert Needed**\n\n### \ud83e\udde0 What Happens:\n\n* **\ud83d\udd00 If Statement**\n Checks: Has the price dropped by **5% or more**?\n\n* **\ud83d\udce7 Send Alert Email** (if true)\n Automatically sends an email to notify you about the drop. This could go to your inbox, or a team.\n\n* **\u27a1\ufe0f No Alert Needed** (if false)\n The workflow ends quietly without doing anything else.\n\n\n"
},
"typeVersion": 1
},
{
"id": "a9608daf-aff9-460a-8ca5-14c1fc41916e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
4000,
100
],
"parameters": {
"color": 7,
"width": 380,
"height": 240,
"content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "125a795b-a427-4a83-abee-62fe60538000",
"connections": {
"Convert type": {
"main": [
[
{
"node": "Get Last Recorded Price",
"type": "main",
"index": 0
}
]
]
},
"Extract Price": {
"main": [
[
{
"node": "Convert type",
"type": "main",
"index": 0
}
]
]
},
"Manual Trigger": {
"main": [
[
{
"node": "Fetch Bitcoin Price",
"type": "main",
"index": 0
}
]
]
},
"Fetch Bitcoin Price": {
"main": [
[
{
"node": "Extract Price",
"type": "main",
"index": 0
}
]
]
},
"Find drop percentage": {
"main": [
[
{
"node": "If droppercentage >= 5",
"type": "main",
"index": 0
}
]
]
},
"If droppercentage >= 5": {
"main": [
[
{
"node": "Send Alert Email",
"type": "main",
"index": 0
}
],
[
{
"node": "No Alert Needed",
"type": "main",
"index": 0
}
]
]
},
"Get Last Recorded Price": {
"main": [
[
{
"node": "Find drop percentage",
"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.
gmailOAuth2googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow monitors Bitcoin prices across multiple exchanges and sends you alerts when significant price drops occur. It helps crypto traders and investors identify buying opportunities without constantly watching the markets.
Source: https://n8n.io/workflows/5217/ — 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.
Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.
Automate CSV imports into HubSpot without the mess. Powered by n8n. Supercharged by Pollup AI.
AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.
Automatically processes new orders added to Google Sheets. Small orders are approved instantly; large orders trigger an HTML email with one-click Approve / Reject links — each handled by an independen
Submit any YouTube, Vimeo, or Zoom webinar URL using a simple form and the workflow handles everything from there. It runs a two-phase pipeline: first identifying the top viral moments in your video w