AutomationFlowsSlack & Telegram › Real-time Cryptocurrency Price Monitor with Coingecko & Multi-channel Alerts

Real-time Cryptocurrency Price Monitor with Coingecko & Multi-channel Alerts

ByOneclick AI Squad @oneclick-ai on n8n.io

This automated n8n workflow monitors real-time cryptocurrency prices using CoinGecko API and sends smart alerts when price conditions are met. It supports multi-coin tracking, dynamic conditions, and instant notifications via Email, Telegram, and Discord. Reads crypto watchlist…

Cron / scheduled trigger★★★★☆ complexity16 nodesGoogle SheetsHTTP RequestEmail SendTelegramDiscord
Slack & Telegram Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #7705 — 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 →

Download .json
{
  "id": "gpZ5gnZftZFQDQK4",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Real-Time Cryptocurrency Price Monitor & Smart Alerts",
  "tags": [],
  "nodes": [
    {
      "id": "a74647d9-e5d4-4593-acc8-60b9d5dc0453",
      "name": "24/7 Crypto Trigger",
      "type": "n8n-nodes-base.cron",
      "position": [
        -432,
        832
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "29541d43-fc8a-45c8-8911-b97ab3e4c080",
      "name": "Read Crypto Watchlist",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -208,
        832
      ],
      "parameters": {
        "options": {},
        "sheetName": "Sheet1",
        "documentId": "YOUR_GOOGLE_SHEET_ID_HERE",
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "af441c6d-0034-4d39-9ff1-60e9c56b8c01",
      "name": "Parse Crypto Data",
      "type": "n8n-nodes-base.code",
      "position": [
        16,
        832
      ],
      "parameters": {
        "jsCode": "// Parse Google Sheets data and prepare for crypto API calls\nconst items = [];\nconst inputData = $input.all();\n\n// Skip header row, process data rows\nfor (let i = 1; i < inputData.length; i++) {\n  const row = inputData[i].json;\n  if (row.A && row.B && row.C) { // Check if required fields exist\n    \n    // Convert crypto symbol to CoinGecko format\n    let coinId = row.A.toLowerCase();\n    \n    // Handle common crypto pairs and convert to CoinGecko IDs\n    const cryptoMapping = {\n      'btc': 'bitcoin',\n      'btc/usdt': 'bitcoin',\n      'btc-usdt': 'bitcoin',\n      'bitcoin': 'bitcoin',\n      'eth': 'ethereum', \n      'eth/usdt': 'ethereum',\n      'eth-usdt': 'ethereum',\n      'ethereum': 'ethereum',\n      'bnb': 'binancecoin',\n      'bnb/usdt': 'binancecoin',\n      'bnb-usdt': 'binancecoin',\n      'ada': 'cardano',\n      'ada/usdt': 'cardano',\n      'ada-usdt': 'cardano',\n      'dot': 'polkadot',\n      'dot/usdt': 'polkadot',\n      'dot-usdt': 'polkadot',\n      'sol': 'solana',\n      'sol/usdt': 'solana',\n      'sol-usdt': 'solana',\n      'matic': 'matic-network',\n      'matic/usdt': 'matic-network',\n      'matic-usdt': 'matic-network',\n      'link': 'chainlink',\n      'link/usdt': 'chainlink',\n      'link-usdt': 'chainlink',\n      'avax': 'avalanche-2',\n      'avax/usdt': 'avalanche-2',\n      'avax-usdt': 'avalanche-2'\n    };\n    \n    const mappedCoinId = cryptoMapping[coinId] || coinId.split('/')[0].split('-')[0];\n    \n    items.push({\n      json: {\n        original_symbol: row.A,\n        coin_id: mappedCoinId,\n        upper_limit: parseFloat(row.B),\n        lower_limit: parseFloat(row.C),\n        direction: row.D || 'both',\n        cooldown_minutes: parseInt(row.E) || 10, // Shorter cooldown for crypto\n        last_alert_price: parseFloat(row.F) || 0,\n        last_alert_time: row.G || ''\n      }\n    });\n  }\n}\n\nreturn items;"
      },
      "typeVersion": 2
    },
    {
      "id": "ed3d40dc-fafe-4226-bb92-7e4f512594ae",
      "name": "Fetch Live Crypto Price",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        240,
        832
      ],
      "parameters": {
        "url": "=https://api.coingecko.com/api/v3/simple/price?ids={{ $json.coin_id }}&vs_currencies=usd&include_24hr_change=true&include_market_cap=true",
        "options": {
          "response": {
            "response": {
              "neverError": true
            }
          }
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "571a5ffa-c589-4988-a985-e01a6b6d3c8d",
      "name": "Smart Crypto Alert Logic",
      "type": "n8n-nodes-base.code",
      "position": [
        464,
        832
      ],
      "parameters": {
        "jsCode": "// Process crypto price and check alerts\nconst items = [];\nconst currentTime = new Date();\n\nfor (const item of $input.all()) {\n  const cryptoData = item.json;\n  \n  let priceResponse;\n  try {\n    priceResponse = JSON.parse(cryptoData.body || '{}');\n  } catch (e) {\n    continue; // Skip if invalid JSON\n  }\n  \n  const coinId = cryptoData.coin_id;\n  const coinPriceData = priceResponse[coinId];\n  \n  if (!coinPriceData || !coinPriceData.usd) {\n    continue; // Skip if no price data\n  }\n  \n  const currentPrice = parseFloat(coinPriceData.usd);\n  const change24h = coinPriceData.usd_24h_change || 0;\n  const marketCap = coinPriceData.usd_market_cap || 0;\n  \n  const symbol = cryptoData.original_symbol;\n  const upperLimit = cryptoData.upper_limit;\n  const lowerLimit = cryptoData.lower_limit;\n  const direction = cryptoData.direction;\n  const cooldownMinutes = cryptoData.cooldown_minutes;\n  const lastAlertPrice = cryptoData.last_alert_price;\n  const lastAlertTime = cryptoData.last_alert_time;\n  \n  // Check cooldown period\n  let shouldCheckAlert = true;\n  if (lastAlertTime) {\n    const lastAlert = new Date(lastAlertTime);\n    const timeDiff = (currentTime - lastAlert) / (1000 * 60); // minutes\n    if (timeDiff < cooldownMinutes) {\n      shouldCheckAlert = false;\n    }\n  }\n  \n  let alertTriggered = false;\n  let alertMessage = '';\n  let alertType = '';\n  \n  if (shouldCheckAlert) {\n    // Check upper limit (BREAKOUT)\n    if ((direction === 'both' || direction === 'above') && currentPrice > upperLimit) {\n      alertTriggered = true;\n      alertType = 'upper';\n      const pumpPercentage = ((currentPrice - upperLimit) / upperLimit * 100).toFixed(2);\n      alertMessage = `\ud83d\ude80 CRYPTO BREAKOUT ALERT! \ud83d\ude80\\n\\n` +\n                    `\ud83d\udc8e ${symbol.toUpperCase()}\\n` +\n                    `\ud83d\udcc8 Current Price: $${currentPrice.toLocaleString()}\\n` +\n                    `\ud83c\udfaf Upper Target: $${upperLimit.toLocaleString()}\\n` +\n                    `\u26a1 Pump: +${pumpPercentage}% above target!\\n` +\n                    `\ud83d\udcca 24h Change: ${change24h >= 0 ? '+' : ''}${change24h.toFixed(2)}%\\n` +\n                    `\ud83d\udcb0 Market Cap: $${(marketCap / 1000000000).toFixed(2)}B\\n` +\n                    `\u23f0 ${currentTime.toLocaleString()}\\n\\n` +\n                    `\ud83d\udd25 BULLISH MOMENTUM DETECTED! \ud83d\udd25`;\n    }\n    // Check lower limit (BREAKDOWN) \n    else if ((direction === 'both' || direction === 'below') && currentPrice < lowerLimit) {\n      alertTriggered = true;\n      alertType = 'lower';\n      const dumpPercentage = ((lowerLimit - currentPrice) / lowerLimit * 100).toFixed(2);\n      alertMessage = `\ud83d\udcc9 CRYPTO BREAKDOWN ALERT! \ud83d\udcc9\\n\\n` +\n                    `\ud83d\udc8e ${symbol.toUpperCase()}\\n` +\n                    `\ud83d\udcc9 Current Price: $${currentPrice.toLocaleString()}\\n` +\n                    `\ud83c\udfaf Lower Support: $${lowerLimit.toLocaleString()}\\n` +\n                    `\u26a0\ufe0f Dump: -${dumpPercentage}% below support!\\n` +\n                    `\ud83d\udcca 24h Change: ${change24h >= 0 ? '+' : ''}${change24h.toFixed(2)}%\\n` +\n                    `\ud83d\udcb0 Market Cap: $${(marketCap / 1000000000).toFixed(2)}B\\n` +\n                    `\u23f0 ${currentTime.toLocaleString()}\\n\\n` +\n                    `\ud83d\udea8 BEARISH MOMENTUM DETECTED! \ud83d\udea8`;\n    }\n  }\n  \n  if (alertTriggered) {\n    items.push({\n      json: {\n        symbol: symbol,\n        coin_id: coinId,\n        current_price: currentPrice,\n        upper_limit: upperLimit,\n        lower_limit: lowerLimit,\n        change_24h: change24h,\n        market_cap: marketCap,\n        alert_type: alertType,\n        alert_message: alertMessage,\n        timestamp: currentTime.toISOString(),\n        // Data for updating Google Sheet\n        row_data: {\n          symbol: symbol,\n          upper_limit: upperLimit,\n          lower_limit: lowerLimit,\n          direction: direction,\n          cooldown_minutes: cooldownMinutes,\n          last_alert_price: currentPrice,\n          last_alert_time: currentTime.toISOString()\n        }\n      }\n    });\n  }\n}\n\nreturn items;"
      },
      "typeVersion": 2
    },
    {
      "id": "1b5f189f-7df3-4056-92f1-67a7619123b7",
      "name": "Check Crypto Alert Conditions",
      "type": "n8n-nodes-base.if",
      "position": [
        688,
        832
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "8e7f6d5c-4b3a-2910-8765-fedcba098765",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json.alert_message }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "6a7b0b7d-ec72-401a-82aa-896ae4338a76",
      "name": "Send Crypto Email Alert",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        912,
        544
      ],
      "parameters": {
        "options": {},
        "subject": "=\ud83d\udea8 CRYPTO ALERT: {{ $json.symbol }} {{ $json.alert_type === 'upper' ? '\ud83d\ude80 BREAKOUT' : '\ud83d\udcc9 BREAKDOWN' }} - ${{ $json.current_price }}",
        "toEmail": "user@example.com",
        "fromEmail": "user@example.com"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "500e80b7-9e42-4e8b-ba6b-df9d3960a0f4",
      "name": "Send Telegram Crypto Alert",
      "type": "n8n-nodes-base.telegram",
      "position": [
        912,
        928
      ],
      "parameters": {
        "text": "={{ $json.alert_message }}",
        "chatId": "YOUR_TELEGRAM_CHAT_ID",
        "additionalFields": {
          "parse_mode": "HTML"
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6139992f-563f-4f7e-a0fd-04e42684cf77",
      "name": "Send Discord Crypto Alert",
      "type": "n8n-nodes-base.discord",
      "position": [
        912,
        1120
      ],
      "parameters": {
        "name": "new",
        "guildId": {
          "__rl": true,
          "mode": "id",
          "value": "=987654321t5r4w2"
        },
        "options": {}
      },
      "credentials": {
        "discordBotApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0bcadcb1-e39e-443d-8483-20c548480d1f",
      "name": "Update Crypto Alert History",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        912,
        736
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": "Sheet1",
        "documentId": "YOUR_GOOGLE_SHEET_ID_HERE",
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "7806b975-49a0-4a9c-9aed-77f4768fd65d",
      "name": "Crypto Alert Status Check",
      "type": "n8n-nodes-base.if",
      "position": [
        1136,
        736
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "success-condition",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json.symbol }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "b7e51130-380d-4eb4-b96e-132038a98a0d",
      "name": "Success Notification",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1360,
        640
      ],
      "parameters": {
        "options": {},
        "subject": "\u2705 Crypto Monitor: Alert Sent Successfully",
        "toEmail": "user@example.com",
        "fromEmail": "user@example.com"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3d14deb0-259e-4a6b-a579-978d2fb16e26",
      "name": "Error Notification",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1360,
        832
      ],
      "parameters": {
        "options": {},
        "subject": "\u274c Crypto Monitor: Alert Failed",
        "toEmail": "user@example.com",
        "fromEmail": "user@example.com"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6ab21bb1-63c3-40fb-bff1-2e4ea5a30a89",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -320
      ],
      "parameters": {
        "width": 850,
        "height": 212,
        "content": "## \ud83d\ude80 Real-Time Cryptocurrency Price Monitor & Smart Alerts\n### 24/7 monitoring of Bitcoin, Ethereum, and 1000+ altcoins with intelligent breakout/breakdown alerts. Track BTC/USDT, ETH/USDT, and any crypto pair with customizable price targets, cooldown periods, and multi-channel notifications (Email + Telegram + Discord).\n### Perfect for crypto traders, DeFi investors, and portfolio managers who need instant notifications for price movements, pump & dump detection, and market opportunities. Uses CoinGecko's free API with real-time market data including 24h changes and market cap."
      },
      "typeVersion": 1
    },
    {
      "id": "fbe3232f-4377-49cc-9ca4-45d804b9f0c0",
      "name": "Crypto Workflow Guide",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        32
      ],
      "parameters": {
        "color": 5,
        "width": 680,
        "height": 520,
        "content": "## \ud83d\udd27 How It Works\n\n**\u23f0 24/7 Crypto Trigger** - Runs every minute (crypto never sleeps!)\n**\ud83d\udccb Read Crypto Watchlist** - Fetches your crypto list from Google Sheets\n**\ud83d\udd0d Parse Crypto Data** - Converts symbols to CoinGecko IDs (BTC\u2192bitcoin)\n**\ud83d\udcb0 Fetch Live Crypto Price** - Gets real-time prices from CoinGecko API\n**\ud83e\udde0 Smart Crypto Alert Logic** - Advanced price checking with market data\n**\u26a1 Check Crypto Alert Conditions** - Validates breakout/breakdown signals\n**\ud83d\udce7 Send Crypto Email Alert** - Detailed email with price & market data\n**\ud83d\udcf1 Send Telegram Crypto Alert** - Instant mobile notifications\n**\ud83d\udcac Send Discord Crypto Alert** - Community alerts for trading groups\n**\ud83d\udcdd Update Crypto Alert History** - Records alert timestamps\n**\u2705 Crypto Alert Status Check** - Monitors workflow health\n**\ud83d\udd14 Success/Error Notifications** - Admin monitoring alerts\n\n### \ud83c\udfaf Crypto-Specific Features:\n- **24/7 Monitoring**: Never miss crypto movements\n- **1000+ Coins**: Supports all major cryptocurrencies\n- **Market Data**: Includes 24h change & market cap\n- **Smart Mapping**: Auto-converts BTC/USDT \u2192 bitcoin\n- **Pump/Dump Detection**: Identifies significant price moves\n- **Multiple Alerts**: Email + Telegram + Discord\n- **Free API**: Uses CoinGecko's generous free tier"
      },
      "typeVersion": 1
    },
    {
      "id": "f8b1bfed-7c0c-4e4e-b963-fea13a10cd3c",
      "name": "Crypto Setup Examples",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -32
      ],
      "parameters": {
        "color": 3,
        "width": 760,
        "height": 380,
        "content": "## \ud83d\udc8e Crypto Watchlist Examples\n\n### Google Sheet Format (A-G columns):\n| Symbol | Upper Limit | Lower Limit | Direction | Cooldown | Last Price | Last Time |\n|--------|-------------|-------------|-----------|----------|------------|-----------|\n| BTC/USDT | 45000 | 40000 | both | 10 | | |\n| ETH/USDT | 3000 | 2500 | both | 5 | | |\n| bitcoin | 50000 | 35000 | above | 15 | | |\n| ethereum | 3500 | 2000 | both | 10 | | |\n| BNB | 300 | 250 | both | 10 | | |\n| solana | 100 | 80 | both | 5 | | |\n\n### \u26a1 Supported Formats:\n- **Trading Pairs**: BTC/USDT, ETH/USDT, BNB/USDT\n- **CoinGecko IDs**: bitcoin, ethereum, binancecoin\n- **Simple Symbols**: BTC, ETH, SOL, MATIC, LINK, AVAX"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8f8ad344-643c-41db-9b92-5a3b18ccdee3",
  "connections": {
    "Parse Crypto Data": {
      "main": [
        [
          {
            "node": "Fetch Live Crypto Price",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "24/7 Crypto Trigger": {
      "main": [
        [
          {
            "node": "Read Crypto Watchlist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Crypto Watchlist": {
      "main": [
        [
          {
            "node": "Parse Crypto Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Live Crypto Price": {
      "main": [
        [
          {
            "node": "Smart Crypto Alert Logic",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Smart Crypto Alert Logic": {
      "main": [
        [
          {
            "node": "Check Crypto Alert Conditions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crypto Alert Status Check": {
      "main": [
        [
          {
            "node": "Success Notification",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Crypto Alert History": {
      "main": [
        [
          {
            "node": "Crypto Alert Status Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Crypto Alert Conditions": {
      "main": [
        [
          {
            "node": "Send Crypto Email Alert",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Telegram Crypto Alert",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Discord Crypto Alert",
            "type": "main",
            "index": 0
          },
          {
            "node": "Update Crypto Alert History",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This automated n8n workflow monitors real-time cryptocurrency prices using CoinGecko API and sends smart alerts when price conditions are met. It supports multi-coin tracking, dynamic conditions, and instant notifications via Email, Telegram, and Discord. Reads crypto watchlist…

Source: https://n8n.io/workflows/7705/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

This workflow is ideal for marketers, product managers, competitive intelligence teams, and anyone who needs to track changes on web pages — whether it's competitor pricing, job postings, policy updat

HTTP Request, Google Sheets, Telegram +1
Slack & Telegram

Monitor Indian (NSE/BSE) and US stock markets with intelligent price alerts, cooldown periods, and multi-channel notifications (Email + Telegram). Automatically tracks price movements and sends alerts

Google Sheets, HTTP Request, Email Send +1
Slack & Telegram

⚠️ Heads up: this is satire. The "Hell Yeah!" workflow is a parody of "automate your whole life with AI agents" grindset content. The API endpoints are fictional and the function nodes are illustrativ

HTTP Request, Salesforce, Telegram +4
Slack & Telegram

This workflow continuously monitors the Meta Ads Library for new creatives from a specific competitor pages, logs them into Google Sheets, and sends a concise Telegram notification with the number of

HTTP Request, Telegram, Google Sheets +1
Slack & Telegram

Enhance financial oversight with this automated n8n workflow. Triggered every 5 minutes, it fetches real-time bank transactions via an API, enriches and transforms the data, and applies smart logic to

HTTP Request, Email Send, Google Sheets +1