by Dele Tosh
Quick Overview This workflow runs hourly to detect newly opened matters in Clio, create and organize a corresponding Google Drive folder structure, copy and merge Google Docs templates, create matter tasks and calendar deadlines in Clio, log the setup via an n8n sub-workflow, and notify staff by email. How it works Runs every hour on a schedule and fetches all open matters from the Clio API. Deduplicates matters using n8n workflow static data so only newly seen matter IDs are processed. For each new matter, searches Google Drive for an existing matter folder under a configured parent folder and creates the root folder if it does not exist. Creates a standard set of subfolders in the matter’s Google Drive folder and stores the folder link for reporting. Looks up practice-area-specific configuration, copies the configured Google Docs templates into the matter folder, and replaces merge tags using the Google Docs API. Creates a practice-area-specific task checklist in Clio with due dates calculated from the matter open date. Calculates intake deadlines (calendar-day or business-day offsets) and creates all-day Clio calendar entries for each configured deadline rule. Builds a setup summary, logs it by executing a separate “guardrail” workflow, and sends a styled HTML email to staff with links to the Drive folder and generated documents. Setup Add a Clio OAuth2 credential and set the CLIO_BASE_URL variable to your Clio domain so the workflow can read matters and create tasks and calendar entries. Add a Google Drive OAuth2 credential with Drive and Google Docs API access, and set GENERATED_DOCS_FOLDER_ID to the parent Google Drive folder where matter folders should be created. Configure practice-area mappings for document templates, task lists, and deadline rules, and set the required template document ID variables (for example TEMPLATE_MATTER_CHECKLIST_DOC_ID and TEMPLATE_CASE_PLAN_DOC_ID). Create an SMTP email credential and set FIRM_FROM_EMAIL plus FIRM_STAFF_EMAIL (or FIRM_EMAIL) so staff receive the completion summary. Set GUARDRAIL_WORKFLOW_ID to the ID of the logging/compliance sub-workflow that records the summary to your audit destination. Review the schedule trigger cron expression and adjust the polling frequency to match how quickly you want new matters to be set up.
by iamvaar
Quick overview Youtube Video: https://youtu.be/YTDMFdz7-aw This workflow turns Telegram messages into scheduled Google Calendar appointments using a Google Gemini AI agent, records bookings in Google Sheets, and runs every 15 minutes to send 24-hour and 1-hour Telegram reminders while logging sent reminders to avoid duplicates. How it works Triggers when a new Telegram message is received and extracts the chat ID and message text. Uses a Google Gemini AI agent to parse the message into structured appointment details (title, start/end time, location, and notes). Validates the parsed data, defaults missing end times to 60 minutes, and asks the user on Telegram for clarification if the date or time is missing or ambiguous. Creates the appointment as an event in Google Calendar when all required details are available. Appends the appointment record (including event ID and chat ID) to a Google Sheets “Appointments” sheet and sends a confirmation message via Telegram. Runs every 15 minutes to fetch upcoming Google Calendar events in the next 25 hours and selects events that are roughly 24 hours or 1 hour away. Checks a Google Sheets “ReminderLog” sheet to see whether a reminder was already sent for that event/time window, then sends the Telegram reminder and logs the reminder to prevent duplicates. Setup Connect Telegram credentials and configure your Telegram bot so it can receive messages, then activate the workflow to register the trigger. Connect Google Calendar OAuth2 credentials and replace ENTER-YOUR-CALENDER-ID-HERE with your target calendar ID in both the event creation and event lookup steps. Connect Google Sheets OAuth2 credentials and ensure your spreadsheet contains an “Appointments” sheet with columns like eventId, chatId, title, start, end, location, status, and createdAt. Create a “ReminderLog” sheet with columns like reminderKey, eventId, reminderType, and sentAt so the workflow can track which reminders were sent. Add Google Gemini (Google PaLM) credentials for the language model used by the appointment parsing agent. Adjust the schedule interval and reminder windows in the reminder-checking logic if you want different timing or frequency.
by Incrementors
Quick overview This workflow runs every Monday to pull weekly performance data from Google Analytics 4, Google Search Console, and SegMetrics, uses OpenAI to generate an executive marketing brief and audio narration, and posts the formatted summary with an MP3 attachment to a specified Slack channel. How it works Runs every Monday morning on a schedule and loads client settings (properties, API key, Slack channel, and date ranges). Fetches current-week and previous-week metrics from Google Analytics 4, plus channel and UTM campaign breakdowns. Queries the Google Search Console Search Analytics API for current vs. previous week performance, top queries, and top pages. Requests SegMetrics reports for revenue, leads, and ad spend for the current week and previous week. Validates GA4 UTM tagging completeness and calculates a UTM health score with the most common issues. Aggregates all sources, calculates week-over-week changes, and sends the combined dataset to OpenAI to generate a structured JSON weekly brief. Formats the AI brief into Slack-ready text and an audio script, converts the script to an MP3 using OpenAI text-to-speech, and uploads the file to Slack with the summary as the message comment. Setup Add credentials for Google Analytics (GA4 OAuth), Google (OAuth for the Search Console API HTTP requests), OpenAI, and Slack (OAuth2 with permission to upload files). Update the client placeholders in the configuration step, including GA4 property ID, Search Console property (site URL or sc-domain), SegMetrics account ID and API key, client name/website, and the target Slack channel ID. Invite/authorize the Slack app to the target channel so it can post messages and upload the MP3 attachment.
by Cheng Siong Chin
How It Works This workflow automates predictive maintenance for vehicle fleets by combining real-time telemetry analysis with historical pattern recognition to identify potential failures before they occur. Designed for fleet managers, maintenance supervisors, and transportation operations teams, it solves the critical challenge of preventing unexpected vehicle breakdowns while optimizing maintenance scheduling and resource allocation. The system triggers on schedule, fetches current vehicle telemetry data alongside historical maintenance records, merges datasets for comprehensive analysis, then deploys specialized AI agents using Anthropic's Claude to detect anomalies and prioritize maintenance interventions. The workflow calculates urgency levels using machine learning models and business rules, formats findings into standardized maintenance records and urgent alerts, generates audit logs for compliance tracking, and routes notifications to appropriate maintenance teams based on severity. Setup Steps Configure Schedule Trigger with desired monitoring frequency for fleet checks Set up API credentials for Fetch Real-Time Vehicle Telemetry node with fleet management system Configure Fetch Historical Vehicle Data node with maintenance database API access Connect Anthropic API credentials for both Anomaly Detection and Maintenance Prioritization agents Update Anomaly Detection Model with your fleet's baseline performance parameters Customize UL Calculation Tool and Maintenance Prioritization Output Parser Prerequisites Active Anthropic API account, fleet telemetry system with API access, historical maintenance database Use Cases Commercial fleet preventive maintenance, vehicle health monitoring, breakdown prediction Customization Modify anomaly detection thresholds for vehicle types, adjust prioritization algorithms for operational priorities Benefits Reduces unexpected breakdowns by 80%, decreases maintenance costs through predictive scheduling
by Kevin Yu
Quick overview This workflow watches a Google Drive inbox folder for new files, posts an approval card with buttons to a Discord channel, and moves the file to an approved or rework folder based on the response, while logging each decision to Google Sheets. How it works Polls a specified Google Drive folder every 5 minutes and triggers when a new file is created. Loads review settings (Discord server/channel IDs, approved/rejected folder IDs, and logging sheet details) and formats the file metadata into a Discord-ready review card with a preview link. Posts the review card to a Discord channel with Approve and Send back buttons and waits up to the configured decision window for a response. Routes the outcome based on the button response, moving the file in Google Drive to the approved folder or the rejected/rework folder, or leaving it in the inbox if no one responds. Resolves the final status (including move failures) and appends a decision record to a Google Sheets log. Posts a receipt message back to the Discord review channel and continues to the next file. Setup Add Google Drive OAuth2 credentials and provide the inbox folder ID plus destination folder IDs for approved and rejected/rework files. Create a Discord application/bot, add Discord bot credentials in n8n, invite the bot to your server, and set the guild ID and review channel ID. Add Google Sheets OAuth2 credentials, create a decision log spreadsheet with the required columns, and set the sheet URL and tab name in the settings. Ensure your n8n instance is reachable via its public webhook URL (and WEBHOOK_URL is set correctly) so Discord button interactions can be completed. Review and adjust the decision window (hours) and polling interval to match your operational needs, then test by uploading a file to the inbox. Requirements A Discord server you can add a bot to with Send Messages on the review channel. No privileged intents, because this never reads message content or the member list. Three Google Drive folders: an inbox to watch, an approved destination and a rework destination. A Google account with a spreadsheet for the decision log. n8n with Discord Bot API, Google Drive and Google Sheets credentials. No paid plan, no AI model, no third-party service. Customization Set driveId in the settings node to a shared drive ID if your deliverables do not live in My Drive. It ships as My Drive. Rename the Approve and Send back button labels freely. The routing keys on the returned boolean, not on the wording. Point both destination folders at the same folder if you want a decision log without the filing. Extend the review card in the formatting step to carry anything Drive returns, such as the owner or the last editor. Additional info The detail worth knowing before you rely on this is what happens when nobody answers. The routing has three outcomes rather than two: an expired decision window leaves the file in the inbox and logs it as No response, so a Friday evening deliverable is never quietly demoted to the rework folder over the weekend and the log never records a rejection that no human made. The two Drive move nodes are likewise caught per file instead of being left to stop the run, so one file that Drive refuses cannot strand the rest of the batch behind it, and a failed move is logged with the error while the file stays put. Between those two, every row in the decision sheet is either something a person actually decided or an error you can act on, which is what makes the log usable as an audit trail rather than just a record of executions.
by David S
Quick overview This scheduled workflow scrapes BizQuest listings via an Apify API, deduplicates them against a Google Sheet, scores buyer fit with Anthropic Claude, and for high-fit deals generates broker outreach copy and sends a formatted alert to Slack while logging all scored listings to Google Sheets. How it works Runs daily on a cron schedule (default 5:00 AM). Sends a POST request to the Apify BizQuest scraper task using your buy-box filters and normalizes the returned listings, estimating SDE as 10% of revenue when missing. Sorts listings by SDE, keeps the top 100, and processes them one by one. Checks Google Sheets for the listing link and skips any listing that already exists. Uses Anthropic Claude (Haiku) to score buyer fit (1–5) and output a short rationale and confidence level for each new listing. Appends low-scoring deals (1–3) to Google Sheets for audit tracking. For deals scoring 4–5, uses Anthropic Claude (Sonnet) to draft a broker outreach message, appends the enriched row to Google Sheets, and posts a Slack message with the deal details and copy-ready outreach text. Setup Add credentials for Google Sheets (OAuth2), Slack (OAuth2), and Anthropic. Create a Google Sheet with matching columns (including Link, Fit Score, Fit Rationale, Fit Confidence, and Broker Message) and replace YOUR_GOOGLE_SHEET_ID in both Google Sheets nodes. Update the Apify task API URL in the HTTP request node and ensure it points to your BizQuest scraper task. Edit the buy-box fields (buyBox text, keyword, cashFlowMin, priceMax, listingAgeDays) and set the target Slack user/channel ID for alerts.
by vinci-king-01
Meeting Notes Distributor – Mailchimp and MongoDB This workflow automatically converts raw meeting recordings or written notes into concise summaries, stores them in MongoDB for future reference, and distributes the summaries to all meeting participants through Mailchimp. It is ideal for teams that want to keep everyone aligned without manual copy-and-paste or email chains. Pre-conditions/Requirements Prerequisites n8n instance (self-hosted or cloud) Audio transcription service or written notes available via HTTP endpoint MongoDB database (cloud or self-hosted) Mailchimp account with an existing Audience list Required Credentials MongoDB** – Connection string with insert permission Mailchimp API Key** – To send campaigns (Optional) HTTP Service Auth** – If your transcription/notes endpoint is secured Specific Setup Requirements | Component | Example Value | Notes | |------------------|--------------------------------------------|-----------------------------------------------------| | MongoDB Database | meeting_notes | Database in which summaries will be stored | | Collection Name | summaries | Collection automatically created if it doesn’t exist| | Mailchimp List | Meeting Participants | Audience list containing participant email addresses| | Notes Endpoint | https://example.com/api/meetings/{id} | Returns raw transcript or note text (JSON) | How it works This workflow automatically converts raw meeting recordings or written notes into concise summaries, stores them in MongoDB for future reference, and distributes the summaries to all meeting participants through Mailchimp. It is ideal for teams that want to keep everyone aligned without manual copy-and-paste or email chains. Key Steps: Schedule Trigger**: Fires daily (or on-demand) to check for new meeting notes. HTTP Request**: Downloads raw notes or transcript from your endpoint. Code Node**: Uses an AI or custom function to generate a concise summary. If Node**: Skips processing if the summary already exists in MongoDB. MongoDB**: Inserts the new summary document. Split in Batches**: Splits participants into Mailchimp-friendly batch sizes. Mailchimp**: Sends personalized summary emails to each participant. Wait**: Ensures rate limits are respected between Mailchimp calls. Merge**: Consolidates success/failure results for logging or alerting. Set up steps Setup Time: 15-25 minutes Clone the workflow: Import or copy the JSON into your n8n instance. Configure Schedule Trigger: Set the cron expression (e.g., every weekday at 18:00). Set HTTP Request URL: Replace placeholder with your transcription/notes endpoint. Add auth headers if needed. Add MongoDB Credentials: Enter your connection string in the MongoDB node. Customize Summary Logic: Open the Code node to tweak summarization length, language, or model. Mailchimp Credentials: Supply your API key and select the correct Audience list. Map Email Fields: Ensure participant emails are supplied from transcription metadata or external source. Test Run: Execute once manually to verify MongoDB insert and email delivery. Activate Workflow: Enable the workflow so it runs on its defined schedule. Node Descriptions Core Workflow Nodes: Schedule Trigger** – Initiates the workflow at predefined intervals. HTTP Request** – Retrieves the latest meeting data (transcript or notes). Code** – Generates a summarized version of the meeting content. If** – Checks MongoDB for duplicates to avoid re-sending. MongoDB** – Stores finalized summaries for archival and audit. SplitInBatches** – Breaks participant list into manageable chunks. Mailchimp** – Sends summary emails via campaigns or transactional messages. Wait** – Pauses between batches to honor Mailchimp rate limits. Merge** – Aggregates success/failure responses for logging. Data Flow: Schedule Trigger → HTTP Request → Code → If If summary is new: MongoDB → SplitInBatches → Mailchimp → Wait Merge collates all results Customization Examples 1. Change Summary Length // Inside the Code Node const rawText = items[0].json.text; const maxSentences = 5; // adjust to 3, 7, etc. items[0].json.summary = summarize(rawText, maxSentences); return items; 2. Personalize Mailchimp Subject // In the Set node before Mailchimp items[0].json.subject = Recap: ${items[0].json.meetingTitle} – ${new Date().toLocaleDateString()}; return items; Data Output Format The workflow outputs structured JSON data: { "meetingId": "abc123", "meetingTitle": "Quarterly Planning", "summary": "Key decisions on roadmap, budget approvals...", "participants": [ "alice@example.com", "bob@example.com" ], "mongoInsertId": "65d9278fa01e3f94b1234567", "mailchimpBatchIds": ["2024-01-01T12:00:00Z#1", "2024-01-01T12:01:00Z#2"] } Troubleshooting Common Issues Mailchimp rate-limit errors – Increase Wait node delay or reduce batch size. Duplicate summaries – Ensure the If node correctly queries MongoDB using meeting ID as a unique key. Performance Tips Keep batch sizes under 500 to stay well within Mailchimp limits. Offload AI summarization to external services if Code node execution time is high. Pro Tips: Store full transcripts in MongoDB GridFS for future reference. Use environment variables in n8n for all API keys to simplify workflow export/import. Add a notifier (e.g., Slack node) after Merge to alert admins on failures. This is a community template provided “as-is” without warranty. Always validate the workflow in a test environment before using it in production.
by Dele Tosh
Quick Overview This workflow runs two webhooks to perform name-based conflict checks by fuzzy-matching submitted party names against Clio contacts and matters, logging each check in Google Sheets, emailing a formatted report with Clear/Escalate links, and recording the selected decision back to the audit log. How it works Receives a conflict check request via a POST webhook, parses the submitted client/adverse party names, and rejects the request if no names are provided. Fetches up to 200 contacts and up to 200 matters from Clio using the configured base URL. Fuzzy-matches each submitted name against Clio contact names and matter client names/descriptions using a configurable threshold and flags whether any potential conflicts are found. Generates a unique conflict check ID, appends a pending-review audit row to a Google Sheets “conflict check” sheet, and builds a styled email report with decision links. Sends the conflict report email (and triggers a separate compliance/audit workflow), then responds to the original webhook with the check ID. Receives a conflict decision via a GET webhook from the email link, validates the check ID/action, updates the matching Google Sheets audit row with the decision and timestamp, and returns a confirmation or error page. Setup Create a Clio OAuth2 credential in n8n, set CLIO_BASE_URL, and ensure the contact/matter endpoints are reachable for your tenant. Add Google Sheets credentials, set CONFLICT_LOG_SHEET_ID, and create a sheet named “conflict check” with columns matching the workflow’s appended fields (for example: status, check_id, decision, checked_at, decided_at, names_checked, matter_description, requested_by_email, matches_found_count). Add an email-sending credential, set FIRM_FROM_EMAIL (and optionally FIRM_EMAIL/FIRM_NAME), and confirm the recipient logic matches your internal routing. Activate the workflow and copy the Production URL of the decision webhook into CONFLICT_DECISION_WEBHOOK_URL so the email links resolve correctly. Configure the source system to POST to the request webhook path (conflict-check-request) with new_client_name, adverse_party_names, matter_description, and requested_by_email, and optionally set CONFLICT_MATCH_THRESHOLD and GUARDRAIL_WORKFLOW_ID.
by Rahul Joshi
Quick overview This workflow runs daily to audit rows in a Google Sheets ComplianceRecords tab using two OpenAI checks, automatically marking compliant items, fixing safe issues, and escalating unresolved violations to Telegram, while logging every outcome to an AuditLog sheet and posting errors to Slack. How it works Runs every 24 hours on a schedule trigger. Reads all records from the Google Sheets ComplianceRecords worksheet. Sends each record to OpenAI (GPT-4o-mini) for a first-pass compliance screen and parses the JSON result. Marks records with no violations as Compliant and routes flagged records to a second OpenAI (GPT-4o-mini) review to classify them as false positives, auto-fixable issues, or true violations. Updates Google Sheets with the corrected value for auto-fixable records, sends a Telegram message to the compliance team for records requiring human review, and labels false positives as resolved. Merges all outcomes and appends a timestamped entry to the Google Sheets AuditLog worksheet, while sending Slack alerts if the AI steps or overall workflow error. Setup Add OpenAI credentials for both OpenAI nodes and ensure the selected model (gpt-4o-mini) is available in your account. Add Google Sheets OAuth2 credentials, create a spreadsheet with ComplianceRecords and AuditLog tabs, and replace YOUR_GOOGLE_SHEET_ID in all Google Sheets nodes. Add Telegram Bot credentials and replace YOUR_COMPLIANCE_TEAM_CHAT_ID with the destination chat ID for escalations. Add Slack OAuth2 credentials and replace YOUR_SLACK_CHANNEL_ID in all Slack alert nodes. Confirm ComplianceRecords includes the expected columns (for example RecordID, RecordType, DataField, Value, Description, Department, Status) and adjust the schedule interval if you want a different audit frequency.
by Melbin Francis
Quick overview This workflow handles GDPR access or erasure requests by taking an email identifier, searching multiple connected systems (demo n8n Data Tables by default), recording per-system evidence, and generating a Groq-written plain-English summary plus a case register entry with a response deadline. How it works Receives a GDPR request either from another n8n workflow input or from a built-in form with a subject email and request type (Access or Erasure). Applies a policy guard (including a minimum identifier length) and refuses to search if the identifier is too short to safely match. Searches three demo systems stored as n8n Data Tables (CRM contacts, support tickets, and a mailing list) while continuing even if a system errors. Compiles per-system results, including whether each system answered, failed, or was not searched, and records an evidence row per system in an n8n Data Table. Calculates the overall verdict (DATA_FOUND, NO_DATA_FOUND, INCOMPLETE, or NOT_SEARCHED) and a due date based on a 30-day response window. Sends the verdict and findings to Groq to produce a constrained one-paragraph summary that cannot override the code-decided outcome. Stores the case in a register Data Table using a hash of the identifier, then either shows a result page for form submissions or returns the case details to the calling workflow. Setup Add a Groq API credential and select it in the Groq Chat Model node. Create and select two n8n Data Tables for logging: one for per-system evidence (case_id, searched_at, system_name, status, records_found, detail) and one for the case register (case_id, subject_hash, request_type, received_at, due_at, verdict, systems_answered, systems_failed, records_found, summary, note). Select or create the three demo Data Tables used as source systems (CRM contacts, support tickets, mailing list), or replace those searches with your real systems while ensuring they provide an email field (and optionally a record_ref). If you call this as a sub-workflow, pass subject_identifier and request_type into the workflow inputs and consume the returned case_id, verdict, due_at, and findings. Requirements A free Groq account and API key. Groq is the AI service that writes the short plain-English summary at the end. The free tier is enough, and the AI is not what decides the result. n8n Data Tables, which come built into n8n. You need two: one holds a row for every system searched, the other holds one row per request. No external database or spreadsheet is needed. Somewhere to search. It ships pointing at three demo tables so you can try it in about two minutes, then you point each search at a real place you keep customer data, such as your CRM, helpdesk or mailing list. Customization Add or remove the systems it searches. Each place you keep customer data is one search step. Copy a step, point it at your system, then add its name to the short list inside Collect Findings Per System so it gets its own evidence row. Change the reply deadline and the minimum identifier length, both in Set GDPR Policy. The deadline is one month by default, which is what the law allows. Shorten it if your own policy is stricter. Decide what happens after the answer. The workflow only reports, so connect the result to an email, a Slack message, a ticket, or a person's queue. Route INCOMPLETE to a human, because that one means the search did not finish. Additional info In plain terms: someone writes in and says "tell me what you hold about me" or "delete everything you have on me". By law you have about a month to answer, and you are expected to have looked everywhere, not just in the first place you thought of. This workflow does the looking and writes down what it found. You give it an email address. It searches each system you have connected, one at a time, and writes a separate line for each: which system, did it answer, how many records it held, and their reference numbers. That per-system line is the bit an auditor will ask to see. A single "we checked, nothing found" note proves nothing. You get one of four answers. DATA_FOUND means records were located and here they are. NO_DATA_FOUND means nothing was found, and it is only possible when every system actually replied. INCOMPLETE means one of your systems was down or unreachable. NOT_SEARCHED means the request did not include enough detail to look anything up. The INCOMPLETE answer is the reason this exists. If a system times out and a tool quietly reports "no data found", you could end up telling a regulator you hold nothing about someone when the truth is you never finished checking. Here that cannot happen: "nothing found" is unreachable unless every system answered. It will also report INCOMPLETE even when it did find records, because a half-finished search is not a complete answer. Two more things worth knowing. The decision is made by ordinary code counting results, not by the AI; the AI only writes the summary paragraph, so wording inside your own records cannot talk it into a different answer. And the record it keeps stores a scrambled version of the email rather than the address itself, so the tool does not build its own pile of personal data. What it will not do: it never deletes anything, and it does not tell you whether a request is valid or what the law requires in your case. It hands you the list and a deadline; a person decides the rest. Honest limits. It matches on one exact email address, so someone recorded under a second address or a misspelling will not be found. Each search reads its table and filters in code, which is fine for normal internal volumes but should be pushed into the query if you point it at something very large. And the deadline is recorded but nothing chases it; there is no reminder built in.
by Nik B.
Automatically fetches daily sales, shifts, and receipts from Loyverse. Calculates gross profit, net operating profit, other key metrics, saves them to a Google Sheet and sends out a daily report via email. Who’s it for This template is for any business owner, manager, or analyst using Loyverse POS who needs more advanced financial reporting. If you're a restaurant, bar, or retail owner who wants to automatically track daily net profit, compare sales to historical averages, and build a custom financial dashboard in Google Sheets, this workflow is for you. How it works / What it does This workflow runs automatically on a daily schedule. It fetches all sales data and receipts from your Loyverse account for the previous business day, defined by your custom shift times (even past midnight). A powerful Code node then processes all the data to calculate the metrics that Loyverse either doesn't provide at all, or only spreads out across several separate reports instead of in one consolidated place. Already set up are metrics like... -Total Revenue, Gross Profit, and Net Operating Profit Cash handling differences (over/under) Average spend per receipt (ATV) 30-day rolling Net Operating Profit (NOP) Performance vs. your historical weekday average Finally, it appends the single, calculated row of daily metrics to a Google Sheet and sends an easily customizable summary report to your email. How to set up This workflow includes detailed Sticky Notes to guide you through the setup process. Because every business has a unique POS configuration (different POS devices, categories, and payment types), you'll need to set up a few things manually before executing the workflow. I've tried to make this as easy as possible to follow, and the entire setup should only take about 15 minutes. Preparations & Credential setup Subscribe to "Integrations" Add-on in Loyverse ($9 / month) to gain API access. Create an Access token in Loyverse Create Credentials: In your n8n instance, create credentials for Loyverse (use "Generic" > "Bearer Auth"), Google Sheets (OAuth2), and your Email (SMTP or other). Make a copy of a prep-configured Google Spreadsheet (Link in the second sticky note inside the workflow). Fill MASTER CONFIG: Open the MASTER CONFIG node. Follow the comments inside to add your Google Sheet ID, Sheet Names, business hours, timezone, and Loyverse IDs (for POS devices, payment types, and categories). Configure Google Sheet Nodes Configure Read Historical Data: Open this node. Follow the instructions in the nearby Sticky Note to paste the expressions for your Document ID and Sheet Name. Configure Save Product List: Open this node. Paste in the expressions for Document ID and Sheet Name. The column mapper will load; map your sheet columns (e.g., item_name) to the data on the left (e.g., {{ $json.item_name }}). Configure Save Latest Sales Data: Open this node. Paste in the expressions for Document ID and Sheet Name. Save and run the workflow. After that, the column mapper will load. This is the most important step: map your sheet's column names (e.g., "Total Revenue") to the calculated metrics from the Calculate All Metrics node (e.g., {{ $json.totalGrossRevenue }}). Activate the workflow. 🫡 Requirements Loyverse Integrations Subscription Loyverse Access Token Credentials for Loyverse (Bearer Auth) Credentials for Google Sheets (OAuth2) Credentials for Email/SMTP sender How to customize the workflow This template is designed to be highly flexible. Central Configuration: Almost all customization (POS devices, categories, payment types, sheet names) is done in the MASTER CONFIG node. You don't need to dig through other nodes. Add/Remove Metrics: The Calculate All Metrics node has additional metrics already set up, just add the relevant collumns to the SalesData sheet or even add your own calculations to the node. Any new metric you add (e.g., metrics.myNewMetric = 123) will be available to map in the Save Latest Sales Data node. Email Body: You can easily edit the Send email node to change the text or add new metrics from the Calculate All Metrics node.
by WeblineIndia
Zoho CRM → AI Sentiment Analysis for customer interactions & Automatic Alerts Workflow This workflow analyzes newly created Notes (in Any module) in Zoho CRM, detects customer sentiment using an AI model, updates the related CRM record with custom fields - sentiment label and score, and sends an instant alert whenever negative sentiment is detected. It runs on a scheduled interval and gives teams real-time visibility into customer emotions and potential risks. Quick Implementation Steps Connect Zoho CRM OAuth2 credentials Add custom fields in Zoho CRM: Sentiment_Label and Sentiment_Score Add AI provider credentials Set Gmail alert recipient Activate workflow and test by adding a Note What It Does This workflow automatically monitors Zoho CRM Notes. When a new Note is detected, the text is extracted and analyzed through an AI-powered sentiment model. The AI classifies the text as Positive, Neutral or Negative and produces a numeric sentiment score. The workflow updates the related CRM module with these values. If the sentiment is negative, a Gmail alert is triggered so your team can follow up quickly. This automation helps organizations maintain high customer satisfaction and detect potential issues early. Who’s It For Support teams Sales teams CRM administrators Customer success managers Businesses needing automated customer sentiment tracking Requirements n8n instance Zoho CRM OAuth2 credentials Gmail OAuth2 credentials AI provider key Custom fields in Zoho CRM: Sentiment_Label & Sentiment_Score (if you are using different field name then do changes in workflow accoredingly) How It Works & Setup Step 1: Schedule Trigger Runs periodically to check for new or updated Notes. Step 2: Fetch Latest Note Retrieves the most recently modified Note. Step 3: Extract Details Extracts Note text, note_id, parent_id and module name. Step 4: AI Sentiment Analysis Sends text to the AI (via LangChain chain) for sentiment classification. Step 5: Conditional Branching If Negative: Send Gmail alert and update CRM Otherwise: Just update CRM Step 6: Update CRM Writes sentiment data back into the related parent record. How to Customize Nodes Adjust sentiment output by modifying the AI prompt. Change field mappings in Zoho update nodes. Customize the Gmail alert message. Adjust Schedule Trigger frequency. Add additional metadata (e.g., emotion tags). Add‑Ons Slack/Teams alerts for negative sentiment. Historical sentiment logging. Weekly sentiment reports. Auto-task creation for negative interactions. Priority-based escalation logic. Use Case Examples Detect unhappy customers in support interactions. Monitor sentiment across sales conversations. Escalate negative feedback automatically. Quality assurance tracking for customer interactions. Early detection of churn indicators. Troubleshooting Guide | Issue | Possible Cause | Solution | |------|----------------|----------| | Sentiment not updating | Missing Zoho fields | Add custom fields in CRM | | Note not detected | Fetching only latest note | Increase frequency or widen fetch scope | | AI output invalid | Prompt mismatch | Update prompt and parser | | Alerts not sending | Gmail OAuth expired | Reconnect Gmail | | Incorrect sentiment | Weak prompt instructions | Refine prompt wording | Need Help? WeblineIndia can help you configure, customize and extend workflows like this. We specialize in: n8n automation CRM integrations AI/LLM-powered workflows Zoho CRM customization Reach out if you'd like assistance building or enhancing similar n8n automation solutions.