by Salahuddin Uqaili
Quick overview This workflow triages emails with a local Ollama LLM (gemma4:e4b), flags urgent messages for immediate alerting, and compiles a morning digest grouped by urgency categories. How it works Runs manually and generates a sample set of incoming emails. Sends each email to Ollama (gemma4:e4b) with a prompt that classifies it as URGENT, REPLY_TODAY, FYI, or JUNK and returns structured JSON. Parses the LLM output into JSON and falls back to a safe default classification if the response is malformed. Separates emails marked URGENT and formats an urgent alert message for each one. Aggregates all classified emails into a single morning digest text grouped by category with suggested actions and totals. If the workflow errors, captures the failure details and outputs a structured error record. Setup Set up an Ollama API credential in n8n that points to your Ollama server (for example, http://host.docker.internal:11434). Ensure the specified Ollama model (gemma4:e4b) is available locally, or update the model name in the Ollama Chat Model configuration. Replace the sample email generator with your real email source (for example, Gmail or Microsoft Outlook) and add a delivery step for urgent alerts and the digest (for example, Slack or email). Requirements n8n 1.19.4 or later (LangChain nodes required) Ollama running locally with a chat model (tested with gemma4:e4b) Customization Edit the classification prompt in the Classify Email node to add or change urgency categories Swap the Ollama Chat Model for OpenAI or Anthropic by replacing the LLM sub-node Connect Slack, Telegram, or email after the Format Urgent Alert node for instant notifications
by WeblineIndia
Zendesk Refund Ticket Automation with WooCommerce Order Lookup, Slack Alerts & Gmail Emails This workflow automatically handles refund-related Zendesk tickets for WooCommerce orders. When a new refund ticket is created, it verifies whether the ticket is related to WooCommerce, fetches the order details, checks refund eligibility and then routes the case based on the refund type. Damaged items notify the internal team via Slack, while other refund cases trigger customer emails via Gmail for further proof or confirmation. Quick Implementation Steps Import the workflow JSON into n8n Connect Zendesk, WooCommerce, Slack and Gmail credentials Update Slack channel and Gmail sender settings Activate the workflow Start receiving and processing refund tickets automatically What It Does This workflow listens for new Zendesk tickets and checks whether they are related to WooCommerce refunds. If the ticket qualifies, it extracts the order ID from the ticket description and fetches the corresponding order from WooCommerce. Once the order data is retrieved, the workflow validates the order status and checks whether a refund already exists. Eligible cases are merged with ticket data and routed based on the refund reason, such as damaged items, wrong items, partial refunds or full refunds. For damaged items, the workflow immediately notifies the internal support team via Slack. For other refund types, it sends structured and context-aware emails to customers using Gmail, requesting proof or informing them about next steps. Who’s It For Customer support teams handling WooCommerce refunds Operations teams managing refund communication E-commerce businesses using Zendesk and WooCommerce Non-technical users who want automated ticket handling without coding Requirements to Use This Workflow Active Zendesk account with ticket access WooCommerce store** with REST API credentials Slack workspace** with permission to post messages Gmail account** connected via OAuth2 n8n instance (Cloud or Self-hosted) How It Works & Set Up Setup Instructions Import Workflow Upload the workflow JSON into your n8n instance. Zendesk Trigger Configuration Connect Zendesk OAuth credentials Trigger runs when a new ticket is created WooCommerce Configuration Add WooCommerce API credentials Ensure permission to fetch orders by ID Slack Setup Select the Slack channel for damaged item alerts Gmail Setup Connect Gmail OAuth Configure sender email and reply settings Activate Workflow Save and activate the workflow New refund tickets will now be processed automatically How To Customize Nodes Order ID Regex**: Modify extraction logic in the Zendesk normalization node Refund Keywords**: Update refund-type detection keywords (damaged, wrong, partial, full) Slack Message Format**: Customize internal notification content Email Templates**: Change subject lines and messages in Set nodes Eligibility Rules**: Adjust order status or refund conditions in IF nodes Add-ons (Optional Enhancements) Auto-tag Zendesk tickets based on refund type Assign tickets to specific agents or groups Log refund cases to Google Sheets or Airtable Add SLA timers for refund response tracking Integrate WhatsApp or SMS notifications Use Case Examples Automatically handle damaged product refund requests Ask customers for proof when wrong items are delivered Notify support teams instantly for high-priority refund cases Reduce manual order lookups for refund tickets Standardize refund communication across support channels > There can be many more similar use cases depending on business needs. Troubleshooting Guide | Issue | Possible Cause | Solution | |-----|---------------|----------| | Order ID is null | Order number not in ticket text | Ask customers to include order number | | Workflow not triggering | Zendesk trigger misconfigured | Check trigger event type | | Slack message not sent | Channel or credentials incorrect | Reconnect Slack account | | Email not delivered | Gmail OAuth expired | Reauthorize Gmail | | Workflow stops early | Order already refunded | This is expected behavior | Need Help? If you need help setting up this workflow or extending it with advanced automation then our n8n workflow developers at WeblineIndia are happy to assist.
by Yaron Been
Monitor customers for competitor tech adoption via PredictLeads and alert CSMs to prevent churn. This workflow uses PredictLeads to monitor existing customers for competitor tool adoption (HubSpot, Salesforce, Zoho CRM) and renewal timing risk, then alerts Customer Success Managers so they can take proactive action before customers churn. How it works Schedule trigger runs weekly and loads customer domains from Google Sheets Fetches each customer's full tech stack via PredictLeads Technology Detections API Looks up technology details by ID in PredictLeads to identify competitor tools Detects if customer adopted competitor tools (HubSpot, Salesforce, Zoho CRM) Calculates days until renewal and flags high-risk accounts (competitor detected + within 90 days) Sends churn risk alert email to the assigned CSM Setup Create Google Sheet with columns: company_domain, renewal_date, csm_email Connect Gmail OAuth2 for CSM alert emails Connect Slack OAuth2 for team notifications (optional) Add PredictLeads API credentials (X-Api-Key and X-Api-Token headers) Requirements PredictLeads API account (https://docs.predictleads.com) Google Sheets OAuth2 credentials Gmail OAuth2 credentials Slack OAuth2 credentials (optional) Customization Adjust competitor list in "Detect Competitor Usage" Code node Modify 90-day renewal window threshold in "Calculate Renewal Risk" node Change notification channel from Slack to another platform if needed
by Julian Abt
Quick Overview This workflow receives website contact-form submissions via a webhook, uses OpenAI to classify and summarize the message and draft a reply, routes spam separately, alerts your team in Slack, sends an auto-reply with Gmail, logs the submission to Google Sheets, and returns a JSON acknowledgement. How it works Receives a contact-form POST request (name, email, message) via an n8n webhook endpoint. Sends the submission to OpenAI (gpt-4o-mini) to classify category/urgency/sentiment, generate a one-sentence summary, and draft a language-matched email reply in strict JSON. Normalizes the AI output into consistent fields (timestamp, category, urgency, sentiment, summary, suggested reply) for downstream routing. Checks whether the message is classified as spam and, if so, appends a flagged row to Google Sheets and skips notifications and email. For non-spam submissions, posts a formatted alert to a Slack channel with the sender details and AI summary. Sends the AI-drafted auto-reply to the visitor using Gmail, logs the submission to Google Sheets, and responds to the original webhook request with {"status":"received"}. Setup Create and connect credentials for OpenAI, Slack, Gmail, and Google Sheets in n8n. Update the Google Sheets document ID and choose the target sheet name for both the normal submission log and the spam log. Select the Slack channel where alerts should be posted. Copy the webhook URL from the workflow and configure your website/contact form to POST name, email, and message to it.
by Oneclick AI Squad
This workflow classifies incoming support messages from email or Slack, drafts AI-generated replies for routine queries, and automatically pauses to notify a human agent for sensitive topics such as complaints, emotional distress, billing disputes, legal concerns, or escalation requests. Who's it for • Customer support teams handling 50+ messages per day • SaaS companies needing compliant, empathetic AI responses • E-commerce brands managing returns, refunds, and complaints • Any team that wants AI speed with human oversight on sensitive issues How it works / What it does Captures incoming messages from Email (webhook) or Slack Normalizes message context (sender, channel, body, urgency signals) AI classifies the message into a category and sensitivity tier Routine queries → AI drafts reply → sent automatically Sensitive queries → AI drafts reply → paused for human review Human approves, edits, or rejects the draft via webhook resume Final reply sent to customer via email or Slack All interactions logged to Google Sheet with category, tier, and resolution How to set up Import this workflow Configure credentials (Gmail/IMAP, Slack, OpenAI/Anthropic, Google Sheets) Update your support tone, escalation keywords, and team Slack channel Activate workflow Requirements • Gmail or IMAP webhook / Slack Events API • OpenAI / Anthropic / Grok API • Slack Bot Token (for human notifications) • Google Sheets for audit logging • HTTP endpoint for human approval webhook How to customize the workflow • Edit sensitivity tiers in the Python classification node • Change escalation keywords list • Update Slack notification channel and message template • Modify AI tone and persona in the AI draft node • Adjust wait timeout for human review window
by Mohamed Abubakkar
Description This workflow automates the full cycle of fetching, processing, and storing Telr payment gateway reports — and then notifying your team by email. It runs on a schedule, calls the Telr API twice (once for the raw file, once filtered by date), decompresses and extracts data from an XLS file, transforms it with JavaScript, inserts it into a SQL database, and sends a success email notification. Who it's for Merchants, developers, and finance analysts using the Telr payment gateway who want to automate transaction report collection, transform the raw XLS data, persist it to a database, and receive automated email confirmations — all without manual intervention. How it works: Schedule Trigger fires the workflow at your defined interval. Telr API fetches the raw transaction report. XML is converted to JSON for processing. Logic for Date calculates the relevant date range. Edit Fields maps and renames fields manually. Telr API with Date refetches with the computed date filter. Compression node decompresses the downloaded file. Extract from File reads the XLS content. Data Formation shapes the records for SQL. Code in JavaScript3 applies custom business logic. Data Insert SQL writes records to your database. Success Condition checks if the insert succeeded. Send Email dispatches a success notification. Setup requirements • Telr API credentials — add your Telr store ID and API key as n8n credentials (HTTP Header Auth). • Database credentials — configure a MySQL or PostgreSQL credential and update the table name in the SQL node. • Email credentials — set up SMTP or Gmail credentials for the Send Email node. • Schedule — adjust the cron expression in the Schedule Trigger to match your reporting frequency. • JavaScript node — review the Code in JavaScript3 node and adapt any field names or business logic to match your Telr account's XLS format.
by isaWOW
Description Submit your podcast or video URL using a simple form and the workflow automatically transcribes the full episode with speaker labels and timestamps. GPT-4o-mini then reads the transcript and writes a complete LinkedIn newsletter article — headline, 400–600 word body, five key takeaways, and hashtags — following seven LinkedIn readability rules. The finished draft is saved to Google Sheets with a Status of "Draft" so you can review and publish when ready. Built for podcast hosts, content marketers, and personal brand builders who want to turn every episode into a LinkedIn article without writing from scratch. What This Workflow Does Transcribes your podcast with speaker labels** — WayinVideo processes the full episode and returns each segment attributed to the correct speaker with timestamps Polls automatically until transcription is complete** — Waits 60 seconds then checks the status repeatedly every 30 seconds until the transcript is ready, with no manual monitoring needed Formats the transcript for AI analysis** — Structures every segment as speaker name with timestamp so GPT understands who said what and when Writes a complete LinkedIn article** — GPT-4o-mini produces a headline, full 400–600 word article body, five key takeaways starting with action verbs, and 5–8 relevant hashtags Applies LinkedIn readability rules** — The AI follows seven specific rules: short paragraphs, strong opening hook, human conversational tone, no filler, consistent tone throughout, and a closing CTA Saves the draft to Google Sheets** — Appends a row with headline, article, key takeaways, hashtags, word count, episode duration, and Status set to "Draft" — ready for your review before publishing Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named LinkedIn Drafts) Credentials Required WayinVideo API key (pasted directly into 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results) OpenAI API key Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results. Missing either one will cause the workflow to fail. Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your WayinVideo API key — Log in to your WayinVideo account → go to Account Settings → copy your API key Add your WayinVideo API key to node 2 — Open node 2. WayinVideo — Submit Transcription → find the Authorization header value that says Bearer YOUR_WAYINVIDEO_API_KEY → replace YOUR_WAYINVIDEO_API_KEY with your actual key Add your WayinVideo API key to node 4 — Open node 4. WayinVideo — Get Transcript Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY again with the same key Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly LinkedIn Drafts → add these 10 column headers in row 1: Podcast Title, Video URL, Episode Duration (min), LinkedIn Headline, LinkedIn Article, Key Takeaways, Hashtags, Word Count, Generated On, Status Connect Google Sheets — Open node 11. Google Sheets — Save LinkedIn Draft → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Update the Sheet ID in node 11 — In node 11. Google Sheets — Save LinkedIn Draft, the document ID currently says YOUR_GOOGLE_SHEET_ID → click the document field → select your actual spreadsheet from the list, or manually replace the ID with the string between /d/ and /edit in your Sheet URL Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Podcast URL + Details → open it in a browser to submit your first episode How It Works (Step by Step) Step 1 — Form: Podcast URL + Details You open the form URL in a browser and fill in five fields: the podcast or video URL (YouTube, Zoom, Vimeo, or any direct link), the episode title, the host and guest name, the target audience, and optionally your preferred LinkedIn tone. Tone defaults to "Professional and insightful" if left blank. Submitting the form starts the workflow. Step 2 — HTTP: WayinVideo — Submit Transcription The podcast URL is sent to the WayinVideo API with the target language set to English. WayinVideo accepts the job and returns a task ID confirming transcription has started. Step 3 — Wait: 60 Seconds The workflow pauses for 60 seconds before checking the transcription status for the first time. This gives WayinVideo time to begin processing the audio before the first poll. Step 4 — HTTP: WayinVideo — Get Transcript Results A GET request checks the WayinVideo results endpoint using the task ID from step 2. It returns the current processing status and, once complete, the full transcript with speaker labels, timestamps, and text for each segment. Step 5 — IF: Transcription Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the transcript is ready and the workflow moves forward to formatting. If the status is anything else (NO path — still processing), the workflow routes to 6. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 4 to check again. This repeats automatically until transcription succeeds. Step 6 — Wait: 30 Seconds Retry This step handles the not-yet-complete case. The workflow pauses 30 seconds then returns to step 4 for another status check. The loop continues until WayinVideo returns SUCCEEDED. Step 7 — Code: Format Transcript Each transcript segment is formatted as [Speaker Name | MM:SS] text so GPT receives a structured, readable conversation. Total episode duration in minutes is calculated from the last segment's end time. Unique speaker names are collected. Word count is calculated. All form inputs (episode title, host/guest name, target audience, tone, video URL) are also packaged here for the AI prompt. Step 8 — AI Agent: Write LinkedIn Newsletter GPT-4o-mini receives the formatted transcript as the user message and a detailed system prompt as context. The system prompt provides episode details, specifies seven writing rules (short paragraphs, hook-first, human tone, no filler, consistent tone, CTA at the end, and only use content from the transcript), and specifies the exact output format with labeled sections: HEADLINE, ARTICLE, KEY TAKEAWAYS, and HASHTAGS. Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the article writing. It runs with default temperature settings and no custom token cap — the article length is controlled by the prompt instructions (400–600 words for the body). Step 10 — Code: Parse AI Output The AI output text is parsed using regex to extract each labeled section. The HEADLINE, ARTICLE, KEY TAKEAWAYS, and HASHTAGS sections are each extracted individually. Word count of the final article is calculated. All fields are packaged with the episode title, video URL, and duration for the sheet row. Step 11 — Google Sheets: Save LinkedIn Draft One row is appended to your LinkedIn Drafts tab with all 10 columns populated: podcast title, video URL, episode duration in minutes, LinkedIn headline, full article, key takeaways, hashtags, word count, generation timestamp, and Status set to "Draft". The draft is now ready for you to open, review, and publish to LinkedIn. Key Features ✅ Speaker-labeled transcript — WayinVideo attributes every sentence to the correct speaker so GPT understands the conversation structure and can reference who said what ✅ Automatic retry polling — The workflow checks every 30 seconds after the initial 60-second wait — no manual monitoring needed regardless of episode length ✅ Seven LinkedIn writing rules enforced — Short paragraphs, hook-first structure, human tone, no filler, consistent voice, facts only from the transcript, and a closing CTA are all built into the prompt ✅ Timestamped transcript for context — Each segment includes the MM:SS timestamp so GPT understands the flow and can reference specific moments in the article ✅ Draft status in Google Sheets — Every article saves with Status = Draft so you have a review stage before publishing — nothing goes live without your approval ✅ Five action-verb takeaways — The prompt requires exactly five key takeaways each starting with an action verb, making them ready to use as pull quotes or bullet points on LinkedIn ✅ Tone personalization per episode — Your chosen LinkedIn tone (professional, casual, data-driven, etc.) is passed to the AI and applied consistently throughout the article Customisation Options Change the retry wait time for longer podcasts — In node 6. Wait — 30 Seconds Retry, change the wait duration from 45 seconds (the current value) to 60 or 90 seconds for very long podcasts that take more time to process, reducing unnecessary API calls. Add a Gmail notification when the draft is saved — After node 11. Google Sheets — Save LinkedIn Draft, add a Gmail step that sends you a brief email with the episode title, headline, and a link to your LinkedIn Drafts sheet so you know when a new draft is ready. Save to Google Docs instead of Sheets — Replace node 11. Google Sheets — Save LinkedIn Draft with a Google Docs create step that saves the headline and article as a formatted editable document — giving you a word-processor-ready draft alongside the sheet log. Add a Slack notification for your content team — After node 11. Google Sheets — Save LinkedIn Draft, add a Slack step that posts the episode title, the LinkedIn headline, and today's date to a #content-drafts channel so your team knows a new article is ready for review. Extract quotes for social media posts — In node 8. AI Agent — Write LinkedIn Newsletter, add a sixth output section to the prompt: PULL QUOTES: List 3 direct quotes from the transcript that would work as standalone social posts, each under 25 words — then extend the regex in node 10 to capture this section. Troubleshooting WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Transcription is replaced with your actual API key — not the placeholder text Also confirm the same replacement was made in node 4. WayinVideo — Get Transcript Results — both nodes require the key Check the execution log of node 2 for the exact API error response — a 401 means wrong key, a 422 means the URL format is not supported Workflow stuck in the retry loop: Check that the podcast URL is publicly accessible — private, password-protected, or region-blocked videos will not be processed by WayinVideo Open the execution log of node 4. WayinVideo — Get Transcript Results and check the raw response — WayinVideo may have returned a FAILED status with an error message If the loop runs indefinitely, deactivate the workflow, fix the video URL, and resubmit Transcript is empty after SUCCEEDED: Node 7. Code — Format Transcript throws an error if the segments array is empty — this means WayinVideo succeeded but returned no transcript data Check that the podcast has clear spoken audio — low-quality audio, background music-heavy recordings, or music-only content will not produce usable transcripts Try a shorter, clearer clip first to verify the API connection is working correctly OpenAI not generating the article: Confirm the API key is connected in node 9. OpenAI — GPT-4o-mini Model and your account has available credits Check the execution log of node 8. AI Agent — Write LinkedIn Newsletter for the raw GPT response If the output is missing labeled sections (HEADLINE, ARTICLE, etc.), the regex in node 10. Code — Parse AI Output will fail to extract the fields — check that the system prompt text in node 8 is intact and has not been accidentally edited Google Sheets not logging the draft: Confirm the Google Sheets OAuth2 credential in node 11. Google Sheets — Save LinkedIn Draft is connected and not expired — re-authorize if needed Confirm YOUR_GOOGLE_SHEET_ID in node 11 has been replaced with your actual sheet ID — or select your spreadsheet from the document dropdown Confirm the tab is named LinkedIn Drafts exactly — capitalization and spacing must match Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@isawow.com 🌐 Website: https://isawow.com/
by WeblineIndia
Quick Overview This workflow watches Gmail for emails with the subject “Trade Instruction”, uses Google Gemini to extract structured trade fields, validates the result, logs valid trades to Google Sheets, replies to the sender with a confirmation, and alerts an ops user in Slack on success or failure. How it works Triggers every minute when a new Gmail message arrives matching the search filter subject:"Trade Instruction". Captures the email snippet and sender information and sends the email text to Google Gemini to extract asset, quantity, price, and client as JSON. Enforces a structured JSON schema for the extracted trade details. Validates that the extracted asset is present and the quantity is greater than zero. Appends valid trades to a Google Sheets master ledger with a timestamp, replies to the original Gmail thread with a confirmation, and sends a Slack success notification. Sends a critical Slack alert to the ops user when extraction or validation fails so the trade can be handled manually. Setup Connect credentials for Gmail, Google Sheets, Slack, and Google Gemini (PaLM/Gemini API). Update the Gmail trigger query (or align your inbound email subject/filters) so trade instruction emails match subject:"Trade Instruction". Select the target Google Sheets document and sheet, and ensure it has columns for Asset, Quantity, Price, Client, and Timestamp. Configure the Slack connection and set the target user/channel for both success and failure notifications. Confirm the Gmail reply action is permitted for the mailbox and that replies should go back to the original sender/thread.
by Ravi Patel
Quick Overview This workflow uses an n8n Chat trigger with Google Gemini to draft a personalized cold email, sends it via Gmail with a tracking pixel, and then captures opens through a webhook that triggers an internal Gmail notification. How it works Receives a chat message in n8n containing an action and context such as a LinkedIn URL, company profile, website, or job post. Uses Google Gemini through an AI agent to generate a cold email with labeled fields for recipient name, recipient email, subject, and email body. Parses the AI response into structured fields and stops with an error if the recipient email address is missing. Generates a unique tracking ID and builds a tracking-pixel URL that includes the recipient email, name, and subject as query parameters. Converts the email body into HTML, appends a 1×1 tracking pixel image, and sends the email to the recipient via Gmail. When the recipient’s email client loads the tracking pixel, a webhook captures the request metadata, adds a timestamp, and sends an “email opened” notification to your inbox via Gmail. Setup Add a Google Gemini (PaLM) API credential and select the model you want to use in the Google Gemini Chat Model configuration. Add a Gmail OAuth2 credential for sending the outbound email and for sending the internal open-notification email. Replace the placeholder text "webhook url from tracking webhook node" in the tracking URL generator with your real Tracking Webhook production URL. Update the internal notification recipient address in the Gmail open-notification step and ensure your AI prompt signature ("Your Name") matches what you want to send.
by Tricore Infotech Pvt Ltd
Quick overview This workflow runs weekly to fetch customers from the Shopify Admin GraphQL API, calculate churn risk based on each customer’s median reorder interval, and then sync at-risk customers to Klaviyo while sending a CSV report and summary to Slack and/or Gmail. How it works Runs weekly on a schedule and loads your Shopify domain, thresholds, and toggles for Klaviyo, Slack, and Gmail alerts. Queries the Shopify Admin GraphQL API in pages of 100 customers filtered by minimum order count and an order-date window that excludes very recent purchasers. Calculates each customer’s median days between recent orders, computes days since last order, and labels customers as MEDIUM or HIGH risk based on the days-since-last vs. median interval ratio. Stores at-risk customers across pagination and continues fetching until Shopify reports there are no more pages. Retrieves the full at-risk customer list, clears stored data for the next run, and stops if no at-risk customers are found. If enabled, updates each at-risk customer profile in Klaviyo by writing churn_risk and days_since_last_order via the Klaviyo API. Generates a dated CSV of at-risk customers, aggregates counts and revenue-at-risk totals, and sends the summary with the CSV attached to Slack and/or Gmail. Setup Add Shopify Admin API credentials (Header Auth) and set your shopifyDomain value in the workflow configuration. Add a Klaviyo Private API key (HTTP Header Auth) if you want to sync profile properties to Klaviyo. Connect your Gmail OAuth2 credential and set the recipient email address if you want email alerts. Connect your Slack credential and set the target Slack channel ID if you want Slack alerts and error notifications. In the workflow configuration, enable or disable emailAlert, slackAlert, and klaviyoEvent, and adjust minimumOrderRequired, customerActiveDays, and safeDays to match your store’s buying cycles. Requirements Shopify store with Admin API access (GraphQL endpoint). Klaviyo account for profile updates. Slack workspace and Gmail account for reporting.
by Felix
Quick overview This workflow monitors labeled Gmail messages, uses easybits Extractor to pull event details from the email body and any PDF/image attachments, and either creates a Google Calendar event or labels the email for review and sends you a notification. How it works Polls Gmail every minute for new emails that have the specified “Events” label and downloads any attachments. Renders the email subject, sender, date, and body into a minimal PDF and sends it to easybits Extractor to extract structured event fields. Splits PDF/image attachments into separate items and sends each one to easybits Extractor to extract the same event fields. Merges the extracted results, prioritizing attachment data over email-body data and filling missing fields from the body when needed. Validates that required fields (at least start_datetime and event_type) are present. If valid, creates a Google Calendar event with the extracted title, start/end time, location, and a formatted description, then removes the “Events” label from the email. If invalid, adds a “Needs-Review” label, removes the “Events” label, and sends you an HTML email listing missing fields and what was extracted. Setup Connect Gmail OAuth2 credentials for the Gmail Trigger and Gmail actions, and update the Events label ID, Needs-Review label ID, and review recipient email address. Install and configure the easybits Extractor community node (@easybits/n8n-nodes-extractor) and add your easybits Extractor API key and Pipeline ID to both Extractor steps. Connect Google Calendar OAuth2 credentials and replace the target calendar ID with your calendar (or create a dedicated “Auto-imported” calendar and select it). Create the Gmail labels used by the workflow (for example, Events and Events/Needs-Review) and apply the Events label to test emails you want turned into calendar events.
by Keith Uy
Quick overview This workflow captures inbound leads via an n8n Form, scores each submission against a plain-English ICP using Anthropic Claude, logs results to Google Sheets, and alerts hot leads via Slack and Gmail based on a configurable score threshold. How it works Receives a new submission from an n8n Form with lead details like name, email, website, budget, and needs. Applies your configured ICP definition, hot-lead score threshold, Slack channel, and notification email to the incoming submission. Sends the lead details and ICP to Anthropic Claude to return a structured fit score, tier, reasoning, and recommended next action. Appends every scored lead to a Google Sheets “Leads” worksheet with the original form data and Claude’s outputs. Checks whether the lead’s fit score meets or exceeds the configured threshold. Posts a hot-lead alert to the specified Slack channel and sends a hot-lead email via Gmail when the threshold is met. Setup Add credentials for Anthropic, Google Sheets OAuth2, Slack, and Gmail OAuth2. Update the Google Sheets document ID and ensure the workbook has a “Leads” sheet with columns that match the fields being appended. Edit the ICP definition and hot-lead threshold, then set your target Slack channel and notification email in the configuration values. Publish the n8n Form and share the form link wherever you collect inbound leads. Additional info Step-by-step guides: Google (Sheets and Gmail) for n8n → https://winflowai.com/blog/get-google-api-key-n8n/ Anthropic (Claude) API key → https://winflowai.com/blog/get-claude-api-key/