by Jonathan
This workflow will take a timer entry from Clockify and submit it to a matching ticket in Syncro. It saves the time entry ID from Clockify and the time entry ID from Syncro into a Google Sheets. Then, it will check if a match already exists from a previous update and will update the same time entry if the description or time is changed in Clockify. There is a Set node with the name and Syncro IDs of technicians. If you have multiple technicians with the same name, this won't work for you. Likewise, if the name in Clockify doesn't exactly match what you put in the Set, it won't work. You also need to setup a webhook in Clockify set to trigger on "Time entry updated (anyone)" and pointed at your workflow. Configured this way, you can start and stop time entries at will and it won't do anything until you change the description. > This workflow is part of an MSP collection, The original can be found here: https://github.com/bionemesis/n8nsyncro
by n8n Team
Who this template is for This template is for everyone who needs to work with XML data a lot and wants to convert it to JSON instead. Use case Many products still work with XML files as their main language. Unfortunately, not every software still supports XML, as many switched to more modern storing languages such as JSON. This workflow is designed to handle the conversion of XML data to JSON format via a webhook call, with error handling and Slack notifications integrated into the process. How this workflow works Triggering the workflow: This workflow initiates upon receiving an HTTP POST request at the webhook endpoint specified in the "POST" node. The endpoint, designated as , can be accessed externally by sending a POST request to that URL. Data routing and processing: Upon receiving the POST request, the Switch node routes the workflow's path based on conditions determined by the content type of the incoming data or any encountered errors. The Extract From File and Edit Fields (Set) nodes manage XML input processing, adapting their actions according to the data's content type. XML to JSON conversion: The XML data extracted from the input is passed through the "XML" node, which performs the conversion process, transforming it into JSON format. Response handling: If the XML-to-JSON conversion is successful, a success response is sent back with a status of "OK" and the converted JSON data. If there are any errors during the XML-to-JSON conversion process, an error response is sent back with a status of "error" and an error message. Error handling: in case of an error during processing, the workflow sends a notification to a Slack channel designated for error reporting. Set up steps Set up your own in the Webhook node. While building or testing a workflow, use a test webhook URL. When your workflow is ready, switch to using the production webhook URL. Set credentials for Slack.
by Baptiste Fort
Still manually copy-pasting your Tally form responses? What if every submission went straight into Airtable — and the user got an automatic email right after? That’s exactly what this workflow does. No code, no headache — just a simple and fast automation: Tally → Airtable → Gmail. STEP 1 — Capture Tally Form Responses Goal Trigger the workflow automatically every time someone submits your Tally form. What we're setting up A webhook that catches form responses and kicks off the rest of the flow. Steps to follow Add a Webhook node Parameter : Value Method : POST Path : formulaire-tally Authentication : None Respond : Immediately Save the workflow → This will generate a URL like: https://your-workspace.n8n.cloud/webhook-test/formulaire-tally 💡 Use the Test URL first (found under Parameters > Test URL) Head over to Tally Go to your form → Form Settings > Integrations > Webhooks Paste the Test URL into the Webhook field Enable the webhook ✅ Submit a test entry → Tally won’t send anything until a real submission is made. This step is required for n8n to capture the structure. Expected output n8n receives a JSON object containing: General info (IDs, timestamps, etc.) A fields[] array with all the form inputs (name, email, etc.) Each field is nicely structured with a label, key, type, and most importantly, a value. Perfect foundation for the next step: data cleanup. STEP 2 — Clean and Structure the Form Data (Set node) Goal Take the raw data sent by Tally and turn it into clean, readable JSON that's easy to use in the rest of the workflow. Tally sends the responses inside a big array called field. Can you grab a field directly with something like {{$json"fields"["value"]}}? Yes. But a good workflow is like a sock drawer — when everything’s folded and labeled, life’s just easier. So we’re going to clean it up using a Set node. Steps to follow Add a Set node right after the Webhook. Enable the “Keep only set” option. Define the following fields in the Set node: Field name: Expression full_name: {{$json"fields"["value"]}} company_name: {{$json"fields"["value"]}} job_title: {{$json"fields"["value"]}} email: {{$json"fields"["value"]}} phone_number: {{$json"fields"["value"] ?? ""}} submission_date: {{$now.toISOString()}} ⚠️ The order of fields[] depends on your Tally form. If you change the question order, make sure to update these indexes accordingly. Expected output You’ll get a clean, structured JSON like this: Now your data is clear, labeled, and ready for the rest of your workflow. STEP 3 — Save Data in Airtable Goal Every time someone submits your Tally form, their info is automatically added to an Airtable base. No more copy-pasting — everything lands right where it should. Steps to follow Create your Airtable base Start by creating a base named Leads (or whatever you prefer), with a table called Form Submissions. Add the following columns in this exact order so everything maps correctly later: Generate an Airtable token So n8n can send data into your base: Go to 👉 [ https://airtable.com/create/tokens](https://airtable.com/create/tokens ) Click Create token Give it a name (e.g. Tally Automation) Check the following permissions: data.records:read data.records:write schema.bases:read Under Base access, either choose your base manually or select “All current and future bases” Click Create token and copy the generated key Add configure the Airtable node in n8n Node: Airtable Operation: Create Authentication: Personal Access Token Paste your token n8n will suggest your base and table (or you can manually grab the IDs from the URL: https://airtable.com/appXXXXXXXX/tblYYYYYYYY/...) Map your fields Inside the Airtable node, add the following field mappings: Every new Tally form submission automatically creates a new row in your Airtable base. STEP 4 — Send an Automatic Confirmation Email Goal Send a professional email as soon as a form is completed Steps to follow Add a Wait node You don’t want the email to go out instantly — it feels cold and robotic. → Add a Wait node right after Airtable. Mode: Wait for a period of time Delay: 5 to 10 minutes Unit: Minutes Add a Gmail > Send Email node Authentication: OAuth2 Connect a Gmail account (business or test) ⚠️ No API keys here — Gmail requires OAuth. Configure the Send Email node Field Value Credential to connect with Gmail account via OAuth2 Resource : Message Operation : Send To : {{ $json.fields["Email"] }} Subject : Thanks for reaching out! Email Type : HTML Message: (but do the mapping correctly using the Input so that lead receives its name correctly ) End of the Workflow And that’s it — your automation is live! Your lead fills out the Tally form → the info goes to Airtable → they get a clean, professional email without you doing a thing.
by Encoresky
This workflow automates the process of handling conversation transcriptions and distributing key information across your organization. Here's what it does: Trigger: The workflow is initiated via a webhook that receives a transcription (e.g., from a call or meeting). Summarization & Extraction: Using AI, the transcription is summarized, and key information is extracted — such as action items, departments involved, and client details. Department Notifications: The relevant summarized information is automatically routed to specific departments via email based on content classification. CRM Sync: The summarized version is saved to the associated contact or deal in HubSpot for future reference and visibility. *Multi-Channel Alerts: *The summary is also sent via WhatsApp and Slack to keep internal teams instantly informed, regardless of platform. Use Case: Ideal for sales, customer service, or operations teams who manage client conversations and want to ensure seamless cross-departmental communication, documentation, and follow-up. Apps Used: Webhook (Trigger) OpenAI (or other AI/NLP for summarization) HubSpot Email Slack WhatsApp (via Twilio or third-party provider)
by Sk developer
Automation Flow: Image to Image Using GPT Sora This flow automates the process of generating images using a provided prompt and reference image via the Sora GPT Image API from RapidAPI. The generated images are stored in Google Drive, and details are logged in Google Sheets. Nodes Overview 1. On Form Submission Type**: n8n-nodes-base.formTrigger Description**: This node triggers when a user submits the form containing the prompt and image URL. It ensures the form fields are filled in and ready for processing. Form Fields: Prompt: A text description of the desired image. Image URL: The URL of the reference image to be used. Webhook ID: Unique identifier for form submission. 2. HTTP Request to Sora GPT Image API Type**: n8n-nodes-base.httpRequest Description: Sends the prompt and image URL to the **Sora GPT Image API to generate a new image based on the provided inputs. API Endpoint: Sora GPT Image API (via RapidAPI) Method: POST Body Parameters: Prompt: User-provided text. Image URL: The reference image URL. Width & Height: Image size is set to 1024x1024. 3. Code (Base64 Conversion) Type**: n8n-nodes-base.code Description**: This node processes the base64-encoded image data returned from the API. It decodes and formats the image to be uploaded to Google Drive. Output: Converts the base64 string into a binary JPEG file. 4. Upload Image to Google Drive Type**: n8n-nodes-base.googleDrive Description: Uploads the generated image to **Google Drive, storing it in a designated folder. Authentication: Google Service Account. File Name: The image file name is dynamically set from the previous node. 5. Log Details to Google Sheets Type**: n8n-nodes-base.googleSheets Description: This node logs the **Prompt, Generated Image, and Generation Date into a Google Sheets document for tracking and auditing purposes. Columns Mapped: Prompt: The user’s input text. Image: The name of the generated image file. Generated Date: Date and time of image generation. Flow Summary User Submits Form: Triggered when the form with the prompt and image URL is submitted. Image Generation: The data is sent to the Sora GPT Image API from RapidAPI to generate the image. Image Processing: The generated image (base64 format) is decoded and saved as a file. Google Drive Upload: The image is uploaded to Google Drive for storage. Google Sheets Logging: All relevant details (Prompt, Image, Date) are saved in Google Sheets. Benefits Automated Image Creation: Quickly generate images using AI based on a simple prompt and reference image via **RapidAPI. Efficient Workflow**: The entire process from form submission to image generation and storage is automated, saving time and reducing manual work. Centralized Storage: Generated images are stored in **Google Drive, ensuring easy access and organization. Audit Trail: The details of each generated image are logged in **Google Sheets, making it easy to track, review, and manage past creations. Scalable and Reusable**: Can be adapted to multiple use cases, such as creative design, marketing materials, or social media content generation. Problems Solved Manual Image Editing**: Eliminates the need for manual image manipulation and creation, allowing for automatic generation based on user inputs. Disorganized File Storage: With automatic uploads to **Google Drive, the images are stored in a centralized and organized manner. Lack of Record-Keeping: By logging image generation details in **Google Sheets, there's always a record of past creations, improving tracking and management. Time-Consuming Processes**: The automation drastically reduces the time spent on manual tasks, allowing users to focus on other aspects of their work or creative processes. This flow simplifies the process of creating AI-generated images based on user inputs, leveraging the power of the Sora GPT Image API via RapidAPI, making it a powerful tool for creative, design, and marketing purposes.
by Rajneesh Gupta
Malicious File Detection & Threat Summary Automation using Wazuh + VirusTotal + n8n This workflow helps SOC teams automate the detection and reporting of potentially malicious files using Wazuh alerts, VirusTotal hash validation, and integrated summary/report generation. It's ideal for analysts who want instant context and communication for file-based threats — without writing a single line of code. What It Does When Wazuh detects a suspicious file: Ingests Wazuh Alert** A webhook node captures incoming alerts containing file hashes (SHA256/MD5). Parses IOCs** Extracts relevant indicators (file hash, filename, etc.). Validates with VirusTotal** Automatically checks the file hash reputation using VirusTotal's threat intelligence API. Generates Human-Readable Summary** Outputs a structured file report. Routes Alerts Based on Threat Level** Sends a formatted email with the file summary using Gmail. If the file is deemed malicious/suspicious: Creates a file-related incident ticket. Sends an instant Slack alert to notify the team. Tech Stack Used Wazuh** – For endpoint alerting VirusTotal API** – For real-time hash validation n8n** – To orchestrate, parse, enrich, and communicate Slack, Gmail, Incident Tool** – To notify and take action Ideal Use Case This template is designed for security teams looking to automate file threat triage, IOC validation, and alert-to-ticket escalation, with zero human delay. Included Nodes Webhook** (Wazuh) Function** (IOC extraction and summary) HTTP Request** (VirusTotal) If / Switch** (threat level check) Gmail, **Slack, Incident Creation Tips Make sure to add your VirusTotal API key in the HTTP node. Customize the incident creation node to fit your ticketing platform (Jira, ServiceNow, etc.). Add logic to enrich the file alert further using WHOIS or sandbox reports if needed.
by jason
Using Typeform to push task requests to an n8n webhook that then categorizes the request and assigns it in ClickUp accordingly. In order to get his workflow working for yourself, you will need: ClickUp account Typeform account Credentials for these services ClickUp configured with appropriate lists Typeform setup with options that correspond with ClickUp lists. You may modify this workflow to meet your specific needs and configuration. This is a very simple version of this workflow and you can make it as complicated as you wish to meet your requirements.
by lin@davoy.tech
Are you looking to create a counseling chatbot that provides emotional support and mental health guidance through the LINE messaging platform ? This guide will walk you through connecting LINE with powerful AI language models like GPT-4 to build a chatbot that supports users in navigating their emotions, offering 24/7 conversational therapy and accessible mental health resources . By leveraging LINE's webhook integration and Azure OpenAI , this template allows you to design a chatbot that is both empathetic and efficient, ensuring users receive timely and professional responses. Whether you're a developer, counselor, or business owner, this guide will help you create a customizable counseling chatbot tailored to your audience's needs. Who Is This Template For? Developers who want to integrate AI-powered chatbots into the LINE platform for mental health applications. Counselors & Therapists looking to expand their reach and provide automated emotional support to clients outside of traditional sessions. Businesses & Organizations focused on improving mental health accessibility and offering innovative solutions to their users. Educators & Nonprofits seeking tools to provide free or low-cost counseling services to underserved communities. How this work? Line Webhook to receive new message Send loading animation in Line Check if the input is text or not Send the text as prompt in chat model (GPT 4o) Reply the message to user (you'll need 'edit field' to format it before reply) Pre-Requisites You have access to the LINE Developers Console. An Azure OpenAI account with necessary credentials. Set-up To receive messages from LINE, configure your webhook: Set up a webhook in LINE Developer Console. Copy the Webhook URL from the Line Chatbot node and paste it into the LINE Console. Ensure to remove any 'test' part when moving to production. The loading animation reassures users that the system is processing their request. Authorize using header authorization Message Handling Use the Check Message Type IsText? node to verify if the incoming message is text. If the message type is text, proceed with ChatGPT processing; otherwise, send a reply indicating non-text inputs are not supported. AI Agent Configuration Define the system message within the AI Agent node to guide the conversation based on desired interaction principles. Connect the Azure OpenAI Chat Model to the AI Agent. Formatting Responses Ensure responses are properly formatted before sending them back to the user. Reply Message Use the ReplyMessage - Line node to send the formatted response. Ensure proper header authorization using Bearer tokens.
by PretenderX
This template automates sending a DingTalk message on new Azure Dev Ops Pull Request Created Events. It uses a MySQL database to store mappings between Azure users and DingTalk users; so the right users get notified. Set up instructions Define the path value of ReceiveTfsPullRequestCreatedMessage Webhook node of your own, copy the webhook url to create a Azure DevOps ServiceHook that call webhook with Pull Request Created event. In order to configure the LoadDingTalkAccountMap node, you need to create a MySQL table as below: |Name|Type|Length|Key| |-|-|-|-| |TfsAccount|varchar|255| |UserName|varchar|255| |DingTalkMobile|varchar|255| You can customize the Ding Talk message content by editing the BuildDingTalkWebHookData node. Define the URL of SendDingTalkMessageViaWebHook Http Request node as your Ding Talk group chat robot webhook URL. Send test of production message from Azure DevOps to test.
by Kalyxi Ai
🚀 Automate News Discovery & Publishing with GPT-4, Google Search API & Slack 🎯 Overview Automated content publishing system that discovers industry news, transforms it into original articles using GPT-4, and publishes across multiple channels with SEO optimization and intelligent duplicate prevention. ✨ Key Features 🤖 Smart Query Generation** - AI agent generates unique search queries while checking Google Sheets to avoid duplicates 🔍 News Discovery** - Uses Google Custom Search API to find recent articles (last 7 days) 🧠 Content Intelligence** - Processes search results and skips anti-bot protected sites automatically 📝 GPT-4 Article Generation** - Creates professional, SEO-optimized news articles in Reuters/Bloomberg style 📢 Multi-Channel Publishing** - Publishes to CMS with automatic Slack notifications 📊 Comprehensive Tracking** - Logs all activity to Google Sheets for analytics and duplicate prevention 🔄 How It Works ⏰ Scheduled Trigger runs every 8 hours to maintain consistent content flow 🤖 AI Agent generates targeted search queries for your niche while checking historical data 🔍 Google Search finds recent articles and extracts metadata (title, snippet, source) 🛡️ Smart Content Handler bypasses sites with anti-bot protection, using search snippets instead ⚡ GPT-4 Processing transforms snippets into comprehensive 2000+ word articles with proper formatting 🚀 Publishing Pipeline formats content for CMS with SEO metadata and publishes automatically 📱 Notification System sends detailed Slack updates with article metrics 📈 Activity Logging tracks all published content to prevent future duplicates 🔧 Setup Requirements 📋 Prerequisites Google Custom Search API key and Search Engine ID OpenAI GPT-4 API access Google account for tracking spreadsheet Slack workspace for notifications CMS or website with API endpoint for publishing 🛠️ Step-by-Step Setup Step 1: 🔎 Google Custom Search Configuration Go to Google Custom Search Engine Create a new search engine Configure to search the entire web Copy your Search Engine ID (cx parameter) Get your API key from Google Cloud Console Step 2: 📊 Google Sheets Template Setup Create a Google Sheet with these required columns: Column A:** timestamp - ISO date format (YYYY-MM-DD HH:MM:SS) Column B:** query - The search query used Column C:** title - Published article title Column D:** url - Published article URL Column E:** status - Publication status (success/failed) Column F:** word_count - Final article word count Template URL: Copy this Google Sheets template Step 3: 🔑 Credential Configuration Set up the following credentials in n8n: 📊 Google Sheets API - OAuth2 connection to your Google account 🤖 OpenAI API - Your GPT-4 API key 📱 Slack Webhook - Webhook URL for your notification channel 🔍 Custom Search API - Your Google Custom Search API key Step 4: ⚙️ Workflow Customization Modify these key parameters to fit your needs: 🎯 Search Topic:** Edit the AI agent prompt to focus on your industry ⏰ Publishing Schedule:** Adjust the cron trigger (default: every 8 hours) 📝 Article Length:** Modify GPT-4 prompt for different word counts 🌐 CMS Endpoint:** Update the publishing node with your website's API 🎨 Customization Options 🎯 Content Targeting Modify the AI agent's search query generation to focus on specific industries Adjust date restrictions (currently set to last 7 days) Change the number of search results processed per run ✍️ Article Style Customize GPT-4 prompts for different writing styles (formal, casual, technical) Adjust article length requirements Modify SEO optimization parameters 📡 Publishing Channels Add additional CMS endpoints for multi-site publishing Configure different notification channels (Discord, Teams, etc.) Set up social media auto-posting integration 💡 Use Cases 📰 Automated news websites 📝 Industry blog content generation 🔍 SEO content pipeline automation 📊 News aggregation and republishing 📈 Content marketing automation 🛠️ Technical Notes Workflow includes error handling for anti-bot protection Duplicate prevention through Google Sheets tracking Rate limiting considerations for API usage Automatic retry logic for failed requests 🆘 Support For setup assistance or customization help, refer to the workflow's internal documentation nodes or contact the template creator.
by Henri
Description This template will help you verify that incoming calls from a Slack webhook actually come from Slack and not some unknown third-party services. It is mainly used to prevent attacks from malicious bots or individuals. This is a Sub-Workflow, so it should be used inside the main workflow that contains the webhook listening for Slack requests. How to Use What to Edit You should set the Slack Signing Secret that you can find on your Slack App dashboard in the general tab. It should be located under the following URL: https://api.slack.com/apps/[SLACK_APP_ID]/general Input The input should be the received Slack request. This workflow should then be placed directly after the Slack Webhook. Outputs Success Output If the signature was verified successfully, we return a key verified_signature set to true along with data from the Slack request itself. Error Output When the signature could not be verified, we raise an error. You can handle this case in your main workflow by using an Error Workflow or by changing your node settings and choosing some actions in case of an error. Changelog Version 1.0.1 (2023-12-11) Changed replace by replaceAll in JS code in case of several arguments. Added some custom replacements that encodeURIComponent does not take into account
by Michael Gullo
A Customizable n8n Automation That Turns Your Inbox Into A Daily Digest. The goal of this workflow is to offer a highly customizable foundation that users can tailor to fit their specific platform and setup. While the current version uses Gmail, it can easily be adapted to work with other providers by replacing the email node with alternatives such as IMAP Email Trigger, Microsoft Outlook, or any compatible Email node. This workflow can also be extended to work with platforms like Telegram, WhatsApp, or any service that supports bots and n8n integration. The core objective is to generate scheduled email summaries whether it’s the most recent email, emails from a specific sender, or all emails received within a day. I built this workflow as a flexible building block for anyone looking to develop a more advanced email agent. It’s designed to reduce the mental load of reviewing emails each day by automatically delivering a summarized version of your inbox. Currently, the summary is saved to Google Docs, chosen for its simplicity and accessibility. However, users can easily modify this to integrate with other document management systems or destinations. I plan to continue updating and expanding this workflow to better serve the needs of users. If you have suggestions, ideas, or feedback, I’d love to hear them your input helps make this tool even more useful. Workflow Components Schedule Node – Triggers the workflow daily at a specified time. Gmail: Get Messages Node – Retrieves the latest email. Can be changed for any amount of emails. Limit Node – Ensures only one or any number emails is processed at a time. If Node – Checks if any emails were retrieved. Code Node – Cleans and formats the email content. Code Node – Provides a fallback message if no emails are found. OpenAI Summary Node – Summarizes the email using CharGPT. Create Google Doc Node – Creates a new Google Document for the summary. Update Google Doc Node – Inserts the summarized content into the document. Expanding The Workflow This workflow is fully modular and easy to extend. To send summaries via Telegram, Slack, or any other emails simply add the respective node after the summary is generated and connect your bot or webhook credentials. To use Outlook instead of Gmail, just swap the email input node with the Microsoft Outlook node or an IMAP Email Trigger, depending on your preferred setup. Need Help? Have Questions? For consulting and support, or if you have questions, please feel free to connect with me on LinkedIn or via email.