by WeblineIndia
Zoho CRM Sales Cycle Performance Analyzer & Improver This workflow automatically analyzes your Zoho CRM deal cycles with AI-powered intelligence, compares them against historical performance data from Google Sheets, and delivers actionable insights to Slack. It identifies bottlenecks, predicts outcomes, analyzes sentiment, generates smart recommendations, creates data visualizations, and builds a historical dataset for future intelligence—all without manual reporting. Quick Implementation Steps Connect Accounts: Set up credentials for Zoho CRM, Google Sheets, Slack, and OpenAI in n8n. Prepare Sheet: Create a Google Sheet with headers: Deal_Name, Stage, Created_Time, Closed_Time (or Modified_Time). Configure Nodes: Zoho Trigger: Ensure it pulls your deals. Google Sheets: Link your "Historical Data" sheet to both the "Fetch" and "Log" nodes. OpenAI Nodes: Configure your OpenAI API key for AI analysis. Slack: Select your #sales-insights channel. Activate: Turn on the workflow to start receiving AI-enhanced real-time insights on deal closure. What It Does This n8n workflow serves as an AI-powered automated data analyst for your sales team. Whenever a deal is fetched from Zoho CRM, the workflow first filters for relevance (e.g., recently closed or modified deals). It then cross-references this specific deal against your historical sales data stored in Google Sheets to calculate key performance metrics like "Days to Close" and "Stage Dwell Time." 🤖 AI-Enhanced Features: Sentiment Analysis**: Analyzes deal descriptions and communications for emotional tone and risk indicators Predictive Analytics**: Uses historical patterns to predict win probability and expected close dates Smart Recommendations**: Generates AI-powered, data-driven process improvement suggestions Data Visualization**: Creates charts and trend analysis for performance metrics Performance Scoring**: Calculates comprehensive performance scores and risk levels Beyond simple calculations, the workflow applies AI intelligence to generate human-readable insights. It determines if a deal was faster or slower than average, identifies which stage caused delays, analyzes sentiment for risk assessment, predicts outcomes, and suggests specific process improvements based on the data. Finally, it closes the loop by broadcasting these AI-enhanced focused insights to a Slack channel for immediate team visibility and logging the new deal's performance back into Google Sheets. This ensures your historical dataset grows richer and more accurate with every closed deal, continuously improving the quality of future AI predictions. Who’s It For Sales Managers**: To monitor team performance and identify coaching opportunities without digging into CRM reports. RevOps Professionals**: To automate the collection of cycle-time data and spot process bottlenecks. Small Business Owners**: To get enterprise-grade sales analytics without hiring a data analyst. Sales Teams**: To get immediate feedback on their wins and losses, fostering a culture of continuous improvement. Prerequisites n8n Instance**: A self-hosted or cloud version of n8n. Zoho CRM Account**: With permission to read Deals. Google Account**: Access to Google Sheets. Slack Workspace**: Permission to post messages to channels. OpenAI Account**: API access for GPT-4 model integration. Google Sheet**: A formatted sheet to store and retrieve historical deal data. How to Use & Setup 1. Google Sheet Setup Create a new Google Sheet. In the first row, add the following headers (the workflow tries to match various case formats, but these are recommended): Deal_Name Stage Created_Time Closed_Time Stage_History (Optional, for advanced dwell time analysis) 2. Configure Credentials In your n8n dashboard, ensure you have authenticated: Zoho CRM Google Sheets Slack OpenAI** (for AI-powered analysis) 3. Node Configuration Zoho CRM - Deal Trigger**: This node is set to "Get All" deals. You might want to adjust this to a Trigger node that listens for "Deal Updated" or "Deal Created" events for real-time automation, or keep it as a scheduled poll. Filter Recent Deals (Code Node)**: Currently configured to process deals closed in the last 7 days and limit to 10 items. No changes needed unless you want to process larger batches. Fetch Historical Averages (Google Sheets)**: Select your Credential. Resource: Document -> Select your prepared Sheet. Operation: Get Many ("GetAll" or "Read"). Return All: True. AI Sentiment Analysis (OpenAI)**: Select your OpenAI Credential. Model: GPT-4 (recommended for best results). Automatically analyzes deal sentiment and emotional tone. AI Predictive Analytics (OpenAI)**: Uses historical data to predict outcomes and win probabilities. Provides risk assessment and expected close dates. AI Smart Recommendations (OpenAI)**: Generates intelligent, context-aware recommendations. Prioritizes suggestions based on impact and feasibility. Advanced Data Visualization**: Creates charts for cycle trends, stage distribution, and performance metrics. Generates data for visual analysis and reporting. Slack Notification**: Select your Credential. Channel: Enter the name of your channel (e.g., #sales-insights). Now includes AI-enhanced insights in the message format. Log to Historical Sheet (Google Sheets)**: Select your Credential. Resource: Document -> Select the same sheet as above. Operation: Append. 4. Running the Workflow Test**: Click "Execute Workflow" manually to test with the "Zoho CRM - Deal Trigger" (conceptually acting as a manual fetch here). Production*: Switch the trigger to a legitimate *Schedule Trigger (e.g., run every morning) or a Zoho CRM Trigger (Real-time) to automate the process. How To Customize Nodes Adjusting the Risk/Insight Logic The core intelligence lives in the Analyze Cycle code node. You can modify the JavaScript here to change thresholds. Change "Slow" Threshold**: Look for if (totalDays > avgDays * 1.25). Change 1.25 to 1.5 to only flag deals that are 50% slower than average. custom Suggestions**: Add new if statements in the // Process improvement suggestions section to add your own coaching advice based on specific stages or owners. Customizing AI Prompts The AI nodes use specific prompts that can be customized: AI Sentiment Analysis**: Modify the prompt in the OpenAI node to focus on specific aspects (e.g., competitor mentions, pricing concerns). AI Predictive Analytics**: Adjust the prediction criteria or add custom factors relevant to your business. AI Smart Recommendations**: Customize the recommendation style or focus on specific business objectives. Changing the Output Format The Slack Notification node uses a template. You can customize the message layout by editing the Text field. You can use standard Slack markdown (e.g., bold, italics) and add variables from specific fields in your CRM (like "Lead Source" or "Competitor"). AI Model Configuration Model Selection**: Change from GPT-4 to GPT-3.5-turbo for faster processing (slightly less accurate). Temperature Adjustment**: Modify creativity level in AI responses (0.0 = deterministic, 1.0 = highly creative). Token Limits**: Adjust response length for more detailed or concise AI outputs. Add‑ons To extend the functionality of this workflow, consider adding: Weekly Report Email**: Add an "Email" node at the end to send a summary digest to the CEO every Friday. Manager Alert**: Add an IF node before Slack to tag the Sales Manager (@user) only if the totalDays exceeds 60 days or if AI risk level is "High". CRM Update: Write the calculated "Days to Close" and **AI predictions back into custom fields in Zoho CRM so you can report on it directly inside Zoho. Dashboard Integration**: Send visualization data to tools like Grafana or Power BI for real-time dashboards. Competitor Analysis**: Add AI node to analyze deal descriptions for competitor mentions and market trends. Use Case Examples 1. Post-Mortem on Lost Deals When a deal is marked "Closed Lost," the workflow calculates how long it sat in each stage. AI sentiment analysis detects negative communication patterns, and the Slack alert highlights this bottleneck, prompting a review of the negotiation strategy. 2. Celebrating Efficiency A deal closes in 15 days when the average is 45. The workflow identifies this anomaly, calculates it is "66% faster than average," AI predicts high success factors, and posts a celebratory message, asking the rep to share what worked. 3. Reviewing Stalled Deals By changing the trigger to look for open deals, you can use this logic to flag active deals that have already exceeded the average winning cycle time, signaling they are "at risk." AI predictive analytics provides win probability for each stalled deal. 4. Onboarding Usage New sales reps can see immediate feedback on their deals compared to the company historical average, helping them calibrate their pace without constant manager intervention. AI recommendations provide personalized coaching tips. 5. Product/Service Specific Analysis Duplicate the workflow and filter by "Product Type" in the Code node. Maintain separate Google Sheets for "Enterprise" vs "SMB" deal cycles to get more accurate baselines for different business lines. AI sentiment analysis can identify product-specific communication patterns. 6. AI-Enhanced Deal Scoring NEW: The workflow now provides AI-powered deal scoring, sentiment-based risk assessment, and predictive win probabilities, enabling sales teams to prioritize high-potential deals and focus resources effectively. Troubleshooting Guide | Issue | Possible Cause | Solution | | :--- | :--- | :--- | | No insights generated | Google Sheet is empty or headers don't match. | Ensure your Google Sheet has at least one row of valid historical data with matching headers (Created_Time, Closed_Time). | | "Invalid Date" errors | Date formats in Zoho or Sheets are inconsistent. | Check that your system regional settings match. The Code node expects standard date strings. | | Slack message is empty | Deal_Name or sensitive data is missing. | The "Check Valid Data" node filters out incomplete records. Ensure your test deals have a Name and timestamps. | | Workflow times out | Too many deals being processed. | The "Filter Recent Deals" node limits to 10 items. If you remove this limit, n8n may timeout on large datasets. Keep the batch size small. | | Google Sheets Error | Authentication or Sheet ID missing. | Re-authenticate your Google account and re-select the Document and Sheet from the list in the node settings. | | AI nodes not working | OpenAI API key missing or invalid. | Configure your OpenAI credentials in n8n settings and ensure the API key has sufficient credits. | | AI responses too slow | Using GPT-4 with large datasets. | Switch to GPT-3.5-turbo for faster processing, or reduce the amount of data sent to AI nodes. | | Sentiment analysis inaccurate | Limited deal description data. | Ensure your Zoho deals have meaningful descriptions and communication logs for better sentiment analysis. | | Predictions seem wrong | Insufficient historical data. | AI predictions improve with more historical data. Ensure at least 50+ historical deals for accurate predictions. | Need Help? Setting up custom analytics or complex logic in Code nodes can be tricky. If you need help tailoring this workflow to your specific business rules, creating advanced Add-ons or integrating with other CRMs: Contact WeblineIndia We specialize in building robust business process automation solutions. Whether you need a simple tweak or a fully custom enterprise automation suite, our experts are ready to assist. Reach out to us today to unlock the full potential of your sales data!
by Rajeet Nair
Overview This workflow automatically converts CSV or Excel files into a production-ready database schema using AI and rule-based validation. It analyzes uploaded data, detects column types, relationships, and data quality, then generates a normalized schema. The output includes SQL DDL scripts, ERD diagrams, a data dictionary, and a load plan. This eliminates manual schema design and accelerates database setup from raw data. How It Works File Upload (Webhook) Accepts CSV or XLSX files via webhook endpoint Initializes workflow configuration (thresholds, retry limits) File Extraction Detects file format (CSV or Excel) Extracts rows into structured JSON Merges extracted datasets Data Cleaning & Profiling Removes duplicates and normalizes values Detects data types (integer, float, date, boolean, string) Computes column statistics (nulls, uniqueness, distributions) Generates file hash and sample dataset Column Profiling Engine Identifies potential primary keys Detects cardinality and uniqueness levels Suggests foreign key relationships based on value overlap AI Schema Generation Uses an AI agent to design normalized tables Assigns SQL data types based on real data Defines primary keys, foreign keys, constraints, and indexes Validation Layer Ensures schema matches actual data Validates: Data types Primary key uniqueness Foreign key overlap (>70%) Constraint consistency Detects circular dependencies Revision Loop If validation fails: Sends feedback to AI agent Regenerates schema Retries up to configured limit Schema Output Generation Generates: SQL DDL scripts ERD (Mermaid format) Data dictionary Load plan with dependency graph Load Plan Engine Computes optimal table insertion order Detects circular dependencies Suggests batching strategy Combine & Explain Merges all outputs Optional AI explanation of schema decisions Response Output Returns structured JSON via webhook: SQL schema ERD summary Data dictionary Load plan Optional explanation Setup Instructions Activate the workflow and copy the webhook URL Send a POST request with a CSV or XLSX file Configure OpenAI credentials (used by AI agent) Adjust thresholds if needed (FK overlap, retries, confidence) Execute workflow and review generated outputs Use Cases Auto-generate database schema from CSV/Excel files Data migration and onboarding pipelines Rapid database prototyping Reverse engineering datasets AI-assisted data modeling Requirements n8n (latest version recommended) OpenAI API credentials LangChain nodes enabled CSV or XLSX input file
by Léo Mathurin
✨ Try It Out! Sync your Linear issues to Todoist automatically with this n8n workflow. When an issue is created, updated, or completed in Linear, a corresponding task is created, updated, or closed in Todoist. ⚙️ How It Works Triggered by issue changes via linearTrigger Routes based on action (create, update, remove) Checks if a matching Todoist task already exists (via issue ID) If the issue has: A due date And is assigned to you (youremail@example.com) ➤ Then it creates or updates the task accordingly If the issue is marked Done, the Todoist task is closed If it's deleted in Linear, the Todoist task is also removed Sub-issues get enriched with their parent title for clarity 🛠️ Customization Replace youremail@example.com with your Linear email in the IF nodes Adjust which states are synced (e.g. “In Progress”, “Todo”...) Customize the Todoist project, labels, or title formatting ⚠️ Bi-directional Sync? This workflow is one-way (Linear ➜ Todoist). Bi-directional syncing might be possible but isn’t handled here—it would be a cool upgrade! ✅ Requirements n8n with OAuth2 access to Linear and Todoist Your Linear email set in the workflow for filtering A target Todoist project (default: Inbox) 💬 Need Help? Ask in the n8n Forum or join the Discord. Happy Automating! 🚀
by Avkash Kakdiya
How it works The workflow triggers on a new checkout event from Shopify and extracts all relevant cart data. It filters carts based on value and age to isolate qualified abandoned checkouts. For each qualified cart, it sends a follow-up email, updates or creates the corresponding HubSpot contact, and generates a CRM note linked to that contact. Finally, it logs the processed cart into Google Sheets for tracking and review. Step-by-step Trigger on new Shopify checkout** Shopify Trigger – Starts the workflow when a new checkout is created. Normalize and structure cart data** Parse Cart Data – Extracts email, customer name, items, cart totals, timestamps, and hours since creation. Filter carts that meet follow-up criteria** Filter Qualified Carts – Passes only carts older than 12 hours and valued above 50. Send follow-up message** Send a message – Delivers a reminder email to the customer about the pending checkout. Create or update CRM contact** Create or update a contact – Ensures the shopper exists as a HubSpot contact. Prepare CRM note details** Generates Note Data – Builds a structured note containing timing, cart details, and follow-up context. Create the HubSpot note** Create HubSpot Note – Submits the prepared note to HubSpot’s CRM. Associate note with the contact** Associate Note with Contact in HubSpot – Links the generated note to the correct HubSpot contact. Record activity in tracker sheet** Log to Google Sheets – Appends processed cart fields including items, totals, timestamps, and customer info. Why use this? Identifies high-value or long-abandoned carts automatically and follows up without manual effort. Keeps CRM records updated and adds contextual notes sales teams can act on. Maintains a structured audit trail of every abandoned cart interaction. Improves recovery chances by combining email outreach with CRM enrichment and logging. Enables analysis of abandoned checkout patterns directly from Google Sheets.
by Brian
This template automates posting to Instagram Business and Facebook Pages using the Meta Graph API. It supports both short-lived and long-lived tokens, with a secure approach using System User tokens for reliable, ongoing automation. Includes detailed guidance for authentication, token refresh logic, and API use. Features: 📸 Publish to Instagram via /media + /media_publish 📘 Post to Facebook Pages via /photos 🔐 Long-lived token support via Meta Business System User ♻️ Token refresh support using staticData in n8n 🧠 In-line sticky note instructions Use Cases: Schedule and publish branded social media content Automate marketing flows with CRM + social sync Empower internal teams or clients to post without manual steps Tags: Instagram, Facebook, Meta Graph API, Social Media, Token Refresh, Long-Lived Token, Marketing Automation, System User
by Vadim
What it does This workflow automates content syndication and posting to LinkedIn and X/Twitter. It takes existing long-form articles and generates from them engaging social posts optimized for each platform. The workflow takes links to existing articles from a given sitemap. It randomly selects the next article to republish, making sure that articles are not repeated. For simplicity it uses a Google spreadsheet to track the articles that have already been republished. Requirements Existing sitemap Google Gemini API key (or other model provider's key) Google Sheets credentials LinkedIn credentials X/Twitter credentials How to set up Adjust the schedule as needed (by default triggers daily at noon) Configure parameters in the parameters node: Set the sitemap URL (e.g. https://example.com/sitemap.xml) Set the language of the posts Enable/disable channels as needed Configure Google Sheets credentials for get processed articles and add processed articles nodes Create a new Google spreadsheet document with "url", "status", "timestamp", "LinkedIn post" and "Twitter post" columns Specify that spreadsheet document in get processed articles node (other nodes will take it from here) Add Google Gemini API key for the model (or change to any other model of choice) Configure LinkedIn and X/Twitter credentials for publishing
by Wessel Bulte
What this template does Receives meeting data via a webform, cleans/structures it, fills a Word docx template, uploads the file to SharePoint, appends a row to Excel 365, and sends an Outlook email with the document attached. Good to know Uses a community node: DocxTemplater to render the DOCX from a template. Install it from the Community Nodes catalog. The template context is the workflow item JSON. In your docx file, use placeholders. Includes a minimal HTML form snippet (outside n8n) you can host anywhere. Replace the placeholder WEBHOOK_URL with your Webhook URL before testing. Microsoft nodes require Azure app credentials with correct permissions (SharePoint, Excel/Graph, Outlook). How it works Webhook — Receives meeting form JSON (POST). Code (Parse Meeting Data) — Parses/normalizes fields, builds semicolon‑separated strings for attendees/absentees, and flattens discussion points / action items. SharePoint (Download) — Fetches the DOCX template (e.g., meeting_minutes_template.docx). Merge — Combines template binary + JSON context by position. DocxTemplater — Renders meeting_{{now:yyyy-MM-dd}}.docx using the JSON context. SharePoint (Upload) — Saves the generated DOCX to a target folder (e.g., /Meetings). Microsoft Excel 365 (Append) — Appends a row to your sheet (Date, Time, Attendees, etc.). Microsoft Outlook (Send message) — Emails the generated DOCX as an attachment. Requirements Community node DocxTemplater installed Microsoft 365 access with credentials for: SharePoint (download template + upload output) Excel 365 (append to table/worksheet) Outlook (send email) A Word template with placeholders matching the JSON keys Need Help 🔗 LinkedIn – Wessel Bulte
by Pramod Kumar Rathoure
Reimbursements used to be a headache. Employees submitted receipts through emails, managers got stuck in approval chains, and finance teams spent hours checking for duplicates, updating sheets, and sending follow-up emails. So, we automated it. Using n8n, we built a smart Employee Reimbursement Workflow that does everything… in just a few clicks. Here’s how it works.] When an employee uploads a receipt, the workflow first checks for duplicates. If the file is new, it’s uploaded to Google Drive instantly. Next, a unique tracking ID is generated—no manual typing, no mistakes. Then, all the details are logged in Google Sheets in real time, ready for records. And finally, the Finance team gets an email notification with everything they need to process the payment—no chasing, no missing info. The impact? We’ve cut processing time by over 70%, reduced errors to nearly zero, and made the entire process stress-free for employees and finance alike. This isn’t just automation—it’s giving people their time back.
by Weilun
🔄 n8n Workflow: Check and Update n8n Version This workflow automatically checks if the local n8n version is outdated and, if so, creates a file to signal an update is needed. 🖥️ Working Environment Operating System:** Ubuntu 24.04 n8n Installation:** Docker container 📁 Project Directory Structure n8n/ ├── check_update.txt ├── check-update.sh ├── compose.yml ├── update_n8n.cron 🧾 File Descriptions check_update.txt Contains a single word: true: Update is needed false: No update required check-update.sh #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin if grep -q "true" /home/sysadmin/n8n/check_update.txt; then Place your update logic here echo "Update needed - please insert update logic" echo true > /home/sysadmin/n8n/check_update.txt fi Purpose: Checks the contents of check_update.txt If it contains true, executes update logic (currently a placeholder) Resets check_update.txt to true update_n8n.cron SHELL=/bin/sh 10 5 * * * /bin/sh /home/sysadmin/n8n/check-update.sh Purpose: Runs the check-update.sh script daily at 5:10 AM Uses /bin/sh as the shell environment 🧩 n8n Workflow Breakdown 1. Schedule Trigger 🕓 Purpose:** Triggers the workflow every day at 5:00 AM Node Type:** Schedule Trigger 2. Get the latest n8n version 🌐 Purpose:** Fetches the latest version of n8n from npm Endpoint:** https://registry.npmjs.org/n8n/latest Node Type:** HTTP Request 3. Get Local n8n version 🖥️ Purpose:** Retrieves the currently running n8n version Endpoint:** http://192.168.100.18:5678/rest/settings Node Type:** HTTP Request 4. If 🔍 Purpose:** Compares the local and latest versions Condition:** If not equal → update is needed 5. SSH1 🧾 Purpose:** Writes the result to a file on the host via SSH Logic:** echo "{{ $('If').params.conditions ? 'false' : 'true' }}" > check_update.txt Effect: Updates check_update.txt with "true" if an update is needed, "false" otherwise. 🛠️ Setting up Crontab on Ubuntu 1. Register the cron job with: crontab update_n8n.cron 2. Verify that your cron job is registered: crontab -l ✅ Result 5:00 AM** – n8n workflow checks versions and writes result to check_update.txt 5:10 AM** – Cron runs check-update.sh to respond to update flag
by Davide
This workflow allows you to send SMS messages globally using API without needing a physical phone number. 1. How It Works Consists of three main nodes: Manual Trigger**: The workflow starts when you click the "Test workflow" button in n8n. Set SMS Data**: This node defines the SMS message content and the recipient's phone number (including the international prefix). Send SMS**: This node sends the SMS using the ClickSend API. It uses HTTP Basic Authentication with your ClickSend credentials and sends a POST request to the ClickSend API endpoint with the message and recipient details. The workflow is simple and efficient, making it easy to automate SMS sending for various use cases, such as notifications, alerts, or marketing campaigns. 2. Set Up Steps To set up and use this workflow in n8n, follow these steps: Register on ClickSend: Go to ClickSend and create an account. Obtain your API Key and take advantage of the 2 € free credits provided. Set Up Basic Authentication in n8n: In the "Send SMS" node, configure the HTTP Basic Auth credentials: Username: Use the username you registered with on ClickSend. Password: Use the API Key provided by ClickSend. Configure the SMS Data: In the "Set SMS data" node, define: The message content (e.g., "Hi, this is my first message"). The recipient's phone number, including the international prefix (e.g., +39xxxxxxxx). Test the Workflow: Click the "Test workflow" button in n8n to trigger the workflow. The workflow will send the SMS using the ClickSend API, and you should receive the message on the specified phone number. Optional Customization: You can modify the workflow to dynamically set the message content or recipient phone number using data from other nodes or external sources. This workflow is a quick and efficient way to send SMS messages programmatically. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Harshil Agrawal
This is an example that gets the logo, icon, and information of a company and stores it in Airtbale. You can set the values that you want to store in the Set node. If you want to store the data in a different database (Google Sheet, Postgres, MongoDB, etc.) replace the Airtable node with that node. You can refer to the documentation to learn how to build this workflow from scratch.
by Harshil Agrawal
This example workflow allows you to create, update, and get a document in Google Cloud Firestore. The workflow uses the Set node to set the data, however, you might receive data from a different source. Add the node that receives the data before the Set node and set the values you want to insert in a document, in the Set node. Also, update the Columns/ attributes fields in the Google Cloud Firestore node.