by Trung Tran
Automatic Clean Up Expired AWS ACM Certificates with Human Approval > Automate the cleanup of expired AWS ACM certificates with Slack-based approval. This workflow helps maintain a secure and tidy AWS environment by detecting expired SSL certs, sending detailed Slack notifications to admins, and deleting them upon approval, ensuring full visibility and control over certificate lifecycle management. 🧑💼 Who’s it for This workflow is designed for: AWS administrators** who want to keep their environment clean and secure DevOps teams** managing SSL lifecycle in AWS ACM IT Admins** needing visibility and control over expired cert removal Teams that use Slack for collaboration and approvals ⚙️ How it works / What it does This automated workflow performs the following tasks on a daily schedule: Fetch all ACM certificates in your AWS account. Filter out the expired ones by comparing expiration date and status. Send a Slack approval message with certificate details to the admin team. Wait for approval response directly in Slack (✅ to approve deletion). If approved, it deletes the expired certificate using AWS ACM. Finally, it notifies the IT admin about the action taken. 🔧 How to set up Create the Workflow Add the nodes as shown: Schedule Trigger AWS - ACM: listCertificates AWS - ACM: describeCertificate (loop per cert) IF Node to filter expired certs Slack - Send & Wait for Reaction AWS - ACM: deleteCertificate Slack - Post Message to notify Configure Slack Create a Slack Bot Token with: chat:write reactions:read channels:read Connect it in your Slack nodes. Configure AWS Credentials Use IAM User or Role with: acm:ListCertificates acm:DescribeCertificate acm:DeleteCertificate Set schedule Daily, Weekly, or custom cron expression. 📋 Requirements | Component | Description | |------------------|--------------------------------------| | AWS ACM Access | IAM permissions for ACM actions | | Slack Bot Token | With chat:write & reactions:read | | n8n Environment | Self-hosted or n8n Cloud | | Slack Channel | Where approval messages will be sent | 🛠️ How to customize the workflow 🕒 Change waiting time Adjust the wait time before checking Slack reactions in the sendAndWait node (default 1 hour). 👥 Change Slack target Change the Slack channel or tag specific people (<@U123456>). 📓 Add logging Add Google Sheets, Notion, or DynamoDB to log certificate details and approval decisions. 🧪 Add dry-run/test mode Use an IF node before deletion to simulate removal when ENV === dry-run.
by Alexander Schnabl
Monitor expiring EntraID application secrets and notify responsible Stay ahead of credential expirations by automatically detecting Entra ID application client secrets and certificates that are about to expire, and sending a neatly formatted email report. What this workflow solves Expired client secrets and certificates are a common cause of unexpected outages and failed integrations. Manually checking expiration dates across many Entra ID applications is tedious and easy to miss. This workflow automates the discovery and reporting of credentials that will expire within a configurable time window. Key features Fetches all Microsoft Entra ID applications along with: Client secrets (passwordCredentials) Certificates (keyCredentials) Splits credentials into individual entries for easier processing Filters credentials expiring within the next N days (configurable) Normalizes results into a consistent structure including: Application name App ID Credential type (Client Secret / Certificate) Credential name + ID Days remaining until expiration Generates an HTML table report, sorted by application name Sends an email only when expiring items are found (otherwise does nothing) How it works Fetches all Entra ID applications and their credential metadata via Microsoft Graph Separates client secrets and certificates into individual entries Filters entries that expire within the configured time window Builds a normalized list of expiring items with days remaining Emails an HTML table report (only if results exist) Setup requirements Microsoft Entra ID app registration* with Microsoft Graph *Application permissions**: Application.Read.All In n8n: Create Microsoft Graph OAuth2 credentials (Client Credentials flow recommended) Assign those credentials to the Get EntraID Applications and Secrets HTTP Request node Update the Set Variables node: notificationEmail: where to send the report daysBeforeExpiry: alert window in days (e.g., 14) Notes The email table highlights soon-to-expire credentials more prominently (based on remaining days). For automation, replace the manual trigger with a Schedule Trigger (e.g., daily/weekly). The workflow accesses metadata only (names/IDs/expiry), not secret values.
by Nitesh
🤖 Instagram DM Automation Workflow Category: Marketing & Lead Engagement Tags: Instagram, Puppeteer, Automation, Google Sheets, Lead Nurturing 🧠 Overview This workflow automates Instagram DMs, engagement, and story interactions using Puppeteer in the backend. It connects to Google Sheets to fetch leads (usernames and messages) and sends personalized DMs one by one — while also mimicking human behavior by scrolling, liking posts, and viewing stories. It’s designed to help marketers and businesses capture, nurture, and convert leads on Instagram — fully automated and AI-assisted. ⚙️ How It Works 1. Fetch Leads from Google Sheets 2. Send Instagram DMs via Puppeteer Backend 3. Simulate Human Actions 4. Update Lead Status 5. Rate Limit Handling 🧭 Setup Steps > ⏱️ Estimated setup time: ~10–15 minutes 1. Prerequisites Active Google Sheets API connection with OAuth2 credentials. Puppeteer-based backend running locally or remotely. Node.js-based service handling: /login /instagram /viewstory /logthis 2. Connect Google Sheets Use your Google account to authorize Google Sheets access. Add your Sheet ID in: leads → for usernames & messages. acc → for active accounts tracking. 3. Configure Webhook Copy your Webhook URL from n8n. Use it to trigger the workflow manually or via external API. 4. Adjust Timing Edit Code in JavaScript nodes if you want to: Change DM delay (20–30s default) Adjust story viewing delay (4.5–5.5 minutes) 5. Test Before Deploy Run in test mode with 1–2 sample leads. Check that: DM is sent. Google Sheet updates status. Backend logs actions. 🧾 Notes Inside the Workflow You’ll find Sticky Notes within the workflow for detailed guidance, covering: ✅ Setup sequence 💬 Message sending logic ⏳ Delay handling 📊 Google Sheets updates ⚠️ Rate-limit prevention 🔁 Loop control and retry mechanism 🚀 Use Cases — ⚙️ Automate lead nurturing via Instagram DMs. 🤖 Send AI-personalized messages to prospects. 👥 Simulate real human actions (scroll, like, view stories). 🔥 Safely warm up new accounts with timed delays. 📊 Auto-update Google Sheets with DM status & timestamps. 💬 Run outbound messaging campaigns hands-free. 🧱 Handle rate limits smartly and continue smoothly. 🚀 Boost engagement, replies, and conversions with automation.
by WeblineIndia
Real-Time Uptime Alerts to Jira with Smart Slack On-Call Routing This workflow automatically converts uptime monitoring alerts received via webhook into Jira incident tasks and intelligently notifies an available on-call team member on Slack based on their real-time presence status. It ensures critical service outages never go unnoticed by selecting an active responder and sending a detailed direct message immediately. ⚡ Quick Implementation Steps Import the workflow JSON into n8n. Configure your Webhook, Slack, and Jira credentials. Update the IF node to filter for status = down (already configured). Set the Jira project and issue type as required. Connect your Slack on-call channel. Activate the workflow and send a test alert using Postman or your monitoring tool. What It Does This automation listens for incoming alerts from any uptime monitoring service. When a system or service goes down, the workflow instantly validates whether the alert is critical (status = down). Once validated, it automatically creates a detailed Jira Task containing all relevant service details such as timestamp, downtime duration, error code, customer impact and priority. After the Jira incident is created, the workflow retrieves a list of all members from a dedicated Slack on-call rotation channel. It checks each member’s Slack presence (active, away, offline) and uses smart selection logic to choose the best person to notify. The selected team member then receives a richly formatted direct Slack message containing all incident details and a link to the Jira ticket. This ensures the alert is not only logged properly but also reaches the right responder at the right time. Who’s It For This workflow is perfect for: DevOps teams managing uptime & system reliability. Support teams responsible for incident response. SRE teams using Jira and Slack. Organizations with an on-call rotation setup. Teams wanting automated escalation for downtime alerts. Requirements to Use This Workflow n8n installed** (self-hosted or cloud) Slack API credentials** with permission to read user presence and send direct messages Jira Software Cloud** credentials allowing issue creation A monitoring system** capable of sending webhook alerts (e.g., UptimeRobot, Uptime Kuma, StatusCake, custom system, etc.) Access to a Slack channel that includes your on-call rotation members How It Works & How to Set Up Step 1: Receive Alert from Uptime Monitoring Tool The workflow starts with the Webhook node (Receive Uptime Alert). Your monitoring tool must send a POST request with JSON payload including fields like: serviceName status timestamp customerImpact errorCode priority etc. Step 2: Filter for Critical Status The IF node (Filter for Critical Status) checks: Only when the service is down does the workflow continue to create a Jira incident. Step 3: Create Jira Incident Task The Create New Jira Incident node generates a Jira Task with: Summary: serviceName + timestamp Description: dynamic fields based on the alert payload Set your Jira Project and Issue Type as needed. Step 4: Fetch Slack On-Call Channel Members The workflow calls Slack API to retrieve all user IDs in a designated channel (e.g., #on-call-team). Step 5: Loop Through Each Member Split In Batches Node** loops each Slack member individually. For each user, their Slack presence is fetched using: Step 6: Build Final Data for Each User The Set node (Collect & Set Final Data) stores: presence member ID service details Jira ticket ID downtime info and more Step 7: Select the Best On-Call User A custom Code node uses presence-based logic: Selection Logic If one or more users are active → randomly pick one active user. If only one user is active → pick that user. If no users are active → default to the first member from the channel. This ensures you always get a responder. Step 8: Notify Selected User The Slack Notify Node sends a formatted direct message with: service status downtime duration error code customer impact Jira ticket link priority The selected on-call responder receives everything they need to act immediately. How to Customize Nodes Webhook Node Change the path to something meaningful (e.g., /uptime-alerts). Customize expected fields based on your monitoring tool's payload. IF Node Modify status condition for: "critical" "error" or multiple conditions Jira Node You can customize: Issue type (Incident, Bug, Task) Priority field mapping Project ID Custom fields or labels Slack Retrieval Node Change the channel to your team's actual on-call rotation channel. Slack Message Node Modify message formatting, tone, emojis, or add links. Add @mentions or tags. Include escalation instructions. Add-Ons (Optional Extensions) Enhance the workflow by adding: 1. Escalation Logic If the selected user doesn’t respond within X minutes, notify next user. 2. PagerDuty / OpsGenie Integration Trigger paging systems for SEV-1 incidents. 3. Status Page Updates Automatically update public status pages. 4. Auto-Resolution When service status returns to up, automatically: Update Jira ticket Notify the team Close the incident 5. Logging & Analytics Store incidents in Google Sheets, Notion, or a database. Use Case Examples This workflow can support multiple real-world scenarios: Website Uptime Monitoring If your main website goes down, instantly create a Jira incident and notify your on-call engineer. API Downtime Alerting When an API endpoint fails health checks, alert active developers only. Microservices Monitoring Each microservice alert triggers a consistent, automated incident creation and notification. Infrastructure Failure Detection When servers, containers, or VMs become unreachable, escalate to your infrastructure team. Database Performance Degradation If DB uptime drops or error rate spikes, create a Jira ticket and ping the database admin. And many more variations of outage, error, and performance monitoring events. Troubleshooting Guide | Issue | Possible Cause | Solution | |-------|----------------|----------| | Workflow not triggering | Webhook URL not updated in monitoring tool | Copy n8n webhook URL and update in monitoring source | | No Jira ticket created | Invalid Jira credentials or missing project permissions | Reauthorize Jira credentials and verify permissions | | Slack users not found | Wrong channel ID or bot not added to channel | Ensure bot is invited to the Slack channel | | Slack presence not returning | Slack app lacks presence permission (users:read.presence) | Update Slack API scopes and reinstall | | No user receives notification | Presence logic always returns empty list | Test Slack presence API and verify real-time presence | | Wrong user selected | Intended selection logic differs | Update the JS logic in the code node | | Jira fields not populated | Alert payload fields missing | Verify webhook payload structure and match expected fields | Need Help? If you need assistance setting up this workflow, customizing integrations, building escalations or extending the logic with add-ons — WeblineIndia is here to help. We can assist with: Custom Slack/Jira/Monitoring automation On-call rotation logic enhancements Cloud deployment & workflow optimization Any custom n8n automation Production-grade monitoring workflows 👉 Contact WeblineIndia for professional support, implementation and custom workflow development.
by Omer Fayyaz
This n8n template implements a Chatbot with Google Gemini to Check Domain Name Availability using the WHMCS API Who's it for This template is designed for domain registrars, web hosting companies, and IT service providers who use WHMCS (Web Host Manager Complete Solution) and want to offer automated domain availability checking to their customers. It's perfect for businesses looking to enhance their customer support with AI-powered domain search assistance. How it works / What it does This workflow creates an AI-powered customer support chatbot that automatically checks domain name availability using WHMCS API integration. When customers ask about domain availability, the AI agent: Receives customer queries through a webhook endpoint Processes natural language requests using Google Gemini AI Automatically checks domain availability via WHMCS DomainWhois API Provides verified, accurate responses with available alternatives Maintains conversation context throughout the session The system ensures 100% accuracy by only suggesting domains that have been verified as available, eliminating guesswork and improving customer trust. How to set up 1. Configure WHMCS API Credentials Replace Your_WHMCS_Identifier with your actual WHMCS API identifier Replace Your_WHMCS_Secret with your actual WHMCS API secret Update https://your_whmcs_url.com/includes/api.php with your WHMCS domain 2. Set up Google Gemini API Configure your Google Gemini API credentials in the Google Gemini Chat Model node Ensure you have sufficient API quota for your expected usage 3. Deploy the Webhook The workflow creates a unique webhook endpoint for receiving customer queries Use this endpoint URL in your customer-facing application or chat interface 4. Test the Integration Send a test query to verify domain checking functionality Ensure proper error handling and response formatting Requirements WHMCS installation** with API access enabled Google Gemini API account** with appropriate credentials n8n instance** (self-hosted or cloud) Domain registrar business** or similar service offering How to customize the workflow Modify AI Agent Behavior Edit the system message in the AI Agent node to change the bot's personality and response style Adjust response length and tone to match your brand voice Add Additional Tools Integrate with other WHMCS APIs for pricing, registration, or management Add notification systems (email, Slack, SMS) for high-value domain inquiries Implement rate limiting or usage tracking Enhance Customer Experience Add domain suggestion algorithms based on customer input Integrate with your existing customer database for personalized recommendations Add multi-language support for international customers Security Enhancements Implement API key rotation and monitoring Add request validation and sanitization Set up usage analytics and abuse prevention Key Features Real-time domain availability checking** via WHMCS API AI-powered natural language processing** for customer queries Session-based memory** for contextual conversations Automatic alternative domain suggestions** when requested domains are unavailable Professional, customer-focused responses** that maintain brand standards Scalable webhook architecture** for high-volume usage Use Cases Customer support automation** for domain registrars Sales team assistance** with real-time domain availability Customer self-service portals** with intelligent domain search Lead generation** through proactive domain suggestions Customer retention** via improved support experience This template transforms your domain business by providing instant, accurate domain availability information while maintaining the personal touch that customers expect from professional service providers.
by Jay Emp0
This workflow automatically backs up all public Postgres tables into a GitHub repository as CSV files every 24 hours. It ensures your database snapshots are always up to date updating existing files if data changes, or creating new backups for new tables. How it works: Schedule Trigger – Runs daily to start the backup process. GitHub Integration – Lists existing files in the target repo to avoid duplicates. Postgres Query – Fetches all table names from the public schema. Data Extraction – Selects all rows from each table. Convert to CSV – Saves table data as CSV files. Conditional Upload – If the table already exists in GitHub → Update the file. If new → Upload a new file. Postgres Tables Preview GitHub Backup Preview Use case: Perfect for developers, analysts, or data engineers who want daily automated backups of Postgres data without manual exports keeping both history and version control in GitHub. Requirements: Postgres credentials with read access. GitHub repository (OAuth2 connected in n8n).
by as311
This workflow generates a data driven Ideal Customer Profile (ICP) and retrieves lookalike companies in Germany from the official data source (Handelsregister). It starts by ingesting a set of base company IDs, serializes them, and sends a recommendation request to the Implisense API to fetch similar companies. When explanation mode is enabled, the workflow extracts and processes term features to create a structured keyword digest and uses an LLM to generate an ICP narrative. The pipeline outputs both a clean list of lookalike companies, enriched with CRM-ready fields, and a detailed ICP report derived from Implisense feature statistics. How it works Input → Serialization → Lookalikes → Lists/Report Setup steps 1. Data Source ☐ Replace "Mock ICP Companies" with matched companies from the Implisense database ☐ Ensure output has: id 2. Configure Credentials: Set up RapidAPI API credentials Get your API key here: https://implisense.com/de/contact Insert your API Token in get_lookalikes (Basic auth) 3. Configure ICP Filters ☐ Edit "Build Recommendation Request" node ☐ Set locationsFilter (e.g., de-be, de-by, de-nw) ☐ Set industriesFilter (NACE codes, e.g., J62 for IT) ☐ Set sizesFilter (MICRO, SMALL, MEDIUM, LARGE) 4. Tune Results ☐ Adjust THRESHOLD in "Filter & Normalize Results" (default: 0.5) ☐ Adjust MIN_BASE_COMPANIES in "Collect Base Companies" (default: 3) ☐ Adjust size parameter in "Configuration" URL (default: 100) 5. CRM Integration ☐ Map fields in "list_of_companies" to match your CRM schema ☐ Add CRM upsert node after "list_of_companies" ☐ Use implisense-ID or domain as unique identifier Additional advice Strengthen Base Company Quality Use only highly representative base companies located in Germany that strongly match the intended ICP segment. Templates with dozens of mixed or heterogeneous IDs dilute the statistical signal in the /recommend endpoint and reduce relevance. Refine Filters Aggressively Limit recommendations by state, region, NACE code, or size class. Implisense returns cleaner results when the recommendation space is constrained. Removing unnecessary geography broadens noise. Increase the Size Parameter Raise the size parameter when building the request to give the ranking model more candidates. This materially improves downstream sorting and selection.
by Vinay
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 📖 Extract Data from Invoices with OCR, Gemini AI, and Airtable This template automates the process of extracting key details from invoices (PDF, JPG, PNG) and storing them in Airtable using OCR + AI. It eliminates manual data entry by leveraging Tesseract OCR, Google Gemini AI, and Airtable, with optional Telegram notifications. The workflow is ideal for freelancers, small businesses, and finance teams who need a lightweight and automated solution for handling invoice data. 🔑 Features ✅ Supports JPG, PNG, and PDF invoices 🧠 Automatically extracts: Invoice Number, Invoice Date (standardized to YYYY-MM-DD), Subtotal, Tax, Total, Currency, Vendor Name, Email, Phone, and Ship-to Address 📤 Sends structured data into Airtable automatically 📬 Sends a Telegram notification once data is processed (optional) 🔁 Triggers automatically when new files are dropped into a folder ⚠️ Disclaimer This workflow uses community nodes (n8n-nodes-tesseractjs, n8n-nodes-pdf-page-extract). It works best on self-hosted n8n or n8n cloud instances where these nodes are available. You must install and configure these nodes before importing the workflow. ⚙️ Setup & Configuration Install Docker with n8n. Mount your folder (e.g., ~/self-hosted-ai/ocr-bot:/shared) so invoices can be dropped into /shared/ocr/. Import the provided JSON workflow into n8n. Replace credentials: Google Gemini API key Airtable base + token Telegram bot token (optional) Drop a sample invoice (PDF/JPG/PNG) into the configured folder. Check Airtable for structured data and Telegram (if enabled) for confirmation. 🧠 Customization Modify the AI prompt to extract additional fields. Replace Airtable with Google Sheets or another database if preferred. Update the Telegram node with your own Chat ID for notifications. 💡 Tip: Add a screenshot of the workflow in n8n to help users quickly understand the node structure.
by OwenLee
Description 💸💬 Slack Pro is powerful — but the price hurts, especially for growing teams. This workflow is designed as a low-cost alternative solution that provides some Slack Pro functions (searchable history + AI summaries) while you stay on the free Slack plan (or minimal paid seats). What is the advantage? 🧠 AI Slack assistant on demand – @mention the bot in any channel to get clear summaries of recent discussions (“yesterday”, “last 7 days”, “this week”, etc.). 🗄️ External message history – recent messages are routinely saved into Google Drive, so important conversations live outside Slack’s 90-day / 10k-message limit. 💰 Cost-efficient setup – rely on Slack free plan + a little Google Drive storage + low-cost AI API, instead of paying Slack Pro ($8.75 USD per user / month). 📚 Business value – you keep the benefits you wanted from Slack Pro (memory, context, easy catch-up) while avoiding a big monthly bill. 🧠 Upgrade your Slack for free with AI chat summaries & history archiving 👥 Who’s it for 💰 Teams stuck on Slack Free because Pro is too expensive (e.g. founders, small teams) Want longer history and better context, but can’t justify per-seat upgrades. Need “Pro-like” benefits (search, memory, recap) in a budget-friendly way. ⚙️ How it works 📝 Slack stays as your main chat tool: People talk in channels the way they already do. 🤖 You add a bot powered by this workflow: When someone @mentions it with something like (@SlackHistoryBot summarize this week). 📆 On a schedule (e.g. monthly), it backs up channels: Walks through channels the bot can access and saves recent messages (e.g. last 30 days) as a CSV file into Google Drive. 🛠️ How to set up 🔑 Connect credentials (once) Slack (Bot / App): recommend other tutorial video Create and configure a bot. Create a credential. Invite the bot to channels you want to cover. Google Drive Connect a Google account for storage. Create a folder like Slack History (Archived) in Drive and select it in the workflow. AI Provider (e.g. DeepSeek) Grab any LLM API key. Plug it into the AI node so summaries use that model. 🚀 Quick Start Import the JSON workflow. Attach your credentials. Save and activate the workflow. Try a real-world test: In a test channel, have a short conversation. Then try @(your bot name) summarize today. Check that archives appear: Manually trigger the “archive” part from your automation tool. You should see files named after your channels and time period in Google Drive. 🧰 How to Customize the Workflow Limit where it runs Only invite the bot to “high value” channels (projects, clients, leadership). This keeps both AI and storage usage under control. Adjust archive frequency ⏰ Monthly is usually enough; weekly only for critical channels. Less frequent archives = fewer operations = lower cost. *Customize the summary style (system prompt) *📃 What language to use (e.g. Chinese by default, or English, or both). How to structure the summary (topics, bullets, separators). What to focus on (projects, decisions, tasks, risks, etc.). 📩 Help & customize other slack function Contact: owenlzyxg@gmail.com
by Roshan Ramani
Nano Banana AI Image Editor Transform your Telegram photos with AI-powered image processing using the revolutionary Nano Banana technology. This workflow automatically receives photos via Telegram, processes them through Google's advanced Gemini 2.5 Flash vision model, and sends back intelligently enhanced images - all powered by the innovative Nano Banana processing pipeline. Who's it for Perfect for content creators, social media managers, photographers, and anyone who wants to automatically enhance their Telegram photos with AI. Whether you're running a photo editing service, creating content for clients, or just want smarter image processing in your personal chats, the Nano Banana AI editor delivers professional-grade results. How it works The Nano Banana workflow creates an intelligent Telegram bot that processes images in real-time. When you send a photo with a caption to your bot, it automatically downloads the image, converts it to the proper format, sends it to Google's Gemini AI for analysis and enhancement, then returns the processed result. The Nano Banana engine optimizes every step for speed and quality. How to set up Create Telegram Bot: Get your bot token from @BotFather on Telegram OpenRouter Account: Sign up at openrouter.ai for free Gemini access Configure Credentials: Add your Telegram and OpenRouter API keys to n8n Update Chat ID: Replace "YOUR_CHAT_ID_HERE" with your actual Telegram chat ID Activate Webhook: Enable the Telegram trigger to start receiving messages Requirements n8n instance (cloud or self-hosted) Telegram Bot API credentials OpenRouter account (free tier available) Basic understanding of webhook configuration How to customize the workflow The Nano Banana editor is highly customizable: Change AI Model:** Modify the model parameter in "Nano Banana Image Processor" node Add Filters:** Insert additional processing nodes before the AI analysis Custom Prompts:** Edit the text content sent to Gemini for different processing styles Multiple Chats:** Duplicate the final node for different Telegram destinations Error Handling:** Add conditional logic for failed processing attempts Batch Processing:** Extend to handle multiple images simultaneously The Nano Banana technology ensures optimal performance while maintaining flexibility for your specific use cases.
by Incrementors
Description: Automatically extracts all page URLs from website sitemaps, filters out unwanted sitemap links, and saves clean URLs to Google Sheets for SEO analysis and reporting. How It Works: This workflow automates the process of discovering and extracting all page URLs from a website's sitemap structure. Here's how it works step-by-step: Step 1: URL Input The workflow starts when you submit a website URL through a simple form interface. Step 2: Sitemap Discovery The system automatically generates and tests multiple possible sitemap URLs including /sitemap.xml, /sitemap_index.xml, /robots.txt, and other common variations. Step 3: Valid Sitemap Identification It sends HTTP requests to each potential sitemap URL and filters out empty or invalid responses, keeping only accessible sitemaps. Step 4: Nested Sitemap Processing For sitemap index files, the workflow extracts all nested sitemap URLs and processes each one individually to ensure complete coverage. Step 5: Page URL Extraction From each valid sitemap, it parses the XML content and extracts all individual page URLs using both XML <loc> tags and HTML links. Step 6: URL Filtering The system removes any URLs containing "sitemap" to ensure only actual content pages (like product, service, or blog pages) are retained. Step 7: Google Sheets Integration Finally, all clean page URLs are automatically saved to a Google Sheets document with duplicate prevention for easy analysis and reporting. Setup Steps: Estimated Setup Time: 10-15 minutes 1. Import the Workflow: Import the provided JSON file into your n8n instance. 2. Configure Google Sheets Integration: Set up Google Sheets OAuth2 credentials in n8n Create a new Google Sheet or use an existing one Update the "Save Page URLs to Sheet" node with your Google Sheet URL Ensure your sheet has a tab named "Your sheet tab name" with a column header "Column name" 3. Test the Workflow: Activate the workflow in n8n Use the form trigger URL to submit a test website URL Verify that URLs are being extracted and saved to your Google Sheet 4. Customize (Optional): Modify the sitemap URL patterns in the "Build sitemap URLs" node if needed Adjust the filtering criteria in the "Exclude the Sitemap URLs" node Update the Google Sheets column mapping as required Important Notes: Ensure your Google Sheets credentials have proper read/write permissions The workflow handles both XML sitemaps and robots.txt sitemap references Duplicate URLs are automatically prevented when saving to Google Sheets The workflow continues processing even if some sitemap URLs are inaccessible Need Help? For technical support or questions about this workflow: ✉️ info@incrementors.com or fill out this form: Contact Us
by Vitorio Magalhães
Overview This workflow automatically enriches Brazilian company data by fetching comprehensive CNPJ information from the MinhaReceita.org API and updating your Google Sheets spreadsheet. Perfect for data analysts, sales teams, and anyone working with Brazilian business databases who needs to enrich company information at scale. What it does Reads CNPJ numbers** from your Google Sheets spreadsheet Fetches complete company data** from Brazil's Federal Revenue database via MinhaReceita.org API Updates your spreadsheet** with comprehensive business information including address, tax status, partners, and more Sends Telegram notifications** when the process is complete Processes data in batches** to handle large datasets efficiently Key Features ✅ Free API - No authentication required, completely free to use ✅ Comprehensive Data - 47+ fields of official Brazilian company information ✅ Batch Processing - Handles up to 100 CNPJs per batch automatically ✅ Smart Filtering - Only processes CNPJs that don't already have data ✅ Real-time Updates - Updates your spreadsheet as data is retrieved ✅ Progress Notifications - Get notified via Telegram when complete Setup Requirements Google Sheets Structure Your spreadsheet must contain at minimum: cnpj** column with Brazilian CNPJ numbers (numbers only, no formatting) razao_social** column (used to identify records without data) Credentials Needed Google Sheets OAuth2** credentials configured in n8n Telegram Bot** credentials for notifications (optional but recommended) Available Data Fields The workflow can populate your spreadsheet with any or all of these official fields from Brazil's Federal Revenue: 🏢 Company Information cnpj, razao_social, nome_fantasia, capital_social porte, codigo_porte, natureza_juridica, codigo_natureza_juridica 📍 Address & Location uf, municipio, codigo_municipio, codigo_municipio_ibge bairro, logradouro, descricao_tipo_de_logradouro numero, complemento, cep pais, codigo_pais, nome_cidade_no_exterior 📞 Contact Information email, ddd_telefone_1, ddd_telefone_2, ddd_fax 💼 Business Classification cnae_fiscal, cnae_fiscal_descricao, cnaes_secundarios regime_tributario, qualificacao_do_responsavel 📋 Registration Status situacao_cadastral, descricao_situacao_cadastral motivo_situacao_cadastral, descricao_motivo_situacao_cadastral situacao_especial, identificador_matriz_filial, descricao_identificador_matriz_filial ente_federativo_responsavel 📅 Important Dates data_inicio_atividade, data_situacao_cadastral, data_situacao_especial 🏛️ Tax Regime Information opcao_pelo_mei, data_opcao_pelo_mei, data_exclusao_do_mei opcao_pelo_simples, data_opcao_pelo_simples, data_exclusao_do_simples 👥 Partners & Shareholders qsa (Complete structured data of company partners and shareholders) How to Use Prepare your spreadsheet with CNPJ numbers in the cnpj column Configure your Telegram ID in the Settings node for notifications Set up Google Sheets credentials in n8n Add the desired data columns to your spreadsheet (any combination from the list above) Run the workflow - it will automatically process all CNPJs without existing data Performance & Limitations API Limits**: None - completely free API from MinhaReceita.org Data Accuracy**: Official data from Brazil's Federal Revenue Service Batch Size**: Configurable (default: 100 records per batch) Use Cases Lead Enrichment**: Enhance prospect databases with complete company information Market Research**: Gather comprehensive data about Brazilian companies Compliance & Due Diligence**: Verify company registration status and details Sales Intelligence**: Access contact information and company classification data Data Cleaning**: Standardize and complete existing company databases Prerequisites N8N instance with Google Sheets integration Google Sheets document with CNPJ data Basic understanding of Brazilian CNPJ format (14-digit company registration number) Telegram bot token (optional, for notifications) Important Notes CNPJs must be active and registered with Brazil's Federal Revenue Service The workflow only processes CNPJs where razao_social is empty (avoiding duplicates) All data comes from official government sources via MinhaReceita.org No rate limiting needed - the API is designed for bulk requests Supports both matriz (headquarters) and filial (branch) identification