AutomationFlowsSlack & Telegram › Monitor Supply Chain Risks with Scrapegraphai Alerts via Slack and Email

Monitor Supply Chain Risks with Scrapegraphai Alerts via Slack and Email

Byvinci-king-01 @vinci-king-01 on n8n.io

This workflow automatically monitors supplier health and supply chain risks, providing real-time alerts and daily reports to procurement teams. Daily Risk Check - Runs the workflow every morning at 9:00 AM to assess supplier health. Multi-Source Data Collection - Scrapes…

Cron / scheduled trigger★★★★☆ complexity18 nodesN8N Nodes ScrapegraphaiSlackEmail Send
Slack & Telegram Trigger: Cron / scheduled Nodes: 18 Complexity: ★★★★☆ Added:
Monitor Supply Chain Risks with Scrapegraphai Alerts via Slack and Email — n8n workflow card showing N8N Nodes Scrapegraphai, Slack, Email Send integration

This workflow corresponds to n8n.io template #6569 — we link there as the canonical source.

This workflow follows the Emailsend → Slack 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": "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"
    }
  ],
  "nodes": [
    {
      "id": "97c1e8d5-3813-4bf6-878a-2f197a7de968",
      "name": "Daily Risk Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -192,
        688
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "793c2693-4f4d-45cb-8d5a-3c4db372b958",
      "name": "Scrape Supplier 1",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        128,
        592
      ],
      "parameters": {
        "userPrompt": "Extract supplier health indicators from this website. Look for financial news, operational updates, regulatory issues, and any risk factors. Use this schema: { \"supplier_name\": \"Company Name\", \"financial_status\": \"stable/warning/critical\", \"operational_issues\": [\"list of issues\"], \"regulatory_problems\": [\"list of problems\"], \"news_sentiment\": \"positive/neutral/negative\", \"risk_score\": \"1-10\", \"last_updated\": \"date\", \"source_url\": \"url\" }",
        "websiteUrl": "https://example-supplier-1.com/news"
      },
      "typeVersion": 1
    },
    {
      "id": "9a2d5ce5-3155-48ed-850f-37f3dd88344b",
      "name": "Scrape Supplier 2",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        128,
        736
      ],
      "parameters": {
        "userPrompt": "Extract supplier health indicators from this website. Look for financial news, operational updates, regulatory issues, and any risk factors. Use this schema: { \"supplier_name\": \"Company Name\", \"financial_status\": \"stable/warning/critical\", \"operational_issues\": [\"list of issues\"], \"regulatory_problems\": [\"list of problems\"], \"news_sentiment\": \"positive/neutral/negative\", \"risk_score\": \"1-10\", \"last_updated\": \"date\", \"source_url\": \"url\" }",
        "websiteUrl": "https://example-supplier-2.com/investor-relations"
      },
      "typeVersion": 1
    },
    {
      "id": "2980958d-05b9-4474-a256-fd805acdf673",
      "name": "Scrape Industry News",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        128,
        896
      ],
      "parameters": {
        "userPrompt": "Search for news articles about supply chain disruptions, supplier bankruptcies, regulatory issues, and industry risks. Extract relevant information using this schema: { \"headline\": \"news title\", \"summary\": \"brief summary\", \"impact_level\": \"low/medium/high\", \"affected_suppliers\": [\"list of companies\"], \"risk_category\": \"financial/operational/regulatory/geopolitical\", \"date\": \"publication date\", \"source\": \"news source\" }",
        "websiteUrl": "https://www.reuters.com/business/supply-chain/"
      },
      "typeVersion": 1
    },
    {
      "id": "9b26bc24-88ba-4a74-9481-4c960729cf38",
      "name": "Risk Scorer",
      "type": "n8n-nodes-base.code",
      "position": [
        608,
        688
      ],
      "parameters": {
        "jsCode": "// Aggregate all supplier data and calculate risk scores\nconst supplierData = $input.all();\nconst riskThresholds = {\n  low: 3,\n  medium: 6,\n  high: 8\n};\n\nfunction calculateOverallRisk(supplier) {\n  let riskScore = 0;\n  \n  // Financial status scoring\n  if (supplier.financial_status === 'critical') riskScore += 4;\n  else if (supplier.financial_status === 'warning') riskScore += 2;\n  \n  // Operational issues scoring\n  const operationalIssues = supplier.operational_issues || [];\n  riskScore += Math.min(operationalIssues.length, 3);\n  \n  // Regulatory problems scoring\n  const regulatoryProblems = supplier.regulatory_problems || [];\n  riskScore += Math.min(regulatoryProblems.length * 1.5, 3);\n  \n  // News sentiment scoring\n  if (supplier.news_sentiment === 'negative') riskScore += 2;\n  else if (supplier.news_sentiment === 'neutral') riskScore += 0.5;\n  \n  return Math.min(Math.round(riskScore), 10);\n}\n\nfunction getRiskLevel(score) {\n  if (score >= riskThresholds.high) return 'HIGH';\n  if (score >= riskThresholds.medium) return 'MEDIUM';\n  return 'LOW';\n}\n\nfunction formatRiskReport(suppliers) {\n  const highRiskSuppliers = suppliers.filter(function(s) { return s.overall_risk_score >= riskThresholds.high; });\n  const mediumRiskSuppliers = suppliers.filter(function(s) { return s.overall_risk_score >= riskThresholds.medium && s.overall_risk_score < riskThresholds.high; });\n  \n  let report = '\ud83d\udea8 **SUPPLY CHAIN RISK REPORT**\\n\ud83d\udcc5 Date: ' + new Date().toLocaleDateString() + '\\n\\n';\n  \n  if (highRiskSuppliers.length > 0) {\n    report += '\u26a0\ufe0f **HIGH RISK SUPPLIERS (' + highRiskSuppliers.length + ')**\\n';\n    for (let i = 0; i < highRiskSuppliers.length; i++) {\n      const supplier = highRiskSuppliers[i];\n      const operationalCount = (supplier.operational_issues || []).length;\n      report += '\u2022 ' + supplier.supplier_name + ' (Score: ' + supplier.overall_risk_score + '/10)\\n';\n      report += '  Status: ' + supplier.financial_status + ' | Issues: ' + operationalCount + '\\n';\n    }\n    report += '\\n';\n  }\n  \n  if (mediumRiskSuppliers.length > 0) {\n    report += '\u26a1 **MEDIUM RISK SUPPLIERS (' + mediumRiskSuppliers.length + ')**\\n';\n    for (let i = 0; i < mediumRiskSuppliers.length; i++) {\n      const supplier = mediumRiskSuppliers[i];\n      report += '\u2022 ' + supplier.supplier_name + ' (Score: ' + supplier.overall_risk_score + '/10)\\n';\n    }\n    report += '\\n';\n  }\n  \n  report += '\ud83d\udcca **SUMMARY**\\n';\n  report += 'Total Suppliers Monitored: ' + suppliers.length + '\\n';\n  report += 'High Risk: ' + highRiskSuppliers.length + '\\n';\n  report += 'Medium Risk: ' + mediumRiskSuppliers.length + '\\n';\n  report += 'Low Risk: ' + (suppliers.length - highRiskSuppliers.length - mediumRiskSuppliers.length) + '\\n';\n  \n  return report;\n}\n\n// Process each supplier's data\nconst processedSuppliers = [];\nfor (let i = 0; i < supplierData.length; i++) {\n  const item = supplierData[i];\n  const supplier = item.json.result || item.json;\n  const overallRiskScore = calculateOverallRisk(supplier);\n  const riskLevel = getRiskLevel(overallRiskScore);\n  \n  processedSuppliers.push({\n    supplier_name: supplier.supplier_name || 'Unknown Supplier',\n    financial_status: supplier.financial_status || 'stable',\n    operational_issues: supplier.operational_issues || [],\n    regulatory_problems: supplier.regulatory_problems || [],\n    news_sentiment: supplier.news_sentiment || 'neutral',\n    overall_risk_score: overallRiskScore,\n    risk_level: riskLevel,\n    needs_attention: overallRiskScore >= riskThresholds.medium,\n    assessment_date: new Date().toISOString(),\n    source_url: supplier.source_url || ''\n  });\n}\n\n// Generate summary report\nconst summaryReport = formatRiskReport(processedSuppliers);\n\nconsole.log('Processed ' + processedSuppliers.length + ' suppliers');\nconst highRiskCount = processedSuppliers.filter(function(s) { return s.risk_level === 'HIGH'; }).length;\nconsole.log('High risk suppliers: ' + highRiskCount);\n\nreturn [{\n  json: {\n    suppliers: processedSuppliers,\n    summary_report: summaryReport,\n    high_risk_count: highRiskCount,\n    medium_risk_count: processedSuppliers.filter(function(s) { return s.risk_level === 'MEDIUM'; }).length,\n    total_suppliers: processedSuppliers.length,\n    assessment_timestamp: new Date().toISOString()\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "97557200-2713-4f26-890e-c4601e203a1c",
      "name": "Find Alternatives",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        992,
        560
      ],
      "parameters": {
        "userPrompt": "Find alternative suppliers in manufacturing category. Extract company information using this schema: { \"company_name\": \"name\", \"location\": \"city, state/country\", \"specialties\": [\"list of services\"], \"certifications\": [\"list of certs\"], \"contact_info\": \"email or phone\", \"website\": \"url\", \"estimated_capacity\": \"small/medium/large\", \"quality_rating\": \"1-5 stars\" }",
        "websiteUrl": "https://www.thomasnet.com/suppliers/manufacturing"
      },
      "typeVersion": 1
    },
    {
      "id": "f0122ca7-ae5b-4ffe-9ac2-ce9a4f78b78d",
      "name": "Check Alert Conditions",
      "type": "n8n-nodes-base.if",
      "position": [
        1376,
        720
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "condition-high-risk",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.high_risk_count }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0ab9cb88-eeab-431e-a04a-cd26c5300018",
      "name": "Format Alert",
      "type": "n8n-nodes-base.set",
      "position": [
        1776,
        464
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "assignment-alert",
              "name": "alert_message",
              "type": "string",
              "value": "\ud83d\udea8 **URGENT: High Risk Suppliers Detected**\n\n{{ $json.summary_report }}\n\n\u26a1 **Recommended Actions:**\n\u2022 Review contracts with high-risk suppliers\n\u2022 Contact alternative suppliers\n\u2022 Assess inventory levels\n\u2022 Update contingency plans\n\n\ud83d\udcde **Next Steps:**\n1. Schedule emergency procurement meeting\n2. Review supplier performance metrics\n3. Initiate backup supplier evaluation\n\n\ud83d\udd50 Generated: {{ new Date().toLocaleString() }}"
            },
            {
              "id": "assignment-priority",
              "name": "priority",
              "type": "string",
              "value": "={{ $json.high_risk_count >= 2 ? \"CRITICAL\" : \"HIGH\" }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "b21e22c8-5c61-4416-b646-6371d46b6500",
      "name": "Send Slack Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        2096,
        368
      ],
      "parameters": {
        "text": "={{ $json.alert_message }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "#procurement-alerts"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.2
    },
    {
      "id": "ae81a56e-cb26-49ac-bb0b-19326a11c88e",
      "name": "Email Procurement Team",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2096,
        704
      ],
      "parameters": {
        "options": {
          "attachments": [
            {
              "value": "={{ JSON.stringify($node['Risk Scorer'].json.suppliers.filter(s => s.risk_level === 'HIGH' || s.risk_level === 'MEDIUM'), null, 2) }}",
              "property": "supply_chain_risk_data.json"
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c168f67c-910d-4ada-9377-0790745fd08f",
      "name": "Format Daily Report",
      "type": "n8n-nodes-base.set",
      "position": [
        1776,
        864
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "assignment-daily-report",
              "name": "daily_summary",
              "type": "string",
              "value": "\ud83d\udcca **Daily Supply Chain Health Report**\n\n{{ $json.summary_report }}\n\n\u2705 **All systems monitored successfully**\n\ud83d\udcc8 **Trend Analysis**: Suppliers performing within acceptable risk parameters\n\n\ud83d\udd04 Next check: Tomorrow at 9:00 AM"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "4fbc224c-7fc7-4388-94a9-833137a571f1",
      "name": "Send Daily Report",
      "type": "n8n-nodes-base.slack",
      "position": [
        2096,
        864
      ],
      "parameters": {
        "text": "={{ $json.daily_summary }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "#supply-chain-updates"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.2
    },
    {
      "id": "19f69bd7-d629-48ef-971f-8e0a4d59d1fa",
      "name": "Step 1 Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        -32
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1198,
        "content": "# Step 1: Daily Trigger \u23f0\n\n**Purpose**: Initiates the daily supply chain risk assessment\n\n## Configuration\n- **Schedule**: Every day at 9:00 AM\n- **Timezone**: Adjust based on your business hours\n- **Frequency**: Can be modified for hourly or custom intervals\n\n## Benefits\n- Automated monitoring without manual intervention\n- Consistent daily health checks\n- Early detection of emerging risks"
      },
      "typeVersion": 1
    },
    {
      "id": "6b581da0-033c-4ce9-9113-bb50d518c2ff",
      "name": "Step 2 Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -32
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1198,
        "content": "# Step 2: Supplier Data Collection \ud83d\udd0d\n\n**Purpose**: Scrapes multiple supplier websites and news sources\n\n## What it monitors\n- Financial health indicators\n- Operational disruptions\n- Regulatory compliance issues\n- Industry news and trends\n\n## Data Sources\n- Supplier corporate websites\n- Investor relations pages\n- Industry news feeds\n- Regulatory filings"
      },
      "typeVersion": 1
    },
    {
      "id": "28a20162-93f4-47ee-95ef-a31a2570e846",
      "name": "Step 3 Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -32
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1198,
        "content": "# Step 3: Risk Analysis Engine \ud83e\uddee\n\n**Purpose**: Processes collected data and calculates risk scores\n\n## Risk Scoring Factors\n- Financial status (stable/warning/critical)\n- Number of operational issues\n- Regulatory compliance problems\n- News sentiment analysis\n\n## Output\n- Individual supplier risk scores (1-10)\n- Risk level classification (LOW/MEDIUM/HIGH)\n- Comprehensive risk assessment report"
      },
      "typeVersion": 1
    },
    {
      "id": "66e6b608-9c4d-4493-be0b-90a813145cc2",
      "name": "Step 4 Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -32
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1198,
        "content": "# Step 4: Alternative Supplier Finder \ud83d\udd04\n\n**Purpose**: Identifies backup suppliers for high-risk situations\n\n## Search Criteria\n- Same industry/category as at-risk supplier\n- Geographic proximity preferences\n- Certification requirements\n- Capacity and quality ratings\n\n## Benefits\n- Proactive contingency planning\n- Faster response to supply disruptions\n- Reduced business continuity risks"
      },
      "typeVersion": 1
    },
    {
      "id": "a59c8221-0d7d-4fba-b473-55fbf02d15ec",
      "name": "Step 5 Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1232,
        -32
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 1198,
        "content": "# Step 5: Alert System Logic \ud83d\udea8\n\n**Purpose**: Determines when to send alerts vs daily reports\n\n## Alert Conditions\n- High-risk suppliers detected (score \u2265 8)\n- Multiple medium-risk suppliers\n- Critical financial status changes\n- Major operational disruptions\n\n## Smart Routing\n- **HIGH/CRITICAL**: Immediate Slack + Email alerts\n- **LOW risk**: Daily summary report only"
      },
      "typeVersion": 1
    },
    {
      "id": "8c6b1208-46ba-4e06-b281-3a27a4446fc6",
      "name": "Step 6 Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        -32
      ],
      "parameters": {
        "color": 4,
        "width": 688,
        "height": 1198,
        "content": "# Step 6: Multi-Channel Notifications \ud83d\udce2\n\n**Purpose**: Ensures critical information reaches the right people\n\n## Notification Channels\n- **Slack**: Real-time alerts to #procurement-alerts\n- **Email**: Detailed reports to procurement team\n- **Daily Reports**: Regular updates to #supply-chain-updates\n\n## Message Formatting\n- Clear priority indicators\n- Actionable recommendations\n- Alternative supplier suggestions\n- Trend analysis and next steps"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "13cec458-59b4-43fb-a10b-7bdbfa7e8fc0",
  "connections": {
    "Risk Scorer": {
      "main": [
        [
          {
            "node": "Find Alternatives",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check Alert Conditions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Alert": {
      "main": [
        [
          {
            "node": "Send Slack Alert",
            "type": "main",
            "index": 0
          },
          {
            "node": "Email Procurement Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Risk Check": {
      "main": [
        [
          {
            "node": "Scrape Supplier 1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Scrape Supplier 2",
            "type": "main",
            "index": 0
          },
          {
            "node": "Scrape Industry News",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Alternatives": {
      "main": [
        [
          {
            "node": "Check Alert Conditions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Supplier 1": {
      "main": [
        [
          {
            "node": "Risk Scorer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Supplier 2": {
      "main": [
        [
          {
            "node": "Risk Scorer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Daily Report": {
      "main": [
        [
          {
            "node": "Send Daily Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Industry News": {
      "main": [
        [
          {
            "node": "Risk Scorer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Alert Conditions": {
      "main": [
        [
          {
            "node": "Format Alert",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Format Daily Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This workflow automatically monitors supplier health and supply chain risks, providing real-time alerts and daily reports to procurement teams. Daily Risk Check - Runs the workflow every morning at 9:00 AM to assess supplier health. Multi-Source Data Collection - Scrapes…

Source: https://n8n.io/workflows/6569/ — 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

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
Slack & Telegram

This workflow automates competitive price intelligence using Bright Data's enterprise web scraping API. On a scheduled basis (default: daily at 9 AM), the system loops through configured competitor pr

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

This n8n workflow proactively scans and aggregates threat intelligence, network logs, and vulnerability data every 15 minutes to detect emerging risks across the infrastructure. It analyzes anomalies,

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

SEO managers, content marketers, bloggers, and growth teams who want to automatically catch declining content performance before it's too late — without manually checking Google Search Console every w

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

Automate tax deadline monitoring with AI-powered insights. This workflow checks your tax calendar daily at 8 AM, uses GPT-4 to analyze upcoming deadlines across multiple jurisdictions, detects overdue

Google Sheets, HTTP Request, Email Send +1