by dev
Every 10 minutes check if a new article was stared, if so, save it in wallabag to read it later.
by Lorena
This workflow gets data from an API and exports it into Google Sheets and a CSV file.
by Hermilio
query data from two different databases handle and unify in a single return
by Dmitrij Zykovic
Webhook Rate Limiter (Ainoflow Guard) Stop webhook flooding before it starts. Add production-grade rate limiting to any n8n webhook in minutes - reject abusive traffic before expensive workflow logic executes. β¨ Key Features β‘ Edge-style decisions** - Allow/deny checked before any business logic runs π‘οΈ Burst protection** - Configurable limits (requests per time window) π Stateless** - No queues, databases, or counters needed in n8n π‘ Proxy-aware** - Correct IP extraction behind Cloudflare, nginx, load balancers π Dual identity modes** - Rate limit by IP address or API key β±οΈ Retry-After headers** - Proper 429 responses with retry guidance π₯ Fail-open** - Guard outage doesn't block your production traffic π§ Auto-setup** - Guard policy auto-creates on first request π― How It Works Webhook receives POST request Identity extracted from headers: API key (x-api-key) β per-client limiting Client IP (X-Forwarded-For / x-real-ip) β per-IP limiting Guard decides allow or deny: POST /api/v1/guard/{route:identity}/counter Checks against configured rate limit policy Allowed β your business logic executes β 200 OK Denied β immediate 429 Too Many Requests + Retry-After header Client β Webhook β Identity β Guard β Allowed? β Business Logic β 200 OK β NO 429 + Retry-After π§ Setup Requirements Ainoflow** - Sign up free for Guard API access. Free plan available. That's it. One credential, one API. β‘ Quick Start 1. Import workflow and set Ainoflow Bearer credential on GuardCheck node 2. Edit Config node with your limits: | Variable | Default | Description | |----------|---------|-------------| | rate_limit | 30 | Max requests per window | | window_sec | 60 | Window in seconds | | identity_mode | ip | ip or apiKey | | route_name | webhook | Endpoint name | 3. Replace BusinessLogic node with your workflow Access original request: const body = $('Webhook').first().json.body; const headers = $('Webhook').first().json.headers; 4. Activate and test π§ͺ Testing Burst Test Bash (Linux/macOS): for i in {1..50}; do curl -s -o /dev/null -w "%{http_code}\n" \ -X POST https://your-n8n.com/webhook/rate-limited-endpoint \ -H "Content-Type: application/json" \ -d '{"test": true}' done PowerShell (Windows): 1..50 | ForEach-Object { (Invoke-WebRequest -Uri "https://your-n8n.com/webhook/rate-limited-endpoint" -Method POST -Body '{"test":true}' -ContentType "application/json" -UseBasicParsing).StatusCode } Expected: First 30 β 200, remaining β 429 Proxy Test curl -H "X-Forwarded-For: 1.2.3.4, 5.6.7.8" \ -X POST https://your-n8n.com/webhook/rate-limited-endpoint Identity key should use 1.2.3.4 (first IP from chain). π¬ Response Examples Allowed (200 OK) { "ok": true, "data": { "message": "Request processed successfully" } } Denied (429 Too Many Requests) Headers: Retry-After: 17 { "ok": false, "error": "rate_limited", "retryAfter": 17 } ποΈ Workflow Architecture | Section | Nodes | Description | |---------|-------|-------------| | Rate Limit Check | Webhook β Config β BuildIdentity β GuardCheck β IfAllowed | Extract identity, check Guard | | Allowed Path | BusinessLogic β RespondOk | Your logic + 200 response | | Denied Path | BuildDeniedResponse β RespondRateLimited | 429 + Retry-After | Total: 9 nodes. Minimal by design. π What This Protects Against β Webhook flooding - bot traffic, retry storms hitting your endpoint β Credit burn - one runaway loop = β¬500+ OpenAI/Twilio bill overnight β Automation overload - uncontrolled DB writes, external API hammering β Accidental loops - webhook chains triggering each other endlessly β What This Does NOT Replace Cloudflare / WAF (network-level protection) Bot detection (behavioral analysis) Layer 3/4 DDoS mitigation Authentication (who is the user?) Guard handles application-level rate decisions, not network security. π Identity Modes IP Mode (default) Best for public webhooks where clients don't have API keys. X-Forwarded-For: 1.2.3.4, 5.6.7.8 β identity = "1.2.3.4" x-real-ip: 10.0.0.1 β identity = "10.0.0.1" β οΈ IP addresses can be shared (NAT, mobile carriers, offices). API Key Mode Best for authenticated endpoints with per-client keys. x-api-key: client_abc123 β identity = "client_abc123" Falls back to IP if header is missing. π οΈ Customization Rate Limit Presets | Use Case | rate_limit | window_sec | Result | |----------|-----------|------------|--------| | Burst protection | 30 | 60 | 30/min | | API rate limiting | 100 | 3600 | 100/hour | | LLM cost protection | 10 | 60 | 10/min | | Daily limit | 1000 | 86400 | 1000/day | Multiple Endpoints Use different route_name values to create separate rate limits: Config A: route_name = "orders" β key = "orders:1.2.3.4" Config B: route_name = "payments" β key = "payments:1.2.3.4" Each route has independent counters. Fail-Open vs Fail-Closed Default: Fail-open - Guard API uses failOpen=true, so Guard outage doesn't block traffic. To switch to fail-closed: change failOpen query parameter to false in GuardCheck node. Combine with Shield (Dedup Protection) Getting duplicate webhook deliveries? Add Ainoflow Shield before your business logic - one trigger, one execution, guaranteed. Guard + Shield = rate limiting + deduplication on the same endpoint. β οΈ Important Notes Guard policy auto-creates** on first request with rateMax/rateWindow parameters allowPolicyOverwrite=true* is set for easy demo/testing - Config node values always apply. *Production:** set to false in GuardCheck query params to lock policy and prevent hidden config drift Denied requests not counted** - only successful requests increment the counter Window resets atomically** - no gradual decay, clean reset every N seconds No state in n8n** - all rate limiting state lives in Guard API 5-second timeout** - GuardCheck has 5s timeout to prevent blocking πΌ Need Customization? Want to add temporary bans, cost protection mode, multi-tier rate limiting, or per-client usage dashboards? Ainova Systems - We build custom AI automation infrastructure and safety layers for production workflows. Tags: webhook, rate-limiting, security, guard, burst-protection, api-protection, ainoflow, production, webhook-security, cost-control
by Rapiwa
Who is this for? This workflow listens for new or updated WooCommerce orders, cleans and structures the order data, processes orders in batches, and standardizes WhatsApp phone numbers. It verifies phone numbers via the Rapiwa API, sends invoice links or messages to verified numbers, and logs results into separate Google Sheets tabs for verified and unverified numbers. Throttling and looping are managed using batch processing and wait delays. What this Workflow Does Receives order events (e.g., order.updated) from WooCommerce or a similar trigger. Extracts customer, billing/shipping address, product list, and invoice link from the order payload. Processes orders/items in batches for controlled throughput. Cleans and normalizes phone numbers by removing non-digit characters. Verifies whether a phone number is registered on WhatsApp using the Rapiwa API. If verified, sends a personalized message or invoice link via Rapiwa's send-message endpoint. If not verified, logs the customer as unverified in Google Sheets. Logs every send attempt (status and validity) into Google Sheets. Uses Wait nodes and batching to avoid API rate limits. Key Features Trigger-based automation (WooCommerce trigger; adaptable to Shopify webhook). Batch processing using SplitInBatches for stable throughput. Phone number cleaning using JavaScript (waNoStr.replace(/\D/g, "")). Pre-send WhatsApp verification via Rapiwa to reduce failed sends. Conditional branching (IF node) between verified and unverified flows. Personalized message templates that include product and customer fields. Logging to Google Sheets with separate flows for verified/sent and unverified/not sent. Wait node for throttling and looping control. Requirements Running n8n instance with nodes: HTTP Request, Code, SplitInBatches, IF, Google Sheets, Wait, and a WooCommerce trigger (or equivalent). Rapiwa account and Bearer token for verify/send endpoints. Google account and Google Sheets access with OAuth2 credentials. WooCommerce store access credentials (or Shopify credentials if adapting). Incoming order payloads containing billing and line_items fields. Google Sheet format (example rows) A Google Sheet formatted like this β€ Sample | Customer Name | Phone Number | Email Address | Address | Product Title | Product ID | Size | Quantity | Total Price | Product Image | Invoice Link | Status | Validity | | -------------- | ------------- | --------------------------------------------------------------------- | ----------- | ------------------------------------ | ---------- | ---- | -------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ---------- | | Abdul Mannan| 8801322827799 | contact@spagreen.net | mirpur| T-Shirt - XL | 110 | XL | 1 | BDT 499.00 | https://your_shop_domain/Product/gg.img | https://your_shop_domain/INV/DAS | sent | verified | | Abdul Mannan| 8801322827799 | contact@spagreen.net | mirpur| T-Shirt - XL | 110 | XL | 1 | BDT 499.00 | https://your_shop_domain/Product/gg.img | https://your_shop_domain/INV/DAS | not sent | unverified | Important Notes The Code nodes assume billing and line_items exist in the incoming payload; update mappings if your source differs. The message template references products[0]; if orders contain multiple items, update logic to summarize or iterate products. Start testing with small batches to avoid accidental mass messaging and to respect Rapiwa rate limits. Useful Links Dashboard:** https://app.rapiwa.com Official Website:** https://rapiwa.com Documentation:** https://docs.rapiwa.com Support & Help WhatsApp**: Chat on WhatsApp Discord**: SpaGreen Community Facebook Group**: SpaGreen Support Website**: https://spagreen.net Developer Portfolio**: Codecanyon SpaGreen
by Mohammad Abubakar
This n8n template helps in making informed decisions for Crypto and Stocks Trading by helping you keep track of breaking changes in the market. How it works Collects crypto and/or stock market headlines from multiple sources: CoinDesk, CoinTelegraph, Google News, and X (via an RSS proxy). Normalizes all items into a consistent structure with fields like source, kind, title, url, publishedAt, matchedKeywords, media[], and topic. Uses topic-specific keyword lists to keep relevant items and a small spam blacklist to drop giveaways / airdrops / obvious noise. Deduplicates items across runs by tracking previously seen links. Bundles everything into a compact { topic, items[] } JSON payload and sends it to your own backend or UI via HTTP. Set up steps Import the template JSON into a new n8n workflow. In the Init RunConfig code node, choose a default topic (crypto or stocks), which platforms to use (CoinDesk / CoinTelegraph / Google News / X), and optionally adjust tickers and keywords. Open the final HTTP Request - Send to your backend node and: Replace the example URL with your own API endpoint. Either set a x-webhook-secret header that your backend validates, or remove this header entirely if you donβt use it. Create any required credentials (for the webhook header auth and for HTTP requests, if needed) β the template does not contain real API keys. Enable either the Schedule Trigger for periodic runs or the Webhook trigger for on-demand runs from your app. Expect roughly 10β20 minutes to import, configure, and test the first run; detailed per-node notes are available as sticky notes inside the workflow canvas.
by Kory Clark
This n8n template demonstrates how to automatically generate a full week of dinner meal plans in your self hosted Mealie instance and create a corresponding shopping list based on those planned meals. Perfect for anyone who wants hands off weekly planning. Set it once and let it build your dinners and prep your ingredient data every week. How it works A Schedule Trigger runs once per week to kick things off. A Code node generates the next 7 calendar days starting from today. For each day, we call the Mealie API to generate a random dinner entry. Using the returned recipe slug, we fetch the full recipe details from Mealie. A new shopping list is created in Mealie for the week. The recipe data is normalized into a clean structure that includes servings and ingredient details, ready for shopping list aggregation or further processing. What this gives you Automatic weekly dinner planning Structured ingredient data for every recipe A named shopping list for the week Clean normalized JSON that can easily be extended to: Aggregate ingredients across recipes Remove duplicates Scale quantities Export to external services How to use By default, this runs weekly using the Schedule Trigger. You can change the interval or replace it with: A Manual Trigger A Webhook A Form submission Make sure your Mealie API endpoint and Bearer credentials are configured correctly. Adjust the entryType field if you want breakfast or lunch instead of dinner. Requirements A running Mealie instance with API access enabled HTTP Bearer credentials configured in n8n Network access to your Mealie server
by Joel Sage
How it works This workflow can take an image URL and enhance said image using Riverflow 2.0 Reference-Based Super-Resolution. This process involves giving the model an image to enhance along with a reference image to specify a certain element to enhance. For example, if we have a photoshoot but the product looks blurry/low quality, we can feed this along with a reference for what the product should look like and it will enhance that element based on the reference we gave. This workflow takes advantage of this and does the following steps: Input Form takes in the necessary inputs used for Riverflow 2.0 Image (required) Super Resolution References (required, max 4) Inputs are Sanitized using JavaScript to get in a suitable way to be used in API call. POST request is made to the Replicate API to begin generating the new image. a GET request is looped over to check the status of the generation; when the generation is done, this loop breaks to output the image or an error if one occurred. The output is then given as a raw image to be downloaded or viewed within the workflow (or passed on to elsewhere). Setup This Workflow requires a Replicate API key which can be accessed from Replicate Ideal for Restoring things like**: product labels and packaging text logos and brand marks printed designs on objects fine text and small UI-like elements inside a scene E-commerce Brands & Retailers** - Perfect for product photography where labels, packaging text, or logos must be crisp. Can automatically enhance images for catalogs, online stores, or marketplaces. Reduces the need for re-shooting or manual touch-ups of blurry product images. Design & Creative Teams** - Can fix blurry renders or low-res concept images while preserving the overall style. Speeds up repetitive image refinement tasks, letting designers focus on creative decisions. Marketing & Advertising Teams** - Helps create high-quality visual assets for ads, social media posts, or campaigns. Allows batch enhancement of multiple creatives using reference images to maintain brand consistency. Customization Output Customization** - The enhanced Images produced in this workflow can be part of a larger one and the output can be taken and sent elsewhere such as a cloud service or through webhooks. Parallelism** - This workflow could potentially be adapted to have parallel requests so that various outputs can be generated for the same inputs to increase the chance of better results. Marketing campaign pipeline* - designer can trigger and upload creative drafts; *refsr can then enhance details and be used part of post processing of the marketing ads. Reference-Based Super Resolution: The model will: locate the best matching regions in the original image super-resolve and correct those regions in-place preserve the surrounding scene while improving detail fidelity To get the best results: Use clean, high-resolution reference images Make sure references are cropped tightly around the detail you want restored Avoid references with glare, motion blur, or heavy perspective distortion Provide multiple references only when they represent different target details The model can fix up to 4 matched instances in a single run. More about Riverflow 2.0: www.riverflow.ai for more information for API: Sourceful - Replicate API
by Rahul Joshi
π Description This workflow is a fully automated contract generation and delivery system that converts structured client input into a finalized, professional PDF contract and uploads it directly to your CRM. It eliminates manual document handling by dynamically populating a Google Docs template, exporting it as a PDF, and delivering it to GoHighLevel in a single flow, while ensuring no temporary files remain in storage. βοΈ Step-by-Step Flow Receive Contract Request (Webhook) Accepts a POST request containing all contract data: Client name Date Scope of works (array) PC items (array) Financials (subtotal, GST, total) Copy Master Template (Google Drive) Creates a duplicate of the master contract template. Ensures the original template remains unchanged. Populate Contract with Client Data (Google Docs) Performs large-scale find-and-replace operations: Replaces placeholders with dynamic client inputs Injects scope of work sections Maps PC items and pricing Updates totals and metadata Download Contract as PDF (Google Drive) Exports the fully populated document as a PDF file. Upload PDF to GoHighLevel (HTTP Request) Uploads the generated PDF to GoHighLevel via API: Makes it instantly available in CRM Ready for attachment or client delivery Delete Temp Copy from Drive (Cleanup) Removes the temporary document copy from Google Drive. Prevents storage clutter and duplication. π§© Prerequisites β’ Google Drive OAuth2 β’ Google Docs OAuth2 β’ GoHighLevel API key (Bearer token) β’ Webhook trigger source (form, CRM, or system) π‘ Key Benefits β Zero manual contract creation β Consistent formatting across all contracts β Dynamic handling of complex data (arrays, pricing) β Instant CRM upload (GoHighLevel) β Automatic cleanup (no file clutter) β Scalable for high-volume contract generation π₯ Perfect For Construction and renovation businesses Agencies generating client agreements Sales teams automating proposal-to-contract flow CRM-driven businesses using GoHighLevel
by Khairul Muhtadin
β οΈ Disclaimer: This workflow utilizes community nodes that needs self hosted version Code for UI Form is accessible here The bykhaisa workflow streamlines makeup service bookings by capturing customer details via webhook, calculating pricing including add-ons and payment types, generating payment invoices with Xendit, and sending personalized WhatsApp booking confirmations. This powerful combination of n8n, GoWhatsApp API, and Xendit reduces manual work and accelerates payment collection, saving you valuable time and boosting client satisfaction. π‘ Why Use bykhaisa? Save Time:** Automate booking and payment processes to eliminate hours spent on manual data entry Simplify Payments:** Generate invoices instantly with Xendit, making it easier for clients to pay securely and promptly Enhance Communication:** Send automated WhatsApp messages that keep customers informed and engaged without lifting a finger Stand Out:** Offer a modern, seamless booking experience that elevates your makeup business above competitors still stuck in the stone age β‘ Perfect For Makeup Artists & Studios:** Who want a hassle-free booking and payment system Beauty Salons:** Seeking smooth client communication and invoicing automation Freelancers:** Looking to appear professional with automated workflows and instant payment requests General Business with booking system**: to make a seamless booking process π§ How It Works β± Trigger: Customer sends booking details via Form (a POST request to the webhook) π Process: Extract and format booking data, calculate prices with add-ons and urgent fees, and create a unique booking ID π€ Smart Logic: Calculate whether payment is a Down Payment (DP) or full amount, set invoice expiry, and generate Xendit invoices automatically π Output: WhatsApp notification with booking details and payment link sent to customer, complete with friendly typing delays for that human touch π Storage: Booking data enriched with pricing and payment state, ready for follow-up or record-keeping π Quick Setup Import JSON file to your n8n instances Add credentials: Xendit API key, GoWhatsApp API credentials Customize: Adjust pricing logic, add-on fees, and payment types as needed Update: Replace webhook URLs and redirect URLs for payment success/failure pages Test: Run the workflow with sample booking data to verify end-to-end automation π§© Requirements Active n8n instances Xendit account & API credentials for invoice generation GoWhatsApp API setup for WhatsApp messaging Optional: Custom domain for webhook endpoint π οΈ Level Up Ideas Add calendar integration to automatically block booked slots Integrate Google Sheets or Airtable for backup and reporting Set up payment reminders and follow-ups via WhatsApp automatically π§ Nodes Used Webhook** - Receives booking requests Set (Process Booking)** - Data transformation and formatting Code (Calculate Price)** - Custom pricing logic with add-ons HTTP Request (Generate Invoice)** - Xendit invoice creation Respond to Webhook** - Send response back to client GoWhatsApp** - WhatsApp messaging functionality π Workflow Categories Category:** E-commerce, Bussiness Tags:** automation, booking, invoicing, payments, whatsapp, makeup Made by: khaisa Studio Need custom work? Contact Me
by Browser Use
A sample demo showing how to integrate Browser Use Cloud API with N8N workflows. This template demonstrates AI-powered web research automation by collecting competitor intelligence and delivering formatted results to Slack. How It Works Form trigger accepts competitor name input Browser Use Cloud API performs automated web research Webhook processes completion status and retrieves structured data JavaScript code formats results into readable Slack message HTTP request sends final report to Slack Integration Pattern This workflow showcases key cloud API integration techniques: REST API authentication with bearer tokens Webhook-based status monitoring for long-running tasks JSON data parsing and transformation Conditional logic for processing different response states Setup Required Browser Use API key (signup at cloud.browser-use.com) Slack webhook URL Perfect demo for learning browser-use cloud API integrations and building automated research workflows.
by Sk developer
π₯ Download Slideshare and Store in Drive βοΈ Automate the download of Slideshare presentations and save them to Google Drive using the Slideshare Downloader Pro API. π Workflow Overview: Node by Node π On Form Submission β Displays a form for users to input the Slideshare URL. π Slideshare Downloader β Sends the submitted URL to the Slideshare Downloader Pro API to fetch a downloadable PDF link. β If (API Success?) β Checks if the API response returns a 200 status (success). β¬οΈ Download PDF β Downloads the actual PDF file from the media URL received in the API response. βοΈ Upload to Google Drive β Uploads the downloaded PDF into a specific Google Drive folder. π Google Drive Set Permission β Sets the fileβs permission to "Anyone with the link can view". β±οΈ Wait (Error Handling) β Adds a small delay before logging errors to prevent rapid multiple logs. π Google Sheets Append Row β Logs failed attempts with the original Slideshare URL and "N/A" for tracking. π‘ Use Case A content curator or student often downloads Slideshare presentations for archiving, referencing, or sharing. Instead of repeatedly copy-pasting URLs, downloading files, and uploading them manually, this automated workflow streamlines the process from input to storage. It leverages the Slideshare Downloader Pro API to handle the heavy lifting β ensuring reliable PDF extraction. β Benefits π Save Time:** Automates multi-step tasks in one seamless flow. π Organized Storage:** PDFs are directly saved in Google Drive with public access enabled. π Track Failures:** Failed downloads are logged for review via Google Sheets. π Easy Sharing:** Uploaded files are made instantly accessible via shareable links. π§© API Integration:** Integrates smoothly with the Slideshare Downloader Pro API, ensuring robust and scalable automation. π How to Get API Key from RapidAPI Slideshare Downloader Pro Follow these steps to get your API key and start using it in your workflow: Visit the API Page π Click here to open Slideshare Downloader Pro API on RapidAPI Log in or Sign Up Use your Google, GitHub, or email account to sign in. If you're new, complete a quick sign-up. Subscribe to a Pricing Plan Go to the Pricing tab on the API page. Select a plan (free or paid, depending on your needs). Click Subscribe. Access Your API Key Navigate to the Endpoints tab. Look for the X-RapidAPI-Key under Request Headers. Copy the value shown β this is your API key. Use the Key in Your Workflow In your n8n workflow (HTTP Request node), replace: "x-rapidapi-key": "your key" with: "x-rapidapi-key": "YOUR_ACTUAL_API_KEY"