by Sirisak Chantanate
Workflow overview: This workflow is designed for dynamic and intelligent conversational capabilities. It incorporates Meta's llama3.3-versatile model for personal assistant. There are no issues when sending simple text to the LINE reply API, so in this workflow you can see how to handle large and complex text sending from AI chat without any errors. Workflow description: User uses Line Messaging API to send message to the chatbot, create line business ID from here: Line Business Set the message from Step 1 to the proper value Send the message to process at Groq using API key that we have created from Groq Send the reply message from AI Agent back to Line Messaging API account Key Features: Utilizes Meta's llama 3.3 model for robust conversational capabilities Handles large and complex text interactions with ease, ensuring reliable connections to LINE Messaging API Demonstrates effective strategies for processing and responding to large and complex text inputs from AI chat To use this template, you need to be on n8n version 1.79.0 or later.
by Oneclick AI Squad
Overview This solution ensures the secure backup and version control of your self-hosted n8n workflows by storing them in a GitLab repository. It compares current workflows with their GitLab counterparts, updates files when differences are detected, and organizes them in user-specific folders (e.g., repo -> username -> workflow.json). Backups are triggered manually or weekly, with a success notification sent via email. Operational Process Manual Backup Trigger**: Initiates the backup process on demand. Scheduled Weekly Backup**: Automatically triggers the backup every week. Fetch N8N Workflows**: Retrieves all workflows from n8n using the API (getAll:workflow). Prepare Backup Metadata**: Generates metadata, including user details for folder organization. Process Each Workflow**: Handles each workflow individually for processing. Format Workflow for GitLab**: Structures workflows with proper versioning for GitLab compatibility. Rate Limit Control**: Manages API rate limits to ensure smooth operation. Create to GitLab Repository**: Saves workflows to GitLab; creates a new file if it doesn’t exist. Check Backup Status**: Verifies if the file exists; if true, proceeds to update; if false, loops back. Update Backup Summary**: Updates the existing file in GitLab with the latest version. Log Backup Results**: Records the outcome of the backup process. Send Email**: Sends a confirmation email: "Hello, The scheduled backup of all n8n workflows has been completed successfully. All workflows have been committed to the GitLab repository without any errors. Regards, n8n Automation Bot" Implementation Guide Import this solution into your n8n instance. Configure GitLab API credentials and specify the target repository. Set up n8n API access to enable workflow retrieval. Customize the Prepare Backup Metadata node to map users to folders as needed. Test the process using the Manual Backup Trigger to confirm GitLab integration. Schedule weekly backups via the Scheduled Weekly Backup node (recommended for Fridays). Requirements GitLab API credentials with write access n8n API access for workflow retrieval A configured GitLab repository Customization Options Adjust the Prepare Backup Metadata node to include additional user fields. Modify the Rate Limit Control node to accommodate varying API limits. Tailor the Send Email node to include custom notification details.
by Richard Uren
Shopify GraphQL cursor loop Many Shopify GraphQL queries have the ability to return a cursor which you can loop over, however the N8N GraphQL node does not natively have the ability to fetch pages. This simple 3 node workflow displays how to setup a cursor to fetch all items in a collection. Note : The pageSize in the "Shopify, products" node is set to 5 to illustrate how querying by cursor works. In production set this to a much larger value. Also, Update the Endpoint in GraphQL node to reflect your Shopify store.
by Eric
This is a specific use case. The ElevenLabs guide for Cal.com bookings is comprehensive but I was having trouble with the booking API request. So I built a simple workflow to validate the request and handle the booking creation. Who's this for? You have an ElevenLabs voice agent (or other external service) booking meetings in your Cal.com account and you want more control over the book_meeting tool called by the voice agent. How's it work? Request is received by the webhook trigger node Request sent from ElevenLabs voice agent, or other source Request body contains contact info for the user with whom a meeting will be booked in Cal.com Workflow validates input data for required fields in Cal.com If validation fails, a 400 bad request response is returned If valid, meeting is booked in Cal.com api How do I use this? Create a custom tool in the ElevenLabs agent setup, and connect it to the webhook trigger in this workflow. Add authorization for security. Instruct your voice agent to call this tool after it has collected the required information from the user. Expected input structure Note: Modify this according to your needs, but be sure to reflect your changes in all following nodes. Requirements here depend on required fields in your Cal.com event type. If you have multiple event types in Cal.com with varying required fields, you'll need to handle this in this workflow, and provide appropriate instructions in your *voice agent prompt*. "body": { "attendee_name": "Some Guy", "start": "2025-07-07T13:30:00Z", "attendee_phone": "+12125551234", "attendee_timezone": "America/New_York", "eventTypeId": 123456, "attendee_email": "someguy@example.com", "attendee_company": "Example Inc", "notes": "Discovery call to find synergies." } Modifications Note: ElevenLabs doesn't handle webhook response headers or body, and only recognizes the response code. In other words, if the workflow responds with 400 Bad request that's the only info the voice agent gets back; it doesn't get back any details, eg. "User email still needed". You can modify the structure of the expected webhook request body, and then you should reflect that structure change in all following nodes in the workflow. Ie. if you change attendee_name to attendeeFirstName and attendeeLastName then you need to make this change in the following nodes that use these properties. You can also require or make optional other user data for the Cal.com event type which would reduce or increase the data the voice agent must collect from the user. You can modify the authorization of this webhook to meet your security needs. ElevenLabs has some limitations and you should be mindful of those, but it also offers a secret feature with proves useful. An improvement to this workflow could include a GET request to a CRM or other db to get info on the user interacting with the voice agent. This could reduce some of the data collection needed from the voice agent, like if you already have the user's email address, for example. I believe you can also get the user's phone number if the voice agent is set up on a dial-in interface, so then the agent wouldn't need to ask for it. This all depends on your use case. A savvy step might be prompting the voice agent to get an email, and using the email in this workflow to pull enrichment data from Apollo.io or similar ;-)
by Jonathan
This workflow checks a Google Calendar at 8am on the first of each month to get anything that has been marked as a Holiday or Illness. It then merges the count for each person and sends an email with the list. To use this workflow you will need to set the credentials to use for the Google Calendar node and Send Email node. You will also need to select the calendar ID and fill out the information in the send email node. This workflow searches for Events that contain "Holiday" or "Illness" in the summary. If you want to change this you can modify it in the Switch node.
by Baptiste Fort
Still reminding people about their tasks manually every morning? Let’s be honest — who wants to start the day chasing teammates about what they need to do? What if Slack could do it for you — automatically, at 9 a.m. every day — without missing anything, and without you lifting a finger? In this tutorial, you’ll build a simple automation with n8n that checks Airtable for active tasks and sends reminders in Slack, daily. Here’s the flow you’ll build: Schedule Trigger → Search Records (Airtable) → Send Message (Slack) STEP 1 : Set up your Airtable base Create a new base called Tasks Add a table (for example: Projects, To-Do, or anything relevant) Add the following fields: | Field | Type | Example | | -------- | ----------------- | ------------------------------------------- | | Title | Text | Finalize quote for Client A | | Assignee | Text | Baptiste Fort | | Email | Email | claire@email.com | | Status | Single select | In Progress / Done | | Due Date | Date (dd/mm/yyyy) | 05/07/2025 | Add a few sample tasks with the status In Progress so you can test your workflow later. STEP 2 Create the trigger in n8n In n8n, add a Schedule Trigger node Set it to run every day at 9:00 a.m.: Trigger interval: Days Days Between Triggers: 1 Trigger at hour: 9 Trigger at minute: 0 This is the node that kicks off the workflow every morning. STEP 3 : Search for active tasks in Airtable This step is all about connecting n8n to your Airtable base and pulling the tasks that are still marked as "In Progress". 1. Add the Airtable node In your n8n workflow, add a node called: Airtable → Search Records You can find it by typing "airtable" in the node search. 2. Create your Airtable Personal Access Token If you haven’t already created your Airtable token, here’s how: 🔗 Go to: https://airtable.com/create/tokens Then: Name your token something like TACHES Under Scopes, check: ✅ data.records:read Under Access, select only the base you want to use (e.g. “Tâches”) Click “Save token” Copy the personal token 3. Set up the Airtable credentials in n8n In the Airtable node: Click on the Credentials field Select: Airtable Personal Access Token Click Create New Paste your token Give it a name like: My Airtable Token Click Save 4. Configure the node Now fill in the parameters: Base: Tâches Table: Produits (or Tâches, depending on what you called it) Operation: Search Filter By Formula: {Statut} = "En cours" Return All: ✅ Yes (make sure it’s enabled) Output Format: Simple 5. Test the node Click “Execute Node”. You should now see all tasks with Statut = "En cours" show up in the output (on the right-hand side of your screen), just like in your screenshot. STEP 4: Send each task to Slack Now that we’ve fetched all the active tasks from Airtable, let’s send them to Slack — one by one — using a loop. Add the Slack node Drag a new node into your n8n workflow and select: Slack → Message Name it something like Send Slack Message You can find it quickly by typing "Slack" into the node search bar. Connect your Slack account If you haven't already connected your Slack credentials: Go to n8n → Credentials Select Slack API Click Create new Paste your Slack Bot Token (from your Slack App OAuth settings) Give it a clear name like Slack Bot n8n Choose the workspace and save Then, in the Slack node, choose this credential from the dropdown. Configure the message Set these parameters: Operation: Send Send Message To: Channel Channel: your Slack channel (e.g. #tous-n8n) Message Type: Simple Text Message Message template Paste the following inside the Message Text field: Message template Paste the following inside the Message Text field: New task for {{ $json.name }}: {{ $json["Titre"] }} 👉 Deadline: {{ $json["Date limite"] }} Example output: New task for Jeremy: Relancer fournisseur X 👉 Deadline: 2025-07-04 Test it Click Execute Node to verify the message is correctly sent in Slack. If the formatting works, you’re ready to run it on schedule 🚀
by Jonathan
This workflow will check a mailbox for new emails and if the Subject contains Expenses or Reciept it will send the attachment to Mindee for processing then it will update a Google sheet with the values. To use this node you will need to set the Email Read node to use your mailboxes credentials and configure the Mindee and Google Sheets nodes to use your credentials.
by David w/ SimpleGrow
This n8n workflow tracks user engagement in a specific WhatsApp group by capturing incoming messages via a Whapi webhook. It first filters messages to ensure they come from the correct group, then identifies the message type—text, emoji reaction, voice, or image. The workflow searches for the user in an Airtable database using their WhatsApp ID and increments their message count by one. It updates the Airtable record with the new count and the date of the last interaction. This automated process helps measure user activity and supports engagement initiatives like weekly raffles or rewards. The system is flexible and can be expanded to include more message types or additional actions. Overall, it provides a seamless way to encourage and track user participation in your WhatsApp community.
by Agent Circle
This n8n template demonstrates how to use the tool to crawl comments from a YouTube video and simply get all the results in a linked Google Sheet. Use cases are many: Whether you're a YouTube creator trying to understand your audience, a marketer running sample analysis, a data analyst compiling engagement metrics, or part of a growth team tracking YouTube or social media campaign performance, this workflow helps you extract real, actionable insights from YouTube video comments at scale. How It Works The workflow starts when you manually click Test Workflow or Execute Workflow in N8N. It reads the list of YouTube video URLs from the Video URLs tab in the connected YouTube – Get Video Comments Google Sheet. Only the URLs marked with the Ready status will be processed. The tool loops through each video and sends an HTTP request to the YouTube API to fetch comment data. Then, it checks whether the request is successful before continuing. If comments are found, they are split and processed. Each comment is then inserted in the Results tab of the connected YouTube – Get Video Comments Google Sheet. Once a URL has been finished, its status in the Video URLs tab of the YouTube – Get Video Comments Google Sheet is updated to Finished. How To Use Download the workflow package. Import the workflow package into your N8N interface. Duplicate the "YouTube - Get Video Comments" Google Sheet template into your Google Sheets account. Set up Google Cloud Console credentials in the following nodes in N8N, ensuring enabled access and suitable rights to Google Sheets and YouTube services: For Google Sheets access, ensure each node is properly connected to the correct tab in your connected Google Sheet template: Node Google Sheets - Get Video URLs → connected to the Video URLs tab; Node Google Sheets - Insert/Update Comment → connected to the Results tab; Node Google Sheets - Update Status connected to the Video URLs tab. For YouTube access: Set up a GET method in Node HTTP Request - Get Comments. Open the template in your Google Sheets account. In the tab Video URLs, fill in the video URLs you want to crawl in Column B and update the status for each row in Column A to Ready. Return to the N8N interface and click Execute Workflow. Check the results in the Results tab of the template - the collected comments will appear there. Requirements Basic setup in Google Cloud Console (OAuth or API Key method enabled) with enabled access to YouTube and Google Sheets. How To Customize By default, the workflow is manually triggered in N8N. However, you can automate the process by adding a Google Sheets trigger that monitors new entries in your connected YouTube – Get Video Comments template and starts the workflow automatically. Need Help? Join our community on different platforms for support, inspiration and tips from others. Website: https://www.agentcircle.ai/ Etsy: https://www.etsy.com/shop/AgentCircle Gumroad: http://agentcircle.gumroad.com/ Discord Global: https://discord.gg/d8SkCzKwnP FB Page Global: https://www.facebook.com/agentcircle/ FB Group Global: https://www.facebook.com/groups/aiagentcircle/ X: https://x.com/agent_circle YouTube: https://www.youtube.com/@agentcircle LinkedIn: https://www.linkedin.com/company/agentcircle
by Jesse White
Automate High-Quality Voice with Google Text-to-Speech & n8n Effortlessly convert any text into stunningly realistic, high-quality audio with this powerful n8n workflow. Leveraging Google's advanced Text-to-Speech (TTS) AI, this template provides a complete, end-to-end solution for generating, storing, and tracking voiceovers automatically. Whether you're a content creator, marketer, or developer, this workflow saves you countless hours by transforming your text-based scripts into ready-to-use audio files. The entire process is initiated from a simple form, making it accessible for users of all technical levels. Features & Benefits 🗣️ Studio-Quality Voices: Leverage Google's cutting-edge AI to produce natural and expressive speech in a wide variety of voices and languages. 🚀 Fully Automated Pipeline: From text submission to final file storage, every step is handled automatically. Simply input your script and let the workflow do the rest. ☁️ Seamless Cloud Integration: Automatically uploads generated audio files to Google Drive for easy access and sharing. 📊 Organized Asset Management: Logs every generated audio file in an Airtable base, complete with the original script, a direct link to the file, and its duration. ⚙️ Simple & Customizable: The workflow is ready to use out-of-the-box but can be easily customized. Change the trigger, add notification steps, or integrate it with other services in your stack. Perfect For a Variety of Use Cases 🎬 Content Creators: Generate consistent voiceovers for YouTube videos, podcasts, and social media content without needing a microphone. 📈 Marketers: Create professional-sounding audio for advertisements, product demos, and corporate presentations quickly and efficiently. 🎓 Educators: Develop accessible e-learning materials, audiobooks, and language lessons with clear, high-quality narration. 💻 Developers: Integrate dynamic voice generation into applications, build interactive voice response (IVR) systems, or provide audio feedback for user actions. How The Workflow Operates Initiate with a Form: The process begins when you submit a script, a desired voice, and language through a simple n8n Form Trigger. Synthesize Speech: The workflow sends the text to Google's Text-to-Speech API, which generates the audio and returns it as a base64 encoded file. Process and Upload: The data is converted into a binary audio file and uploaded directly to a specified folder in your Google Drive. Enrich Metadata: The workflow then retrieves the audio file's duration using the fal.ai ffmpeg API, adding valuable metadata. Log Everything: Finally, it creates a new record in your Airtable base, storing the asset name, description (your script), content type, file URLs from Google Drive, and the audio duration for perfect organization. What You'll Need To use this workflow, you will need active accounts for the following services: Google Cloud oAuth2 Client Credentials:** With the Text-to-Speech API enabled. Google Drive:** For audio file storage. Airtable:** For logging and asset management. fal.ai:** For the ffmpeg API used to get audio duration.
by Agent Circle
This N8N template demonstrates how to use our tool to collect a list of videos from any YouTube channel - including video URLs, titles, descriptions, thumbnail links, publish dates, and more - all saved cleanly into a connected Google Sheet. Use cases are many: Whether you're a YouTube content strategist tracking competitors, a marketing team building dashboards from video metadata, or an automation pro connecting YouTube to downstream workflows, researchers and analysts collecting structured video data at scale, this tool gives you what you need! How It Works The workflow begins when you click Execute Workflow or Test Workflow manually in N8N. It reads the list of full channel URLs, custom channel URLs or channel IDs from the Channel URLs tab in the connected Google Sheet. Only the channels with the Ready status will be processed. A Switch node detects whether the input is a full/custom channel URL, or a raw channel ID, and routes it accordingly. If the input is already a channel ID, the tool prepares the data structure before sending it to the YouTube API call in the next step. If the input is a full channel URL or a custom channel URL, the workflow extracts the username, then sends a HTTP Request to the YouTube API to retrieve the corresponding Channel ID, and prepares the data structure before continuing. Once the valid Channel ID is set, the tool sends a request to YouTube API endpoint to retrieve a list of public videos. By default, the number of videos extracted per channel is limited to 10. The API response is checked for success: If successful, the video data is split into individual entries, cleaned, and added to the Videos tab in the connected Google Sheet. The original rows' status in the Channel URLs tab is marked as Finished. If an error occurs, the rows' status in the Channel URLs tab is marked as Error for later review. How To Use Download the workflow package. Import the workflow package into your N8N interface. Duplicate the YouTube - Get Channel Videos Google Sheet template into your Google Sheets account. Set up Google Cloud Console credentials in the following nodes in N8N, ensuring enabled access and suitable rights to Google Sheets and YouTube services: For Google Sheets access, ensure each node is properly connected to the correct tab in your connected Google Sheet: Node Google Sheets - Get Channel URLs → connected to the Channel URLs tab; Node Google Sheets - Update Data → connected to the Videos tab; Node Google Sheets - Update Data - Success → connected to the Channel URLs tab; Node Google Sheets - Update Data - Error → connected to the Channel URLs tab. For YouTube access, set up a GET method to connect to YouTube API in the following nodes: Node HTTP Request - Get Channel ID; Node HTTP Request - Get Channel Videos. In your connected Google Sheet, enter the full channel URLs, custom channel URLs or channel IDs that you want to crawl and set the rows' status to Ready. Run the workflow by clicking Execute Workflow or Test Workflow in N8N. View the results in your connected Google Sheet: Successful fetches will update the original rows' status to Finished and the videos' information show up in the Videos tab. If any URL or ID fails, the rows' status will be marked as Error. Requirements Basic setup in Google Cloud Console (OAuth or API Key method enabled) with enabled access to YouTube and Google Sheets. How To Customize By default, the workflow is manually triggered in N8N. However, you can automate the process by adding a Google Sheets trigger that monitors new entries automatically. If you want to fetch more video metadata like durations, or view counts, you can expand the HTTP Request and post-processing nodes to include those. The workflow, by default, collects up to 10 videos per channel. If you’d like to fetch more, in the connected Google Sheet, simply enter your desired video number limit in Column C in the Channel URLs tab. The tool will use that value when calling the YouTube API. Need Help? Join our community on different platforms for support, inspiration and tips from others. Website: https://www.agentcircle.ai/ Etsy: https://www.etsy.com/shop/AgentCircle Gumroad: http://agentcircle.gumroad.com/ Discord Global: https://discord.gg/d8SkCzKwnP FB Page Global: https://www.facebook.com/agentcircle/ FB Group Global: https://www.facebook.com/groups/aiagentcircle/ X: https://x.com/agent_circle YouTube: https://www.youtube.com/@agentcircle LinkedIn: https://www.linkedin.com/company/agentcircle
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