by dataplusminus+-
π― Project Purpose This project automates the process of collecting and managing new leads submitted through a web form. It eliminates the need for manual data entry and ensures that each lead is: Properly recorded and time-stamped in a structured format Automatically communicated to the sales or support team Ready for follow-up, with a reminder system in place Itβs a lightweight but effective solution suitable for freelancers, small teams, and growing businesses that want to streamline their lead intake process. π οΈ Tools & Technologies Used Google Forms / Web Form** β Frontend for capturing leads Google Sheets** β Central database for storing lead information n8n** β Automation platform that connects and coordinates all services Gmail** β Handles email notifications for new leads Slack* *(optional) β Provides instant team notifications Date & Time nodes** β Tracks and manages lead response timing Conditional (IF) nodes** β Filters out duplicate and incomplete entries π Workflow Overview β¨ Key Features β No-code integration using n8n β Instant alerts via Gmail and/or Slack β Google Sheets as an easily accessible backend β Modular design β easy to expand with CRM tools (like HubSpot) β Clean JSON structure and logic, beginner-friendly π Possible Improvements Add email validation via external API (e.g., NeverBounce, Hunter) Integrate with a CRM for deeper automation Add lead scoring based on answers Include automatic follow-up emails after X days Schedule weekly summary reports via email π§π»βπ» Creator Information Developed by: Adem Tasin Adem T. π Website: Dataplusminus+- π§ Email:dataplusminuss@gmail.com πΌ LinkedIn: Adem Tasin
by Akhil Varma Gadiraju
π¬ Gmail to Google Drive Email Export Workflow (n8n) π§© Overview This n8n workflow automates the process of: Retrieving all emails from a specific sender using Gmail. Extracting essential fields like subject, message, and date. Formatting the email date to the desired time zone (e.g., IST). Exporting the parsed data as a CSV file. Uploading the file to a specified folder in Google Drive. π Nodes Breakdown 1. Start Workflow (Manual Trigger) Type**: Manual Trigger Purpose**: Initiates the workflow manually. 2. Gmail Node (Get All Emails) Type**: Gmail Operation**: getAll Filters**: sender: akhilgadiraju@gmail.com Returns**: All emails from the specified sender. Credentials**: Gmail OAuth2 - Akhil 3. Parse Data (Set Node) Purpose**: Extracts key fields from the email JSON. Mapped Fields**: id: Email ID subject: Email subject message: Email text time: Email date 4. Convert Time Field (Code Node) Purpose**: Converts the email time (ISO 8601) to a human-readable format. Output Format**: Local time using Asia/Kolkata timezone. Format: "Month Day, Year, Hour:Minute AM/PM" Customizable**: Change the timezone as needed: timeZone: 'Asia/Kolkata' 5. Convert to File Type**: Convert to File Node Purpose**: Converts JSON data to a downloadable .csv file. Output File**: CSV containing id, subject, message, and time. 6. Google Drive Type**: Google Drive Purpose**: Uploads the generated CSV file to Google Drive. Drive**: My Drive Folder**: Root File Name**: Current timestamp + _n8n_export.csv 7. End Workflow (NoOp) Purpose**: Final node to explicitly end the workflow. β Use Cases Personal Email Archiving**: Back up or export emails from a specific sender (e.g., invoices, reports). Audit Logs**: Save conversations for compliance. Team Reports**: Aggregate project emails into a central file store. π§ Customization Guide | Customization | How to Do It | |---------------------------|------------------------------------------------------------| | Change Sender Email | Update the sender field in the Gmail node. | | Filter by Date/Subject | Add filters in the Gmail node settings. | | Change Time Zone | Edit timeZone in the Code node. | | Add More Email Fields | Modify the Set node to include more fields. | | Change File Format | Use a different format in the Convert to File node. | | Rename Output File | Adjust the name in the Google Drive node. | | Change Upload Folder | Set a different folderId in the Google Drive node. | π Deployment Tips Schedule the Workflow**: Replace Manual Trigger with a Cron node. Avoid Duplicates**: Store email IDs and skip duplicates using conditional logic. Security**: Use environment variables for sensitive credentials. π§ͺ Testing Steps Manually trigger the workflow. Verify email data is parsed and formatted. Confirm CSV is generated correctly. Ensure the file is uploaded to Google Drive. π§° Requirements Connected Gmail and Google Drive OAuth2 credentials. n8n instance (self-hosted or cloud). Required nodes available in the n8n environment. > π‘ Need more features? You can add: > - Error handling > - Slack/Email notifications > - Conditional filters > - Google Sheets integration instead of Drive
by Harshil Agrawal
This workflow appends, lookup, updates, and reads data from a Google Sheet spreadsheet. Set node: The Set node is used to generate data that we want to add to Google Sheets. Depending on your use-case you might have data coming from a different source. For example, you might be fetching data from a WebHook call. Add the node that will fetch the data that you want to add to the Google Sheet. Use can then use the Set node to set the data that you want to add to the Google Sheets. Google Sheets node: This node will add the data from the Set node in a new row to the Google Sheet. You will have to enter the Spreadsheet ID and the Range to specify which sheet you want to add the data to. Google Sheets1 node: This node looks for a specific value in the Google Sheet and returns all the rows that contain the value. In this example, we are looking for the value Berlin in our Google Sheet. If you want to look for a different value, enter that value in the Lookup Value field, and specify the column in the Lookup Column field. Set1 node: The Set node sets the value of the rent by $100 for the houses in Berlin. We pass this new data to the next nodes in the workflow. Google Sheets2 node: This node will update the rent for the houses in Berlin with the new rent set in the previous node. We are mapping the rows with their ID. Depending on your use-case, you might want to map the values with a different column. To set this enter the column name in the Key field. Google Sheets3 node: This node returns the information from the Google Sheet. You can specify the columns that should get returned in the Range field. Currently, the node fetches the data for columns A to D. To fetch the data only for columns A to C set the range to A:C. This workflow can be broken down into different workflows each with its own use case. For example, we can have a workflow that appends new data to a Google Sheet, and another workflow that lookups for a certain value and returns that value. You can learn to build this workflow on the documentation page of the Google Sheets node.
by Daniel Ng
This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. Restore n8n Credentials from Google Drive Backup This template enables you to restore your n8n credentials from a backup file in Google Drive. It's an essential companion to a credential backup workflow, ensuring you can recover your setup in case of data loss, instance migration, or disaster recovery. The workflow intelligently checks for existing credentials to prevent accidental overwrites of credentials with the same name that are already present. This workflow is manually triggered. We recommend you use this restore workflow in conjunction with a backup solution like our "Auto Backup Credentials to Google Drive" template. For more powerful n8n templates, visit our website or contact us at AI Automation Pro. We help your business build custom AI workflow automation and apps. Who is this for? This workflow is for n8n administrators and users who have backed up their n8n credentials to Google Drive (e.g., using a companion backup template) and need to restore them to the same or a different n8n instance. It's crucial for those managing self-hosted instances. What problem is this workflow solving? / use case If an n8n instance becomes corrupted, needs to be migrated, or if credentials are accidentally deleted, a manual re-creation of all credentials can be extremely time-consuming and error-prone. This workflow automates the restoration process from a known backup, saving significant time and ensuring accuracy. It's particularly useful for: Disaster recovery. Migrating n8n instances. Quickly setting up a new n8n instance with existing credentials. What this workflow does The workflow is manually triggered and performs the following operations: Fetch Current Credentials: An "On Click Trigger" starts the process. It executes the command npx n8n export:credentials --all --decrypted via the "Execute Command Get All Credentials" node to get a list of all credentials currently in your n8n instance. This list is then processed by "JSON Formatting Data" and "Aggregate Credentials" nodes to extract just the names of existing credentials for comparison. Download Backup File from Google Drive: The "Google Drive Get Credentials File" node searches your Google Drive for the n8n_backup_credentials.json file. The "Google Drive Download File" node then downloads the found file. Process Backup Data: The "Convert Files To JSON" (an Extract From File node) converts the downloaded file content, expected to be JSON, into a usable JSON object. "Split Out" nodes then process this data to handle individual credential entries from the backup file. Loop and Restore Credentials: The "Loop Over Items" (a SplitInBatches node) iterates through each credential from the backup file. Duplicate Check: For each credential, an "IF" node ("Check For Skipped Credentials") checks two conditions using an OR combinator: If the credential name from the backup ($('Loop Over Items').item.json.name) is empty. If a credential with the same name already exists in the current n8n instance (by checking against the list from the "Aggregate Credentials" node). Conditional Restore: If the credential name is NOT empty AND it does NOT already exist (i.e., the conditions in the IF node are false), the workflow proceeds to the "Restore N8n Credentials" node (an n8n API node). This node uses the name, type, and data for each new credential from the backup file to create it in the n8n instance. Credentials with empty names or those already present are skipped as they take the true path of the IF node, which loops back. A "Wait" node introduces a 1-second delay after each restoration attempt, to prevent API rate limiting before looping to the next item. Step-by-step setup n8n Instance Environment (for current credentials check): The n8n instance must have access to npx and n8n-cli for the "Execute Command Get All Credentials" node to function. Google Drive Credentials: Configure the "Google Drive Get Credentials File" and "Google Drive Download File" nodes with your Google OAuth2 credentials. n8n API Credentials: Configure the "Restore N8n Credentials" node with your n8n API credentials. This API key needs permissions to manage credentials. Backup File Name: The workflow is configured to search for a file named n8n_backup_credentials.json in the "Google Drive Get Credentials File" node. If your backup file has a different name or you want to specify a path, update the "Query String" parameter in this node. How to customize this workflow to your needs Backup File Location/Query:** Modify the "Google Drive Get Credentials File" node parameters if your backup file is in a specific folder, has a different naming convention, or if you want more specific query logic. Overwrite Logic:** The current workflow skips existing credentials by name. If you need to update/overwrite existing credentials, you would need to modify the logic in the "Check For Skipped Credentials" (IF) node and potentially use an "update" operation in the "n8n" API node if available for credentials (note: updates often require the credential ID, which might not be in the backup file). Notifications:** Add notification steps (e.g., Email, Slack) to report on the success or failure of the restoration process, and to list which credentials were restored or skipped. Selective Restore:** To restore only specific credentials, you could add a filter step after "Split Out1" or modify the IF condition in "Check For Skipped Credentials" to check for particular credential names or types from the backup file. Error Handling:** Implement more robust error handling for API errors (e.g., from the n8n API node or Google Drive nodes), file not found issues, or problems during command execution. Important Note on Credential Security Decrypted Backup File:** This workflow assumes the n8n_backup_credentials.json file contains decrypted credential data, typically created by a companion backup workflow. Execution Environment:** The "Execute Command Get All Credentials" node requires npx n8n-cli access on the server running n8n.
by Mauricio Perera
Overview This workflow exposes an HTTP endpoint (webhook) that accepts a JSON definition of an n8n workflow, validates it, andβif everything is correctβdynamically creates that workflow in the n8n instance via its internal API. If any validation fails or the API call encounters an error, an explanatory message with details is returned. Workflow Diagram Webhook β βΌ Validate JSON ββ fails validation βββΊ Validation Error β ββ passes ββΊ Validation Successful? β ββ true ββΊ Create Workflow βββΊ API Successful? βββΊ Success Response β β β ββ false ββΊ API Error ββ false ββΊ Validation Error Step-by-Step Details 1. Webhook Type**: Webhook (POST) Path**: /webhook/create-workflow Purpose**: Expose a URL to receive a JSON definition of a workflow. Expected Input**: JSON containing the main workflow fields (name, nodes, connections, settings). 2. Validate JSON Type**: Code Node (JavaScript) Validations Performed**: Ensure that payload exists and contains both name and nodes. Verify that nodes is an array with at least one item. Check that each node includes the required fields: id, name, type, position. If missing, initialize connections, settings, parameters, and typeVersion. Output if Error**: { "success": false, "message": "<error description>" } Output if Valid**: { "success": true, "apiWorkflow": { "name": payload.name, "nodes": payload.nodes, "connections": payload.connections, "settings": payload.settings } } 3. Validation Successful? Type**: IF Node Condition**: $json.success === true Branches**: true: proceed to Create Workflow false: route to Validation Error 4. Create Workflow Type**: HTTP Request (POST) URL**: http://127.0.0.1:5678/api/v1/workflows Authentication**: Header Auth with internal credentials Body**: The apiWorkflow object generated earlier Options**: continueOnFail: true (to handle failures in the next IF) 5. API Successful? Type**: IF Node Condition**: $response.statusCode <= 299 Branches**: true: proceed to Success Response false: route to API Error 6. Success Response Type**: SET Node Output**: { "success": "true", "message": "Workflow created successfully", "workflowId": "{{ $json.data[0].id }}", "workflowName": "{{ $json.data[0].name }}", "createdAt": "{{ $json.data[0].createdAt }}", "url": "http://localhost:5678/workflow/{{ $json.data[0].id }}" } 7. API Error Type**: SET Node Output**: { "success": "false", "message": "Error creating workflow", "error": "{{ JSON.stringify($json) }}", "statusCode": "{{ $response.statusCode }}" } 8. Validation Error Type**: SET Node Output**: { "success": false, "message": "{{ $json.message }}" } Example Webhook Request curl --location --request POST 'http://localhost:5678/webhook/create-workflow' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "My Dynamic Workflow", "nodes": [ { "id": "start-node", "name": "Start", "type": "n8n-nodes-base.manualTrigger", "typeVersion": 1, "position": [100, 100], "parameters": {} }, { "id": "set-node", "name": "Set", "type": "n8n-nodes-base.set", "typeVersion": 1, "position": [300, 100], "parameters": { "values": { "string": [ { "name": "message", "value": "Hello from a webhook-created workflow!" } ] } } } ], "connections": { "Start": { "main": [ [ { "node": "Set", "type": "main", "index": 0 } ] ] } }, "settings": {} }' Expected Success Response { "success": "true", "message": "Workflow created successfully", "workflowId": "abcdef1234567890", "workflowName": "My Dynamic Workflow", "createdAt": "2025-05-31T12:34:56.789Z", "url": "http://localhost:5678/workflow/abcdef1234567890" } Validation Error Response { "success": false, "message": "The 'name' field is required in the workflow" } API Error Response { "success": "false", "message": "Error creating workflow", "error": "{ ...full API response details... }", "statusCode": 401 }
by Nikan Noorafkan
π§Ύ Template: Extract Ad Creatives from Googleβs Ads Transparency Center This n8n workflow pulls ad creatives from Google's Ads Transparency Center using SerpApi, filtered by a specific domain and region. It extracts, filters, categorizes, and exports ads into neatly formatted CSV files for easy analysis. π€ Whoβs it for? Marketing Analysts** researching competitive PPC strategies Ad Intelligence Teams** monitoring creatives from specific brands Digital Marketers** gathering visual and copy trends Journalists & Watchdogs** reviewing ad activity transparency β Features Fetch creatives** using SerpApi's google_ads_transparency_center engine Filter results** to include only ads with an exact match to your target domain Categorize** by ad format: text, image, or video Export CSVs**: Generates a downloadable file for each format under the /files/ directory π How to Use Edit the βSet Domain & Regionβ node domain: e.g. example.com region: SerpApi numeric region code β See codes Add your SerpApi API key In the βGet Ads Page 1β nodeβs credentials section. Run the workflow Click "Test workflow" to initiate the process. Download your results Navigate to /files/ to find: text_{domain}_ads.csv image_{domain}_ads.csv video_{domain}_ads.csv π Notes Only the first page (up to 50 creatives) is fetched; pagination is not included. Sticky Notes inside the workflow nodes offer helpful internal annotations. CSV files include creative-level details: ad copy, images, video links, etc.
by Jimleuk
This n8n template showcases the new HTTP tool released in version 1.47.0. Overall, the tool helps simplify AI Agent workflows where custom sub-workflows were performing the same simple http requests. Comparisons 1. AI agent that can scrape webpages Remake of https://n8n.io/workflows/2006-ai-agent-that-can-scrape-webpages/ Changes: Replaces Execute Workflow Tool and Subworkflow Replaces Response Formatting 2. Allow your AI to call an API to fetch data Remake of https://n8n.io/workflows/2094-allow-your-ai-to-call-an-api-to-fetch-data/ Changes: Replaces Execute Workflow Tool and Subworkflow Replaces Manual Query Params Definitions Replaces Response Formatting
by Solomon
The Stripe API does not provide custom fields in invoice or charge data. So you have to get it from the Checkout Sessions endpoint. But that endpoint is not easy for begginners. It has dictionary parameters and pagination settings. This workflows solves that problem by having a preconfigured GET request that gets all the checkout sessions from the last 7 days. It then transforms the data to make it easier to work with and allows you to filter by the custom_fields you want to get. Want to generate Stripe invoices automatically? Open π this workflow . Check out my other templates https://n8n.io/creators/solomon/
by Don Jayamaha Jr
π§ͺ Binance SM 1hour Indicators Tool A precision trading signal engine that interprets 1-hour candlestick indicators for Binance Spot Market pairs using a GPT-4.1-mini LLM. Ideal for swing traders seeking directional bias and momentum clarity across medium timeframes. π₯ Watch Tutorial: π― Purpose This tool provides a structured 1-hour market read using: RSI** (Relative Strength Index) MACD** (Moving Average Convergence Divergence) BBANDS** (Bollinger Bands) SMA & EMA** (Simple and Exponential Moving Averages) ADX** (Average Directional Index) Itβs invoked as a sub-agent in broader AI workflows, such as the Binance Financial Analyst Tool and the Spot Market Quant AI Agent. βοΈ Key Features | Feature | Description | | ---------------------- | ------------------------------------------------------------- | | π Subworkflow Trigger | Runs only when called by parent agent (not standalone) | | π§ GPT-4.1-mini LLM | Translates numeric indicators into natural-language summaries | | π Real-time Data | Pulls latest 40Γ1h candles via internal webhook from Binance | | π₯ Input Format | { "message": "ETHUSDT", "sessionId": "telegram_chat_id" } | | π€ Output Format | JSON summary + Telegram-friendly HTML overview | π‘ Example Output π 1h Technical Overview β ETHUSDT β’ RSI: 59 (Neutral) β’ MACD: Bullish Crossover β’ BBANDS: Price at Upper Band β’ EMA > SMA β Positive Slope β’ ADX: 28 β Moderate Trend Strength π§© Use Cases | Scenario | Result | | -------------------------------------- | ----------------------------------------------- | | Mid-frame market alignment | Verifies momentum between 15m and 4h timeframes | | Quant AI Agent input | Supplies trend context for entry/exit decisions | | Standalone medium-term signal snapshot | Validates swing trade setups or filters noise | π¦ Installation Instructions Import workflow into your n8n instance Confirm internal webhook /1h-indicators is live and authorized Insert your OpenAI credentials for GPT-4.1-mini node Use only when triggered via: Binance Financial Analyst Tool Binance Spot Market Quant AI Agent π§Ύ Licensing & Support π Don Jayamaha β LinkedIn linkedin.com/in/donjayamahajr Β© 2025 Treasurium Capital Limited Company Architecture, prompts, and signal logic are proprietary. Redistribution or commercial use requires explicit licensing. No unauthorized cloning permitted.
by Amjid Ali
AI Chatbot with Conditional Execution for Cost Efficiency Description This n8n workflow implements an AI-powered chatbot that only runs when a chat is initiated on a website. By introducing a conditional step, the workflow ensures that AI tokens are not consumed unnecessarily, making it a cost-efficient and resource-optimized solution. The chatbot, named Sophia, serves as an interactive assistant for SyncBricks. It helps users with guest posting services, YouTube review videos, IT consultancy, and online courses while collecting user details step by step. The chatbot ensures that inquiries are properly logged and confirmed before proceeding to AI-driven responses. This template is ideal for businesses, service providers, and content creators who want to optimize AI token usage while delivering personalized, interactive engagement with their users. Features Conditional Execution β The AI chatbot only activates when a chat is initiated, avoiding unnecessary API calls. AI-Powered Conversations β Uses Google Gemini AI to generate human-like responses. Step-by-Step Data Collection β Ensures structured user input, requesting name, email, and request type sequentially. Memory Buffer for Context Awareness β Maintains conversation context using a window buffer memory system. Multiple Service Offerings β Supports inquiries related to: Guest Posting Services YouTube Review Videos Online Courses on Udemy IT Consultancy Services Automated Confirmation Messages β After collecting user details, sends a confirmation message summarizing the request. How It Works Chat Message Trigger The workflow starts only when a chat message is received from the website. This ensures no AI token is consumed unless a user initiates a chat. Condition Check: Is Chat Input Provided? The workflow checks if chat input is non-empty. If the chat input is empty, the workflow stops, ensuring no unnecessary API usage. If a message is detected, the chatbot continues processing. AI-Powered Chat Response The chatbot, Sophia, generates personalized responses using Google Gemini AI. AI ensures structured conversation flow by collecting: Userβs Full Name Email ID Request Type Memory Buffer for Context Retention A Window Buffer Memory system stores chat history and retrieves previous responses to ensure context-aware conversations. Response Optimization Checks memory to avoid asking the same question twice. If details are already provided, Sophia moves directly to processing the request. Confirmation & User Engagement After collecting the required details, Sophia summarizes the request as follows: "Got it [Name], your request is [Request Type]. I will be sending the details to your email ID: [Email]. Hold on while I send confirmation." Final Confirmation Message Ensures the user receives a proper acknowledgment of their inquiry. Prerequisites Before using this workflow, make sure you have: n8n Instance (Cloud or Self-Hosted) Google Gemini API Key (For AI-generated responses) Webhook Integration (To trigger the chatbot from your website) Use Cases Businesses & Enterprises β AI-powered lead qualification for services. Bloggers & Content Creators β Automated guest post inquiry handling. YouTube Influencers & Educators β AI chatbot to promote courses and review services. Marketing Agencies β Lead generation chatbot without excessive AI token consumption. E-Commerce & Consulting Services β AI-driven personalized customer engagement. Nodes Used in This Workflow Chat Trigger (Webhook) β Initiates only when a user sends a chat message. Conditional Check (If Node) β Ensures AI is only used when a chat is initiated. AI Agent (Google Gemini AI) β Generates intelligent chatbot responses. Memory Buffer (Context Retention) β Stores user inputs for context-aware conversations. Important Start with n8n Learn n8n with Amjid Get n8n Book What is Proxmox Creator Information Developed by: Amjid Ali Website: SyncBricks Email: amjid@amjidali.com LinkedIn: Amjid Ali YouTube: SyncBricks Support & Contributions If you find this workflow helpful, consider supporting my work: Donate via PayPal For full courses on n8n, visit: Course by Amjid Final Thoughts This n8n workflow ensures optimal AI token usage while engaging users with an intelligent chatbot. By integrating conditional execution, it prevents unnecessary API calls, making it cost-effective and efficient for businesses looking to automate chat-based customer interactions. Let me know if you need any modifications!
by Miquel Colomer
Do you want to check the SSL certificate expiration dates of your customers or servers? This workflow gets information of an SSL certificate using the uProc Get Certificate by domain tool. You can use this workflow to query SSL certificates in bulk and send alarms when any certificate has expired. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. You can replace "Create Domain Item" with any integration containing a domain, like Google Sheets, MySQL, or Zabbix server. Every "uProc" node returns the next fields per every analyzed SSL certificate: issuer: Contains the issuer. provider: Contains the provider. valid_from: Contains the start date. valid_to: Contains the end date. serial_number: Contains the serial number. type: Contains if supports one or multiple domains. protocol: Contains the protocol. valid: Contains its validity. domains: Contains all domains and subdomains supported. An "IF" node detects if the certificate is valid or not. Finally, the workflow sends an alarm to a Telegram channel to know if the certificate has expired.
by Giovanni Ruggieri
Send Webflow form data to Google Sheets π How It Works This workflow connects your Webflow form submissions to Google Sheets with style and efficiency. Here's the magic in action: Form Submitted π β A Webflow form submission triggers the flow. Fields Prepared π οΈ β Data gets organized, and a submission date is added. Data Logged π β Your data finds a cozy new home in Google Sheets. Set-Up Steps β±οΈ Estimated Time: 5-10 minutes Connect Webflow π β Hook up your Webflow account and disable legacy APIs (instructions inside the workflow). Set Up Google Sheets π§Ύ β Choose your spreadsheet and authenticate. You're Ready! π« β Let the workflow take it from here. Why You'll Love It β€οΈ No More Manual Copy-Paste:** Save time and keep data clean. Smart Field Mapping:** Automatically creates columns and fits your data. Helpful Notes Along the Way:** Friendly tips guide you through setup like a pro. Enjoy the smooth ride from Webflow to Google Sheets! π