by Cheng Siong Chin
How It Works This workflow automates monthly revenue reconciliation across Stripe, PayPal, and bank statements by standardizing data formats, detecting discrepancies, and producing audit-ready reports. It concurrently retrieves revenue data from multiple sources, normalizes datasets into consistent structures, consolidates records, and reconciles transactions against bank statements with intelligent mismatch detection. The system aggregates monthly totals, generates detailed audit reports with clearly flagged discrepancies, archives finalized outputs to Google Drive, and notifies tax agents. Designed for accounting firms, finance teams, and businesses, it enables automated revenue verification, multi-channel reconciliation, discrepancy identification, and compliance audit documentation without manual record matching or error-prone spreadsheet workflows. Setup Steps Configure Stripe, PayPal. Set up normalization rules for date, currency, and transaction ID mappings. Connect Google Drive for report archiving and Gmail for agent notifications. Define mismatch thresholds and reconciliation tolerance parameters. Prerequisites Stripe, PayPal, and bank statement accounts Use Cases Accounting firms automating client revenue verification; multi-channel e-commerce businesses Customization Add additional payment sources (Square, Shopify), adjust normalization rules for regional formats Benefits Eliminates manual reconciliation, detects discrepancies automatically
by FlyCode
⚙️ Automated Stripe Failed Payment Recovery (with Postmark + AI Email Generator) Recover failed Stripe subscription payments with AI-personalized emails sent via Postmark. 📝 Template Description Recover failed subscription payments automatically with Stripe, Postmark, and AI. This workflow listens for Stripe invoice.payment_failed webhooks, checks that the event is related to an auto-charged subscription, and then automatically sends a personalized email (generated with AI) to the customer. The email is polite, branded, but also urgent — encouraging the customer to pay quickly and avoid service cancellation. 🛠️ How it works 📣 Webhook Listens for Stripe webhook events. Make sure to connect it in your Stripe dashboard (see setup below). 🧹 Filter (Guard) Ensures the event is indeed an invoice event and filters out unrelated webhooks. 💡 Code Node Extracts useful fields (firstName, lastName, customer email, amount, currency, invoice number, hosted invoice URL, subscription description, account name). ✅ If Node Verifies that: Event type = invoice.payment_failed Billing reason = subscription_cycle Collection method = charge_automatically 👉 This ensures only recurring subscription invoices with auto-payment are processed. 🤖 AI Agent + OpenAI Generates a ready-to-send email JSON (to, subject, HTML body) using the extracted Stripe data. ✍️ You can customize the prompt here to match your brand’s tone of voice and style. 🧩 Code Parser Parses the AI model’s JSON output into fields (to_email, email_subject, email_body). 📧 HTTP Request (Postmark) Sends the email using Postmark’s API. You’ll need your own Postmark Server Token, From address, and Message Stream. 🚀 Setup Instructions 1. Stripe Webhook Go to Stripe Dashboard → Developers → Webhooks. Click + Add endpoint. Use your n8n Webhook URL (from the Webhook node) as the endpoint. Select event type: invoice.payment_failed. Save and deploy. 👉 Example docs: Stripe: Listen to events with webhooks. 2. Disable Stripe’s Default Failed Payment Emails In Stripe, go to Billing → Settings → Customer emails → Manage failed payments. Turn off “Failed payment” emails under the Revenue Recovery section. This prevents customers from receiving duplicate or conflicting emails. 3. Postmark Setup Create a Postmark account. Add a Server and copy the Server API Token. In n8n, add Postmark credentials with this token. Configure: From = your verified sending email (must be verified in Postmark). MessageStream = typically "outbound" (or any custom stream you set up). Docs: Postmark API overview. 4. OpenAI Setup Add your OpenAI credentials in n8n. Attach them to the OpenAI Chat Model node. You can modify the prompt in the AI Agent node to fit your company’s style. ✨ Customization Tips Update the AI prompt with your brand’s tone of voice (friendly, formal, playful, etc.). Adjust the HTML email design inside the prompt (button colors, footer, etc.). Add extra guard conditions (e.g., only trigger if invoice_amount > 0). Change the sending service: replace Postmark with Gmail, SMTP, or another provider. 💬 Or talk to our Billing Recovery Experts at flycode.com for hands-on help. ✅ Outcome Whenever a customer’s subscription payment fails, this workflow: Detects it instantly via Stripe Generates a polite but urgent recovery email Sends it automatically via Postmark Result: Fewer cancellations, higher recovered revenue, and a smoother customer experience. 💸💌
by Ronnie Craig
Healthcare Email Autoresponder - Daily Outreach 📧 A production-ready n8n workflow for automated healthcare email marketing with AI-powered personalization. 🎯 What This Workflow Does This automated email system sends daily personalized healthcare-themed emails to your contact list. Perfect for: Healthcare professionals building patient relationships Medical practices maintaining client engagement Wellness coaches staying connected with clients Health educators sharing daily motivation ✨ Key Features AI-Powered Personalization**: Uses OpenAI to customize each email with recipient's name Smart Rate Limiting**: Random 2-5 minute delays between emails to avoid spam filters Batch Processing**: Limits to 10 emails per run for better deliverability Email Tracking**: Updates Google Sheets to prevent duplicates and track progress Professional Templates**: Healthcare-themed content with customizable signatures Automated Scheduling**: Runs daily at 1 PM (customizable) 🛠️ Setup Instructions Prerequisites n8n instance (cloud or self-hosted) Gmail account for sending emails Google Sheets for contact management OpenAI API key Step 1: Import the Workflow Download the Healthcare_Email_Autoresponder_Community_Template.json file In n8n, go to Templates and click "Import from File" Select the downloaded JSON file The workflow will be imported as inactive Step 2: Configure Credentials Gmail OAuth2 Setup: Click on the "Send Email" node Create new Gmail OAuth2 credential Follow n8n's Gmail setup guide Test the connection Google Sheets Setup: Click on the "Healthcare_Contact_List" node Create new Google Sheets OAuth2 credential Replace YOUR_GOOGLE_SHEET_ID_HERE with your actual sheet ID Ensure your sheet has these columns: First Name Email Emailed (for tracking timestamps) OpenAI API Setup: Click on the "OpenAI Chat Model" node Create new OpenAI credential Add your OpenAI API key Select your preferred model (gpt-4o-mini recommended for cost efficiency) Step 3: Customize Your Email Template Click on the "AI Email Generator" node Edit the system message to include your details: Replace [YOUR NAME HERE] with your actual name Replace [YOUR TITLE HERE] with your professional title Replace [YOUR COMPANY HERE] with your company name Replace [YOUR PHONE NUMBER] with your phone number Replace [YOUR EMAIL] with your email address Replace [YOUR WEBSITE] with your website URL Step 4: Prepare Your Contact List Create a Google Sheet with the following structure: | First Name | Email | Emailed | |------------|-------------------|------------| | John | john@example.com | | | Jane | jane@example.com | | Important Notes: Leave the "Emailed" column empty initially The workflow will populate timestamps as emails are sent Only contacts with empty "Emailed" cells will receive emails Step 5: Test and Activate Test the workflow with a few sample contacts Check that emails are being generated and sent correctly Verify that Google Sheets is being updated with timestamps Once satisfied, activate the workflow 📊 Google Sheets Structure Your contact sheet should include these columns: First Name** (required): Used for personalization Email** (required): Recipient email address Emailed** (required): Timestamp tracking (leave empty initially) Optional columns you can add: Last Name Company Phone Notes ⚙️ Customization Options Change Email Frequency Edit the "Daily Trigger (1 PM)" node Modify the schedule (hourly, daily, weekly) Set preferred time zones Adjust Batch Size Edit the "Limit to 10 Contacts" node Change maxItems value (recommend staying under 50) Modify Wait Times Edit the "Random Wait (2-5min)" node Adjust the random delay formula Current: {{ Math.floor(Math.random() * 4) + 2 }} (2-5 minutes) Update Email Content Edit the system message in "AI Email Generator" node Change the joke, signature, or entire email structure Add seasonal content or special promotions 🔧 Troubleshooting Common Issues: Emails not sending Verify Gmail credentials are active Check email quota limits Ensure recipient emails are valid Google Sheets not updating Confirm sheet ID is correct Check column names match exactly Verify Google Sheets credentials AI not generating content Validate OpenAI API key Check API quota and billing Test with different model if needed Rate limiting issues Increase wait times between emails Reduce batch size Check Gmail sending limits 📈 Best Practices Start Small: Begin with 5-10 contacts to test deliverability Monitor Metrics: Track open rates and responses Respect Privacy: Include unsubscribe options Stay Relevant: Update content regularly Follow Regulations: Comply with CAN-SPAM and GDPR 🤝 Contributing to the Community This template is designed to be: Easy to understand**: Clear node names and documentation Production ready**: Includes error handling and rate limiting Customizable**: Template placeholders for personalization Well documented**: Comprehensive setup instructions Feel free to adapt this workflow for your specific healthcare niche! 📄 License This workflow template is provided free to the n8n community under MIT License. 🆘 Support For questions or issues: Check the n8n community forum Review n8n's official documentation Test each node individually to isolate problems Made with ❤️ for the n8n community
by Jitesh Dugar
Streamline your manufacturing quality control process with automated inspection tracking, compliance documentation, and real-time alerts. This workflow eliminates manual QC paperwork while ensuring ISO compliance and instant visibility into product quality. 🎯 Use Case Perfect for manufacturing facilities that need to: Document quality inspections for compliance audits Track product defects and non-conformities Generate certificates of compliance automatically Alert teams instantly when products fail inspection Maintain ISO 9001:2015 documentation requirements ✨ Key Features Automated Data Collection Accepts inspection data from web forms (Typeform) or Google Sheets Processes measurements against predefined specifications Calculates PASS/FAIL status automatically Smart Documentation Stores all inspection records in Google Drive Maintains searchable tracking spreadsheet Generates HTML compliance certificates Creates audit-ready documentation trail Real-Time Alerts Instant Slack notifications for failed inspections Detailed non-conformity reporting Escalation to quality managers Daily Analytics Automated daily quality summaries at 8 AM Pass rate calculations and trend analysis Product and inspector performance metrics 🔧 Setup Requirements Google Workspace - For Sheets and Drive storage Slack - For team notifications Jotform (optional) - For web-based inspection forms Email (SMTP) - For sending compliance certificates 📝 Customization Tips Modify specifications in the "Process Inspection Data" node to match your products Add custom fields for industry-specific requirements Adjust alert thresholds and notification channels Extend certificate templates with your company branding 🏭 Industries Ideal for: Electronics, Automotive Parts, Medical Devices, Consumer Goods, Food & Beverage, Aerospace Components 💡 Example Scenario A electronics manufacturer uses this workflow to inspect PCB assemblies. When an inspector submits measurements via Jotform, the workflow automatically checks if dimensions and weight meet specifications, stores the report, and generates a certificate. If any board fails, the quality manager receives an immediate Slack alert with details. Time Saved: ~2 hours daily on documentation and reporting Error Reduction: 90% fewer data entry mistakes Compliance: 100% audit-ready documentation
by Avkash Kakdiya
How it works This workflow acts as an instant SDR that replies to new inbound leads across multiple channels in real time. It first captures and normalizes all incoming lead data into a unified structure. The workflow then evaluates IST working days and hours, generates a context-aware AI response, and routes the reply to the correct channel. Finally, it logs the full interaction, response status, and timing into Google Sheets. Step-by-step Step 1: Lead intake & normalization** Incomming Lead whatsapp1 – Receives new WhatsApp lead messages via webhook. Incomming Lead facebook1 – Captures incoming Facebook lead messages. Incomming Lead instagram1 – Listens for Instagram lead messages. Incomming Lead linkdin1 – Captures LinkedIn lead messages. Incomming Lead Website1 – Receives website form submissions. Normalize Lead Data6 – Normalizes WhatsApp lead fields. Normalize Lead Data7 – Normalizes Facebook lead fields. Normalize Lead Data8 – Normalizes Instagram lead fields. Normalize Lead Data9 – Normalizes LinkedIn lead fields. Normalize Lead Data5 – Normalizes website lead data. Switch2 – Merges all normalized leads into a single processing path. Step 2: Working hours & AI response** Extract Day and Hours1 – Converts timestamps to IST and extracts day and time. Is Working Day and Working Hour?1 – Determines whether the lead arrived during business hours. Code in JavaScript3 – Builds the AI prompt using lead details and timing context. Get Ai Response1 – Generates a short, human-like response. Step 3: Send reply & log data** Code in JavaScript4 – Combines AI output with normalized lead data. Switch3 – Routes the response based on the source channel. Send message – Sends WhatsApp replies. Send Instagram Message1 – Sends Instagram responses. Send Facebook Messages1 – Sends Facebook replies. Send Linkdin Messages1 – Sends LinkedIn responses. Send a message1 – Sends email replies for website leads. Code in JavaScript5 – Finalizes response status and metadata. google-sheet-name – Appends or updates lead and response data in Google Sheets. Why use this? Replies instantly to leads across all major inbound channels Keeps all lead data standardized and easy to manage Automatically respects IST working days and hours Reduces manual SDR workload without losing response quality Maintains a complete response log for reporting and follow-up
by WeblineIndia
Detect duplicate candidates by email/phone from Gmail to Slack using Google Sheets This workflow automatically detects duplicate job applicants by checking incoming emails from Gmail against existing records in Google Sheets. If a candidate's email is already found in the sheet, it sends an alert to Slack; otherwise, it adds the candidate to the sheet. Who’s it for HR and recruitment teams processing candidate emails manually Startups or SMEs handling job applications via Gmail Anyone who wants to automate resume collection and deduplication Teams using Slack and Google Workspace How it works Triggers every few minutes via the Schedule Trigger node Fetches recent emails labeled "applicant" from Gmail Extracts candidate details from the email body using regex Reads all existing rows from the Google Sheet Compares the candidate’s email with existing entries If duplicate → Sends a Slack alert If new → Appends to the Google Sheet How to set up Label candidate emails in Gmail with a label like applicant Connect Gmail, Google Sheets, and Slack credentials in n8n Create a Google Sheet with these columns: candidate_name, candidate_email, candidate_phone, role_applied, years_of_experience, recruiter, resume_url, source_email Import the workflow JSON Update: Gmail label ID Google Sheet ID Slack channel or user Activate the workflow Requirements n8n (self-hosted or cloud) Gmail account with access to labeled application emails Google Sheet to store candidates Slack account with chat:write scope Basic regex familiarity (optional) How to customize Change comparison logic to include phone numbers. Add fallback logic to check for similar names. Add filters for roles, experience levels. Forward resumes to Drive or Notion. Trigger an approval flow for screened candidates. Add‑ons Google Drive: Upload parsed resumes. Notion / Airtable: Store structured candidate records. Webhooks: Forward to ATS or CRM. PDF parsers: Extract data from attachments. Use Case Examples | Use Case | Description | | ------------------- | ----------------------------------------------------- | | Resume deduplication | Avoid processing the same applicant twice | | Auto Slack alert | Instantly notify recruiter of repeat candidates | | Centralized tracking | Keep candidate records in Sheets for filtering/export | | Passive sourcing | Run hourly checks on labeled Gmail inboxes | Common troubleshooting | Issue | Possible Cause | Solution | | ------------------------ | ------------------------------------------ | -------------------------------------------------------------- | | Slack message not sent | Invalid Slack token / channel not selected | Reauthorize Slack connection and select correct user/channel | | Google Sheet not updated | Sheet ID or tab name is incorrect | Double-check the Sheet URL and worksheet tab | | Email data not extracted | Email body format doesn’t match regex | Adjust regex in the "Code" node | | Nothing happens | Gmail label or date filter is too strict | Ensure emails exist with the right label in the last X minutes | Need Help? Need help setting it up or tweaking regex for your custom email format? We’re happy to help — just ask! Want to add phone number duplication checks or auto-resume upload to Google Drive? Our Automation team at WeblineIndia can guide you step-by-step.
by ueharayuuki
Who's it for This template is perfect for anyone struggling with habit consistency who wants a fun, engaging way to maintain daily routines. It's ideal for productivity enthusiasts, fitness beginners, remote workers, students, or anyone who loves gamification and RPG elements. If you've ever wished your daily tasks felt more like an adventure game, this workflow is for you. How it works The workflow runs automatically every morning at your chosen time (default: 6 AM) and transforms your daily habits into an RPG adventure: Daily Trigger - Scheduled to run every morning Player Stats Generation - Creates random level, XP, and streak data (in production, connect to a database) Quest Generation - Assigns daily "quests" based on the day of week (weekday routines, weekend specials, Monday goals) Quote Fetching - Gets a motivational quote from a free API Achievement Processing - Checks for milestone achievements (7-day streak, 30-day streak, level 10) Email Creation - Builds a beautiful HTML email with game-like design Email Delivery - Sends the quest email via Gmail Stats Logging - Records execution statistics The system includes different habit sets for weekdays and weekends, random bonus quests, a rank system (D to SSS), achievement unlocks, and progress tracking with visual elements like progress bars. Setup steps Setup takes approximately 5 minutes: Import the workflow into your n8n instance Connect Gmail - Click "Create New" in the Gmail node credentials and authenticate via OAuth2 Update recipient email - Change "your-email@gmail.com" to your actual email in the "Send Quest Email" node Customize habits (optional) - Edit the quest arrays in the "Generate Daily Quests" node Test the workflow - Click "Execute Workflow" to send a test email Activate - Toggle the workflow to "Active" when ready for daily automation Requirements Gmail account with OAuth2 authentication n8n instance (cloud or self-hosted) No external API keys required (uses free Quotable API) No database required (uses random data for demonstration) How to customize the workflow Modify Daily Habits Edit the questDatabase object in the "Generate Daily Quests" node: Add your own habits with custom names Adjust XP and coin rewards Change difficulty levels (Easy, Medium, Hard, Epic, Bonus) Set different quests for weekdays vs weekends Visual Customization In the "Create Email Template" node: Modify color schemes in the CSS Adjust font sizes and layouts Change emoji icons for quests Update achievement thresholds Timing and Schedule In the "Daily Morning Trigger" node: Change the trigger hour (default: 6 AM) Adjust timezone if needed Set different schedules for weekdays/weekends Motivational Content Update daily motivation messages for each day of the week Customize achievement names and descriptions Modify rank titles and progression Add your own fallback quotes This workflow brings the addictive nature of RPG games to your daily habits, making routine tasks feel like an epic adventure. Perfect for anyone who wants to level up their life, one quest at a time!
by WeblineIndia
WooCommerce Seasonal Sales Planning & Monitor → SET Pattern Compare → Slack This workflow automatically aggregates sales data, calculates performance trends (Revenue & Orders) against previous months and years, identifies the top-selling SKU and sends a strictly formatted, professional summary report to Slack. This workflow runs on a schedule (e.g., daily or weekly) to generate a snapshot of your business performance. It fetches sales data from your database or e-commerce platform, calculates growth percentages (vs. Month, vs. Year), formats the data into a clean JSON structure and sends a structured report to Slack without unnecessary clutter or emojis. You receive: Automated comparison of Revenue & Order counts** Trend analysis (Percentage change & directional trend)** Identification of the Top Performing SKU** A clean, professional Slack alert for team visibility** Ideal for management teams needing a quick, data-driven pulse check on store performance without manually running reports. Quick Start – Implementation Steps Add your Database or API Credentials (e.g., Postgres, Shopify, WooCommerce) in the data fetching nodes. Connect your Slack account credentials and select the target channel. Ensure your data source provides current, vsMonth and vsYear metrics (or use the calculation nodes provided). Review the Slack Node to ensure the JSON block formatting matches your preference. Activate the workflow — automated reporting begins instantly. What It Does This workflow automates the generation of your business trend report: Trigger: Starts automatically based on a schedule (e.g., every morning at 8 AM). Fetch Data: Retrieves raw sales numbers for the current period, previous month and previous year. Process Trends: Calculates the percentage difference and determines the trend direction (Increase, Flat, Decrease). Identify Top SKU: Sorts product sales to find the highest-performing item of the period. Format Report: Constructs a strict JSON object containing: Revenue (Current, vs Month, vs Year) Orders (Current, vs Month, vs Year) Top SKU Name Send Slack Alert: Pushes a cleanly formatted message (using Block Kit or Markdown) to your team channel. This ensures your team focuses on the numbers that matter, with zero manual effort. Who’s It For This workflow is ideal for: E-commerce Store Owners Sales & Marketing Managers Data Analysts Operations Teams Executive leadership requiring daily snapshots Teams preferring data-heavy, emoji-free reports Requirements to Use This Workflow To run this workflow, you need: n8n instance** (cloud or self-hosted) Data Source** (PostgreSQL, MySQL, Shopify, WooCommerce or Google Sheets) Slack workspace** with API permissions (Webhook or Bot Token) Basic understanding of JSON structure for Slack Block Kit How It Works Scheduled Trigger – Initiates the workflow at a specific time. Get Sales Data – Queries your backend to get the raw numbers. Calculate Logic – Compares current numbers vs. historical data to generate percentages. Create Report Object – Maps the values into a standardized JSON format (e.g., revenue.current, orders.vsYear). Format Message – Converts the JSON object into a Slack-readable text block or UI block. Send Notification – Posts the final report to Slack. Setup Steps Import the provided n8n JSON file. Open the Data Fetch nodes and configure your database/API connection. Ensure your query returns the necessary fields (Revenue Orders, SKU). Verify the Format Data node is correctly mapping your variables to the JSON structure: {{ $json"revenue" }} {{ $json"orders"["percent"] }} Connect Slack API credentials and choose your channel. Run a test execution to verify the numbers appear correctly in Slack. Activate the workflow — done! How To Customize Nodes Customize Report Metrics Modify the Set/Calculation nodes: Add Average Order Value (AOV) Include Customer Acquisition Cost (CAC) Change the comparison period (e.g., vs Last Week instead of Month) Customize Slack Layout You can modify the JSON in the Slack node to: Use Block Kit for a table-like structure (columns for Revenue/Orders) Use Plain Text for a simple list view Add or remove bold formatting (bold) Add a "View Dashboard" button link Customize Data Source Replace the generic database node with: Shopify Node** (Get Orders) WooCommerce Node** (Get Sales Report) Stripe Node** (Get Balance Transactions) Google Sheets** (Read Row) Add-Ons (Optional Enhancements) You can extend this workflow to: Send reports to Email or Microsoft Teams in addition to Slack. Generate a PDF report using an HTML-to-PDF service. Save the daily snapshot into a "History" table in Airtable/Database. Add conditional alerts (e.g., @mention the CEO if Revenue drops by >20%). Integrate with OpenAI to write a qualitative analysis of the trends. Use Case Examples 1. Morning Standup Report Delivers key metrics to the team channel 15 minutes before the daily meeting. 2. Performance Monitoring Quickly identifies if a new marketing campaign is driving order volume. 3. Inventory Awareness Highlights the "Top SKU" so the warehouse team knows what is moving fast. 4. Executive Summaries Provides leadership with a noise-free, "just the numbers" view of the business. Troubleshooting Guide | Issue | Possible Cause | Solution | | :--- | :--- | :--- | | "N/A" in Trend | No historical data found | Ensure database has data for previous month/year | | Slack formatting broken | Invalid JSON syntax | Check quotes and brackets in Slack node | | Wrong Top SKU | Sorting logic incorrect | Verify the "Sort" node is ordering by Count DESC | | Authentication Error | Slack token expired | Re-connect Slack credentials in n8n | | Workflow not running | Schedule disabled | Toggle "Active" switch to ON | Need Help? If you need help customizing or extending this workflow — integrating specific ERPs, creating complex visual dashboards or scaling your data reporting, feel free to contact our n8n workflow development experts at WeblineIndia. We are happy to assist you with advanced automation solutions.
by WeblineIndia
WooCommerce VIP Customer Automation This workflow automatically identifies VIP customers from your WooCommerce store based on their total spending and number of completed orders. It pulls new orders on a schedule, filters valid transactions, groups customers, calculates their VIP tier, stores them into Airtable and notifies your team in Slack.It removes all manual checking and ensures your team instantly knows when a high-value customer places an order. Quick Start – Implementation Steps Add your WooCommerce store domain and API credentials inside n8n. Configure Airtable and Slack credentials. Adjust VIP rules (lifetime spend or total orders) if needed. Activate the workflow — it will automatically detect VIPs and alert your team. What It Does This workflow fully automates VIP customer detection for WooCommerce stores. Every few minutes, it retrieves new orders via WooCommerce API. It filters only processing or completed orders and extracts essential fields such as customer ID, customer name order total and timestamps. The workflow then groups orders by customer to ensure duplicate orders don’t inflate metrics. For each customer, it fetches their complete order history, calculates lifetime value, counts total paid orders and assigns a VIP tier (Platinum, Gold or Silver). Once a customer qualifies, their details are saved into Airtable for tracking. A Slack message is simultaneously sent to inform your team so they can take immediate action — such as providing priority support, follow-up messages or special offers. This system runs completely on its own and keeps customer insights up-to-date without manual checks. Who’s It For This workflow is ideal for: WooCommerce store owners Customer support teams Marketing teams CRM & retention specialists eCommerce operations teams Businesses wanting automated VIP alerts Requirements to Use This Workflow You will need: A running n8n instance (cloud or self-hosted) A WooCommerce store with API keys A Slack workspace with API permissions An Airtable Base to store VIP customers Basic understanding of WooCommerce and Airtable fields How It Works Scheduled Trigger – Runs every few minutes to check for new orders. Domain Setup – Assigns the WooCommerce store domain used across API calls. Fetch Orders – Retrieves all orders from WooCommerce. Filter Valid Orders – Only keeps completed or processing orders. Format & Clean Data – Extracts only key order details. Deduplicate Customers – Only the first order per customer is processed. Fetch Order History – Gets lifetime order history for each customer. Calculate VIP Tier – Determines Platinum/Gold/Silver based on spend or order count. Filter VIP Only – Removes customers who do not qualify. Save to Airtable – Creates/updates VIP records. Notify Team on Slack – Sends VIP alerts instantly. Setup Steps Import this workflow JSON into n8n. Enter your WooCommerce API credentials in the HTTP Request nodes. Update the wc\_domain value in the “Set WooCommerce Domain” node. Configure Airtable credentials and select your Base + Table. Set your Slack channel ID inside the Slack node. Adjust VIP rules inside the “Calculate VIP Tier” code node if needed. Activate the workflow — it will now run automatically. How to Customize Nodes Adjust VIP Rules Edit the logic inside Calculate VIP Tier: Change Platinum threshold (₹20,000 or your value) Change Gold rule (5 orders or more) Add new VIP tiers Customize Airtable Fields You can modify: Table columns Field naming Additional customer details Customize Slack Alerts In the Slack node, change: Message format Channel ID Emoji, headings or urgency indicators Add-Ons (Optional Enhancements) You can extend this workflow with: Automatic email to VIP customers Loyalty point calculation Google Sheets export Integration with CRM platforms Send SMS notifications Separate VIP tiers into dedicated Slack channels Use Case Examples Notify support about high-value customers Track customers crossing spending milestones Identify loyal customers with 5+ repeat purchases Automatically sync VIP customers to CRM Trigger loyalty coupon generation Troubleshooting Guide | Issue | Possible Cause | Solution | |---------------------------|--------------------------------------------------|--------------------------------------------------------------| | No orders fetched | Wrong domain or API keys | Update WooCommerce credentials | | VIP not detected | Customer has low spend or low orders | Verify VIP rules in “Calculate VIP Tier” | | Airtable record not created | Incorrect table schema | Match Airtable fields with node mapping | | Slack alert missing | Wrong Slack channel ID or credentials | Re-check Slack authentication | | Guest users included | Missing customer_id filter | Ensure customer_id != 0 condition stays in place | Need Help? If you need assistance integrating this workflow, customizing VIP rules or adding new automations, our automation team at WeblineIndia is happy to help. You can also extend this system with loyalty engines, advanced analytics, multi-store support or any custom automation tailored for your eCommerce business.
by Devon Toh
This Template Demonstrates How To Automate Generating and Sending Personalized Quotations as PDF. Use cases are many: send branded quotations to new leads after a discovery call, distribute pricing proposals to inbound form submissions, or push service packages to prospects. All without manually creating documents, exporting PDFs, or writing individual emails. Good to know OpenAI charges per token. The workflow uses gpt-4o-mini for cost efficiency (~$0.15/1M input tokens). Check OpenAI Pricing before running at scale. Google Docs template must be set up with placeholder variables before the first run. The workflow fills data in — it won’t generate a layout for you. Gmail has daily sending limits depending on your Google Workspace plan. Check your quota before sending large volumes. The form is hosted by n8n — share the form URL with your team or embed it in your internal tools. How it works PHASE 1: FORM INTAKE An n8n Form Trigger collects all quotation details: client name, email, company, service type, service description, price, validity date, and optional notes. The form is self-hosted on your n8n instance — no third-party form tools needed. Once submitted, all fields pass directly into the workflow as structured data. PHASE 2: AI PERSONALIZATION The form data is sent to OpenAI (gpt-4o-mini) which generates two pieces of content: – A personalized introduction paragraph addressing the client by name, referencing their company and specific needs. – A structured scope of work summary with deliverable bullet points based on the service description. Output is returned as JSON so it slots cleanly into the document template and email body. PHASE 3: DOCUMENT GENERATION The workflow copies your pre-built Google Docs quotation template to a new document, named automatically as “Quotation - {Company} - {Service}”. Nine placeholder variables are replaced in the copied document: {{client_name}}, {{company_name}}, {{client_email}}, {{service}}, {{price}}, {{valid_until}}, {{notes}}, {{intro}}, and {{scope_summary}}. The completed document is exported from Google Drive as a PDF. Your branding, layout, and formatting stay exactly as designed in the template. PHASE 4: EMAIL DELIVERY The PDF is attached to a personalized email sent via Gmail directly to the client’s email address. The email body includes the AI-generated intro, scope of work summary, total price, and validity date — no manual copy-pasting. The form submitter sees a confirmation response once the email is sent. Closed loop, fully hands-off. How to use Create your Google Docs template with your preferred layout, branding, and these placeholders: {{client_name}}, {{company_name}}, {{client_email}}, {{service}}, {{price}}, {{valid_until}}, {{notes}}, {{intro}}, {{scope_summary}}. Copy the template Document ID from the URL (docs.google.com/document/d/THIS_PART/edit) and paste it into the Copy Template node. Configure Google OAuth via Google Console. Create a project, apply your Client ID and Secret in the Google Drive, Google Docs, and Gmail node credentials. Set the OpenAI credential with your API key in the OpenAI Personalize node. Share the form URL with your team. The URL is generated automatically when the workflow is activated. Requirements • OpenAI API — personalized intro and scope generation • Google Drive OAuth — template copying and PDF export • Google Docs OAuth — variable replacement in the document • Gmail OAuth — personalized email delivery with PDF attachment • n8n instance (self-hosted or cloud) Customising this workflow • Swap the form trigger for a webhook or CRM integration (HubSpot, GoHighLevel, Airtable) if you want quotations generated from pipeline stage changes instead of manual form submissions. • Add a Slack or email approval step before sending — insert a Slack node between Export as PDF and Send Quotation Email if you want a manager to review before it goes out. • Replace Gmail with any email provider (Outlook, SMTP, SendGrid) if your team doesn’t use Google Workspace. • Add a Google Sheets logging step after sending to track all sent quotations with client name, date, service, and price for reporting. • This pattern works beyond quotations — try it for proposals, invoices, contracts, or any document where the structure stays fixed but the data changes. • Add multiple service line items by extending the form with repeating fields and adjusting the template to include a table of services with individual pricing.
by Akshay Chug
Overview Know what your competitors are doing every morning before your first meeting. This workflow visits each competitor website daily, uses OpenAI to analyse it for strategic signals, and emails your team a consolidated executive briefing automatically. How it works A schedule trigger fires every morning at 8AM Your list of competitor URLs is loaded from the Configure node Each competitor page is fetched and stripped to clean readable text GPT-4o-mini analyses each one for key signals, threat level, and recommended actions All analyses are aggregated and sent to GPT-4o to write one consolidated executive briefing The briefing is formatted as a clean HTML email and sent to your team via Gmail Every run is logged to Google Sheets with the date and summary Setup steps Competitors — Open Configure Competitors and Settings, replace the placeholder URLs with your real competitor URLs Your details — In the same node set YOUR_COMPANY and YOUR_FOCUS to describe your market OpenAI — Add your OpenAI API key as a credential at platform.openai.com Gmail — Connect your Gmail account in Send Email Briefing and set your team email in the Configure node Google Sheets — Create a sheet with columns: Date, Company, Competitors Analyzed, Briefing Summary. Connect your Google account and update the sheet ID in the Log node Activate the workflow — it runs automatically at 8AM every day
by Vlad Arbatov
Summary Send a number to your Telegram bot (e.g., 2) and get a neatly formatted digest of all Gmail newsletters received since that date. Each email is summarized by an LLM into concise topics, merged into a single Telegram message, automatically split into chunks to fit Telegram limits, and safely formatted as HTML. What this workflow does Triggers on your Telegram message containing a number of days, e.g., 1, 2, 7 Fetches all Gmail messages since that date using a custom search query, optionally filtered by senders Retrieves and decodes each email’s HTML, subject, sender name, date Prompts an LLM (GPT‑4.1‑mini) to produce a consistent JSON summary of topics per email Merges topics from all emails into a single digest Builds a readable, enumerated message (with bold titles) Splits it into 3 500‑char parts and sanitizes Markdown to Telegram‑safe HTML Sends the digest to your Telegram chat with preview disabled Apps and credentials Gmail OAuth2: Gmail account Telegram: Telegram account (bot) OpenAI: OpenAi account Typical use cases Personal or team daily/weekly newsletter digests in Telegram Curated feeds from selected senders compiled on demand Lightweight knowledge briefings without leaving Telegram How it works (node-by-node) Telegram Trigger Waits for your message (e.g., "2"). Chat ID is restricted to your Telegram ID for safety. Get days (Code) Takes the numeric daysAgo from the Telegram message text Computes YYYY/MM/DD for Gmail’s after: filter Get many messages (Gmail → getAll, returnAll: true) Uses a custom q filter like: =(from:@.com) OR (from:@.com) OR (from:@.com -"__") after:{{ $json.dateString }} Returns a list of message IDs Loop Over Items (Split in Batches) Iterates through each message ID Get a message (Gmail → get) Retrieves the full message/payload for the current email Get message data (Code) Extracts HTML from Gmail’s payload (body/parts) Normalizes sender to just the name Formats the date as DD.MM.YYYY Passes html, subject, from, date forward Clean (Code) Converts DD.MM.YYYY → MM.DD (for prompt brevity) Passes html, subject, from, date to the LLM Message a model (OpenAI, model: gpt‑4.1‑mini, JSON output) Prompt instructs: Produce JSON: { "topics": [ { "title", "descr", "subject", "from", "date" } ] } Split multi-news blocks into separate topics Combine or ignore specific blocks for particular senders (placeholders __) Keep subject untranslated; other values in __ language Injects subject/from/date/html from the current email Loop Over Items (continues) After all iterations complete, the aggregated per-email results are available Merge (Code) Flattens the topics arrays from all processed emails into one combined topics list Create TG message (Code) Renders an enumerated list: 1. Title (bold) Short description Original subject From — Date Split (Code) Splits into 3 500‑character chunks to stay below Telegram’s 4 096 limit with HTML overhead Sanitize (Code) Escapes &, <, > Fixes unbalanced * and _ Converts basic Markdown markers to Telegram HTML Send a message (Telegram) Sends each part with parse_mode=HTML, previews disabled Node map | Node | Type | Purpose | |---|---|---| | Telegram Trigger | Trigger | Receive daysAgo command from Telegram | | Get days | Code | Compute Gmail after:YYYY/MM/DD from daysAgo | | Get many messages | Gmail (getAll) | Search emails since date with custom from: filters | | Loop Over Items | Split in Batches | Iterate messages one-by-one | | Get a message | Gmail (get) | Fetch full message payload | | Get message data | Code | Extract HTML/subject/from/date; normalize sender and date | | Clean | Code | Reformat date and forward fields to LLM | | Message a model | OpenAI | Summarize email into JSON topics | | Merge | Code | Merge topics from all emails | | Create TG message | Code | Build human-friendly digest text | | Split | Code | Chunk into 3 500‑char parts | | Sanitize | Code | Escape HTML and map Markdown to Telegram HTML | | Send a message | Telegram | Deliver digest to Telegram chat | Before you start Create a Telegram bot and get its token (via @BotFather) Get your Telegram user ID to restrict access Connect Gmail OAuth2 in n8n Add your OpenAI API key Import the provided workflow JSON into n8n Setup instructions 1) Telegram Telegram Trigger node: additionalFields.chatIds = your Telegram user ID Send a message node: chatId = your Telegram user ID parse_mode = HTML disable_web_page_preview = true 2) Gmail Connect a Gmail OAuth2 credential (Gmail account) In Get many messages, adjust filters.q to your senders and rules: Example: =(from:news@publisher.com) OR (from:briefs@media.com -"promo") after:{{ $json.dateString }} If needed, add label: or category: filters 3) OpenAI Message a model: Model: gpt‑4.1‑mini (can swap to gpt‑4o‑mini or your preferred) Update the prompt placeholders: __ language → your target language __ sender rules → your special cases (combine blocks, ignore sections) 4) Safety and formatting Keep parse_mode=HTML in Telegram The Sanitize node is designed for ` and ` only; avoid other HTML tags The Split node uses 3 500 chars per part to stay safe under Telegram limits How to use In Telegram, send a number indicating “days ago” Example: 2 → will query Gmail after the date 2 days ago The workflow compiles and returns a digest in your chat Rerun anytime with a new number Customization ideas Labels instead of global search: q = label:Newsletters after:{{ $json.dateString }} Time window control: add before: or exact date ranges Different language: set the __ language in the LLM prompt Model choice: swap to cheaper/faster models if volume is high Chunk size: adjust from 3 500 to your needs Formatting: tweak Create TG message to include links parsed from HTML (if you add an HTML parser step) Limits and notes Telegram messages are limited to ~4 096 characters; we chunk to 3 500 per part Gmail “after:” uses YYYY/MM/DD and Google’s interpretation of dates; your n8n server time influences the computed date LLM usage incurs cost and latency proportional to email size and count HTML extraction is robust for typical Gmail structures but may need tweaks for exotic MIME layouts Privacy and safety Emails are sent to OpenAI for summarization—ensure that’s acceptable for your data policies The Telegram Trigger restricts chat access; keep your chatIds locked down Avoid sending raw HTML to Telegram; rely on the Sanitize node Sample output format (Telegram) Bold topic title One-sentence description Original Subject Line → Sender Name — DD.MM.YYYY Next topic title ... Tips and troubleshooting Got empty digests? Check Gmail filters.q and make sure there really are emails after the computed date Model errors or empty JSON? Lower prompt complexity or switch model HTML formatting issues in Telegram? Ensure parse_mode=HTML and keep only `, ` Long messages not fully delivered? Reduce chunk size from 3 500 Tags gmail, telegram, openai, llm, newsletters, digest, summarization, automation Changelog v1: Initial release with sender filters, topic merging, Telegram HTML sanitization, and on-demand time window via Telegram message