by n8n Team
This workflow gets leads' contacts from a CSV file and adds it to the Pipedrive CRM by creating an organization and a person. The CSV file in this workflow serves as a universal connector allowing you to export contacts from any platform like LinkedIn, Facebook, etc. Prerequisites Google account and Google credentials Pipedrive account and Pipedrive credentials How it works The Google Drive Trigger node starts the workflow when a new CSV file is uploaded to a specific folder in Google Drive. Google Drive node downloads the CSV file. Spreadsheet File node reads data from the CSV file and sends the output to the Merge node. This Spreadsheet File's output becomes the input 1 for the Merge node. Meanwhile, the Pipedrive node gets the same list of contacts from the CSV file. IF node checks if Pipedrive has these contacts already created previously and sends the checked results to the Merge node. These results arrive at the Merge node as input 2. Merge node compares two inputs via email and removes the matches. Pipedrive node creates new contacts based on the data provided by the Merge node with necessary details such as organization and notes.
by Obsidi8n
This workflow creates a customizable form with a dynamic dropdown field that automatically updates its options from an external data source. How it works The workflow polls an external data source (Google Sheets in this example) at regular intervals New values are processed and formatted for the dropdown The form automatically updates with the new dropdown options Set up steps Configure your data source: Default setup uses Google Sheets replace with credentials for your sheet set up the update frequency Or modify to use any other data source (API, database, etc.) Adjust the form configuration: Customize the form title and description Add or modify form fields as needed The template includes the dropdown field by default Connect form submissions: Use the "Execute Workflow" node to process form submissions This template provides a foundation for creating dynamic forms that stay synchronized with your data sources, making it ideal for situations where dropdown options need to reflect current data.
by Sherlockes
What this template is made for: I have a personal Telegram channel and a bot inside it where I save interesting links that I want to save or read later. The idea is that n8n will take care of reading the new links added to this channel and send them, through the corresponding API, to the Hoarder and Readeck installations. How it works Since my server where n8n runs is not always on, a "Schedule Trigger" will be responsible for checking every so often if there is any new content in the Telegram channel where I store the links. This request is made through "http request" and the Telegram API. Next, a code block is responsible for filtering out everything that is not a hyperlink. At this point, the flow splits into two so that parallel and similar processes are performed for Hoarder and Readeck. The corresponding API is accessed to get a list of all the links saved in the corresponding service. A code block is responsible for filtering the list of hyperlinks previously obtained from Telegram so that only those that are not already saved in the service continue. Finally, another "Http Request" node is responsible for using the service API to save the link in the corresponding service. Configuration instructions The template makes use of the environment variables that I have declared in the n8n "docker-compose.yml" file through an external ".env" file. These are the variables I use: Telegram Bot Token Sherlink TG_SHERLINK_BOT_TOKEN=XXXXXXXX:XXXXXXXXXXXXXXXX Id Telegram Channel Sherlink TG_SHERLINK_ID=-XXXXXXXXXXXXX Readeck server READECK_SERVER=http://readeck.midomain.com READECK_API_KEY=xxxxxxxxxxxxx Hoarder server HOARDER_SERVER=http://hoarder.midomain.com HOARDER_API_KEY=xxxxxxxxxxxxxx Created in 1.85.4 n8n version
by Corentin Ribeyre
This template can be used to search for an email address with Icypeas. Be sure to have an active account to use this template. How it works This workflow can be divided into three steps : The workflow initiates with a manual trigger (On clicking 'execute'). It connects to your Icypeas account. It performs an HTTP request to search for an email address. Set up steps You will need a working icypeas account to run the workflow and get your API Key, API Secret and User ID. You will need a personn firstname, lastname and domain/company name to perform the search.
by n8n Team
This workflow automatically syncs your Zendesk tickets to your HubSpot contacts. Every 5 minutes, your Zendesk account collects all the new or updated tickets and syncs them accordingly, with your HubSpot contacts database. Prerequisites Zendesk account and Zendesk credentials HubSpot account and HubSpot credentials How it works Cron node triggers the workflow every 5 minutes. Function Item node checks all the tickets received after the last execution timestamp. Zendesk node collects all tickets updated after last execution. Zendesk node collects the user data of ticket requester. Set node collects the contact`s email, name and externalID. Merge by key node combines two inputs, ticket data and ticket requester data. If node splits the workflow conditionally, based on data received. If the data corresponds to a ticket that already exists, HubSpot node will update the ticket. If the data does not correspond to a ticket, HubSpot node creates/updates the contact. Zendesk node updates the external Id in Zendesk for the said contact. HubSpot node creates a new ticket. Zendesk node updates the ticket with the external Id. The Function Item node sets the new last execution timestamp.
by Bela
How it works: This workflow automates your customer service with built in notifications for your users & ticket creation with Asana. If a user submits a form, he gets send a confirmation message via WhatsApp a task is opened in Asana with his request in it. Setup: You need to add your credentials to the WhatsApp Business Cloud node. You need to add your credentials to the Asana node. Replace the placeholders with the correct phone number, id, and so on. Change the confirmation message to your liking. Optional Changes: You could extend this workflow to update your user on the progress of the ticket in Asana. You can change the messaging from WhatsApp to E-Mail. You can change the form submission service from n8n-native to Typeform or similar. You can change the task management software from Asana to the one you use. Click here to find a blog post with additional information.
by Jimleuk
> Note: This template requires a self-hosted community edition of n8n. Does not work on cloud. Try It Out This n8n template shows how to validate API requests with Auth0 Authorization tokens. Auth0 doesn't work with the standard JWT auth option because: 1) Auth0 tokens use the RS256 algorithm. 2) RS256 JWT credentials in n8n require the user to use private and public keys and not secret phrase. 3) Auth0 does not give you access to your Auth0 instance private keys. The solution is to handle JWT validation after the webhook is received using the code node. How it works There are 2 approaches to validate Auth0 tokens: using your application's JWKS file or using your signing cert. Both solutions uses the code node to access nodeJS libraries to verify the token. JWKS**: the JWK-RSA library is used to validate the application's JWKS URI hosted on Auth0 Signing Cert**: the application's signing cert is imported into the workflow and used to verify token. In both cases, when the token is found to be invalid, an error is thrown. However, as we can use error outputs for the code node, the error does not stop the workflow and instead is redirected to a 401 unauthorized webhook response. When token is validated, the webhook response is forwarded on the success branch and the token decoded payload is attached. How to use Follow the instructions as stated in each scenario's sticky notes. Modify the Auth0 details with that of your application and Auth0 instance. Requirements Self-hosted community edition of n8n Ability to install npm packages Auth0 application and some way to get either the JWK url or signing cert.
by M Shehroz Sajjad
Transform your BeyondPresence video agent conversations into comprehensive insights by automatically analyzing each call with AI and organizing 35+ data points in Google Sheets. This template helps customer success, support, and training teams save 30+ minutes per call on documentation while ensuring no critical action items or insights are missed. How it works Webhook receives** completed call data from BeyondPresence including full transcript Data validation** ensures quality and adds enriched metadata (duration, time calculations) AI analysis** (GPT-4) extracts action items, sentiment, decisions, and recommendations Parse response** handles the AI output and structures it for sheets Auto-append** to Google Sheets with 35+ insights per call organized beautifully Set up steps Copy our Google Sheets template - One click! Get pre-formatted sheet: BeyondPresence Call Analytics Template Connect accounts - Add OpenAI API key and Google Sheets OAuth2 Configure webhook - Copy URL from n8n to BeyondPresence Settings → Webhooks Customize AI prompt (optional) - Adjust analysis focus for your use case Test with a call - Make a test call and watch insights appear! Setup time: 5-10 minutes Requirements: BeyondPresence account, OpenAI API key, Google account
by Laura Piraux
This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. Build an AI agent for Notion (with Notion official MCP server) Use case This template empowers Notion power-users to build their own AI assistant, deeply integrated with their workspace. It solves the constant problem of copy-pasting and context-switching between a separate AI chat and Notion by creating a direct, conversational bridge. Now you can interact with an intelligent agent that can create, retrieve, and update your Notion databases and pages on your behalf, turning your workspace into a truly dynamic productivity hub. How it works When you send a message via the chat interface, the workflow passes it to your chosen AI model. The model, connected to the official Notion tool server, analyzes your request to see if it can be fulfilled by one of its available Notion actions. If it matches a tool, the workflow executes the command using the Notion API—like creating a new page or searching a database—and the AI then confirms the action is complete back in the chat. Setup Prerequisite: This template is for self-hosted n8n instances only, as it requires a community node. Copy this workflow into your self-hosted n8n instance Install the required community node (n8n-nodes-mcp). Add your credentials for your chosen AI Model and the Notion MCP Server. Test the workflow by starting chatting with your new Notion assistant. How to adjust it to your needs You can use the AI model you want and even easily compare different AI models. You can start from this template and then provide other tools to your AI agent to build more powerful workflows.
by Un tal Camilo Medina
🤖 Telegram Bot Webhook Configuration Tool This workflow creates a simple web form that helps you configure Telegram bot webhooks quickly. Instead of manually constructing the Telegram API URL, this tool does it for you automatically. How It Works The workflow consists of three main steps: Form Input: A web form collects your bot token and webhook URL URL Construction: Automatically builds the correct Telegram API URL Redirect: Takes you directly to the Telegram API to complete the configuration What You Need Bot Token**: Get this from @BotFather on Telegram (format: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz) Webhook URL**: Your n8n webhook endpoint (must be HTTPS) Setup Instructions Import this workflow into your n8n instance Activate the workflow Access the generated form URL Fill in your bot details and submit Form Fields | Field | Description | Example | |-------|-------------|---------| | Bot API Token | Token from BotFather | 123456789:ABCdefGHIjklMNOpqrsTUVwxyz | | Webhook URL | Your n8n webhook endpoint | https://your-instance.app.n8n.cloud/webhook/telegram | What Happens You enter your bot token and webhook URL in the form The workflow constructs this URL: https://api.telegram.org/bot{TOKEN}/setWebhook?url={WEBHOOK_URL} You're redirected to that URL where Telegram configures your webhook Telegram shows you a success or error message Benefits No Manual URL Building**: Eliminates copy-paste errors Quick Setup**: Configure webhooks in seconds Privacy Focused**: No data is stored anywhere Team Friendly**: Share the form URL with team members Common Webhook URLs n8n Cloud: https://your-instance.app.n8n.cloud/webhook/telegram-bot Self-hosted: https://your-domain.com/webhook/telegram-bot Requirements n8n with form trigger support Valid Telegram bot token Publicly accessible webhook URL (HTTPS required) Troubleshooting Invalid Token Error: Make sure you copied the complete token from BotFather Webhook Error: Ensure your URL is publicly accessible and uses HTTPS SSL Error: Verify your webhook URL has a valid SSL certificate This tool simply automates the manual process of visiting the Telegram API URL to configure your bot's webhook. Perfect for developers who frequently set up or change Telegram bot configurations.
by Henry
Who is this for? This workflow is ideal for social media managers, content creators, marketers, and small businesses who want to automate Instagram Carousel posts using Google Sheets and Google Drive. It is also suitable for anyone looking to streamline repetitive Instagram publishing tasks with n8n, Cloudinary, and the Instagram Graph API. What problem is this workflow solving? / Use case Managing and publishing Instagram Carousel posts manually can be time-consuming, especially when handling multiple accounts or campaigns. This workflow solves that by automatically fetching scheduled posts from Google Sheets, uploading images from Google Drive to Cloudinary, and publishing them to Instagram, saving time and reducing the risk of errors. What this workflow does This n8n workflow checks a Google Sheet every 5 minutes for new Carousel posts marked as "ToDo." When found, it uploads images from a specified Google Drive folder to Cloudinary, prepares the media on Instagram using the Graph API, and publishes the Carousel post with the given caption. Setup Prepare a Google Sheet to track posts and image folder URLs. Example : https://docs.google.com/spreadsheets/d/1WEUHeQXFMYsWVAW3DykWwpANxxD3DxH-S6c0i06dW1g/edit?usp=sharing Upload post images to a dedicated Google Drive folder. Set up a Cloudinary account and gather API credentials. Obtain Instagram access_token and ig_business_id for API publishing. Configure the n8n workflow with required credentials and your custom intervals. How to customize this workflow to your needs Adjust the schedule trigger interval to fit your publishing frequency. Expand the Google Sheet with additional metadata as required. Modify the filter logic to support different content types or statuses. Add extra automation steps, such as sending notifications after publishing.
by Jean-Marie Rizkallah
🧩 Jamf Patch Summary to Slack Stay on top of software patch compliance by automatically posting Jamf patch summaries to Slack. This helps IT and security teams quickly identify outdated installs and take action—without logging into Jamf. ✅ Prerequisites • A Jamf Pro API key with permissions to read software titles and patch summary • A Slack app or incoming webhook URL with permission to post messages to your desired channel 🔍 How it works • Manually trigger the flow or Add a webhook • Fetch a list of software titles from Jamf Pro • Filter to select the software you're tracking (e.g. Chrome, Edge) • Retrieve the patch summary for that software (latest version, up-to-date, out-of-date counts) • Format the summary into Slack Block Kit • Post the formatted summary into a Slack channel ⚙️ Set up steps • Takes ~5–10 minutes to configure • Set your server BaseURL variable in the Set Node • Add your Jamf Pro API credentials in the HTTP Request nodes (Get & Retrieve) • Set the target software ID in the Filter node • Add your Slack webhook URL or token in the final HTTP node • Optional: Adjust Slack formatting inside the Function node