by Daiki Takayama
Who's it for This template is perfect for any SaaS business or subscription service using Stripe. Product managers, customer success teams, and founders can use this to automatically collect cancellation feedback without manual follow-up. Ideal for companies looking to reduce churn by understanding why customers leave. What it does When a customer cancels their Stripe subscription, this workflow instantly: Detects the cancellation via Stripe webhook Fetches customer details from Stripe API Sends a personalized feedback survey email with embedded customer information Logs all cancellations to Google Sheets for tracking Receives survey responses via webhook Automatically routes feedback to different Google Sheets based on reason (pricing concerns, feature requests, or other feedback) This organized approach helps you identify patterns in cancellations and prioritize improvements that matter most. How it works Stripe triggers the workflow when a subscription is canceled Customer data is fetched from the Stripe API (email, name, plan details) Personalized email is sent with a survey link containing customer data as URL parameters Cancellation is logged to a Google Sheets "Cancellations" tab When the customer submits the survey, a webhook receives the response Feedback is routed to dedicated sheets based on cancellation reason: Price Concerns → for pricing-related issues Feature Requests → for missing functionality Other Feedback → for everything else Set up steps Setup time: ~20 minutes Prerequisites Stripe account (test mode recommended for initial setup) Google account with Google Sheets Email service (Gmail, Outlook, or SMTP) Survey tool with webhook support (Tally or Typeform recommended) Configuration Stripe webhook: Copy the webhook URL from the "Stripe Subscription Canceled" node and add it to your Stripe Dashboard → Webhooks. Select the customer.subscription.deleted event. Email credentials: Configure Gmail, Outlook, or SMTP credentials in the "Send Feedback Survey Email" node. Update the fromEmail parameter. Survey form: Create a survey form with these fields: Hidden fields (auto-populated from URL): email, customer_id, name, plan Visible fields: reason dropdown ("Too Expensive", "Missing Features", "Other"), comments textarea Configure webhook to POST responses to the "Survey Response Webhook" URL Google Sheets: Create a spreadsheet with 4 sheets: "Cancellations", "Price Concerns", "Feature Requests", and "Other Feedback". Connect your Google account in the Google Sheets nodes. Survey URL: Replace [SURVEY_URL] in the email template with your actual survey form URL. Test: Use Stripe test mode to trigger a test cancellation and verify the workflow executes correctly. Requirements Stripe account with API access Google Sheets (free) Email service: Gmail, Outlook, or SMTP server Survey tool: Tally (free), Typeform (paid), or custom form with webhook capability n8n instance: Cloud or self-hosted How to customize Different surveys by plan: Add an IF node after getting customer details to send different survey links based on subscription tier Slack notifications: Add a Slack node after "Route by Feedback Type" to alert your team about price concerns in real-time Delayed email: Insert a Wait node before sending the email to give customers a 24-hour cooldown period CRM integration: Add nodes to sync cancellation data with your CRM (HubSpot, Salesforce, etc.) Follow-up workflow: Create a separate workflow that triggers when feedback is received to send personalized follow-up offers Custom routing logic: Modify the Switch node conditions to match your specific survey options or add more categories Tips for success Use Stripe test mode initially to avoid sending emails to real customers during setup Customize the email tone to match your brand voice Keep the survey short (2-3 questions max) for higher response rates Review feedback weekly to identify patterns and prioritize improvements Consider offering a discount or incentive for completing the survey
by Oneclick AI Squad
Enhance your hiring pipeline by automating interview management post-screening. This workflow runs every 5 minutes to scan upcoming Google Calendar events, filter relevant interviews, send timely email reminders to candidates and internal teams, and handle result submissions via webhook — updating statuses in Google Sheets and notifying via Gmail based on pass/fail outcomes. Ensure no interviews slip through the cracks with proactive reminders and instant feedback loops. What This Template Does Step 1: Triggers every 5 minutes to proactively check for upcoming interviews. Step 2: Fetches all Google Calendar Events and identifies interview-related ones. Step 3: Filters Upcoming Interviews based on event details (e.g., candidate name, role). Step 4: Sends Reminder Emails to candidates and interviewers via Gmail for preparation. Step 5: Receives Webhook Submission of interview results (pass/fail) post-event. Step 6: Updates Google Sheet with result data, including feedback and updated status. Step 7: Branches on result: → Passed: Sends congratulatory Email to Candidate and advances status. → Failed: Sends polite Failure Notification and closes the loop. Key Benefits ✅ Reduces no-shows with automated reminders ✅ Centralizes interview tracking in Google Sheets ✅ Instant Gmail notifications for pass/fail decisions ✅ Minimizes manual status updates ✅ Improves candidate experience with timely communication ✅ Ensures audit-ready logs of all interactions Features Cron-triggered checks every 5 minutes Google Calendar integration for event fetching Smart filtering for interview-specific events Gmail-powered reminder and notification emails Webhook for secure result submissions Conditional branching on pass/fail Real-time Google Sheets append/update Comprehensive sheet structure for tracking Requirements GOOGLE_SHEET_ID**: Your Google Sheet ID (structured as below) Credentials Needed:** Google Calendar OAuth2 Gmail API Key Customize:** • Event filter criteria (e.g., keywords like "Interview") • Reminder timing (e.g., 24 hours before) • Email templates for reminders and results • Webhook endpoint for result submission Google Sheet Structure: Create a sheet with columns: Candidate Email Interview Link Status Result Meet Link Feedback Updated At Target Audience Recruiters juggling multiple interview schedules 🗓️ HR teams focused on candidate engagement 💬 Hiring managers needing quick result turnarounds ⚡ Growing companies scaling interview volumes 📈 Remote teams relying on calendar and email sync 🌐 Step-by-Step Setup Instructions Set up Google Sheet → Create sheet with the specified columns: Candidate Email, Interview Link, Status, Result, Meet Link, Feedback, and Updated At. → Replace YOUR_SHEET_ID in the workflow with your actual Sheet ID. Configure Calendar Integration → Connect Google Calendar OAuth2 and select the relevant calendar (e.g., hiring@company.com). Define Event Filters → In the "Filter Upcoming Interviews" node, set keywords (e.g., "Candidate Interview") to match event titles/descriptions. Customize Reminders → Edit the "Send Reminder to Candidate" template (e.g., include interview link and prep tips). → Set reminder offset (e.g., 1 day before event). Set Up Webhook for Results → Generate and expose the webhook URL for your interview form/tool to submit pass/fail data. Connect Gmail → Enable Gmail OAuth2. → Define sender email and customize pass/fail templates. Test the Flow → Create a test calendar event for an upcoming interview. → Wait 5 minutes or trigger manually → Verify reminder email. → Submit test webhook result → Check sheet update and notification email. Go Live → Enable the 5-minute cron trigger. → Monitor sheet for real entries on Thursday, October 23, 2025, or your next interview day.
by Hyrum Hurst
Stripe Invoice Reminder Workflow Who’s this for Businesses using Stripe subscriptions or one-time payments who want to automatically follow up with customers after a failed payment. What this workflow does Detects expired or failed charges in Stripe Drafts AI-generated payment reminders for customers Creates a new Stripe invoice for the failed payment Optionally sends reminders via Email or Slack How it works Stripe trigger listens for expired charges Set node normalizes customer and payment information OpenAI node drafts a friendly payment reminder Stripe node creates a new invoice Optional Email/Slack node sends the reminder How to set up Connect Stripe account and enable 'charge.expired' events Connect OpenAI API credentials Configure Email or Slack notifications if desired Optional: Customize AI prompt for company tone Requirements n8n account with Stripe integration OpenAI API key Optional Email/Slack integration How to customize Change AI prompt to fit brand voice Include dynamic invoice details or subscription links Add internal alerts for accounting teams Modify email templates or Slack messages
by Dr. Firas
Build a Customer Support AI Voice Agent with GPT-5 and ElevenLabs 👥 Who is this for? This template is ideal for: Businesses that want to provide 24/7 automated voice-based customer support Service providers needing to schedule appointments via voice interaction Teams looking to handle multilingual customer queries automatically Entrepreneurs aiming to boost customer engagement without hiring large support teams 💡 What problem is this workflow solving? Traditional customer support requires: Human agents to answer repeated questions Manual handling of bookings and confirmations Limited availability outside office hours This workflow solves those issues by combining GPT-5 intelligence with ElevenLabs voice synthesis, enabling your website visitors to: Ask questions and receive spoken answers in multiple languages Request appointment availability Confirm bookings and receive automatic email confirmations All of this happens automatically, reducing costs and ensuring consistent customer experience. ⚙️ What this workflow does Receive customer voice input via webhook from your website Transcribe and understand intent using GPT-5 and LangChain reasoning Fetch information from your knowledge base (Google Sheets) for FAQs, services, or policies Check availability in Google Calendar in real-time Create confirmed appointments only after explicit user confirmation Send confirmation emails with booking details via Gmail Respond back to the user with a multilingual spoken reply using ElevenLabs 🧰 Setup Before launching this workflow, make sure you: Have an OpenAI API key for GPT-5 Set up an ElevenLabs account and API key for voice input/output Enable Google Sheets API and prepare a sheet with your FAQ/knowledgebase Enable Google Calendar API and connect your calendar for scheduling Connect your Gmail account for booking confirmation emails Configure the Webhook URL on your website for sending voice requests Follow the sticky note instructions inside the workflow for final setup 🛠️ How to customize this workflow Knowledgebase:** Add or update information in your Google Sheets to cover new FAQs Voice settings:** Configure ElevenLabs voice style, tone, or supported languages Appointment rules:** Adjust event duration or add reschedule/cancellation options Notifications:** Add Slack or Telegram alerts for each new confirmed booking Email templates:** Customize the confirmation email with your brand style With this workflow, your website becomes an AI-powered voice assistant — capable of handling customer inquiries, providing multilingual support, and managing bookings seamlessly. 📄 Documentation: Notion Guide Need help customizing? Contact me for consulting and support : Linkedin / Youtube
by Rahul Joshi
📝 Description This n8n workflow automates the candidate shortlisting process by integrating Google Sheets, Gmail, ClickUp, and Calendly. It fetches candidate records, filters high-scoring profiles, sends personalized advancement emails, and creates screening tasks for your HR team—all with a single manual trigger. 🚀 What It Does Fetch All Candidate Records Retrieves complete candidate data (names, scores, contact info, summaries) from the ‘Resume store’ Google Sheet (Sheet2). Efficiently loads all rows for batch analysis. Filter High-Score Candidates Applies a threshold filter (default: score > 70) to identify strong-fit candidates. Only qualified profiles advance; threshold is customizable per role. Send Congratulations Email Sends personalized emails to qualified candidates using Gmail. Includes a dynamic Calendly scheduling link for interview booking. Maintains a positive candidate experience with professional messaging. Create Screening Task in ClickUp Automatically generates screening tasks for each qualified candidate in ClickUp. Assigns tasks to a designated team member and organizes them in specified project folders. Ensures accountability and seamless follow-up. 📈 Key Benefits Speed: Instantly advances qualified candidates—no manual sorting. Consistency: Standardized criteria and communications for every role. Organization: Auto-creates ClickUp tasks so nothing slips through. Experience: Timely, professional communication enhances candidate journey. Efficiency: Reduces HR workload and error risk. ⚙️ Customization & Integration Score Threshold: Set to 70 by default; adjust for different roles or seniority. Email Template: Editable subject, body, and CTA (Calendly link). ClickUp Integration: Uses configurable Team, Space, Folder, List, and Assignee IDs. Systems Supported: Google Sheets (data), Gmail (email), ClickUp (tasks), Calendly (scheduling). 🔧 Setup Requirements n8n instance (self-hosted or cloud). Google Sheets access for ‘Resume store’ (Sheet2). Gmail credentials for candidate notifications. ClickUp API token and IDs for task creation. Calendly link for interview scheduling. 👥 Target Audience HR teams, recruiters, staffing agencies. Operations managing high-volume candidate pipelines. Startups/SMBs seeking standardized hiring automation. 🛠️ Maintenance Tips Update email templates seasonally. Review scoring thresholds monthly. Monitor ClickUp task completion rates. Ensure Calendly links remain active. 📋 Step-by-Step Usage Connect Google Sheets, Gmail, and ClickUp credentials in n8n. Import the workflow; configure threshold, email, and ClickUp settings. Edit the email node with your Calendly link and branding. Trigger “Execute workflow” after new candidate scores are added. Review logs and results for successful candidate progression.
by James Carter
This n8n workflow automatically detects canceled meetings from Calendly, uses GPT to write a friendly follow-up message, and sends it via Gmail, complete with a personalized Loom video link. It also creates an Asana task to remind your team to follow up manually if needed. Ideal for B2B consultants, agencies, and sales teams who want to salvage missed opportunities and stay top-of-mind with prospects after no-shows. ⸻ Who it’s for Sales teams, consultants, and agencies who rely on scheduled calls to close business and want to re-engage leads who cancel or no-show using automated, human-sounding follow-ups. ⸻ How it works / What it does A Calendly Webhook triggers the flow when a meeting is canceled. Edit Fields extracts the meeting details (who canceled, when, and why). A GPT-4 node writes a personalized follow-up email based on the meeting context. You manually paste in your Loom video link. A Merge node combines the AI-written message, user info, and video link. Gmail sends the follow-up message automatically to the contact. An Asana task is created for your team to track the missed call and optionally follow up manually. ⸻ How to set up Create a webhook in Calendly and connect it to the Calendly Trigger node. Add your OpenAI key in the Message a Model node. Connect your Gmail and Asana accounts via n8n credentials. Manually paste in the Loom video link in the Loom Link node. Set your preferred Asana project and teammate in the Create a Task node. ⸻ Requirements A Calendly account OpenAI API key Gmail account with OAuth connected in n8n Asana account with access to a project and user ID ⸻ How to customize the workflow Update the GPT prompt to change the tone or add context based on your business. Replace Loom with a Vidyard, Tella, or custom-hosted video link. Add a Slack notification node to alert your sales team when a call is missed. Link with a CRM or Google Sheets to track follow-up activity across your pipeline. This modular workflow helps you turn no-shows into new opportunities, while keeping your team organized and your leads engaged.
by Meak
Client Onboarding Email Automation with Google Sheets + Gemini + Gmail When a new client fills out your onboarding form, this workflow automatically creates a personalized welcome email and sends it — using the details they submitted. Benefits Triggers automatically on every new Google Sheets form response Uses Google Gemini to generate a friendly, structured welcome email Includes a checklist of next steps for the client Sends email directly via Gmail Handles errors safely so the workflow never stops How It Works Google Sheets trigger fires when a new row is added Workflow extracts client name, email, company, and service needs Loads a standard onboarding checklist Gemini model writes a custom email using client info + checklist Gmail node sends the email with a welcome subject line Marks workflow as completed or logs failure if there is an error Who Is This For Agencies onboarding new clients Coaches and consultants welcoming new members SaaS or service businesses sending structured welcome steps Setup Connect Google Sheets (use the onboarding form sheet) Add Gemini (Google AI) API key Add Gmail OAuth2 credentials Customize the checklist items if needed Test with a sample form submission before going live ROI & Monetization Save 1–2 hours per new client on manual welcome emails Give clients a smooth and consistent onboarding experience Turn onboarding into a branded, automated touchpoint Strategy Insights In the full walkthrough, I show how to: Build a clean onboarding checklist step by step Use Gemini prompts to keep emails short and professional Add error handling and logging for reliability Extend workflow to create tasks or Slack notifications for your team Check Out My Channel For more AI automation systems that save time and improve client experience, check out my YouTube channel where I share the exact strategies I use to automate onboarding, scale client systems, and grow to $20k+ monthly revenue.
by Shahrear
🧾 Attendance Extraction & Notification Pipeline (Google Drive + VLM Run + Google Sheets + Gmail) ⚙️ What This Workflow Does This workflow automates daily attendance tracking by analyzing uploaded attendance images, extracting participant names via VLM Run’s Execute Agent, appending the structured data into Google Sheets, and emailing a formatted attendance summary through Gmail. 🧩 Requirements A Google Drive account with a designated folder for attendance image uploads. A VLM Run API account and your Execute Agent URL or API credentials. A Gmail account connected to n8n for sending notification emails. An n8n instance with the following credentials configured: Google Drive, Google Sheets, Gmail, VLM Run (HTTP API Credential) ⚡Quick Setup Install the verified VLM Run node by searching for VLM Run in the node list, then click Install. Once installed, you can start using it in your workflows. Add VLM Run API credentials for image parsing. Link your Google Drive, Google Sheets and Gmail accounts in the credentials section. In the “Google Drive Trigger” node, select the folder where attendance images will be uploaded. In the “Append Row” node, connect your Google Sheet and map columns manually (e.g., Date, Total, Names…). Add VLM Run execute agent endpoint. Upload an image (whiteboard attendance photo or scanned sheet) to your Drive folder. Wait for the automation to process and check your Google Sheet for results. After each extraction and logging step, the Gmail Node sends an automated summary email. Email includes: 📅 Date of attendance 👥 Total participants detected 🧍 List of extracted names ⚙️ How It Works Monitor List Uploads – Watches a Google Drive folder for new attendance images (e.g., whiteboard snapshots, scanned sheets). Download List – Downloads each new image automatically for AI processing. VLM Run for Extraction sends the image to VLM Run Execute Agent, which uses an AI model to detect and extract attendee names from the image. Receive Attendance Data – The Webhook node (check-attendance) receives structured JSON data from VLM Run in the format: { "majorDimension": "ROWS", "values": [ ["2025-10-03", "6", "Camila Torres Rivera", "Mellissa Richmond", "Captioner Javier", "Siobhan", "Catherine Soler", "Anisah Anif"] ] } The Google Sheets Node appends the structured attendance data to the selected sheet, maintaining a daily log for future reference. The Gmail Node sends an automatic email summarizing attendance. 💡Why Use This Workflow 🔄 Fully Automated: No manual data entry required. 🧠 AI-Powered Extraction: Uses VLM Run to read and parse images with handwritten or typed text. 📊 Centralized Logging: Attendance data neatly organized in Google Sheets for future analysis. 📬 Instant Notification: Keeps stakeholders informed automatically after each session. ⚡ Scalable: Works with multiple folders, daily batches, or parallel sessions. 🛠️ How to Customize You can tailor this workflow to match your organization’s needs: | Area | Customization Options | | ------------------------ | ---------------------------------------------------------------------------------------------------------- | | Drive Folder | Point to a different upload folder for each department or class. | | Google Sheet Mapping | Add more columns (e.g., “Class Name,” “Supervisor”) and map them in the Append Row node. | | Email Template | Modify the Gmail node’s subject and body to include custom formatting or logos. | | Trigger Schedule | Replace Google Drive Trigger with a Cron Node if you prefer scheduled checks instead of live watching. | | Data Validation | Add a Function Node to filter duplicates or incorrect entries before appending to Sheets. | | Notification Options | Send alerts via Slack, Telegram, or Microsoft Teams instead of Gmail if desired. | ⚠️ Community Node Disclaimer This workflow uses community nodes (VLM Run) that may need additional permissions and custom setup.
by Marth
Website Lead Notification System Let's build this simple and high-value workflow. Here is a detailed, node-by-node explanation of how it works and how to set it up in n8n. How It Works This workflow acts as a bridge between your website's contact form and your sales team. It waits for a submission from your website via a Webhook. As soon as a new lead fills out the form, the workflow instantly captures their data and sends a formatted notification to your team's Slack channel. This ensures your team can respond to new leads in real time, without any delays. Setup Steps 1. Webhooks Trigger: Receive Website Form Submissions Node Type:** Webhook Trigger Parameters:** HTTP Method: POST Path: new-lead Explanation:** This node is the starting point. It creates a unique URL that you will use in your website's form submission settings. When a visitor submits your form, the data is sent to this URL as a POST request, triggering the workflow. 2. Slack: Notify Sales Team Node Type:** Slack Credentials:** YOUR_SLACK_CREDENTIAL Parameters:** Operation: Post Message Channel: YOUR_SALES_CHANNEL_ID (e.g., #sales-leads) Text: `New Website Lead! - Name: {{ $json.name }} Company: {{ $json.company }} Email: {{ $json.email }} Message: {{ $json.message }}` Explanation:** This node sends a formatted message to your designated Slack channel. The curly braces {{ }} contain n8n expressions that dynamically pull the data (name, company, email, etc.) from the website form submission. 3. Google Sheets: Archive Lead Data (Optional) Node Type:** Google Sheets Credentials:** YOUR_GOOGLE_SHEETS_CREDENTIAL Parameters:** Operation: Add Row Spreadsheet ID: YOUR_SPREADSHEET_ID Sheet Name: Leads Data: Name: ={{ $json.name }} Email: ={{ $json.email }} Date: ={{ $now }} Explanation:** This is an optional but recommended step. This node automatically adds a new row to a Google Sheet, creating a clean, organized archive of all your website leads. 4. Gmail: Send Automatic Confirmation Email (Optional) Node Type:** Gmail Credentials:** YOUR_GMAIL_CREDENTIAL Parameters:** Operation: Send To: ={{ $json.email }} Subject: Thanks for contacting us! Body: Hi {{ $json.name }}, thanks for reaching out. We've received your message and will get back to you shortly. Explanation:** This node provides a quick and professional automated response to the new lead, confirming that their message has been received. Final Step: Activation After configuring the nodes, click "Save" at the top of the canvas. Click the "Active" toggle in the top-right corner. The workflow is now live and will listen for new form submissions. Remember: You need to configure your website's form to send a POST request to the URL from your Webhook Trigger node.
by vinci-king-01
Public Transport Schedule & Delay Tracker with Microsoft Teams and Dropbox ⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template. This workflow automatically scrapes public transport websites or apps for real-time schedules and service alerts, then pushes concise delay notifications to Microsoft Teams while archiving full-detail JSON snapshots in Dropbox. Ideal for commuters and travel coordinators, it keeps riders informed and maintains a historical log of disruptions. Pre-conditions/Requirements Prerequisites n8n instance (self-hosted or n8n.cloud) ScrapeGraphAI community node installed Microsoft Teams incoming webhook configured Dropbox account with an app token created Public transit data source (website or API) that is legally scrapable or offers open data Required Credentials ScrapeGraphAI API Key** – enables web scraping Microsoft Teams Webhook URL** – posts messages into a channel Dropbox Access Token** – saves JSON files to Dropbox Specific Setup Requirements | Item | Example | Notes | |------|---------|-------| | Transit URL(s) | https://mycitytransit.com/line/42 | Must return the schedule or service alert data you need | | Polling Interval | 5 min | Adjust via Cron node or external trigger | | Teams Channel | #commuter-updates | Create an incoming webhook in channel settings | How it works This workflow automatically scrapes public transport websites or apps for real-time schedules and service alerts, then pushes concise delay notifications to Microsoft Teams while archiving full-detail JSON snapshots in Dropbox. Ideal for commuters and travel coordinators, it keeps riders informed and maintains a historical log of disruptions. Key Steps: Webhook Trigger**: Starts the workflow (can be replaced with Cron for polling). Set Node**: Stores target route IDs, URLs, or API endpoints. SplitInBatches**: Processes multiple routes one after another to avoid rate limits. ScrapeGraphAI**: Scrapes each route page/API and returns structured schedule & alert data. Code Node (Normalize)**: Cleans & normalizes scraped fields (e.g., converts times to ISO). If Node (Delay Detected?)**: Compares live data vs. expected timetable to detect delays. Merge Node**: Combines route metadata with delay information. Microsoft Teams Node**: Sends alert message and rich card to the selected Teams channel. Dropbox Node**: Saves the full JSON snapshot to a dated folder for historical reference. StickyNote**: Documents the mapping between scraped fields and final JSON structure. Set up steps Setup Time: 15-25 minutes Clone or Import the JSON workflow into your n8n instance. Install ScrapeGraphAI community node if you haven’t already (Settings → Community Nodes). Open the Set node and enter your target routes or API endpoints (array of URLs/IDs). Configure ScrapeGraphAI: Add your API key in the node’s credentials section. Define CSS selectors or API fields inside the node parameters. Add Microsoft Teams credentials: Paste your channel’s incoming webhook URL into the Microsoft Teams node. Customize the message template (e.g., include route name, delay minutes, reason). Add Dropbox credentials: Provide the access token and designate a folder path (e.g., /TransitLogs/). Customize the If node logic to match your delay threshold (e.g., ≥5 min). Activate the workflow and trigger via the webhook URL, or add a Cron node (every 5 min). Node Descriptions Core Workflow Nodes: Webhook** – External trigger for on-demand checks or recurring scheduler. Set** – Defines static or dynamic variables such as route list and thresholds. SplitInBatches** – Iterates through each route to control request volume. ScrapeGraphAI** – Extracts live schedule and alert data from transit websites/APIs. Code (Normalize)** – Formats scraped data, merges dates, and calculates delay minutes. If (Delay Detected?)** – Branches the flow based on presence of delays. Merge** – Re-assembles metadata with computed delay results. Microsoft Teams** – Sends formatted notifications to Teams channels. Dropbox** – Archives complete JSON payloads for auditing and analytics. StickyNote** – Provides inline documentation for maintainers. Data Flow: Webhook → Set → SplitInBatches → ScrapeGraphAI → Code (Normalize) → If (Delay Detected?) ├─ true → Merge → Microsoft Teams → Dropbox └─ false → Dropbox Customization Examples Change to Slack instead of Teams // Replace Microsoft Teams node with Slack node { "text": 🚊 ${$json.route} is delayed by ${$json.delay} minutes., "channel": "#commuter-updates" } Filter only major delays (>10 min) // In If node, use: return $json.delay >= 10; Data Output Format The workflow outputs structured JSON data: { "route": "Line 42", "expected_departure": "2024-04-22T14:05:00Z", "actual_departure": "2024-04-22T14:17:00Z", "delay": 12, "status": "delayed", "reason": "Signal failure at Main Station", "scraped_at": "2024-04-22T13:58:22Z", "source_url": "https://mycitytransit.com/line/42" } Troubleshooting Common Issues ScrapeGraphAI returns empty data – Verify CSS selectors/API fields match the current website markup; update selectors after site redesigns. Teams messages not arriving – Ensure the Teams webhook URL is correct and the incoming webhook is still enabled. Dropbox writes fail – Check folder path, token scopes (files.content.write), and available storage quota. Performance Tips Limit SplitInBatches to 5-10 routes per run to avoid IP blocking. Cache unchanged schedules locally and fetch only alert pages for faster runs. Pro Tips: Use environment variables for API keys & webhook URLs to keep credentials secure. Attach a Cron node set to off-peak hours (e.g., 4 AM) for daily full-schedule backups. Add a Grafana dashboard that reads the Dropbox archive for long-term delay analytics.
by Pixcels Themes
Who’s it for This template is ideal for ecommerce founders, dropshippers, Shopify store owners, product managers, and agencies who want to automate product listing creation. It removes manual work by generating titles, descriptions, tags, bullet points, alt text, and SEO metadata directly from a product image and basic input fields. What it does / How it works This workflow starts with a webhook that receives product information along with an uploaded image. The image is uploaded to an online image host so it can be used inside Shopify. At the same time, the image is analyzed by Google Gemini using your provided product name, material type, and details. Gemini returns structured JSON containing: Title Description Tags Bullet points Alt text SEO title SEO description The workflow cleans and parses the AI output, merges it with the uploaded image URL, and constructs a complete Shopify product payload. Finally, it creates a new product in Shopify automatically using the generated content and the provided product variants, vendor, options, and product type. Requirements Google Gemini (PaLM) API credentials Shopify private access token Webhook endpoint for receiving data and files An imgbb (or any image hosting) API key How to set up Connect your Gemini and Shopify credentials. Replace the imgbb API key and configure the hosting node. Provide vendor, product type, variants, and options in the webhook payload. Ensure your source system sends file, product_name, material_type, and extra fields. Run the webhook URL and test with a sample product. How to customize the workflow Change the AI prompt for different product categories Add translation steps for multi-language stores Add price calculation logic Push listings to multiple Shopify stores Save generated metadata into Google Sheets or Notion
by Trung Tran
EC2 Lifecycle Manager with AI Chat Agent (Describe, Start, Stop, Reboot, Terminate) Watch the demo video below: Who’s it for This workflow is designed for DevOps engineers and cloud administrators who want to manage AWS EC2 instances directly from chat platforms (Slack, Teams, Telegram, etc.) using natural language. It helps engineers quickly check EC2 instance status, start/stop servers, reboot instances, or terminate unused machines — without logging into the AWS console. How it works / What it does A chat message (command) from the engineer triggers the workflow. The EC2 Manager AI Agent interprets the request using the AI chat model and memory. The agent decides which AWS EC2 action to perform: DescribeInstances → List or check status of EC2 instances. StartInstances → Boot up stopped instances. StopInstances → Gracefully shut down running instances. RebootInstances → Restart instances without stopping them. TerminateInstances → Permanently delete instances. The selected tool (API call) is executed via an HTTP Request to the AWS EC2 endpoint. The agent replies back in chat with the result (confirmation, instance status, errors, etc.). How to set up Add Chat Trigger Connect your chatbot platform (Slack/Telegram/Teams) to n8n. Configure the “When chat message received” node. Configure OpenAI Chat Model Select a supported LLM (GPT-4, GPT-4.1, GPT-5, etc.). Add system and user prompts to define behavior (EC2 assistant role). Add Memory Use Simple Memory to keep track of context (e.g., instance IDs, region, last action). Connect EC2 API Tools Create HTTP Request nodes for: Describe Instances Start Instance Stop Instance Reboot Instance Terminate Instance Use AWS credentials with Signature V4 authentication. API endpoint: https://ec2.{region}.amazonaws.com/ Link Tools to Agent Attach all EC2 tools to the EC2 Manager AI Agent node. Ensure the agent can choose which tool to call based on user input. Requirements n8n instance** (self-hosted or cloud). Chat platform integration** (Slack, Teams, or Telegram). OpenAI (or other LLM) credentials**. AWS IAM user with EC2 permissions**: ec2:DescribeInstances ec2:StartInstances ec2:StopInstances ec2:RebootInstances ec2:TerminateInstances AWS region configured** for API calls. How to customize the workflow Add safety checks**: Require explicit confirmation before running Stop or Terminate. Region flexibility**: Add support for multi-region management by letting the user specify the region in chat. Tag-based filters**: Extend DescribeInstances to return only instances matching specific tags (e.g., env=dev). Cost-saving automation**: Add scheduled rules to automatically stop instances outside working hours. Enhanced chatbot UX**: Format responses into tables or rich messages in Slack/Teams. Audit logging**: Store each action (who/what/when) into a database or Google Sheets for compliance.