This workflow corresponds to n8n.io template #6929 — we link there as the canonical source.
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": "VhEwspDqzu7ssFVE",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "My workflow 2",
"tags": [
{
"id": "DxXGubfBzRKh6L8T",
"name": "Revenue Optimization",
"createdAt": "2025-07-25T16:24:30.370Z",
"updatedAt": "2025-07-25T16:24:30.370Z"
},
{
"id": "IxkcJ2IpYIxivoHV",
"name": "Content Strategy",
"createdAt": "2025-07-25T12:57:37.677Z",
"updatedAt": "2025-07-25T12:57:37.677Z"
},
{
"id": "PAKIJ2Mm9EvRcR3u",
"name": "Trend Monitoring",
"createdAt": "2025-07-25T12:57:37.670Z",
"updatedAt": "2025-07-25T12:57:37.670Z"
},
{
"id": "YtfXmaZk44MYedPO",
"name": "Dynamic Pricing",
"createdAt": "2025-07-25T16:24:30.369Z",
"updatedAt": "2025-07-25T16:24:30.369Z"
},
{
"id": "wJ30mjhtrposO8Qt",
"name": "Simple RAG",
"createdAt": "2025-07-28T12:55:14.424Z",
"updatedAt": "2025-07-28T12:55:14.424Z"
}
],
"nodes": [
{
"id": "1249a626-d963-4448-a5b1-26ca50200824",
"name": "\ud83d\udd17 Blockchain Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-1392,
624
],
"parameters": {
"path": "eed656b3-6a7f-4460-92e0-802bca2522d0",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "16186e5f-84af-4303-a48a-bb7f5a8548e9",
"name": "\ud83d\udccb Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1936,
112
],
"parameters": {
"color": 4,
"width": 400,
"height": 492,
"content": "# \ud83d\udd0d Simple Blockchain Monitor\n\n**Essential Setup:**\n- Real-time block monitoring\n- AI-powered data extraction\n- Smart risk detection\n- Instant alerts\n\n**Supported:**\n- Ethereum, Bitcoin, BSC, Polygon\n\n**Features:**\n\u2705 ScrapeGraphAI integration\n\u2705 High-value detection\n\u2705 Risk scoring\n\u2705 Slack alerts"
},
"typeVersion": 1
},
{
"id": "f29f94bb-cafd-43b6-8e2a-6557bca1dd7b",
"name": "\ud83d\udd04 Normalize Data",
"type": "n8n-nodes-base.code",
"position": [
-1056,
624
],
"parameters": {
"jsCode": "// Simple blockchain data preparation\nconst input = $input.all()[0].json;\n\n// Basic normalization\nconst blockData = {\n block_number: input.blockNumber || input.block_number || input.height,\n blockchain: (input.blockchain || input.chain || 'ethereum').toLowerCase(),\n timestamp: input.timestamp || Date.now(),\n session_id: `block_${Date.now()}`\n};\n\n// Set explorer URL\nconst explorers = {\n ethereum: `https://etherscan.io/block/${blockData.block_number}`,\n bitcoin: `https://blockchair.com/bitcoin/block/${blockData.block_number}`,\n bsc: `https://bscscan.com/block/${blockData.block_number}`,\n polygon: `https://polygonscan.com/block/${blockData.block_number}`\n};\n\nblockData.explorer_url = explorers[blockData.blockchain] || explorers.ethereum;\n\nconsole.log(`Processing block ${blockData.block_number} on ${blockData.blockchain}`);\n\nreturn [{ json: blockData }];"
},
"typeVersion": 2
},
{
"id": "adc3d7ef-4928-4c92-acff-5fd0dacb4c91",
"name": "\ud83d\udce1 Input Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1536,
112
],
"parameters": {
"color": 5,
"width": 396,
"height": 744,
"content": "# Step 1: Webhook Input \ud83d\udd17\n\nReceives blockchain data from external sources.\n\n**Input Sources:**\n- Blockchain nodes\n- Third-party APIs (Moralis, Alchemy)\n- Exchange webhooks\n\n**Data Expected:**\n- Block number/height\n- Blockchain identifier\n- Timestamp (optional)"
},
"typeVersion": 1
},
{
"id": "473fd718-b826-45f1-a832-8609635c6214",
"name": "\ud83e\udd16 ScrapeGraphAI",
"type": "n8n-nodes-scrapegraphai.scrapegraphAi",
"position": [
-768,
608
],
"parameters": {
"userPrompt": "Extract transaction data from this blockchain explorer page. Return JSON with:\n\n**transactions**: Array of objects with:\n- hash: transaction ID\n- from: sender address \n- to: receiver address\n- value_usd: USD amount (if available)\n- fee_usd: fee in USD\n- status: success/failed\n- is_contract: true if contract interaction\n\n**summary**:\n- total_transactions: count\n- total_volume_usd: sum of values\n- high_value_count: transactions > $10,000\n- failed_count: failed transactions\n\nFocus on accuracy and include only confirmed data.",
"websiteUrl": "={{ $json.explorer_url }}"
},
"typeVersion": 1
},
{
"id": "26598a18-97d4-4e5d-bced-7a5bc9869265",
"name": "\ud83d\udd27 Process Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1136,
112
],
"parameters": {
"color": 3,
"width": 300,
"height": 744,
"content": "# Step 2: Data Processing \ud83d\udd04\n\nNormalizes blockchain data for analysis.\n\n**Functions:**\n- Multi-chain format standardization\n- Explorer URL selection\n- Basic validation\n\n**Supported Chains:**\n- Ethereum, Bitcoin, BSC, Polygon"
},
"typeVersion": 1
},
{
"id": "0ac361af-deb0-471b-8a0f-2d7a7c36a7e4",
"name": "\u26a1 Risk Analyzer",
"type": "n8n-nodes-base.code",
"position": [
-448,
608
],
"parameters": {
"jsCode": "// Simple risk analysis\nconst blockData = $('Normalize Data').first().json;\nconst scrapedData = $input.all()[0].json;\n\n// Initialize analysis\nlet analysis = {\n block_number: blockData.block_number,\n blockchain: blockData.blockchain,\n timestamp: new Date().toISOString(),\n \n // Basic stats\n total_transactions: 0,\n total_volume_usd: 0,\n high_value_transactions: [],\n failed_transactions: 0,\n \n // Risk assessment\n risk_score: 0,\n risk_level: 'low',\n alerts: []\n};\n\n// Process scraped data\nif (scrapedData.transactions && Array.isArray(scrapedData.transactions)) {\n analysis.total_transactions = scrapedData.transactions.length;\n \n scrapedData.transactions.forEach(tx => {\n const value = parseFloat(tx.value_usd || 0);\n analysis.total_volume_usd += value;\n \n // High-value detection\n if (value > 10000) {\n analysis.high_value_transactions.push({\n hash: tx.hash,\n value_usd: value,\n from: tx.from,\n to: tx.to\n });\n }\n \n // Failed transaction count\n if (tx.status === 'failed') {\n analysis.failed_transactions++;\n }\n });\n}\n\n// Use summary data if available\nif (scrapedData.summary) {\n analysis.total_transactions = scrapedData.summary.total_transactions || analysis.total_transactions;\n analysis.total_volume_usd = scrapedData.summary.total_volume_usd || analysis.total_volume_usd;\n analysis.failed_transactions = scrapedData.summary.failed_count || analysis.failed_transactions;\n}\n\n// Simple risk scoring\nlet riskScore = 0;\n\n// High value risk\nriskScore += analysis.high_value_transactions.length * 15;\n\n// Volume risk\nif (analysis.total_volume_usd > 1000000) riskScore += 20;\nelse if (analysis.total_volume_usd > 100000) riskScore += 10;\n\n// Failure rate risk\nconst failureRate = analysis.total_transactions > 0 ? \n analysis.failed_transactions / analysis.total_transactions : 0;\nif (failureRate > 0.1) riskScore += 15;\n\nanalysis.risk_score = Math.min(riskScore, 100);\n\n// Risk level determination\nif (analysis.risk_score >= 50) {\n analysis.risk_level = 'high';\n} else if (analysis.risk_score >= 25) {\n analysis.risk_level = 'medium';\n} else {\n analysis.risk_level = 'low';\n}\n\n// Generate alerts\nif (analysis.risk_level === 'high') {\n analysis.alerts.push(`High risk block: ${analysis.high_value_transactions.length} high-value transactions`);\n}\n\nif (analysis.high_value_transactions.length > 3) {\n analysis.alerts.push(`Multiple high-value transactions detected`);\n}\n\nif (failureRate > 0.2) {\n analysis.alerts.push(`High failure rate: ${Math.round(failureRate * 100)}%`);\n}\n\nconsole.log(`Analysis: ${analysis.total_transactions} txs, $${analysis.total_volume_usd.toLocaleString()}, Risk: ${analysis.risk_level}`);\n\nreturn [{ json: analysis }];"
},
"typeVersion": 2
},
{
"id": "44081a4a-0e37-4c69-a9b3-06f546a1b533",
"name": "\ud83d\udd77\ufe0f Scraping Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
112
],
"parameters": {
"color": 6,
"width": 300,
"height": 744,
"content": "# Step 3: AI Data Extraction \ud83e\udd16\n\nScrapeGraphAI extracts transaction data.\n\n**Key Features:**\n- AI-powered understanding\n- Structured JSON output\n- Multi-explorer support\n- Error resilience\n\n**Extracted Data:**\n- Transaction details\n- USD values\n- High-value flags\n- Block summary"
},
"typeVersion": 1
},
{
"id": "e23fec64-72de-40eb-9ee0-25a1c753c54b",
"name": "\ud83d\udea8 Risk Filter",
"type": "n8n-nodes-base.if",
"position": [
-128,
592
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "risk-YOUR_OPENAI_KEY_HERE",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.risk_level }}",
"rightValue": "low"
}
]
}
},
"typeVersion": 2
},
{
"id": "0480096b-03cc-46bb-85b9-90b1d81f6596",
"name": "\ud83d\udcca Analysis Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-528,
112
],
"parameters": {
"color": 2,
"width": 300,
"height": 744,
"content": "# Step 4: Risk Analysis \u26a1\n\nAnalyzes transactions for risk factors.\n\n**Risk Factors:**\n- High-value transactions (>$10k)\n- Large block volume (>$100k)\n- High failure rates (>10%)\n\n**Risk Levels:**\n- High: Score \u2265 50\n- Medium: Score \u2265 25\n- Low: Score < 25"
},
"typeVersion": 1
},
{
"id": "7c567592-055a-4550-9867-ca728a0e11dc",
"name": "\ud83d\udcf1 Slack Alert",
"type": "n8n-nodes-base.slack",
"position": [
176,
608
],
"parameters": {
"operation": "create"
},
"typeVersion": 2.1
},
{
"id": "a669635d-49fd-4fd4-b30a-08e98590de70",
"name": "\ud83c\udfaf Filter Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
112
],
"parameters": {
"width": 300,
"height": 744,
"content": "# Step 5: Risk Filtering \ud83d\udea8\n\nFilters blocks that need attention.\n\n**Trigger Conditions:**\n- Risk level: medium or high\n- Any high-value transactions\n- High failure rates\n\n**Alert Routing:**\n- Sends to Slack for team visibility\n- Only triggers on significant events"
},
"typeVersion": 1
},
{
"id": "6fa3b3f7-0142-4089-a46b-8fb69e17e91e",
"name": "\ud83d\udd14 Alert Info",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
112
],
"parameters": {
"color": 7,
"width": 300,
"height": 744,
"content": "# Step 6: Slack Alerts \ud83d\udcf1\n\nSends formatted alerts to Slack.\n\n**Alert Content:**\n- Block and blockchain info\n- Risk level and score\n- Transaction statistics\n- High-value transaction list\n- Active alerts\n\n**Features:**\n- Rich formatting with emojis\n- Condensed but informative\n- Real-time delivery"
},
"typeVersion": 1
},
{
"id": "bd1d424c-6f26-4f96-ae80-ba4ef87e7c5e",
"name": "\u2699\ufe0f Configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
112
],
"parameters": {
"color": 2,
"width": 350,
"height": 744,
"content": "## \ud83d\udd27 Configuration\n\n**Required Setup:**\n1. ScrapeGraphAI API key\n2. Slack webhook/bot token\n3. Blockchain webhook URL\n\n**Customizable:**\n- High-value threshold ($10k)\n- Risk score thresholds\n- Slack channel ID\n- Supported blockchains\n\n**Simple & Effective:**\n- 6 essential nodes only\n- Fast execution\n- Easy maintenance\n- Clear alerting"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "ac7a0925-70ce-4b7f-91e7-19bf16686bfa",
"connections": {
"\ud83d\udea8 Risk Filter": {
"main": [
[
{
"node": "\ud83d\udcf1 Slack Alert",
"type": "main",
"index": 0
}
]
]
},
"\u26a1 Risk Analyzer": {
"main": [
[
{
"node": "\ud83d\udea8 Risk Filter",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udd16 ScrapeGraphAI": {
"main": [
[
{
"node": "\u26a1 Risk Analyzer",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd04 Normalize Data": {
"main": [
[
{
"node": "\ud83e\udd16 ScrapeGraphAI",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd17 Blockchain Webhook": {
"main": [
[
{
"node": "\ud83d\udd04 Normalize Data",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Cryptocurrency traders and investors DeFi protocol managers and developers Blockchain security analysts Financial compliance officers Crypto fund managers and institutions Risk management teams Blockchain developers monitoring smart contracts Digital asset custodians
Source: https://n8n.io/workflows/6929/ — 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.
⚠️ 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 ins
HR teams, IT Operations, and System Administrators managing employee onboarding at scale. It’s perfect if you use Odoo 18 to trigger account requests and need Redmine + GitLab accounts created instant
This workflow is a complete, production-ready solution for recovering abandoned carts in Shopify stores using a multi-channel, multi-touch approach. It automates personalized follow-ups via Email, SMS
Slack lacks a native bulk delete feature. Users must delete messages manually, which is time-consuming and inefficient for large volumes.
This workflow automates end-to-end research analysis by coordinating multiple AI models—including NVIDIA NIM (Llama), OpenAI GPT-4, and Claude to analyze uploaded documents, extract insights, and gene