by Cheng Siong Chin
How It Works Automates revenue data validation and intelligent anomaly detection with scheduled weekly processing. Fetches revenue data, applies dual OpenAI models for categorization and anomaly detection, identifies outliers or suspicious patterns, and synchronizes clean data with accounting software. Includes correction workflow through Connection Agent for data quality remediation. System generates compliance summaries and automatically sends reports to tax agents via Gmail. Designed for accounting firms, tax professionals, and finance teams requiring enterprise-grade data validation, fraud detection, and regulatory compliance without manual review bottlenecks. Setup Steps Configure OpenAI API keys for categorization and anomaly detection models Connect revenue data source and accounting software via Connection Agent Define anomaly detection thresholds and categorization Set email templates for tax agent communication Configure weekly schedule trigger timing Prerequisites OpenAI API key, accounting software credentials, revenue data source connectivity, Gmail account Use Cases Accounting firm multi-client processing, monthly/quarterly tax compliance Customization Adjust anomaly thresholds per business rules, customize categorization rules for industry standards Benefits Reduces data validation time by 85%, eliminates manual categorization errors, detects fraud patterns
by Matthew
Description This workflow automates the first line of customer support by intelligently drafting email replies. It bridges the gap between your CRM (Supabase), your technical documentation (Vector Store), and your inbox (Outlook). By analyzing the sender's identity and the technical content of the query, it ensures that every draft reply is personalized, accurate, and follows strict business rules. How It Works Trigger: Monitors a Microsoft Outlook inbox for new incoming messages. Contact Enrichment: Queries a Supabase contacts table using the sender's email to retrieve their name, organization, and department. Context Construction: A Code node prepares a "Chat Input" that includes the email body, sender metadata, and specific brand "Business Rules." AI Intelligence (RAG): An AI Agent (GPT-4o) analyzes the request. If technical details are required, the Agent uses a Supabase Vector Store tool to retrieve semantic matches from your product manuals. Draft Creation: The AI generates an HTML-formatted reply which is saved as a Draft in Outlook for manual review. Audit Trail: Logs the intent, urgency, and outcome into a Google Sheet for performance tracking. Requirements Microsoft Outlook:** Business/Office 365 account. Supabase:** * A table for contact lookups. A vector-enabled database containing document embeddings. OpenAI API:** For the GPT-4o model and embeddings. Google Sheets:** To maintain an execution summary log. Setup Instructions Import: Paste the workflow JSON into your n8n canvas. Credentials: Set up and select credentials for Outlook, OpenAI, Supabase, and Google Sheets. Placeholder Updates: Fetch Contact Info: Set the table name to your specific CRM table. Vector Store: Update the table name and query function to match your Supabase Vector Store setup. Log to Google Sheets: Replace the Document ID and Sheet Name with your specific spreadsheet details. Persona Tuning: Open the AI Support Agent node and the Build AI Prompt code node to replace the [YOUR_COMPANY] and [YOUR_NAME] placeholders with your actual brand identity. Customization Ideas Urgency Routing:** Add an If node after the Agent to send a Slack or Teams notification if the AI detects the urgency is "high." Attachments:** Modify the Outlook node to include specific PDF brochures based on the primary_product_codes identified by the AI. Human-in-the-loop:** Use n8n "Wait for Webhook" or "Manual Approval" nodes if you want to approve the draft within the n8n UI before it hits the Outlook drafts folder.
by Daniel Agrici
This workflow automates business intelligence. Submit one URL, and it scrapes the website, uses AI to perform a comprehensive analysis, and generates a professional report in Google Doc and PDF format. It's perfect for agencies, freelancers, and consultants who need to streamline client research or competitive analysis. How It Works The workflow is triggered by a form input, where you provide a single website URL. Scrape: It uses Firecrawl to scrape the sitemap and get the full content from the target website. Analyze: The main workflow calls a Tools Workflow (included below) which uses Google Gemini and Perplexity AI agents to analyze the scraped content and extract key business information. Generate & Deliver: All the extracted data is formatted and used to populate a template in Google Docs. The final report is saved to Google Drive and delivered via Gmail. What It Generates The final report is a comprehensive business analysis, including: Business Overview: A full company description. Target Audience Personas: Defines the demographic and psychographic profiles of ideal customers. Brand & UVP: Extracts the brand's personality matrix and its Unique Value Proposition (UVP). Customer Journey: Maps the typical customer journey from Awareness to Loyalty. Required Tools This workflow requires n8n and API keys/credentials for the following services: Firecrawl (for scraping) Perplexity (for AI analysis) Google Gemini (for AI analysis) Google Services (for Docs, Drive, and Gmail) ⚠️ Required: Tools Workflow This workflow will not work without its "Tools" sub-workflow. Please create a new, separate workflow in n8n, name it (e.g., "Business Analysis Tools"), and paste the following code into it. { "name": "Business Analysis Workflow Tools", "nodes": [ { "parameters": { "workflowInputs": { "values": [ { "name": "function" }, { "name": "keyword" }, { "name": "url" }, { "name": "location_code" }, { "name": "language_code" } ] } }, "type": "n8n-nodes-base.executeWorkflowTrigger", "typeVersion": 1.1, "position": [ -448, 800 ], "id": "e79e0605-f9ac-4166-894c-e5aa9bd75bac", "name": "When Executed by Another Workflow" }, { "parameters": { "rules": { "values": [ { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "8d7d3035-3a57-47ee-b1d1-dd7bfcab9114", "leftValue": "serp_search", "rightValue": "={{ $json.function }}", "operator": { "type": "string", "operation": "equals", "name": "filter.operator.equals" } } ], "combinator": "and" }, "renameOutput": true, "outputKey": "serp_search" }, { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "bb2c23eb-862d-4582-961e-5a8d8338842c", "leftValue": "ai_mode", "rightValue": "={{ $json.function }}", "operator": { "type": "string", "operation": "equals", "name": "filter.operator.equals" } } ], "combinator": "and" }, "renameOutput": true, "outputKey": "ai_mode" }, { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "4603eee1-3888-4e32-b3b9-4f299dfd6df3", "leftValue": "internal_links", "rightValue": "={{ $json.function }}", "operator": { "type": "string", "operation": "equals", "name": "filter.operator.equals" } } ], "combinator": "and" }, "renameOutput": true, "outputKey": "internal_links" } ] }, "options": {} }, "type": "n8n-nodes-base.switch", "typeVersion": 3.2, "position": [ -208, 784 ], "id": "72c37890-7054-48d8-a508-47ed981551d6", "name": "Switch" }, { "parameters": { "method": "POST", "url": "https://api.dataforseo.com/v3/serp/google/organic/live/advanced", "authentication": "genericCredentialType", "genericAuthType": "httpBasicAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "=[\n {\n \"keyword\": \"{{ $json.keyword.replace(/[:'\"\\\\/]/g, '') }}\",\n \"location_code\": {{ $json.location_code }},\n \"language_code\": \"{{ $json.language_code }}\",\n \"depth\": 10,\n \"group_organic_results\": true,\n \"load_async_ai_overview\": true,\n \"people_also_ask_click_depth\": 1\n }\n]", "options": { "redirect": { "redirect": { "followRedirects": false } } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 384, 512 ], "id": "6203f722-b590-4a25-8953-8753a44eb3cb", "name": "SERP Google", "credentials": { "httpBasicAuth": { "id": "n5o00CCWcmHFeI1p", "name": "DataForSEO" } } }, { "parameters": { "content": "## SERP Google", "height": 272, "width": 688, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 288, 432 ], "id": "81593217-034f-466d-9055-03ab6b2d7d08", "name": "Sticky Note3" }, { "parameters": { "assignments": { "assignments": [ { "id": "97ef7ee0-bc97-4089-bc37-c0545e28ed9f", "name": "platform", "value": "={{ $json.tasks[0].data.se }}", "type": "string" }, { "id": "9299e6bb-bd36-4691-bc6c-655795a6226e", "name": "type", "value": "={{ $json.tasks[0].data.se_type }}", "type": "string" }, { "id": "2dc26c8e-713c-4a59-a353-9d9259109e74", "name": "keyword", "value": "={{ $json.tasks[0].data.keyword }}", "type": "string" }, { "id": "84c9be31-8f1d-4a67-9d13-897910d7ec18", "name": "results", "value": "={{ $json.tasks[0].result }}", "type": "array" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 592, 512 ], "id": "a916551a-009b-403f-b02e-3951d54d2407", "name": "Prepare SERP output" }, { "parameters": { "content": "# Google Organic Search API\n\nThis API lets you retrieve real-time Google search results with a wide range of parameters and custom settings. \nThe response includes structured data for all available SERP features, along with a direct URL to the search results page. \n\n👉 Documentation\n", "height": 272, "width": 496, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 976, 432 ], "id": "87672b01-7477-4b43-9ccc-523ef8d91c64", "name": "Sticky Note17" }, { "parameters": { "method": "POST", "url": "https://api.dataforseo.com/v3/serp/google/ai_mode/live/advanced", "authentication": "genericCredentialType", "genericAuthType": "httpBasicAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "=[\n {\n \"keyword\": \"{{ $json.keyword }}\",\n \"location_code\": {{ $json.location_code }},\n \"language_code\": \"{{ $json.language_code }}\",\n \"device\": \"mobile\",\n \"os\": \"android\"\n }\n]", "options": { "redirect": { "redirect": {} } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 384, 800 ], "id": "fb0001c4-d590-45b3-a3d0-cac7174741d3", "name": "AI Mode", "credentials": { "httpBasicAuth": { "id": "n5o00CCWcmHFeI1p", "name": "DataForSEO" } } }, { "parameters": { "content": "## AI Mode", "height": 272, "width": 512, "color": 6 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 288, 720 ], "id": "2cea3312-31f8-4ff0-b385-5b76b836274c", "name": "Sticky Note11" }, { "parameters": { "assignments": { "assignments": [ { "id": "b822f458-ebf2-4a37-9906-b6a2606e6106", "name": "keyword", "value": "={{ $json.tasks[0].data.keyword }}", "type": "string" }, { "id": "10484675-b107-4157-bc7e-b942d8cdb5d2", "name": "result", "value": "={{ $json.tasks[0].result[0].items }}", "type": "array" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 592, 800 ], "id": "6b1e7239-ee2b-4457-8acb-17ce87415729", "name": "Prepare AI Mode Output" }, { "parameters": { "content": "# Google AI Mode API\n\nThis API provides AI-generated search result summaries and insights from Google. \nIt returns detailed explanations, overviews, and related information based on search queries, with parameters to customize the AI overview. \n\n👉 Documentation\n", "height": 272, "width": 496, "color": 6 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 800, 720 ], "id": "d761dc57-e35d-4052-a360-71170a155f7b", "name": "Sticky Note18" }, { "parameters": { "content": "## Input", "height": 384, "width": 544, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -528, 672 ], "id": "db90385e-f921-4a9c-89f3-53fc5825b207", "name": "Sticky Note" }, { "parameters": { "assignments": { "assignments": [ { "id": "b865f4a0-b4c3-4dde-bf18-3da933ab21af", "name": "platform", "value": "={{ $json.platform }}", "type": "string" }, { "id": "476e07ca-ccf6-43d4-acb4-4cc905464314", "name": "type", "value": "={{ $json.type }}", "type": "string" }, { "id": "f1a14eb8-9f10-4198-bbc7-17091532b38e", "name": "keyword", "value": "={{ $json.keyword }}", "type": "string" }, { "id": "181791a0-1d88-481c-8d98-a86242bb2135", "name": "results", "value": "={{ $json.results[0].items }}", "type": "array" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 800, 512 ], "id": "83fef061-5e0b-417c-b1f6-d34eb712fac6", "name": "Sort Results" }, { "parameters": { "content": "## Internal Links", "height": 272, "width": 272, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 288, 1024 ], "id": "9246601a-f133-4ca3-aac8-989cb45e6cd2", "name": "Sticky Note7" }, { "parameters": { "method": "POST", "url": "https://api.firecrawl.dev/v2/map", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "Authorization", "value": "Bearer your-firecrawl-apikey" } ] }, "sendBody": true, "specifyBody": "json", "jsonBody": "={\n \"url\": \"https://{{ $json.url }}\",\n \"limit\": 400,\n \"includeSubdomains\": false,\n \"sitemap\": \"include\"\n }", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 368, 1104 ], "id": "fd6a33ae-6fb3-4331-ab6a-994048659116", "name": "Get Internal Links" }, { "parameters": { "content": "# Firecrawl Map API\n\nThis endpoint maps a website from a single URL and returns the list of discovered URLs (titles and descriptions when available) — extremely fast and useful for selecting which pages to scrape or for quickly enumerating site links. (Firecrawl)\n\nIt supports a search parameter to find relevant pages inside a site, location/languages options to emulate country/language (uses proxies when available), and SDK + cURL examples in the docs,\n\n👉 Documentation\n\n[1]: https://docs.firecrawl.dev/features/map \"Map | Firecrawl\"\n", "height": 272, "width": 624, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 560, 1024 ], "id": "08457204-93ff-4586-a76e-03907118be3c", "name": "Sticky Note24" } ], "pinData": { "When Executed by Another Workflow": [ { "json": { "function": "serp_search", "keyword": "villanyszerelő Largo Florida", "url": null, "location_code": 2840, "language_code": "hu" } } ] }, "connections": { "When Executed by Another Workflow": { "main": [ [ { "node": "Switch", "type": "main", "index": 0 } ] ] }, "Switch": { "main": [ [ { "node": "SERP Google", "type": "main", "index": 0 } ], [ { "node": "AI Mode", "type": "main", "index": 0 } ], [ { "node": "Get Internal Links", "type": "main", "index": 0 } ] ] }, "SERP Google": { "main": [ [ { "node": "Prepare SERP output", "type": "main", "index": 0 } ] ] }, "AI Mode": { "main": [ [ { "node": "Prepare AI Mode Output", "type": "main", "index": 0 } ] ] }, "Prepare SERP output": { "main": [ [ { "node": "Sort Results", "type": "main", "index": 0 } ] ] }, "Sort Results": { "main": [ [] ] } }, "active": false, "settings": { "executionOrder": "v1" }, "versionId": "6fce16d1-aa28-4939-9c2d-930d11c1e17f", "meta": { "instanceId": "1ee7b11b3a4bb285563e32fdddf3fbac26379ada529b942ee7cda230735046a1" }, "id": "VjpOW2V2aNV9HpQJ", "tags": [] } `
by Muhammad Ali
Who’s it for Perfect for marketing agencies that manage multiple Facebook ad accounts and want to automate their weekly reporting. It eliminates manual data collection, analysis, and client updates by delivering a ready-to-share PDF report. How it works Every Monday, the workflow: Fetches the previous week’s campaign metrics from the Facebook Graph API. Formats and summarizes each campaign’s performance using OpenAI. Merges all summaries into one comprehensive report with insights and next-week suggestions. Converts the report into a polished PDF using any PDF generation API. Sends the final PDF report automatically to the client via Gmail. How to set up Connect your Facebook, OpenAI, and Gmail accounts in n8n. Add credentials for your preferred PDF generator (e.g., PDFCrowd, Placid, etc.). Open the “Set Node” to customize recipient email, date range, or report text. Requirements Facebook Graph API access token OpenAI API key Gmail credentials API key for your PDF generation service How to customize You can modify the trigger day, personalize the report design, or include additional analytics such as ROAS, CPC, or conversion data for deeper insights.
by Tsubasa Shukuwa
How it works This workflow automatically generates a new haiku poem every morning using AI, formats it in 5-7-5 structure, saves it to Google Docs, and sends it to your email inbox. Workflow steps: Schedule Trigger – Runs daily at 7:00 AM. AI Agent – Asks AI to output four words (kigo, noun, verb1, verb2) in JSON format. Code in JavaScript – Builds a 5-7-5 haiku using the AI-generated words and sets today’s title. Edit Fields – Prepares document fields (title and body) for Google Docs. Create a document – Creates a new Google Document for the haiku. Prepare Append – Collects the document ID and haiku text for appending. Update a document – Inserts the haiku into the existing Google Doc. Send a message – Sends the haiku of the day to your Gmail inbox. OpenRouter Chat Model – Connects the OpenRouter model used by the AI Agent. Setup steps Connect your OpenRouter API key as a credential (used in the AI Agent node). Update your Google Docs folder ID and Gmail account credentials. Change the email recipient address in the “Send a message” node. Adjust the Schedule Trigger time as you like. Run the workflow once to test and verify document creation and email delivery. Ideal for Writers and poets who want daily creative inspiration. Individuals seeking a fun morning ritual. Educators demonstrating AI text generation in a practical example. ⚙️ Note: Each node includes an English Sticky Note above it for clarity and documentation.
by Yaron Been
Analyze competitor Instagram engagement by scraping profiles with Bright Data and scoring them with GPT-5.4. This workflow reads competitor Instagram URLs from a Google Sheet, scrapes their profile data using the Bright Data Instagram Profiles dataset, validates the API response, then sends the data to GPT-5.4 for engagement scoring. Each competitor is scored on follower growth, engagement rate quality, content consistency, and audience authenticity (0-25 each, total 0-100). High-scoring competitors trigger email alerts. How it works: Schedule trigger runs the workflow daily. Reads competitor URLs from the 'competitor_accounts' sheet. Sends each URL to Bright Data's Instagram Profiles API. Validates the API response (handles async/error cases). GPT-5.4 analyzes profile metrics and scores engagement quality. Parses the structured JSON response. Filters by AI confidence (>= 0.7 threshold). Routes high scorers (engagement_score >= 75) to 'top_performers' with Gmail alert. Routes normal results to 'engagement_analysis'. Low confidence results go to 'low_confidence_engagement' for review. Setup: Create a Google Sheet with a 'competitor_accounts' tab containing columns: competitor_name, url, our_industry. Add output tabs: engagement_analysis, top_performers, low_confidence_engagement. Configure all credentials (Bright Data API, OpenAI, Google Sheets, Gmail). Requirements: Bright Data API account (~$0.01-0.03 per profile scrape). OpenAI API account (GPT-5.4 costs ~$0.003-0.008 per call). Google Sheets OAuth2 credentials. Gmail OAuth2 credentials. Notes: Add competitors one per row with their full Instagram profile URL. The engagement_score threshold of 75 can be adjusted in the IF node. Low confidence results may indicate incomplete profile data from Bright Data.
by Razvan Bara
How it works: This n8n workflow automates communication with meeting invitees to decrease no-show rates by sending timely email and WhatsApp reminders, and a clarification request if more information is needed to prepare the meeting. Step-by-step: The workflow is triggered by an incoming email notification from Calendly about a newly scheduled meeting. It uses AI to extract key meeting data from the email content. It checks if the invitee didn't provide sufficient information, and, if there is a need for more information, sends a clarification request email. It calculates the waiting time required for the 24-hour and 1-hour reminders. It uses an If node to determine the correct waiting path based on the meeting time. It uses Wait nodes for timing the reminders correctly. Finally, it sends a reminder email and a WhatsApp reminder before the meeting. Customization Options: Replace Google Gemini with your preferred LLM model (though Gemini works on the free tier). Tailor email and WhatsApp messages to speak your brand's language. Replace Twillio node to WhatsApp node to be a completly free usage flow.
by RamK
Description This workflow acts as an autonomous Tier 2 Customer Support Agent. It doesn't just answer questions; it manages the entire lifecycle of a support ticket—from triage to resolution with Guardrails to deal with prompt injections, PII information blocking, etc. enabling such threats are blocked and logged in Airtable. Unlike standard auto-responders, this system uses a "Master Orchestrator" architecture to coordinate specialized sub-agents. It creates a safe, human-like support experience by combining RAG (Knowledge Base retrieval) with a safety-first state machine. How it works The workflow operates on a strict "Hub and Spoke" model managed by a Master Orchestrator: Security Guardrails (The Gatekeeper) Before the AI even sees the message, a hard-coded security layer scans for Prompt Injection attacks, Profanity, and PII. If a threat is detected, the workflow locks down, logs the incident to Airtable, and stops execution immediately. Orchestration & Triage Once the message passes safety checks, the Master Orchestrator takes over. Its first action is to call the Ticket Analyser Agent. Analysis & Scoring The Ticket Analyser classifies the issue (e.g., "Technical," "Billing") and scores the customer's sentiment. It returns a priority_score to the Master Orchestrator. The Decision Logic (Circuit Breaker) The Master Orchestrator evaluates the score: Escalation: If the customer is "Furious" or the score is high, it bypasses AI drafting and immediately alerts a human manager via Slack. Resolution Path: If the request is standard, it proceeds to the next steps. Knowledge Retrieval (RAG) The Orchestrator calls the Knowledge Worker Agent. This agent searches your Supabase vector store to find specific, verified company policies or troubleshooting steps relevant to the user's issue. Resolution Drafting Armed with the analysis and the retrieved facts, the Orchestrator calls the Resolution Agent. This agent synthesizes a polite, professional email draft. Final Execution The Master Orchestrator reviews the final draft and sends the email via Gmail. Set up This is multi-agent system. Please follow these steps to configure the environment: ⚠️ IMPORTANT: This template contains the Main Orchestrator AND the Sub-Agents in a single view. You must separate them for the system to function: Separate the Agents: Copy the nodes for each sub-agent (Ticket Analyser, Knowledge Worker, Resolution Agent) into their own new workflows. Link the Tools: In the Main Orchestrator workflow, open the "Call [Agent Name]" tool nodes and update the Workflow ID to point to the new workflows you just created. Configure Credentials: You will need credentials for Gmail (or your preferred email provider), Slack, Airtable, Supabase (for the vector store), and Google Gemini (or OpenAI). Initialize the Knowledge Base: Open the "One time Document Loader" section in the workflow. Upload your policy document (PDF/Text) to the "Upload your file here" node. Run this branch once to vectorize your documents into Supabase. Setup Airtable: Create a simple table with columns for Sender Email, Incident Type, and Flagged Content to log security threats caught by the guardrails. Customize the Trigger: Update the Gmail Trigger node to watch for your specific support alias (e.g., support@yourdomain.com) and ensure it only picks up "Unread" emails. Adjust the Escalation Sensitivity: In the Orchestrator Agent node, you can tweak the "Phase 2" logic to change what triggers a human hand-off (currently set to priority_score >= 0.9). Good to go!
by Toshiya Minami
Here’s a clean, English-only template description you can paste into the n8n “Description” field. Overview This workflow analyzes customer survey responses, groups them by sentiment (positive / neutral / negative), generates themes and insights with an AI agent, and delivers a consolidated report to your destinations (Google Sheets, Slack). It runs on a daily schedule and uses batch-based AI analysis for accuracy. Flow: Schedule → Fetch from Sheets → Group & batch (Code) → AI analysis → Aggregate → Save/Notify (Sheets, Slack) What You’ll Need A survey data source (Google Sheets recommended) AI model credentials (e.g., OpenAI or OpenRouter) Optional destinations: Google Sheets (summary sheet), Slack channel Setup Data source (Google Sheets) In Get Survey Responses, replace YOUR_SHEET_ID and YOUR_SHEET_NAME with your sheet details. Ensure the sheet includes columns like: 満足度 (Rating), 自由記述コメント (Comment), 回答日時 (Timestamp). AI model Add credentials to your preferred LLM node (OpenAI/OpenRouter). Keep the prompt’s JSON-only requirement so the structured parser can consume it reliably. Destinations Save to Sheet: set your output documentId / sheetName. Slack: set the target channelId on the Slack node. How It Works Daily Schedule Trigger — starts the workflow at your chosen time. Get Survey Responses (Sheets) — reads survey data. Group & Prepare Data (Code) — classifies by rating (>=4: positive, =3: neutral, <3: negative) and creates batches (max 50 per batch). Loop Over Batches — feeds each sentiment batch to the AI separately for cleaner signals. Analyze Survey Batch (AI Agent) — returns structured JSON: themes, insights, recommendations. Add Metadata (Code) — attaches original sentiment and item counts to each AI result. Aggregate Results (Code) — merges all batches; outputs Top Themes, Key Insights, Priority Recommendations, and an Executive Summary. Save to Sheet / Slack — appends the summary to a sheet and posts highlights to Slack. Data Assumptions (Columns) Your source should include at least: 満足度 (Rating) — integer 1–5 自由記述コメント (Comment) — string 回答日時 (Timestamp) — ISO string or date Outputs Consolidated summary** containing: Top themes (with example quotes) Key insights Priority recommendations Executive summary Destinations**: Google Sheets (one row per run) and Slack (high-level highlights) Customize Adjust sentiment thresholds (e.g., require >=5 for positive) or batch size (default 50) in the Code node. Tailor the AI prompt or the output JSON schema to your domain. Add more outputs (CSV export, database insert, additional channels) in parallel after the Aggregate step. Before You Run (Checklist) [ ] Add credentials for Sheets / AI / Slack in Credentials [ ] Update documentId, sheetName, and Slack channelId [ ] Confirm your column names match the Code node references [ ] Verify schedule time and timezone (e.g., Asia/Tokyo) Troubleshooting Parser errors on AI output: ensure the model response is **JSON-only; reduce temperature or simplify schema if needed. Only some batches run**: check batch size in Loop and ensure each sentiment bucket actually contains responses. No output to Sheets/Slack**: verify credentials, IDs, and required fields; confirm permissions. Security & Template Notes Do not include credentials in the template file. Users add their own after import. Use Sticky Notes to document Overview, Setup, Processing Logic, and Output choices. This template already includes guideline-friendly notes.
by Avkash Kakdiya
How it works This workflow monitors incoming Gmail messages for refund requests and uses AI to extract the order ID and reason. It then retrieves order details from Shopify to evaluate refund eligibility. Based on the order status, it automatically approves or routes the request for manual review. Customers and internal teams are notified accordingly, and all actions are logged in Google Sheets. Step-by-step Capture refund requests from email** Gmail Trigger – Detects unread emails with “Refund Request” in the subject. AI Agent2 – Extracts order ID and reason using AI. Groq Chat Model – Provides the language model used by the AI agent. Code in JavaScript – Converts AI output into structured JSON. Fetch order details from Shopify** Get an order – Retrieves order information using the extracted order ID. Evaluate refund eligibility** If – Checks whether the order status is “Delivered” to allow auto-approval. Handle responses and logging** Send a message to customer – Sends approval confirmation if eligible. Send a message to the team – Notifies team for manual review cases. Send a message to customer for "Pending" Status – Updates customer about manual review. Logs to Sheet – Records all refund actions and details in Google Sheets. Why use this? Automates repetitive refund handling tasks and reduces workload Improves customer experience with faster response times Ensures consistent decision-making based on order status Keeps a centralized log for auditing and reporting Easily extendable with additional validation rules or integrations
by Tsubasa Shukuwa
How it works This workflow automatically fetches the latest public grant information from the Ministry of Health, Labour and Welfare (MHLW) RSS feed. It uses AI to summarize and structure each grant post into a clear format, stores the results in Google Sheets, and sends a formatted HTML summary via Gmail. Workflow summary Schedule Trigger – Runs the flow daily or weekly. RSS Feed Reader – Fetches the latest MHLW news and updates. Text Classifier (AI) – Categorizes the item as “Grant/Subsidy”, “Labor-related”, or “Other”. AI Agent – Extracts structured data such as title, summary, deadline, amount, target, and URL. Google Sheets – Appends or updates the database using the grant title as the key. Code Node – Builds an HTML report summarizing new entries. Gmail – Sends a daily digest email to your inbox. Setup steps Add your OpenRouter API key as a credential (used in the AI Agent). Replace the Google Sheets ID and sheet name with your own. Update the recipient email address in the Gmail node. Adjust the schedule trigger to match your preferred frequency. (Optional) Add more RSS feeds if you want to monitor other sources. Ideal for Consultants or administrators tracking subsidy and grant programs Small business owners who want automatic updates Anyone who wants a daily AI-summarized government grant digest ⚙️ Note: Detailed explanations and setup hints are included as Sticky Notes above each node inside the workflow.
by Rahul Joshi
Description Automatically consolidate Zendesk and Freshdesk ticket data into a unified performance dashboard with KPI calculations, Google Sheets logging, real-time Slack alerts, and weekly Gmail email reports. Provides complete visibility into support operations, SLA compliance, and customer satisfaction across multiple platforms. 📊💬📧 What This Template Does Runs weekly on schedule to fetch tickets from both Zendesk and Freshdesk. ⏰ Merges ticket data into a standardized JSON structure with normalized priorities, statuses, and channels. 🔄 Logs all tickets and metadata into Google Sheets for audit-ready performance tracking. 📑 Calculates advanced KPIs including resolution rates, SLA breaches, CSAT score estimation, urgent ticket rates, and performance grading. 📊 Evaluates alert conditions (e.g., high SLA breach, low CSAT, backlog risk). 🚨 Sends formatted Slack alerts with performance grades, key metrics, and recommendations. 💬 Generates corporate-style HTML weekly reports and delivers them via Gmail. 📧 Key Benefits Unifies Zendesk and Freshdesk data into one consistent reporting flow. 🌐 Provides actionable KPIs for SLA monitoring, customer satisfaction, and backlog health. ⏱️ Ensures leadership visibility with Google Sheets logs and professional email reports. 🧾 Alerts the support team instantly on Slack when performance drops. 🚨 Reduces manual data analysis with automated grading and recommendations. 🤖 Features Multi-Platform Ticket Integration – Fetches tickets from Zendesk and Freshdesk. 🎫 Data Normalization – Cleans descriptions, maps priorities/statuses, and detects escalations. 🧼 Google Sheets Logging – Tracks tickets with IDs, URLs, tags, timestamps, and metadata. 📈 KPI Calculation Engine – Computes SLA breach rate, resolution rate, CSAT, escalation %, and more. 🧮 Performance Grading – Grades support performance (A–D) with detailed descriptions. 🏅 Slack Alerts – Notifies with active alerts, recommendations, and emoji-based health signals. 📢 Weekly Gmail Reports – Delivers branded HTML reports for management and audits. ✨ Requirements n8n instance (cloud or self-hosted). Zendesk API credentials with ticket read access. Freshdesk API credentials with ticket read access. Google Sheets OAuth2 credentials with spreadsheet write permissions. Slack Bot API credentials with posting permissions. Gmail OAuth2 credentials with send email permissions. Pre-configured Google Sheet for KPI logging. Target Audience Support managers overseeing multi-platform ticketing systems. 👩💻 Customer success teams monitoring SLA compliance and CSAT health. 🚀 SMBs running Zendesk + Freshdesk who need unified dashboards. 🏢 Remote/global support teams needing automated KPI visibility. 🌐 Executives requiring weekly performance reports and recommendations. 📈 Step-by-Step Setup Instructions Connect Zendesk, Freshdesk, Google Sheets, Slack, and Gmail credentials in n8n. 🔑 Update the Google Sheet ID in the “Log KPIs in Google Sheets” node. 📊 Configure Slack channel ID for alerts (default: zendesk-churn-alerts). 💬 Replace {Enter Your Email} in the Gmail node with your recipient email. 📧 Adjust thresholds in the KPI calculation node (default: 4h response, 24h resolution). ⏱️ Test with sample tickets to validate Sheets logging, Slack alerts, and Gmail reports. ✅ Deploy on schedule (default: weekly at 8 PM) for continuous tracking. 🗓️