BULDRR AI Vikash KumarSchedule a Call
Updated Workflow #1035

Phishing Analysis Automation with n8n, URLScan.io & VirusTotal

Automate phishing URL analysis with n8n using URLScan.io and VirusTotal. This workflow extracts URLs from unread Outlook emails, scans for threats, and reports via Slack, saving hours on threat detection.

Phishing Analysis Automation with n8n, URLScan.io & VirusTotal
CONNECTS
Manual Trigger, Schedule Trigger, Microsoft Outlook, Split In Batches, Code, IF, URLScan.io, HTTP Request, Wait, Merge, Filter, Slack
Learn it with AI
✦ SEE IT BEFORE YOU DOWNLOAD

The canvas, and the 12 nodes behind it.

Preview of the Phishing Analysis Automation with n8n, URLScan.io & VirusTotal workflow canvas in n8n
✦ NODE BY NODE

What runs inside this workflow

Phishing Analysis Automation with n8n, URLScan.io & VirusTotal is built from these n8n nodes: Manual Trigger, Schedule Trigger, Microsoft Outlook, Split In Batches, Code, IF, URLScan.io, HTTP Request, Wait, Merge, Filter, Slack.

    ✦ LEARN HOW TO BUILD THIS WORKFLOW WITH AI
    Send this workflow to your assistant and have it taught to you.

    Each button opens the assistant with the prompt already written — asking it to explain this exact workflow step by step, as if teaching a complete beginner.

    Using our workflows often?
    Mark BULDRR AI as a preferred source and our templates surface higher in your own Google results.
    Add as a preferred source

    2. What This Automation Does

    This workflow finds unread emails in Microsoft Outlook and looks for URLs that might be dangerous.


    It then sends these URLs to URLScan.io and VirusTotal to check if they are harmful.


    After getting the scan results, it sends a summary message to a Slack channel.


    This saves time by doing the scanning and alerting automatically.



    4. Step-by-Step Guide

    Step 1: Setup the Trigger

    Add a Schedule Trigger node in n8n to run the workflow at times you want, like every hour.


    Or use the Manual Trigger node to start it when needed.


    How to configure the schedule trigger

    1. Click on Schedule Trigger node.

    2. Set how often the workflow runs, for example every 60 minutes.

    3. Save the node.

    Remember

    1. Make sure the trigger node is active, else the workflow will not run.


    Step 2: Fetch Unread Emails from Outlook

    Add a Microsoft Outlook node with operation Get All messages.


    Use filter isRead eq false to get unread emails.


    Connect Microsoft Outlook credentials using OAuth2.


    Test the node to see if unread emails load correctly.


    Common error to avoid

    1. Not setting OAuth2 credentials properly.

    2. This causes authentication failure, stopping the workflow.


    Step 3: Mark Emails as Read

    Add a second Microsoft Outlook node set to Update operation.


    Use message IDs from fetched emails to mark them as read.


    This avoids scanning the same email again.



    Step 4: Split Emails into Batches

    Add a Split In Batches node.


    Set batch size to 1 to process one email at a time.


    This makes debugging and processing more controlled.



    Step 5: Detect URLs Using Python Code

    Add a Code node and choose Python as the language.


    Paste the code below to find URLs in email content.


    try:
      from ioc_finder import find_iocs
    except ImportError:
      import micropip
      await micropip.install("ioc-finder")
      from ioc_finder import find_iocs
    
    text = _input.first().json['body']['content']
    iocs = find_iocs(text)
    
    return [{"json": { "domain": item }} for item in iocs["urls"]]
    

    This code uses the ioc-finder library to detect URLs.


    Note: The code installs the library if missing, so micropip must be available.



    Step 6: Check if URLs Exist

    Add an If node to check if URLs were found.


    If no URLs, skip scanning and continue to next email batch.



    Step 7: Submit URL to URLScan.io

    Add a URLScan.io node set to Scan URL.


    Pass the URLs found to this node and add your API key.


    Set "Continue on Fail" to true to prevent errors stopping the workflow.



    Step 8: Submit URL to VirusTotal

    Add a HTTP Request node.


    Configure it to POST the URL to VirusTotal URL scan endpoint.


    Provide the VirusTotal API Key in headers.


    This requests VirusTotal to scan the URL.



    Step 9: Wait for Results

    Add a Wait node.


    Set wait time to 60 seconds to allow scan processing.



    Step 10: Retrieve URLScan.io Report

    Add another URLScan.io node.


    Set operation to Get Report using previous scan's UUID.


    This fetches detailed URLScan scan results.



    Step 11: Retrieve VirusTotal Report

    Add another HTTP Request node.


    Retrieve VirusTotal URL report using the scan ID from Step 8.



    Step 12: Merge Both Reports

    Add a Merge node set to combine by position.


    This pairs URLScan and VirusTotal results side by side for the same URL.



    Step 13: Filter Non-Empty Results

    Add a Filter node.


    Only pass URLs with finished scan results to next steps.



    Step 14: Send Slack Notification

    Add a Slack node.


    Compose a message including email subject, sender, and date.


    Include scan summaries from both URLScan and VirusTotal.


    Send this message to your selected Slack channel to notify your team.



    Beginner Step-by-Step: How to Use This Workflow in n8n

    Import the Workflow

    1. Download the workflow file using the "Download" button on this page.

    2. Open your n8n editor.

    3. Click on "Import from File" in n8n and select the downloaded file.

    Configure Credentials and Settings

    1. Add Microsoft Outlook OAuth2 credentials in n8n credentials manager.

    2. Enter valid API Keys for VirusTotal and URLScan.io in the respective nodes.

    3. Set Slack Bot Token and channel ID in the Slack node to send notifications.

    4. Check or update any IDs, email folders, or any other necessary fields as per your environment.

    Test and Activate the Workflow

    1. Manually run the workflow using the Manual Trigger node to verify it works correctly with your data.

    2. Check Slack for the alert messages.

    3. Once confirmed, activate the workflow for scheduled automatic runs.

    4. Adjust the Schedule Trigger frequency to your preferred interval.

    If you plan to do self-host n8n, import and configure similarly on your server.



    Tools and Services Used

    • Microsoft Outlook: Retrieves unread email messages.

    • URLScan.io: Scans URLs for malicious behavior.

    • VirusTotal: Analyzes URLs for threats.

    • Slack: Sends alerts with scan results.

    • n8n Platform: Runs the automation workflow.


    Inputs, Processing, and Outputs

    Inputs

    • Unread emails from Microsoft Outlook with email content.

    • URLs extracted from email bodies.

    Processing

    • Mark emails as read after fetching.

    • Extract URLs using Python script and ioc-finder.

    • Submit each URL to URLScan.io and VirusTotal for scanning.

    • Wait and retrieve reports from both services.

    • Merge and filter scan results.

    Outputs

    • Slack messages with email info and scan summaries for suspicious URLs.


    Customization Ideas

    • Replace Microsoft Outlook with Gmail nodes by remapping email fields.

    • Change schedule to run scans more or less often.

    • Add more detail to Slack alerts like malware types.

    • Extract more types of IoCs like IPs or file hashes using the Python code.

    • Send alerts to other platforms such as Microsoft Teams or email.


    Troubleshooting Common Problems

    Authentication Failed Fetching Emails

    Check if Microsoft Outlook OAuth2 tokens are correct and not expired.


    Reauthorize or refresh credentials in n8n Credentials Manager.


    VirusTotal API Quota Exceeded

    Reduce scan frequency or upgrade the VirusTotal plan.


    URLScan.io Node Errors

    Check network and API key validity.


    Enable "Continue on Fail" option to prevent workflow blocking.



    Pre-Production Checklist

    • Test Microsoft Outlook credentials fetching unread emails.

    • Verify VirusTotal and URLScan.io API keys work.

    • Run the workflow manually and confirm Slack alert is received.

    • Check Slack channel and bot permission for posting messages.

    • Make sure Python code runs and installs ioc-finder with micropip.


    Summary

    ✓ The workflow finds unread emails and checks URLs for phishing threats.


    ✓ Uses URLScan.io and VirusTotal for scanning.


    ✓ Sends scan results automatically to Slack channel.


    ✓ Saves hours of manual email scanning daily.


    → Helps quickly find dangerous URLs and alerts the security team.


    → Can expand to scan more IoC types and alert platforms.



    Frequently Asked Questions

    How to add Microsoft Outlook account into this workflow?

    Enter Microsoft Outlook OAuth2 credentials in n8n Credentials Manager and connect it in the Microsoft Outlook nodes.

    Does scanning URLs with VirusTotal use API credits?

    Yes, each URL scan uses API credits. Adjust scan frequency to avoid hitting limits.

    How to fix 'authentication failed' error when fetching emails?

    Refresh or reauthorize the Microsoft Outlook OAuth2 credential in n8n credentials.

    Can the workflow be used with Gmail instead of Microsoft Outlook?

    Yes, replace Microsoft Outlook nodes with Gmail nodes and update relevant field mappings.

    Vikash Kumar
    WRITTEN BY
    Vikash Kumar
    Founder, BULDRR AI
    Building AI agents, n8n workflows and end-to-end automation for 30+ Brands across India, the US, Europe, Dubai & Australia. 7+ years of Experience saving founders real hours every week - no code required.

    Related workflows.

    All 10,467+ templates →
    FREE Automate Twist Channel Creation and Messaging with n8n This workflow automates creating and updating a channel in Twist and sending a personalized message to specific users. It eliminates manual setup errors and saves time managing Twist communications. Open template → FREE Automate IT Support with Slack and OpenAI in n8n Streamline IT support by automating Slack message handling using n8n and OpenAI. This workflow handles Slack DMs, filters bots, queries a Confluence knowledge base, and delivers AI-generated responses, improving support efficiency and response time. Open template → FREE Automate Crypto Analysis with CoinMarketCap & n8n AI Agent Discover how this unique n8n workflow leverages CoinMarketCap's multi-agent AI to deliver precise, real-time cryptocurrency insights directly via Telegram. Manage crypto data analysis efficiently with automated multi-source API integration. Open template → FREE Generate On-Brand Blog Articles Using n8n and OpenAI This workflow automates the creation of on-brand blog articles by analyzing existing company content using n8n and OpenAI. It extracts article structures and brand voice to produce consistent draft articles, saving significant content creation time. Open template → FREE Automate Archiving Spotify Discover Weekly with n8n This automation workflow solves the hassle of manually archiving your Spotify Discover Weekly playlist by automatically comparing and adding only unique tracks to an archive playlist every Monday. It saves time, avoids duplicates, and keeps your archived music collection organized effortlessly using n8n. Open template → FREE Automate Analyzing Sales Call Transcripts with n8n & AI Agents This n8n workflow automates the extraction of structured insights from sales call transcripts using AI agents focused on sales, marketing, and product teams. It streamlines data processing, enabling faster decision-making and team alignment. Open template → FREE Automated SSL Expiry Alert System with n8n & Google Sheets This n8n workflow automates SSL certificate expiry monitoring by fetching URLs from Google Sheets, checking their SSL status via SSL-Checker.io, updating the sheet with results, and sending targeted email and Telegram alerts for certificates that are invalid or near expiry. Open template → FREE Automate Task Creation in ClickUp with n8n Struggling to manually create tasks in ClickUp? This beginner-friendly n8n workflow automates task creation, saving you time and reducing errors. Learn how to create tasks automatically with a simple trigger and ClickUp integration. Open template → FREE Automate Todoist Task Snoozing with n8n Workflow Struggling to manage and snooze your Todoist tasks efficiently? This detailed n8n workflow automates moving tasks between Inbox and Snoozed projects based on due dates, saving you hours of manual task juggling and ensuring timely task returns. Open template → FREE Build OpenAI Assistant with Google Drive Using n8n Automation This workflow automates creating and updating an OpenAI-powered Travel Assistant using a Google Drive file for accurate, specific user replies. It saves time by streamlining assistant updates and chat interactions seamlessly. Open template → FREE Automate WooCommerce Product Announcements on Twitter & Telegram Save time and boost your WooCommerce store's visibility by automatically posting new product announcements on Twitter and Telegram with this n8n workflow. Avoid manual posting errors and reach your audience instantly when new products go live. Open template → FREE Automate Zendesk to Asana Task Creation with n8n This detailed guide shows how to automate task creation in Asana from new Zendesk tickets using n8n. It solves the common challenge of manually duplicating support requests into project management, saving time and reducing errors. Open template → FREE Automate Image Alt Text Auditing & Enhancement with n8n & OpenAI Discover how this n8n workflow automates auditing and enhancing image alt text from any webpage using OpenAI GPT-4. It helps fix poor or missing alt attributes quickly and accurately, saving hours of manual work and improving web accessibility. Open template → FREE Create OpenAI Citation Workflow in n8n for File Retrieval This n8n workflow automates citation and source retrieval from OpenAI's vector store files, ensuring accurate content referencing and formatted output. It solves the problem of incomplete or strange citation text generated by AI, providing reliable markdown or HTML-ready citations for file-based AI assistance. Open template → FREE Automate Squarespace Order Fulfillment with n8n Workflow This n8n workflow automates order fulfillment for Squarespace Commerce by fetching pending orders and fulfilling them automatically, saving hours of manual work. It ensures timely fulfillment and customer notifications with seamless API integration. Open template → FREE Phishing Analysis Automation with n8n, URLScan.io & VirusTotal Automate phishing URL analysis with n8n using URLScan.io and VirusTotal. This workflow extracts URLs from unread Outlook emails, scans for threats, and reports via Slack, saving hours on threat detection. Open template → FREE Automate Image Analysis with Local Ollama Vision Models in n8n Struggling to extract detailed insights from images for business or research? This n8n workflow automates exhaustive image analysis using multiple local Ollama Vision Models, delivering structured, markdown-formatted results saved directly to Google Docs for collaboration and ease of use. Open template → FREE Automate Website Change Alerts N8N Telegram — Complete Guide [2026] Learn how to automate website change alerts n8n telegram with this step-by-step guide. Includes workflow examples, tips, and best practices for 2026. Open template → FREE Automate Text-to-Speech with Elevenlabs & n8n Webhook Save hours in your content creation by automating text-to-speech generation using n8n's webhook and Elevenlabs API. This workflow ensures seamless audio generation from text inputs, eliminating manual conversion errors and delays. Open template → FREE Automate Jira Notifications to Telegram with n8n Workflow This detailed guide shows how to automate Jira issue notifications to Telegram using n8n. Save hours by instantly sending updates, creation alerts, and assignment notifications to the right Telegram users, improving team communication and tracking. Open template → FREE Automate Daily Berlin Weather Updates to LINE with n8n Save time and stay informed by automatically sending daily weather updates for Berlin via LINE using n8n automation. This workflow fetches weather data every morning and messages you directly, eliminating manual checking and keeping you updated efficiently. Open template → FREE n8n Twitter Thread Generator 2026: AI Writes & Posts Threads From Any Content This n8n workflow uses AI to automatically convert any content — blog posts, videos, articles — into ready-to-post Twitter/X threads, complete with hooks and formatting. Open template → FREE Backup n8n Workflows to Bitbucket with Rate Limit Handling Automate daily backups of your n8n workflows directly to Bitbucket, intelligently managing API rate limits to avoid errors. This workflow ensures your automation definitions are safely versioned with minimal manual effort. Open template → FREE Automate Member and Activity Sync from Google Sheets to Orbit This blog explains how to automate moving community member data and their activities from Google Sheets into Orbit using n8n, solving tedious manual updates and ensuring accurate data syncing. Open template → FREE Sync Outlook Calendar with Notion via n8n Automation This workflow automates syncing Microsoft Outlook Calendar events into a Notion database. It solves the problem of manual calendar updates, saving time and reducing errors by automatically creating or updating Notion pages for your events. Open template →
    ✦ WANT THIS RUNNING IN YOUR BUSINESS?

    We’ll set it up for you.

    Tell us what you want it to do. We’ll wire the workflow, connect the credentials, and hand it over running.

    Keep exploring.