by Tom
This simple workflow demonstrates how to get an end user's browser to download a file. It makes use of the Content-Disposition header to set a filename and control the browser behaviour. A use case could be the download of a PDF file at the end of an application process or to export data from a database without replacing the current page content in the browser. With this approach, the current page remains open and the file is simply downloaded instead: The original idea was first present here by @dickhoning in the n8n community.
by Nima Salimi
Overview Automate your daily contact imports from NocoDB to Brevo.The workflow updates the record status in NocoDB at each step. For every email campaign, it’s essential to keep your Brevo contact list updated so you can send personalized and targeted emails. This flow automates that process. ✅ Tasks ⏰ Runs automatically every day 🗂 Fetches only new/unimported records from NocoDB 🔍 Checks for missing required fields 🚫 Filters out disposable/temporary emails 📬 Creates contacts in Brevo 📝 Updates NocoDB status after each step 🛠 How to Use 1️⃣ Set your schedule The Schedule Trigger node runs the flow daily adjust to your preferred time. 2️⃣ Prepare your table in NocoDB Your NocoDB table should contain at least: id first_name last_name email status (default: 0-not-imported) 3️⃣ Configure your credentials Connect your NocoDB API Token in the NocoDB nodes. Connect your Brevo API Key in the Brevo node. 4️⃣ Map your fields In the Brevo: Create Contact node, make sure first name, last name, and email match your NocoDB column names. 📌 Notes 🛡 Make sure your NocoDB project/table IDs match the ones in this template. 🚀 This workflow processes contacts one-by-one to avoid heavy API calls and rate limit issues with Brevo. ✅ status values: 0-not-imported → new record 1-empty-fields → missing required fields 2-disposal-email → disposable email detected 3-contact-created → successfully created in Brevo
by Miquel Colomer
This workflow allows extracting data from multiple pages website. The workflow: 1) Starts in a country list at https://www.theswiftcodes.com/browse-by-country/. 2) Loads every country page (https://www.theswiftcodes.com/albania/) 3) Paginates every page in the country page. 4) Extracts data from the country page. 5) Saves data to MongoDB. 6) Paginates through all pages in all countries. It uses getWorkflowStaticData('global') method to recover the next page (saved from the previous page), and it goes ahead with all the pages. There is a first section where the countries list is recovered and extracted. Later, I try to read if a local cache page is available and I recover the cached page from the disk. Finally, I save data to MongoDB, and we paginate all the pages in the country and for all the countries. I have applied a cache system to save a visited page to n8n local disk. If I relaunch workflow, we check if a cache file exists to discard non-required requests to the webpage. If the data present in the website changes, you can apply a Cron node to check the website once per week. Finally, before inserting data in MongoDB, the best way to avoid duplicates is to check that swift_code (the primary value of the collection) doesn't exist. I recommend using a proxy for all requests to avoid IP blocks. A good solution for proxy plus IP rotation is scrapoxy.io. This workflow is perfect for small data requirements. If you need to scrape dynamic data, you can use a Headless browser or any other service. If you want to scrape huge lists of URIs, I recommend using Scrapy + Scrapoxy.
by Harshil Agrawal
This workflow allows you to receive updates from Wise and add information of a transfer to a base in Airtable. Wise Trigger node: This node will trigger the workflow when the status of your transfer changes. Wise node: This node will get the information about the transfer. Set node: We use the Set node to ensure that only the data that we set in this node gets passed on to the next nodes in the workflow. We set the value of Transfer ID, Date, Reference, and Amount in this node. Airtable node: This node will append the data that we set in the previous node to a table.
by Klaasjan te Voortwis
Auto Starter On importing workflows these will not be auto started, even if the old version was running. To fix this we created this workflow that can be run after n8n starts. It fits in our auto deploy pipeline and modified n8n container that will import workflows, start n8n and start the tagged workflows. Start this workflow after n8n starts. It will get all workflows in the running n8n instance. If the files have a tag 'Auto start' the workflow will be started. Check our Export workflows with readable names workflow for autostarting workflows after deployment. Configuration You need a a n8n api key configured.
by Kevin Cole
How It Works This workflow sends an HTTP request to OpenAI's Text-to-Speech (TTS) model, returning an .mp3 audio recording of the provided text. This template is meant to be adapted for your individual use case, and requires a valid OpenAI credential. Gotchas Per OpenAI's Usage Policies, you must provide a clear disclosure to end users that the TTS voice they are hearing is AI-generated and not a human voice, if you are using this workflow to provide audio output to users.
by n8n Team
This n8n workflow automates the handling of security detections from CrowdStrike, streamlining incident response and notification processes. The workflow is triggered daily at midnight by the Schedule Trigger node. It begins by fetching recent security detections from CrowdStrike using an HTTP Request node. The response is then split into individual detections for further processing. Each detection is enriched by querying the CrowdStrike API for detailed information using another HTTP Request node. The workflow then processes these detections sequentially using the Split In Batches node. Next, it looks up behavioral information associated with each detection in VirusTotal using two HTTP Request nodes. One node queries VirusTotal based on SHA256 values, and the other based on IOC (Indicator of Compromise) values. The workflow includes a 1-second pause using the Wait node to prevent rate limiting when making requests to the VirusTotal API. Subsequently, the workflow sets fields with relevant details from both CrowdStrike and VirusTotal, including detection links, confidence scores, filenames, usernames, and more. These details are concatenated using an Item Lists node for each detection. The final step involves creating Jira issues for each detection, including summaries with CrowdStrike alert severity and hostnames, as well as descriptions that incorporate information from CrowdStrike and VirusTotal. Information about this issue is then sent via a Slack message to a Slack user. Potential issues during setup might include configuring the Schedule Trigger node to trigger at the correct time zone and handling potential rate limiting from the VirusTotal API, which could lead to throttled requests. Additionally, the note about a possible typo in the URL for the Virustotal nodes should be addressed to ensure correct API calls. The Jira node may need to be replaced with the latest version for compatibility. Properly configuring API credentials and handling errors that may occur during API requests are essential for a smooth workflow operation. Careful testing with sample data is recommended to validate the workflow's functionality and ensure it aligns with your organization's security incident response processes.
by Harshil Agrawal
This workflow allows you to check for preview for a link and return the preview if it exists. Peekalink node: This node checks if a preview is available for a URL or not. If a preivew is available the node returns true, otherwise false. IF node: The IF node checks the output from the previous node. If the condition is true the node connected to the true branch is executed. If the condition is false the node connected to the false branch is executed. Peekalink1 node: This node will fetch the preview of the URL. Based on your use-case, you can connect the Slack node, Mattermost node etc. to get the response on these platforms. NoOp node: Adding this node here is optional, as the absence of this node won't make a difference to the functioning of the workflow. We've added this as it can sometimes help others with a better understanding of the workflow, visually.
by jason
This workflow looks for a Close Date value using REGEX in the IF node. If it finds the correct value, it will pass that value on. If it does not find the correct value, it will generate a value based on the present time plus three weeks. The final result will show up in the NoOps node. You can text this execution by enabling and disabling the Set node when you run the execution.
by Yohita
This workflow template creates an audio stream session on UltraVox compatible with Plivo and sends it to Plivo. How It Works : Plivo initiates a call and requests the Answer URL. The workflow responds with Plivo XML to join the session. Note: Ensure you update the UltraVox API Key in the credentials. Update System Prompt based on your requirements. Check Youtube Video
by Jonathan
Task: Handle dates and times in your workflow Why: Date and time formats can be hard to work with, we have 2 main ways of doing that with n8n that cover all the main needs Main use cases: Change date format Set custom dates (incl. now and today) Date math
by siyad
Workflow Description: This workflow automates the synchronization of product data from a Shopify store to a Google Sheets document, ensuring seamless management and tracking. It retrieves product details such as title, tags, description, and price from Shopify via GraphQL queries. The outcome is a comprehensive list of products neatly organized in Google Sheets for easy access and analysis. Key Features: Automated: Runs on a schedule you define (e.g., daily, hourly) to keep your product data fresh. Complete Product Details: Retrieves titles, descriptions, variants, images, inventory, and more. Cursor-Based Pagination: Efficiently handles large product sets by navigating pages without starting from scratch. Google Sheets Integration: Writes product data directly to your designated sheets. Set up Instructions: Set up GraphQL node with Header Authentication for Shopify: Create Google Sheet Credentials: Follow this guide to set up your Google Sheet credentials for n8n: https://docs.n8n.io/integrations/builtin/credentials/google/ Choose your Google Sheet: Select the sheet where you want product information written. For the setup, we need a document with two sheets: 1. for storing Shopify data 2. for storing cursor details. Google sheet template : https://docs.google.com/spreadsheets/d/1I6JnP8ugqmMD5ktJlNB84J1MlSkoCHhAEuCofSa3OSM Schedule and run: Decide how often you want the data refreshed (daily, hourly, etc.) and let n8n do its magic!