by Tenkay
This workflow compares two lists of objects (List A and List B) using a user-specified key (e.g. email, id, domain) and returns: Items common to both lists (based on the key) Items only in List A Items only in List B How it works: Accepts a JSON input containing: listA: the first list of items listB: the second list of items key: the field name to use for comparison Performs a field-based comparison using the specified key Returns a structured output: common: items with matching keys (only one version retained) onlyInA: items found only in List A onlyInB: items found only in List B Example Input: { "key": "email", "listA": [ { "email": "alice@example.com", "name": "Alice" }, { "email": "bob@example.com", "name": "Bob" } ], "listB": [ { "email": "bob@example.com", "name": "Bobby" }, { "email": "carol@example.com", "name": "Carol" } ] } Output: common: [ { "email": "bob@example.com", "name": "Bob" } ] onlyInA: [ { "email": "alice@example.com", "name": "Alice" } ] onlyInB: [ { "email": "carol@example.com", "name": "Carol" } ] Use Cases: Deduplicate data between two sources Find overlapping records Identify new or missing entries across systems This workflow is useful for internal data auditing, list reconciliation, transaction reconciliation, or pre-processing sync jobs.
by Ria
This is a very simple workflow that lets you subscribe to any github repository for the latest release (using n8n as example). How it works: daily poll to Github repository for release for latest (stable) version of n8n parses the content to HTML sends a gmail Setup steps: add your gmail credentials (or use other email node of choice) change the url to the right Github repository you want to check regularly change the To email address to the email that you want to receive the updates for Feedback & Questions If you have any questions or feedback about this workflow - Feel free to get in touch at ria@n8n.io
by Femi Ad
Google Sheets to MailChimp Auto-Importer Overview This n8n workflow automatically imports contacts from Google Sheets into your MailChimp mailing list. Perfect for businesses collecting leads through Google Forms, event registrations, or maintaining contact lists in spreadsheets. Key Features 📊 Bulk Import: Process entire Google Sheets at once 🔄 Smart Name Parsing: Automatically splits full names into first and last names 📱 Phone Number Support: Includes phone numbers as merge fields ⚡ Error Resilience: Continues processing even if individual contacts fail 📝 Import Summary: Generates a summary of processed contacts Prerequisites Before using this workflow, ensure you have: An active n8n instance (self-hosted or cloud) A Google account with access to Google Sheets A MailChimp account with at least one audience/list created Basic understanding of n8n workflows Initial Setup Step 1: Import the Workflow Copy the workflow JSON In n8n, click "Import from File" or paste the JSON Save the workflow with a meaningful name Step 2: Configure Google Sheets Connection Click on the "Get Google Sheet Data" node Click on "Credential to connect with" Select "Create New" and choose "Google Sheets OAuth2" Follow the OAuth flow to authenticate your Google account Save the credentials Step 3: Configure MailChimp Connection Click on the "Add to MailChimp" node Click on "Credential to connect with" Select "Create New" and choose "MailChimp OAuth2" or "MailChimp API" For API method: Log into MailChimp Go to Account → Extras → API keys Generate a new API key Copy and paste it into n8n Save the credentials Step 4: Configure Your Specific Settings Google Sheets Settings: Open the "Get Google Sheet Data" node Replace YOUR_GOOGLE_SHEET_ID with your actual sheet ID Find this in your Google Sheets URL: https://docs.google.com/spreadsheets/d/[SHEET_ID]/edit Replace YOUR_SHEET_NAME with your worksheet name (e.g., "Sheet1" or "Form Responses 1") MailChimp Settings: Open the "Add to MailChimp" node Replace YOUR_MAILCHIMP_LIST_ID with your audience ID Find this in MailChimp: Audience → Settings → Audience name and defaults Verify the status is set to "subscribed" Google Sheets Format Requirements Your Google Sheet must have the following columns (exact names): Names**: Full name of the contact (e.g., "John Doe") Email address**: Valid email address Phone Number**: Contact phone number (optional) Example: | Names | Email address | Phone Number | |-------|--------------|--------------| | John Doe | john@example.com | +1234567890 | | Jane Smith | jane@example.com | +0987654321 | How to Use Manual Execution: Open the workflow in n8n Click "Execute Workflow" Monitor the execution progress Check the output of "Create Import Summary" for results Scheduling (Optional): To run this automatically: Replace the "Manual Trigger" node with a "Schedule Trigger" node Set your desired schedule (e.g., daily at 9 AM) Activate the workflow Customization Options Adding More Fields: To include additional fields like company name or address: Add columns to your Google Sheet Modify the "Edit Fields" node to include new fields Update the "Format Subscriber Data" code to map new fields Add corresponding merge fields in the MailChimp node Handling Duplicates: The workflow uses "continueRegularOutput" error handling, which means: Existing subscribers will be skipped New subscribers will be added The workflow continues processing Adding Email Notifications: To receive import summaries via email: Add a Gmail or Email node after "Create Import Summary" Configure with your email settings Use the import summary data in the email body Troubleshooting Common Issues: "Invalid API Key" (MailChimp) Verify your API key is correct Check that your MailChimp account is active "Sheet not found" (Google Sheets) Verify the sheet ID is correct Ensure the service account has access to the sheet "Email already exists" errors This is normal for existing subscribers The workflow will continue processing other contacts Missing data in MailChimp Check that column names match exactly (case-sensitive) Verify data exists in the Google Sheet Best Practices Test First: Always test with a small dataset first Backup Data: Export your MailChimp list before large imports Clean Data: Ensure email addresses are valid before importing Monitor Regularly: Check import summaries for any issues Respect Privacy: Only import contacts who have consented to receive emails Support For issues specific to: n8n platform: Visit n8n Community Forum Google Sheets API: Check Google Developers Documentation MailChimp API: See MailChimp API Documentation Need help customizing? Contact me for consulting and support or add me on LinkedIn - https://www.linkedin.com/in/femi-adedayo-h44/ License This workflow template is provided free for personal and commercial use. Feel free to modify and share!
by John Alejandro SIlva
🤖🥗 Telegram Nutrition AI Assistant (Alternative to Cal AI App) > AI-powered nutrition assistant for Telegram — log meals, set goals, and get personalized daily reports with Google Sheets integration. 📋 Description This n8n template creates a Telegram-based Nutrition AI Assistant 🥑🔥 designed as an open-source alternative to the Cal AI mobile app. It allows users to interact with an AI agent via text, voice, or images to track meals, calculate macros, and monitor nutrition goals directly from Telegram. The system integrates Google Sheets as the database, handling both user profiles and meal logs, while leveraging Gemini AI for natural conversation, food recognition, and daily progress reports. ✨ Key Features 💬 Multi-input support: Text, voice messages (transcribed), and food images (AI analysis). 📊 Macro calculation: Automatic estimation of calories, proteins, carbs, and fats. 📝 User-friendly registration: Simple onboarding without storing personal health data (no weight/height required). 🎯 Goal tracking: Users can set and update calorie and protein targets. 📈 Daily reports: Personalized progress messages with visual progress bars. 🗂 Google Sheets integration: Profile table for user targets. Meals table for food logs. 🔄 Advanced n8n nodes: Includes use of Merge, Subworkflow, and Code nodes for data processing and report generation. 💡 Acknowledgment Inspired by the Cal AI concept 💡 — this template demonstrates how to reproduce its main functionality with n8n, Telegram, and AI agents as a flexible, open-source automation workflow. 🏷 Tags telegram ai-assistant nutrition meal-tracking google-sheets food-logging voice-transcription image-analysis daily-reports n8n-template merge-node subworkflow-node code-node telegram-trigger google-gemini 💼 Use Case Use this template if you want to: 🥗 Log meals using text, images, or voice messages. 📊 Track nutrition goals (calories, proteins) with daily progress updates. 🤖 Provide a chat-based nutrition assistant without building a full app. 🗂 Store structured nutrition data in Google Sheets for easy access and analysis. 💬 Example User Interactions 📸 User sends a photo of a meal → AI analyzes the food and logs calories/macros. 🎤 User sends a voice message → AI transcribes and logs the meal. ⌨️ User types “report” → AI returns a daily nutrition summary with progress bars. 🥅 User says “update my protein goal” → AI updates profile in Google Sheets. 🔑 Required Credentials Telegram Bot API (Bot Token) Google Sheets API credentials AI Provider API (Google Gemini or compatible LLM) ⚙️ Setup Instructions 🗂 Create two Google Sheets tables: Profile: User_ID, Name, Calories_target, Protein_target Meals: User_ID, Date, Meal_description, Calories, Proteins, Carbs, Fats 🔌 Configure the Telegram Trigger with your bot token. 🤖 Connect your AI provider credentials (Gemini recommended). 📑 Connect Google Sheets with your credentials. ▶️ Deploy the workflow in n8n. 🎯 Start interacting with your nutrition assistant via Telegram. 📌 Extra Notes 🟩 Green section: Handles Telegram trigger and user check. 🟥 Red section: Registers new users and sets goals. 🟦 Blue section: Processes text, voice, and images. 🟨 Yellow section: Generates nutrition reports. 🟪 Purple section: Main AI agent controlling tools and logic. 💡 Need Assistance? If you’d like help customizing or extending this workflow, feel free to reach out: 📧 Email: johnsilva11031@gmail.com 🔗 LinkedIn: John Alejandro Silva Rodríguez
by Rosh Ragel
This workflow processes emails received in Gmail and adds the sender's name and email address to a MySQL database. Use Cases: A sales or marketing agency can use this to automatically save client contact info to a database to build a list of leads Companies can use this to automatically save contacts to a database in case of Gmail data loss / losing access to their Gmail account Companies can build mailing lists to automatically send promotions to all of the clients who have contacted them in a given time period Before using, you need to have: Gmail credential MySQL database credential A Table in the MySQL database to store your contacts The table should have a "name" column, which allows NULL values The table should have an "email" column, which should be UNIQUE How it works: The Gmail Trigger will listen for a new email every minute For each email, the code node will extract the name and email address of the sender. If there is no name, it will return null The MySQL node will insert the new contact into a table in your database If the contact email already exists in your database, the MySQL node will update the contact name How to use: Please set up the MySQL node by selecting the correct table to store contacts in Please choose your "email" column to match on Please choose your "name" column to store names Customizing this Workflow: You can customize this workflow to save more data to MySQL. Here are some examples: In the MySQL node, click "Add Value", and choose one of the fields from the Gmail node to save in your database column. You can try saving the following items: Subject line MessageID ThreadID Snippet Recipient Info
by Teddy
Scrape Latest 20 TechCrunch Articles Who is this for? This workflow is designed for developers, researchers, and data analysts who need to track the latest trending repositories on GitHub. It is useful for anyone who wants to stay updated on popular open-source projects without manually browsing GitHub’s trending page. What problem is this workflow solving? Manually checking GitHub’s trending repositories daily can be time-consuming and inefficient. This workflow automates the extraction of trending repositories, providing structured data including repository name, author, description, programming language, and direct repository links. What this workflow does This workflow scrapes the trending repositories from GitHub’s trending page and extracts essential metadata such as repository names, languages, descriptions, and URLs. It processes the extracted data and structures it into an easy-to-use format. Setup Ensure you have n8n installed and configured. Import this workflow into your n8n instance. Run the workflow manually or schedule it to execute at regular intervals. (Optional) Customize the extracted data or integrate it with other systems. How to customize this workflow to your needs Modify the HTTP request node to target different GitHub trending categories (e.g., specific programming languages). Add further processing steps such as filtering repositories by stars, forks, or specific keywords. Integrate this workflow with Slack, email, or a database to store or notify about trending repositories. Workflow Steps Trigger execution manually using the "When clicking ‘Test workflow’" node. Send an HTTP request to fetch GitHub’s trending page using "Request to Github Trend". Extract the trending repositories box from the HTML response using "Extract Box". Extract all repository data including names, authors, descriptions, and languages using "Extract all repositories". Convert extracted data into a structured list for easier processing using "Turn to a list". Extract detailed repository information using "Extract repository data". Format and set variables to ensure clean and structured data output using "Set Result Variables". Note: Since GitHub’s trending page updates dynamically, ensure you run this workflow periodically to capture the latest trends.
by Marth
How it works This automation helps revive expired property listings by: Reading listing data from a Google Sheet that tracks all properties. Filtering listings where the last_activity date is older than 30 days. Generating a personalized email using OpenAI (GPT-4) to re-engage the owner. Sending the email to the property owner using Gmail or SMTP. (Optional): Updating the listing's status to followed_up in the Sheet once the email is sent. This workflow ensures no opportunity is missed by proactively reactivating cold leads. Set Up Steps Prepare your Google Sheet Create a Google Sheet with these columns: title, owner_name, email, property_type, location, last_activity Fill in sample data for testing. Connect Google Sheets in n8n Add a Google Sheets node. Use the "Read Rows" operation to load the listing data. Filter listings inactive for 30+ days Use a Set node to convert last_activity to a Date. Add an IF node or Code node to check if the listing is older than 30 days. Generate email content with OpenAI Add an OpenAI node. Use dynamic input (e.g. owner name, property type) to create a follow-up message. Send the email Add a Gmail node or SMTP node to send the email to the property owner. (Optional) Update status Use a Google Sheets "Update Row" node to change the listing's status to followed_up. Test the full workflow Manually trigger the workflow or schedule it to run daily/weekly.
by Jimleuk
This template is for self-hosted n8n instances only. This n8n demonstrates how to build a simple FileSystem MCP server. Connecting to this server allows MCP clients and agents to list, read and create directories and files on the local machine or remote server. This MCP example is based off an official MCP reference implementation which can be found here -https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem How it works A MCP server trigger is used and connected to 5 tools: 3 Execute Command tools and 2 custom workflow tools. The 3 Execute Command tools allow for listing, searching and creating directories. The 2 custom workflow tools are for reading and writing files to disk. Special care has been to not allow the MCP agent to execute arbitrary linux commands on the target server. This is achieved by only allowing the agent to provide parameters such as filenames and paths rather than raw commands. How to use This Filesystem MCP server will write to the server which hosts the n8n instance - this can be your local machine or a remove server. If your target filesystem is on neither, then modify the commands to connect to the desired server. Connect your MCP client by following the n8n guidelines here - https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/#integrating-with-claude-desktop Try the following queries in your MCP client: "Please help me list all folders under the project directory." "Help me create a bash script to send a notification to Slack." "Search for the log file on the 22nd April and read its contents. What was the cause of the outage?" Requirements Linux file system for this example template. Feel free to modify if working on Windows. MCP Client or Agent for usage such as Claude Desktop - https://claude.ai/download Customising this workflow Implement the moving and renaming of files by adding more custom workflow tools to the MCP server. Remember to set the MCP server to require credentials before going to production and sharing this MCP server with others!
by Avkash Kakdiya
How it works: This project automatically verifies lead email addresses stored in Google Sheets using Hunter.io. It checks each email’s validity and writes back the results—including confidence scores, verification status, and metadata—so your outreach lists are always clean and reliable. This workflow runs daily, reads from a source sheet, verifies emails via API, and writes results into another sheet. No manual checking. No wasted leads. Step-by-step: Schedule Trigger:** The workflow is scheduled to run automatically once per day, but you can also run it manually when needed. Fetch Emails:** Reads emails from a Google Sheet (named Sheet1) with columns like Email, FirstName, LastName, and Company. Data Cleaning:** Filters out blank or invalid email formats before verification to save API usage. Hunter.io Verification:** Each email is passed to Hunter.io’s /email-verifier API, returning status (valid, invalid, risky), SMTP check, score (0–100), and disposable flag. Format Results:** The API response is converted into a human-readable summary like: ✅ Valid (96% confidence) or ❌ Invalid / Risky Write to Sheet:** The verified results are written back into your output Google Sheet—either appending new rows or updating existing ones. Setup instructions: Google Sheet:** Use a sheet named Sheet1 and ensure it includes these columns: Email, FirstName, LastName, Company. Hunter.io Key:** Sign up at hunter.io. Go to Dashboard → API → Copy your key In n8n, open the Email Verifier node → Create Credential → Paste your API key → Save
by Corentin Ribeyre
This template can be used to verify email addresses with Icypeas. Be sure to have an active account to use this template. How it works This workflow can be divided into four steps : The workflow initiates with a manual trigger (On clicking ‘execute’). It reads your Google sheet file. It connects to your Icypeas account. It performs an HTTP request to search for the email addresses. Set up steps You will need a formated Google Sheet file with firstnames,lastnames and company/domain names. 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 Emad
This workflow automatically sends you a list of your daily meetings every morning via a Telegram bot. Use Cases: This workflow is useful for anyone who wants to be automatically informed of their daily meetings, especially for busy professionals, students, and anyone with a hectic schedule. Setup: Google Calendar connected to n8n A Telegram bot created and connected to n8n Your Telegram user ID specified Notes: You need to replace the placeholder in the Telegram node with your actual Telegram user ID. You can customize the formatting of the Telegram message in the JavaScript Code node.
by Ankur Pata
✨ What It Does Mello is a Claude-powered Slack assistant that helps you stay on top of unread messages across all your channels. It: Summarizes conversations contextually using Claude AI. Generates reply suggestions and sends them as private (ephemeral) Slack messages. Lets you respond instantly with one-click AI-suggested replies. Perfect for busy teams, founders, and anyone looking to reduce Slack noise and save hours each week. 🔧 Setup Instructions Create a Slack App Go to Slack API → Your Apps Click Create New App and set it up for your workspace Under OAuth & Permissions, add: Bot Token Scopes: commands, chat:write, channels:history, users:read User Token Scopes: channels:history, chat:write Enable Interactivity, and point the Request URL to your n8n webhook (e.g. /slash-summarize) Add Claude API Get an API key from Claude (Anthropic) In n8n, set up the Claude API credential (or switch to OpenAI) Import This Workflow Go to your n8n instance, click Import, and paste this template Update any placeholders (Slack app, Claude key, webhook URLs) Follow the inline sticky notes for guidance Test It Type /summarize in any Slack channel Mello will fetch unread messages, summarize them, and show reply buttons in a private message ⏱ Setup time: ~10 minutes 🛠 Workflow Highlights Slash command trigger (/summarize) Slack API integration to fetch messages Claude AI for contextual summaries Reply suggestions with smart buttons Private Slack delivery (ephemeral messages) Designed to be easily extended (e.g. add support for OpenAI, custom storage) 🔒 Note This is a lite preview of the full Mello workflow. ✅ The full version includes: Slack reply buttons with thread context Full OAuth flow with token storage MongoDB integration Custom Claude/OpenAI configuration Hosted version with onboarding, branding & support 💡 Want access to the complete version? 📩 Email nina@baloon.dev