by Oneclick AI Squad
This automated n8n workflow tracks booked flight fares post-purchase using Amadeus and Skyscanner APIs to detect drops for refund or credit opportunities. It streamlines fare monitoring, updates booking statuses, and notifies users via SMS or email. Fundamental Aspects Fare Check Trigger** - Initiates the workflow Get Tracked Bookings** - Retrieves existing booking data Prepare Fare Query** - Prepares query parameters Search Current Fares** - Queries Skyscanner for current fares Analyze Fare Drops** - Identifies significant fare reductions Update Fare Tracking** - Updates fare tracking records Update Booking Status** - Updates status based on fare changes Check if Notification Needed** - Determines if alerts are required Send Fare Drop Email** - Notifies users via email Notify Slack Team** - Alerts the team via Slack Check Refund Eligible** - Assesses refund eligibility Initiate Refund Process** - Starts refund procedure if eligible Check if SMS Needed** - Decides if SMS alert is necessary Send SMS Alert** - Sends SMS notification Setup Instructions Import the workflow into n8n Configure API credentials for Amadeus and Skyscanner Run the workflow Verify notifications and refund processes Features Fare Monitoring** - Tracks and compares fares using Amadeus and Skyscanner Alert System** - Sends email and SMS notifications for fare drops Refund Management** - Checks and initiates refund processes Trend Analysis** - Analyzes fare trends for strategic decisions DB Queries Get Tracked Bookings Columns:** - booking_id, passenger_name, email, phone, flight_number, departure_date, origin, destination, airline, booking_class, original_fare, booking_date, confirmation_code, tracking_enabled, last_checked, current_lowest_fare, trend. Update Fare Tracking Columns:** - booking_id, check_date, lowest_fare, fare_source, savings_amount, savings_percentage, fare_trend, priority_level, action_recommended, refund_eligible, available_fares_json, updated_at. Update Booking Status: Columns** - last_checked, current_lowest_fare, booking_id. DB Setup: Create tables 'bookings' and 'fare_tracking' with above columns, set 'booking_id' as primary key, and ensure proper indexing for performance. Run queries after configuring DB connection in n8n with appropriate credentials. Parameters to Configure amadeus_api_key**: Amadeus API key skyscanner_api_key**: Skyscanner API key email_recipients**: List of email addresses for alerts sms_recipients**: List of phone numbers for SMS alerts slack_channel**: Slack channel for team notifications refund_threshold**: Minimum fare drop for refund eligibility
by Joey D’Anna
This workflow is a building block designed to be called from other workflows via an Execute workflow node. When called from another workflow, and given the JSON input of a "pulse" field with the ID to pull from monday, this workflow will return: The items name and ID All column data, indexable by the column name All column data, indexable by the column's ID string All board relation columns, with their data and column values All subitems, with their data and column values For example: ++Prerequisites++ A monday.com account and credential A workflow that needs to get detailed data from a monday.com row The pulse id of the monday.com row to retreive data from. ++Setup++ Import the workflow Configure all monday nodes with your credentials and save the workflow Copy the workflow ID from it's URL In a different workflow, add an Edit Fields node, to output the field "pulse", with the monday item you want to retrieve. Feed the Edit Fields node with your pulse into an Execute workflow node, and paste the workflow ID from above into it This "pulse" field will tell the workflow what pulse to retreive. This can be populated by an expression in your workflow There is an example of the Edit Fields and Execute Workflow nodes in the template
by Dr. Firas
Who Is This For This workflow is ideal for content creators, solo founders, marketers, and AI enthusiasts who want to automate the full process of blog content creation. It is especially useful for professionals in tech, AI, and automation who publish frequently and need SEO-ready content fast. What Problem Does This Workflow Solve Creating SEO-optimized blog content is time-consuming and requires consistency. Manually researching trending topics slows down the content pipeline. Formatting, publishing, and promoting across multiple platforms takes effort. This workflow automates the entire process from research to publication. What This Workflow Does Research: Uses Perplexity AI to gather up-to-date content ideas via form input. Content Generation: GPT-4 creates a short, SEO-optimized article (max 20 lines) with H1, H2 structure and meta-description. Publishing: Automatically posts the content to WordPress. Email Notification: Sends the article title and URL via Gmail. Slack Notification: Notifies a specified Slack channel when the article is live. Database Logging: Saves the article details to a Notion database. Setup Guide Prerequisites WordPress account with API access OpenAI API Key Perplexity API Key Slack Bot Token Notion integration (Database ID) Gmail API credentials (optional) Community Node Required: This workflow uses n8n-nodes-mcp, which only works on self-hosted instances of n8n. > To install: Go to Settings > Community Nodes > Install n8n-nodes-mcp Steps Import the workflow into your n8n instance Install the required community node (n8n-nodes-mcp) Set up API credentials for OpenAI, Perplexity, WordPress, Slack, Gmail, and Notion Customize the form trigger with your preferred prompt Run a test using a sample topic How to Customize This Workflow Modify the research prompt to match your niche or industry Adjust GPT-4 settings for tone, structure, or content length Customize Notion fields (e.g., add tags, categories, or labels) Add logic for generating or assigning featured images automatically
by Joey D’Anna
This template will create a nightly backup of all your n8n workflows to a Dropbox folder. Each night, the previous night's backups are moved into an "old" folder, and renamed with the date they were taken. Backups over a specified age are deleted. (this is disabled by default for safety until you manually enable and verify it with your own setup) Prerequisites Dropbox account and credentials A destination folder for backups Setup Update all dropbox nodes with your credential Edit the Schedule Trigger node with the desired time to run the backup Edit the DESTINATION FOLDER node to specify the path in dropbox to upload to. This should be a folder and include the trailing / If you want to automatically purge old backups Edit the PURGE DAYS node to specify the age to purge Enable the PURGE DAYS node, and the 3 subsequent nodes Enable the workflow to run on the specified schedule
by Nico Kowalczyk
Description: This template facilitates the transfer of a folder, along with all its files and subfolders, within a Nextcloud instance. The Nextcloud user must have access to both the source and destination folders. While Nextcloud allows folder movement, complications may arise when dealing with external storage that has rate limits. This workflow ensures the individual transfer of each file to avoid exceeding rate limits, particularly useful for setups involving external storage with rate limitations. How it works: Identify all files and subfolders within the specified source folder. Recursive search within subfolders for additional files. Replicate the folder structure in the target folder. Individually move each identified file to the corresponding location in the target folder. Set up steps: Set Nextcloud credentials for all Nextcloud nodes involved in the process. -Edit the trigger settings. Detailed instructions can be found within the respective trigger configuration. Initiate the workflow to commence the folder transfer process. Help If you need assistance with applying this template, feel free to reach out to me. You can find additional information about me and my services here. => https://nicokowalczyk.de/links I have also produced a video where I explain the workflow and provide an example. You can find this video over here. https://youtu.be/K1kmG_Q_jRk Cheers. Nico Kowalczyk
by Jakkrapat Ampring
Description This workflow automatically generates personalized certificates in Google Slides and emails them to respondents only if they meet a minimum score threshold, using data submitted via Google Forms (stored in Google Sheets). Ideal for: Online courses Quizzes and workshops Event participation certificates Sheet Requirements Your connected Google Sheet (from the Google Form) must contain: Full Name – The name to appear on the certificate. Email – Recipient’s email address. Score – The test/quiz score used for threshold logic. Setup Instructions Connect Google Sheets – Make sure your Form responses are linked to a Sheet with the columns mentioned above. Set Score Threshold – Modify the If node to your desired minimum score (e.g., >= 80). Customize Certificate Template – Use a Google Slides file with text placeholders like {{Full Name}}. Connect Gmail & Google Drive – For sending emails and saving generated certificates. Update File IDs – Replace any placeholder Slide and Drive file IDs with your own. Services Used Google Sheets (Form responses) Google Slides (Certificate template) Google Drive (Storage) Gmail (Email delivery) Troubleshooting Issue: "Cannot read property 'Score'" → Ensure your column names match exactly (Score, Full Name, etc.). Slides not replacing placeholders → Double-check placeholder format ({{Full Name}}) and capitalization. Emails not sending → Verify Gmail authentication and make sure the If node is correctly filtering results.
by Extruct AI
Automatic lead enrichment in Slack: monitors your Slack channel for new lead emails posted there, extracts each company’s name or domain, sends it to the Extruct API for data enrichment, then posts back a structured Slack card with company name, website, LinkedIn profile, number of employees, industry, recent news, and key contacts. Who’s it for: Sales teams, SDRs, and marketing ops who capture new lead information in Slack and want instant enrichment without leaving the channel. How it works: When a lead email is posted into your designated Slack channel, the workflow: Monitors for any new message containing a company name or domain. Extracts that company identifier. Sends it to Extruct API for research. Waits for enrichment to complete. Posts back into the same Slack thread a formatted card with: Company name Website LinkedIn profile Number of employees Industry Recent news Key contacts How to set up: Sign up for Extruct AI Copy the Extruct table ID Create & install your Slack app Configure n8n credentials & channel Activate & use Requirements: Extruct account & API token Extruct table template Slack workspace with permission to install apps
by Marvin Wu
Who is this for? This workflow is designed for n8n users and developers who need to automate the documentation process of their n8n workflows. It's particularly useful for teams looking to streamline their documentation efforts and ensure consistency across their workflow documentation. What problem is this workflow solving? / Use case The primary problem this workflow addresses is the manual and time-consuming process of creating documentation for n8n workflows. It automates the generation of concise, clear, and comprehensive documentation directly from the workflow's JSON, making it easier for both technical and non-technical users to understand what the workflow does and how it operates. What this workflow does Upon receiving a form submission with the workflow title and JSON, this workflow automatically generates documentation that includes: A brief introduction to the workflow. The trigger mechanism (webhook URLs for test and production environments, or cron schedules). Setup requirements, including necessary credentials and external dependencies. Setup Credentials Setup: Ensure you have OpenAI API credentials configured in n8n to use the GPT model for generating documentation text. Form Submission: Users must submit the form with the workflow title and JSON. The form is accessible via: Test URL: domain/form-test/{webhookId} Production URL: domain/form/{webhookId} How to customize this workflow to your needs Modify Trigger URLs**: Adjust the webhook or form URLs based on your domain and specific n8n setup. Customize Documentation Template**: Edit the OpenAI node's prompt to change the structure or details of the generated documentation. Extend Functionality**: Add nodes to integrate with other systems (e.g., automatically publishing the documentation to a wiki or sending it via email). This workflow simplifies the documentation process, making it accessible and manageable for teams of all sizes and technical abilities. By automating documentation, it ensures that all workflows are properly documented, enhancing understanding and efficiency within teams.
by Hubschrauber
Fetches workflow definitions from within n8n, selecting only the ones that have one or more (configurable) assigned tags and then: Derives a suitable backup filename by reducing the workflow name to a string with alphanumeric characters and no-spaces Note: This isn't bulletproof, but works as long as workflow names aren't too crazy. Determines which workflows need to be backed up based on whether each one: has been modified. (Note: Even repositioning a node counts.) ...or... is new. (Note: Renaming counts as this.) Commits JSON copies of each workflow, as necessary, to a Gitlab repository with a generated, date-stamped commit message. Setup Credentials Create a Gitlab Credentials item and assign it to all Gitlab nodes. Create an n8n Credentials item and assign it to the n8n node Note: This was tested with http://localhost:5678/api/v1 but should work with any reachable n8n instance and API key. Modify these values in the "Globals" Node gitlab_owner - {{your gitlab account}} gitlab_project - {{ your gitlab project name }} gitlab_workflow_path - {{ subdirectory in the project where backup files should be saved/committed }} tags_to_match_for_backup - {{tag(s) to match for backup selection}} *ALERT: According to the n8n node's Filters -> tags field annotations, and API documentation, this supports a CSV list of multiple tags (e.g. tag1,tag2), but the API behavior requires workflows to have all-of the listed tags, not any-of them.* See: https://github.com/n8n-io/n8n/issues/10348 TL/DR - Don't expect a multiple tag list to be more inclusive. Possible workaround: To match more than one tag value, duplicate the n8n node into multiple single-tag matches, or split and iterate multiple values, and merge the results. Possible Enhancements Make the branch ("Reference") for all the gitlab nodes configurable. Fixed on all as "main" in the template. Add an n8n node to generate an audit and store the output in gitlab along with the backups. Extend the workflow at the end to create a Gitlab release/tag whenever any backup files are actually updated or created.
by Sk developer
🎥 Bulk TikTok Video Download Without Watermark to Google Drive This workflow automates the process of downloading TikTok videos and uploading them to Google Drive. It reads TikTok URLs from a Google Sheet, downloads the video using the TikTok Video Downloader — a tool for downloading TikTok videos without watermark in HD quality — uploads it to Drive, makes it public, and updates the same sheet with the Drive link. 🔧 What It Does ✅ Manually triggered when ready to run. 📄 Reads TikTok URLs from a Google Sheet. 🔁 Loops through each URL one at a time. 🌐 Fetches video download links using the TikTok Video Downloader — a reliable TikTok video downloader without watermark. ⬇️ Downloads each video in high-definition (HD) format using the direct media link. ☁️ Uploads the video to Google Drive. 🔓 Sets public sharing permission for the video. ✏️ Updates the original Google Sheet with the public Drive URL. 📋 Google Sheet Example Make sure your sheet has at least these columns: | url | drive_link (to be auto-filled) | |-------------------------------------|--------------------------------| | https://www.tiktok.com/@user1... | (blank initially) | | https://www.tiktok.com/@user2... | (blank initially) | > The workflow reads from url and fills in drive_link after upload. 🧩 Nodes Used | Node Name | Type | Purpose | |------------------------------|-------------------|-------------------------------------------------------| | When clicking ‘Execute’ | Manual Trigger | Starts the workflow manually | | Get Data From Google Sheets | Google Sheets | Fetches rows (TikTok URLs) | | Loop Over Items | Split In Batches | Iterates over each row | | Call TikTok Downloader | HTTP Request | Gets video download link from TikTok Video Downloader | | Wait | Wait | Optional delay to prevent overload | | Download File | HTTP Request | Downloads HD video using media link | | Upload File In Google Drive | Google Drive | Uploads the video to Google Drive | | Set Public Permission | Google Drive | Makes the uploaded file publicly accessible | | Update Row In Google Sheet | Google Sheets | Adds Drive link to the same row | | Sleep | Wait | Small delay between each iteration | 📝 Requirements ✅ Google API credentials (Service Account) with access to: Google Sheets Google Drive 🔐 RapidAPI Key for TikTok Video Downloader – a TikTok video downloader without watermark (HD supported) 🗂 A Google Sheet with a url column containing TikTok video URLs 🧩 Challenges Solved | ❗ Challenge | ✅ Solution | |-------------|-------------| | TikTok video URLs often have watermarks and low quality | Used TikTok Video Downloader API for HD + no watermark download links | | No easy way to bulk download and organize TikToks | Automated fetching, downloading, and uploading using n8n + Google Drive | | Manual video saving and re-uploading to Drive is time-consuming | Eliminated all manual steps with a fully automated workflow | | Tracking which videos are already processed | Automatically updates the Google Sheet row with the final Drive link | | Drive files are private by default | Automatically sets public sharing permission on uploaded videos | | Risk of API rate limits or throttling | Added Wait nodes and batch processing to avoid overload | 🎁 Benefits | 🌟 Benefit | 💬 Description | |------------|----------------| | 🚀 Saves Time | Fully automates a previously manual workflow | | 🎥 High Quality Content | Videos downloaded are HD + watermark-free — ready for reuse or archives | | 🔁 Reusable Setup | Can process unlimited TikTok URLs via the Google Sheet | | 📊 Organized Output | Keeps track of source URL and uploaded Drive link in a single sheet | | 🔐 Secure but Shareable | Drive links are auto-shared publicly while remaining under your control | | 🔄 Scalable | Can be run daily, weekly, or triggered by new rows — completely scalable | | 💸 Cost-Effective | No need for paid tools or manual freelancers — runs on n8n + free APIs | 💡 Use Cases Content curation from TikTok Archiving user-submitted TikToks Automating social-to-cloud workflows Bulk migration of video content Saving TikTok videos in HD without watermark for sharing or archiving 📌 Tips Replace manual trigger with Cron for full automation. Use the TikTok Video Downloader responsibly — check API limits. Store metadata (e.g., uploader, hashtags) in additional Google Sheet columns. This tool helps ensure you're always downloading high-quality TikTok videos without watermark.
by Miquel Colomer
This n8n workflow template uses uProc's "Get Email by Domain, Firstname and Lastname" tool to discover a professional email address, and then sends that email to a Telegram channel. > ⚠️ Note: You must set up your *uProc credentials (Email + API Key)* from the *Integration settings* before running this workflow. 🚀 What It Does Uses user-provided data: first name, last name, and company domain Calls uProc to discover the most likely email address for that person Sends the discovered email and confidence level to a Telegram group 🛠️ Step-by-Step Setup Add uProc Credentials Go to the uProc integration page and copy your email and API key. Add them as credentials in your n8n instance. Set Tool Parameters Use the Set node to define: firstname: First name of the person lastname: Last name of the person domain: Their company domain Replace the Set Node (Optional) You can dynamically fetch the firstname, lastname, and domain from other sources like: Google Sheets MySQL or Postgres Webhook or Form submissions Run the Workflow Trigger the flow manually or integrate it with a larger automation. 🔍 uProc Parameters Explained domain**: The company domain (e.g., uproc.io) firstname**: First name of the person lastname** (in parameter: language): Last name of the person mode**: verify: Verifies email in real-time with mail server guess: Guesses based on company format (e.g., firstname.lastname@domain.com) 📦 uProc Response Fields email: Discovered email address confidence: Indicates if the result is verified or risky (e.g., catch-all) score: Reliability score from 0 (unreliable) to 99 (highly reliable) 📬 Notification via Telegram After discovering the email, the result is sent to a specified Telegram channel with this format: User Miquel Colomer has next email on uproc.io: contact@uproc.io (verified - 99) Clicking the email allows you to send a message directly to the recipient. 🔐 Credentials Used uProc API** – For discovering email addresses Telegram API** – To send messages to a specific group/channel ✨ Customization Tips Loop over a list of people**: Replace the set node with a data source that contains multiple people. Filter by score or confidence** before sending. Add additional outputs**: You can send the data via Email, Slack, or save it to a database. Trigger automatically**: Combine with a webhook or time-based trigger for automation. ❓Questions? Template created by Miquel Colomer and n8nhackers.com. Need help customizing or deploying? Contact us for consulting and support.
by VipinW
Apply to jobs automatically from Google Sheets with status tracking Who's it for Job seekers who want to streamline their application process, save time on repetitive tasks, and never miss following up on applications. Perfect for anyone managing multiple job applications across different platforms. What it does This workflow automatically applies to jobs from a Google Sheet, tracks application status, and keeps you updated with notifications. It handles the entire application lifecycle from submission to status monitoring. Key features: Reads job listings from Google Sheets with filtering by priority and status Automatically applies to jobs on LinkedIn, Indeed, and other platforms Updates application status in real-time Checks application status every 2 days and notifies you of changes Sends email notifications for successful applications and status updates Prevents duplicate applications and manages rate limiting How it works The workflow runs on two main schedules: Daily Application Process (9 AM, weekdays): Reads your job list from Google Sheets Filters for jobs marked as "Not Applied" with Medium/High priority Processes each job individually to prevent rate limiting Applies to jobs using platform-specific APIs (LinkedIn, Indeed, etc.) Updates the sheet with application status and reference ID Sends confirmation email for each application Status Monitoring (Every 2 days at 10 AM): Checks all jobs with "Applied" status Queries job platforms for application status updates Updates the sheet if status has changed Sends notification emails for status changes (interviews, rejections, etc.) Requirements Google account with Google Sheets access Gmail account for notifications Resume stored online (Google Drive, Dropbox, etc.) API access to job platforms (LinkedIn, Indeed) - optional for basic version n8n instance (self-hosted or cloud) How to set up Step 1: Create Your Job Tracking Sheet Create a Google Sheet with these exact column headers: | Job_ID | Company | Position | Status | Applied_Date | Last_Checked | Application_ID | Notes | Job_URL | Priority | |--------|---------|----------|--------|--------------|--------------|----------------|-------|---------|----------| | JOB001 | Google | Software Engineer | Not Applied | | | | | https://careers.google.com/jobs/123 | High | | JOB002 | Microsoft | Product Manager | Not Applied | | | | | https://careers.microsoft.com/jobs/456 | Medium | Column explanations: Job_ID**: Unique identifier (JOB001, JOB002, etc.) Company**: Company name Position**: Job title Status**: Not Applied, Applied, Under Review, Interview Scheduled, Rejected, Offer Applied_Date**: Auto-filled when application is submitted Last_Checked**: Auto-updated during status checks Application_ID**: Platform reference ID (auto-generated) Notes**: Additional information or application notes Job_URL**: Direct link to job posting Priority**: High, Medium, Low (Low priority jobs are skipped) Step 2: Configure Google Sheets Access In n8n, go to Credentials → Add Credential Select Google Sheets OAuth2 API Follow the OAuth setup process to authorize n8n Test the connection with your job tracking sheet Step 3: Set Up Gmail Notifications Add another credential for Gmail OAuth2 API Authorize n8n to send emails from your Gmail account Test by sending a sample email Step 4: Update Workflow Configuration In the "Set Configuration" node, update these values: spreadsheetId**: Your Google Sheet ID (found in the URL) resumeUrl**: Direct link to your resume (make sure it's publicly accessible) yourEmail**: Your email address for notifications coverLetterTemplate**: Customize your cover letter template Step 5: Customize Application Logic For basic version (no API access): The workflow includes placeholder HTTP requests that you can replace with actual job platform integrations. For advanced version (with API access): Replace LinkedIn/Indeed HTTP nodes with actual API calls Add your API credentials to n8n's credential store Update the platform detection logic for additional job boards Step 6: Test and Activate Add 1-2 test jobs to your sheet with "Not Applied" status Run the workflow manually to test Check that the sheet gets updated and you receive notifications Activate the workflow to run automatically How to customize the workflow Adding New Job Platforms Update Platform Detection: Modify the "Check Platform Type" node to recognize new job board URLs Add New Application Node: Create HTTP request nodes for new platforms Update Status Checking: Add status check logic for the new platform Customizing Application Strategy Rate Limiting**: Add "Wait" nodes between applications (recommended: 5-10 minutes) Application Timing**: Modify the cron schedule to apply during optimal hours Priority Filtering**: Adjust the filter conditions to match your criteria Multiple Resumes**: Use conditional logic to select different resumes based on job type Enhanced Notifications Slack Integration**: Replace Gmail nodes with Slack for team notifications Discord Webhooks**: Send updates to Discord channels SMS Notifications**: Use Twilio for urgent status updates Dashboard Updates**: Connect to Notion, Airtable, or other productivity tools Advanced Features AI-Powered Personalization**: Use OpenAI to generate custom cover letters Job Scoring**: Implement scoring logic based on job requirements vs. your skills Interview Scheduling**: Auto-schedule interviews when status changes Follow-up Automation**: Send follow-up emails after specific time periods Important Notes Platform Compliance Always respect rate limits to avoid being blocked Follow each platform's Terms of Service Use official APIs when available instead of web scraping Don't spam job boards with excessive applications Data Privacy Store credentials securely using n8n's credential store Don't hardcode API keys or personal information in nodes Regularly review and clean up old application data Ensure your resume link is secure but accessible Quality Control Start with a small number of jobs to test the workflow Review application success rates and adjust strategy Monitor for errors and set up proper error handling Keep your job list updated and remove expired postings This workflow transforms job searching from a manual, time-consuming process into an automated system that maximizes your application efficiency while maintaining quality and compliance.