by Cheng Siong Chin
Introduction Automates scholarship tracking by scraping university sites, assessing eligibility via AI, and publishing results to WordPress or Slack. Eliminates manual searches for students, counselors, and education platforms, enabling scalable curation and timely notifications. How it Works Webhook triggers parallel scraping of NUS, NTU, SIT, SUTD → merge data → AI evaluates eligibility → aggregate qualified scholarships → generate summaries → post to WordPress/Slack → send email notifications with appeal options. Setup Steps Configure OpenAI credentials and eligibility prompt template Update HTTP requests with university URLs and selectors Add WordPress site URL and API credentials Create Slack webhook and notification channel Configure Gmail/SMTP for email notifications Workflow Webhook → Scrape 4 Universities (Parallel) → Merge Data → Prepare Context → AI Eligibility Check → Aggregate Results → Generate Summary → Check Status → Publish Slack/Email/WordPress → Handle Appeals Workflow Steps Scraping: Fetch scholarship pages from four universities simultaneously Merge: Combine data into a unified dataset AI Processing: Analyze eligibility criteria, deadlines against student profile Aggregation: Consolidate qualified scholarships with match scores Publishing: Post to WordPress, send Slack/email with results Appeals: Webhook handles rejection appeals with AI review Prerequisites OpenAI API key, WordPress site with REST API, Slack workspace with webhook, Gmail/SMTP credentials, student profile data (GPA, citizenship, major) Use Cases Counselors automating recommendations for 100+ students, financial aid offices aggregating departmental opportunities Customization Add universities (SMU, SUSS, international institutions), include government schemes (MOE, Edusave, Mendaki) Benefits Saves 10+ hours weekly per counselor, monitors 50+ scholarships automatically, provides AI eligibility matching (85%+ accuracy)
by Cheng Siong Chin
Introduction Automates Singapore COE price tracking, predicts trends using AI, and recommends optimal car purchase timing. Scrapes LTA data biweekly, analyzes historical trends, forecasts next 6 bidding rounds, and sends alerts when buying windows appear—saving time and identifying cost-saving opportunities. How it Works Biweekly trigger scrapes LTA COE data → processes historical trends → AI predicts 6-month prices → compares current vs forecast → generates buy/wait recommendations → alerts sent via Gmail or Telegram. Setup Steps Add NVIDIA/OpenAI API credentials in n8n Connect Google Sheets for data storage Authenticate Gmail/Telegram for notifications Schedule trigger for Wednesdays 8PM SGT Configure alert thresholds in conditional nodes Workflow Schedule Trigger → HTTP Request (Scrape LTA) → Data Processing → Google Sheets (Store) → AI Prediction → Analysis Engine → Conditional Logic → Gmail/Telegram Notification Workflow Steps Scraping: Extract COE prices from OneMotoring Processing: Calculate moving averages, volatility, seasonal trends Storage: Save to Google Sheets with timestamps Prediction: AI forecasts next 6 bidding rounds Analysis: Compare current vs predicted prices, generate recommendation Notification: Alerts via email/Telegram Prerequisites NVIDIA/OpenAI API key, Google account (Sheets), Gmail/Telegram for notifications, basic COE category knowledge Use Cases First-time buyers monitoring price dips, fleet managers timing bulk purchases Customization Add economic indicators, integrate car loan calculators, track parallel imported car prices Benefits Saves hours of manual monitoring, captures 10–15% price dips, provides data-driven purchase timing (potential $5K–$15K savings)
by Oneclick AI Squad
This enterprise-grade n8n workflow automates the entire event planning lifecycle — from client briefs to final reports — using Claude AI, real-time financial data, and smart integrations. It converts raw client data into optimized, insight-driven event plans with cost savings, risk management, and automatic reporting, all with zero manual work. Key Features Multi-source data fusion** from Google Sheets (ClientBriefs, BudgetEstimates, ActualCosts, VendorDatabase) AI-powered orchestration* using *Claude 3.5 Sonnet** for event plan optimization Automatic ROI and variance analysis** with cost-saving insights Vendor intelligence** — ranks suppliers by cost, rating, and reliability Risk engine** computes event risk (probability × impact) Auto-approval logic** for safe, high-ROI events Multi-channel delivery:** Slack + Email + Google Sheets Audit-ready:** Full JSON plan + execution logs Scalable triggers:** Webhook or daily schedule Workflow Process | Step | Node | Description | | ---- | --------------------------- | -------------------------------------------------------- | | 1 | Orchestrate Trigger | Runs daily at 7 AM or via webhook (/event-orchestrate) | | 2 | Read Client Brief | Loads event metadata from the ClientBriefs sheet | | 3 | Read Budget Estimates | Fetches estimated budgets and vendor data | | 4 | Read Actual Costs | Loads live cost data for comparison | | 5 | Read Vendor Database | Pulls vendor pricing, reliability, and rating | | 6 | Fuse All Data | Merges data into a unified dataset | | 7 | Data Fusion Engine | Calculates totals, variances, and validates inputs | | 8 | AI Orchestration Engine | Sends structured prompt to Claude AI for analysis | | 9 | Parse & Finalize | Extracts JSON, computes ROI, risks, and savings | | 10 | Save Orchestrated Plan | Updates OrchestratedPlans sheet with results | | 11 | Team Sync | Sends status & summary to Slack | | 12 | Executive Report | Emails final interactive plan to event planner | Setup Instructions 1. Import Workflow Open n8n → Workflows → Import from Clipboard Paste the JSON workflow 2. Configure Credentials | Integration | Details | | ----------------- | -------------------------------------------------- | | Google Sheets | Service account with spreadsheet access | | Claude AI | Anthropic API key for claude-3-5-sonnet-20241022 | | Slack | Webhook or OAuth app | | Email | SMTP or Gmail OAuth credentials | 3. Update Spreadsheet IDs Ensure your Google Sheets include: ClientBriefs BudgetEstimates ActualCosts VendorDatabase OrchestratedPlans 4. Set Triggers Webhook:** /webhook/event-orchestrate Schedule:** Daily at 7:00 AM 5. Run a Test Use manual execution to confirm: Sheet updates Slack notifications Email delivery Google Sheets Structure ClientBriefs | eventId | clientName | eventType | attendees | budget | eventDate | plannerEmail | spreadsheetId | teamChannel | priority | |----------|-------------|------------|-----------|----------|------------|---------------|---------------|-------------| | EVT-2025-001 | Acme Corp | Conference | 200 | 75000 | 2025-06-15 | sarah@acme.com | 1A... | #event-orchestration | High | BudgetEstimates | category | item | budgetAmount | estimatedCost | vendor | | -------- | -------------- | ------------ | ------------- | ----------- | | Venue | Grand Ballroom | 20000 | 22500 | Luxe Events | ActualCosts | category | actualCost | | -------- | ---------- | | Venue | 23000 | VendorDatabase | vendorName | category | avgCost | rating | reliability | | ----------- | -------- | ------- | ------ | ----------- | | Luxe Events | Venue | 21000 | 4.8 | High | OrchestratedPlans Automatically filled with: eventId, savings, roi, riskLevel, status, summary, fullPlan (JSON) System Requirements | Requirement | Version/Access | | --------------------- | ---------------------------------------------- | | n8n | v1.50+ (LangChain supported) | | Claude AI API | claude-3-5-sonnet-20241022 | | Google Sheets API | https://www.googleapis.com/auth/spreadsheets | | Slack Webhook | Required for notifications | | Email Service | SMTP, Gmail, or SendGrid | Optional Enhancements Add PDF export for management reports Connect Google Calendar for event scheduling Integrate CRM (HubSpot / Salesforce) for client updates Add interactive Slack buttons for approvals Export results to Notion or Airtable Enable multi-event batch orchestration Add forecasting from past data trends Result: A single automated system that plans, analyzes, and reports events — with full AI intelligence and zero manual work. Explore More AI Workflows: https://www.oneclickitsolution.com/contact-us/
by Daiki Takayama
Who's it for This workflow is perfect for content creators, international teams, and businesses that need to translate documents into multiple languages automatically. Whether you're localizing documentation, translating marketing materials, or creating multilingual content, this workflow saves hours of manual work. What it does Automatically monitors a Google Drive folder for new documents (PDF, DOCX, TXT, or Markdown) and translates them into multiple languages using DeepL API. Each translated document is saved with a language-specific filename (e.g., document_en.pdf, document_zh.pdf) in a designated folder. You receive an email notification when all translations are complete. How it works Monitors a Google Drive folder for new files Detects file format (PDF/DOCX/TXT/Markdown) and extracts text Translates the content into your chosen languages (default: English, Chinese, Korean, Spanish, French, German) Saves translated files with language codes in the filename Sends an email notification with translation summary Optional: Records translation history in Notion database Set up instructions Requirements Google Drive account (for file storage) DeepL API key (free tier: 500,000 characters/month) Gmail account (for notifications) Notion account (optional, for tracking translation history) Setup steps Create Google Drive folders: Create a "Source" folder for original files Create a "Translated" folder for output Copy the folder IDs from the URLs Get DeepL API key: Sign up at DeepL API Copy your API key Configure the workflow: Open the "Configuration (Edit Here)" node (yellow node) Replace folder IDs with your own Set your notification email Choose target languages Set up credentials: Add Google Drive OAuth2 credentials Add DeepL API credentials Add Gmail OAuth2 credentials Activate the workflow and upload a test file! Customization options Change target languages**: Edit the targetLanguages array in the Configuration node (supports 30+ languages) Adjust polling frequency**: Change trigger from "every minute" to hourly or daily for batch processing Enable Notion tracking**: Set enableNotion to true and provide your database ID Add more file formats**: Extend the Switch node to handle additional file types Filter by file size**: Add conditions to skip files larger than a certain size Supported languages EN (English), ZH (Chinese), KO (Korean), JA (Japanese), ES (Spanish), FR (French), DE (German), IT (Italian), PT (Portuguese), RU (Russian), and 20+ more. Performance Short files** (1 page): ~30 seconds for 6 languages Medium files** (10 pages): ~2 minutes for 6 languages Large files** (100 pages): ~15 minutes for 6 languages Technical Details Trigger**: Google Drive folder monitoring (1-minute polling) Translation**: DeepL API with automatic source language detection Loop implementation**: Split Out + Aggregate pattern for parallel translation Error handling**: Catches API failures and sends email alerts Storage**: Original file format preserved in translated outputs Notes DeepL free tier provides 500,000 characters/month (approximately 250 pages) For high-volume translation, consider upgrading to DeepL Pro The workflow creates new files instead of overwriting, preserving translation history Google Docs are automatically converted to the appropriate format before translation What You'll Learn This workflow demonstrates several n8n patterns: File format detection and routing (Switch node) Loop implementation with Split Out + Aggregate Binary data handling for file operations Conditional logic with IF nodes (optional features) Cross-node data references Error handling and user notifications Perfect for learning automation best practices while solving a real business problem!
by Oneclick AI Squad
This is a production-ready, end-to-end workflow that automatically compares hotel prices across multiple booking platforms and delivers beautiful email reports to users. Unlike basic building blocks, this workflow is a complete solution ready to deploy. ✨ What Makes This Production-Ready ✅ Complete End-to-End Automation Input**: Natural language queries via webhook Processing**: Multi-platform scraping & comparison Output**: Professional email reports + analytics Feedback**: Real-time webhook responses ✅ Advanced Features 🧠 Natural Language Processing for flexible queries 🔄 Parallel scraping from multiple platforms 📊 Analytics tracking with Google Sheets integration 💌 Beautiful HTML email reports 🛡️ Error handling and graceful degradation 📱 Webhook responses for real-time feedback ✅ Business Value For Travel Agencies**: Instant price comparison service for clients For Hotels**: Competitive pricing intelligence For Travelers**: Save time and money with automated research 🚀 Setup Instructions Step 1: Import Workflow Copy the workflow JSON from the artifact In n8n, go to Workflows → Import from File/URL Paste the JSON and click Import Step 2: Configure Credentials A. SMTP Email (Required) Settings → Credentials → Add Credential → SMTP Host: smtp.gmail.com (for Gmail) Port: 587 User: your-email@gmail.com Password: your-app-password (not regular password!) Gmail Setup: Enable 2FA on your Google Account Generate App Password: https://myaccount.google.com/apppasswords Use the generated password in n8n B. Google Sheets (Optional - for analytics) Settings → Credentials → Add Credential → Google Sheets OAuth2 Follow the OAuth flow to connect your Google account Sheet Setup: Create a new Google Sheet Name the first sheet "Analytics" Add headers: timestamp, query, hotel, city, checkIn, checkOut, bestPrice, platform, totalResults, userEmail Copy the Sheet ID from URL and paste in the "Save to Google Sheets" node Step 3: Set Up Scraping Service You need to create a scraping API that the workflow calls. Here are your options: Option A: Use Your Existing Python Script Create a simple Flask API wrapper: api_wrapper.py from flask import Flask, request, jsonify import subprocess import json app = Flask(name) @app.route('/scrape/<platform>', methods=['POST']) def scrape(platform): data = request.json query = f"{data['checkIn']} to {data['checkOut']}, {data['hotel']}, {data['city']}" try: result = subprocess.run( ['python3', 'price_scrap_2.py', query, platform], capture_output=True, text=True, timeout=30 ) Parse your script output output = result.stdout Assuming your script returns price data return jsonify({ 'price': extracted_price, 'currency': 'USD', 'roomType': 'Standard Room', 'url': booking_url, 'availability': True }) except Exception as e: return jsonify({'error': str(e)}), 500 if name == 'main': app.run(host='0.0.0.0', port=5000) Deploy: pip install flask python api_wrapper.py Update n8n HTTP Request nodes: URL: http://your-server-ip:5000/scrape/booking URL: http://your-server-ip:5000/scrape/agoda URL: http://your-server-ip:5000/scrape/expedia Option B: Use Third-Party Scraping Services Recommended Services: ScraperAPI** (scraperapi.com) - $49/month for 100k requests Bright Data** (brightdata.com) - Pay as you go Apify** (apify.com) - Has pre-built hotel scrapers Example with ScraperAPI: // In HTTP Request node URL: http://api.scraperapi.com Query Parameters: api_key: YOUR_API_KEY url: https://booking.com/search?hotel={{$json.hotelName}}... Option C: Use n8n SSH Node (Like Your Original) Keep your SSH approach but improve it: Replace HTTP Request nodes with SSH nodes Point to your server with the Python script Ensure error handling and timeouts // SSH Node Configuration Host: your-server-ip Command: python3 /path/to/price_scrap_2.py "{{$json.hotelName}}" "{{$json.city}}" "{{$json.checkInISO}}" "{{$json.checkOutISO}}" "booking" Step 4: Activate Webhook Click on "Webhook - Receive Request" node Click "Listen for Test Event" Copy the webhook URL (e.g., https://your-n8n.com/webhook/hotel-price-check) Test with this curl command: curl -X POST https://your-n8n.com/webhook/hotel-price-check \ -H "Content-Type: application/json" \ -d '{ "message": "I want to check Marriott Hotel in Singapore from 15th March to 18th March", "email": "user@example.com", "name": "John Doe" }' Step 5: Activate Workflow Toggle the workflow to Active The webhook is now live and ready to receive requests 📝 Usage Examples Example 1: Basic Query { "message": "Hilton Hotel in Dubai from 20th December to 23rd December", "email": "traveler@email.com", "name": "Sarah" } Example 2: Flexible Format { "message": "I need prices for Taj Hotel, Mumbai. Check-in: 5th January, Check-out: 8th January", "email": "customer@email.com" } Example 3: Short Format { "message": "Hyatt Singapore March 10 to March 13", "email": "user@email.com" } 🎨 Customization Options 1. Add More Booking Platforms Steps: Duplicate an existing "Scrape" node Update the platform parameter Connect it to "Aggregate & Compare" Update the aggregation logic to include the new platform 2. Change Email Template Edit the "Format Email Report" node's JavaScript: Modify HTML structure Change colors (currently purple gradient) Add your company logo Include terms and conditions 3. Add SMS Notifications Using Twilio: Add new node: Twilio → Send SMS Connect after "Aggregate & Compare" Format: "Best deal: ${hotel} at ${platform} for ${price}" 4. Add Slack Integration Add Slack node after "Aggregate & Compare" Send to #travel-deals channel Include quick booking links 5. Implement Caching Add Redis or n8n's built-in cache: // Before scraping, check cache const cacheKey = ${hotelName}-${city}-${checkIn}-${checkOut}; const cached = await $cache.get(cacheKey); if (cached && Date.now() - cached.timestamp < 3600000) { return cached.data; // Use 1-hour cache } 📊 Analytics & Monitoring Google Sheets Dashboard The workflow automatically logs to Google Sheets. Create a dashboard with: Metrics to track: Total searches per day/week Most searched hotels Most searched cities Average price ranges Platform with best prices (frequency) User engagement (repeat users) Example Sheet Formulas: // Total searches today =COUNTIF(A:A, TODAY()) // Most popular hotel =INDEX(C:C, MODE(MATCH(C:C, C:C, 0))) // Average best price =AVERAGE(G:G) Set Up Alerts Add a node after "Aggregate & Compare": // Alert if prices are unusually high if (bestDeal.price > avgPrice * 1.5) { // Send alert to admin return [{ json: { alert: true, message: High prices detected for ${hotelName} } }]; } 🛡️ Error Handling The workflow includes comprehensive error handling: 1. Missing Information If user doesn't provide hotel/city/dates → Responds with helpful prompt 2. Scraping Failures If all platforms fail → Sends "No results" email with suggestions 3. Partial Results If some platforms work → Shows available results + notes errors 4. Email Delivery Issues Uses continueOnFail: true to prevent workflow crashes 🔒 Security Best Practices 1. Rate Limiting Add rate limiting to prevent abuse: // In Parse & Validate node const userEmail = $json.email; const recentSearches = await $cache.get(searches:${userEmail}); if (recentSearches && recentSearches.length > 10) { return [{ json: { status: 'rate_limited', response: 'Too many requests. Please try again in 1 hour.' } }]; } 2. Input Validation Already implemented - validates hotel names, cities, dates 3. Email Verification Add email verification before first use: // Send verification code const code = Math.random().toString(36).substring(7); await $sendEmail({ to: userEmail, subject: 'Verify your email', body: Your code: ${code} }); 4. API Key Protection Never expose scraping API keys in responses or logs 🚀 Deployment Options Option 1: n8n Cloud (Easiest) Sign up at n8n.cloud Import workflow Configure credentials Activate Pros: No maintenance, automatic updates Cons: Monthly cost Option 2: Self-Hosted (Most Control) Using Docker docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n Using npm npm install -g n8n n8n start Pros: Free, full control Cons: You manage updates Option 3: Cloud Platforms Railway.app (recommended for beginners) DigitalOcean App Platform AWS ECS Google Cloud Run 📈 Scaling Recommendations For < 100 searches/day Current setup is perfect Use n8n Cloud Starter or small VPS For 100-1000 searches/day Add Redis caching (1-hour cache) Use queue system for scraping Upgrade to n8n Cloud Pro For 1000+ searches/day Implement job queue (Bull/Redis) Use dedicated scraping service Load balance multiple n8n instances Consider microservices architecture 🐛 Troubleshooting Issue: Webhook not responding Solution: Check workflow is Active Verify webhook URL is correct Check n8n logs: Settings → Log Streaming Issue: No prices returned Solution: Test scraping endpoints individually Check if hotel name matches exactly Verify dates are in future Try different date ranges Issue: Emails not sending Solution: Verify SMTP credentials Check "less secure apps" setting (Gmail) Use App Password instead of regular password Check spam folder Issue: Slow response times Solution: Enable parallel scraping (already configured) Add timeout limits (30 seconds recommended) Implement caching Use faster scraping service
by Oneclick AI Squad
Streamline your post-event analysis with this smart n8n workflow. Triggered by a simple webhook, it instantly gathers attendee and engagement data from your event platform, calculates key metrics, and uses AI to generate a polished, professional report. The final summary is emailed to stakeholders and saved securely in a database — all without manual effort. Perfect for conferences, webinars, and corporate events. 📧📈 Key Features Webhook triggered** – Starts instantly via HTTP POST request Multi-source data collection** – Fetches attendees & engagement metrics Advanced analytics** – Calculates attendance rates, engagement scores, top sessions AI-powered insights** – Uses GPT-4 to generate professional reports Auto-email delivery** – Sends report to stakeholders Database archiving** – Saves reports to PostgreSQL What it Analyzes Attendance rates & check-ins Average session time Engagement scores (polls, Q&A, networking) Top performing sessions Attendee breakdown (by role & company) AI-generated insights & recommendations Workflow Process The Webhook Trigger node starts the workflow when an HTTP POST request is received with event details. Get Attendees (GET)** pulls the list of registered and checked-in participants from your event system. Get Engagement Metrics (GET)** retrieves interaction data like poll responses, Q&A activity, and session views. Process Metrics** calculates key stats: attendance rate, average session duration, engagement score, and ranks top sessions. AI Generate Report** uses GPT-4 to create a clear, professional summary with insights and recommendations based on the data. AI Agent** coordinates data flow and prepares the final report structure using chat model and memory tools. Save to Database (Insert)** stores the full report and raw metrics in PostgreSQL for future reference. Send Report Email** automatically emails the AI-generated report to the specified recipient. Send Response** returns a confirmation back to the triggering system via webhook. Setup Instructions Import this JSON into n8n Configure credentials: Event API (for GET requests) OpenAI (GPT-4) SMTP (for email delivery) PostgreSQL (for data storage) Trigger via webhook with event data Receive comprehensive report via email within minutes! Prerequisites Event platform with REST API (for attendee & engagement data) OpenAI API key (GPT-4 access) SMTP server credentials (Gmail, SendGrid, etc.) PostgreSQL database with write access Example Webhook Payload { "eventId": "evt_123", "eventName": "Tech Summit 2025", "eventDate": "2025-10-29", "email": "manager@company.com" } Modification Options Add custom metrics in the Process Metrics node (e.g., NPS score, feedback sentiment) Change AI tone in AI Generate Report (formal, executive summary, or creative) Modify email template in Send Report Email with your branding Connect to different data sources by updating GET nodes Add Slack or Teams notification after Send Report Email Ready to automate your event reporting? Get in touch with us for custom n8n workflows!
by Intuz
This n8n template from Intuz provides a complete and automated solution for scaling your DevOps practices across multiple repositories. Are you tired of the repetitive dance between git push, creating a pull request in GitHub, updating the corresponding task in JIRA, and then manually notifying your team in Slack, or Notion? This template puts your entire post-commit workflow on autopilot, creating a seamless and intelligent bridge between your code and your project management. By embedding specific keywords and a JIRA issue ID into your git commit commands, this workflow automatically creates a Pull Request in the correct GitHub repository and updates the corresponding JIRA ticket. This creates a complete, centralized system that keeps all your projects synchronized, providing a massive efficiency boost for teams managing a diverse portfolio of codebases. Who This Template Is For? This template is a must-have for any organization looking to streamline its software development lifecycle (SDLC). It’s perfect for: Development Teams: Eliminate tedious, manual tasks and enforce a consistent workflow, allowing developers to stay focused on coding. DevOps Engineers: A ready-to-deploy solution that integrates key developer tools without weeks of custom scripting. Engineering Managers & Team Leads: Gain real-time visibility into development progress and ensure processes are followed without constant check-ins. Project Managers: Get accurate, automatic updates in JIRA the moment development work is completed, improving project tracking and forecasting. Step-by-Step Setup Instructions Follow these steps carefully to configure the workflow for your environment. 1. Connect Your Tools (Credentials) GitHub: Create credentials with repo scope to allow PR creation. JIRA: Create an API token and connect your JIRA Cloud or Server instance. Slack: Connect your Slack workspace using OAuth2. Notion: Connect your Notion integration token. 2. Configure the GitHub Webhook (For Each Repository) This workflow is triggered by a GitHub webhook. You must add it to every repository you want to automate. First, Save and Activate the n8n workflow to ensure the webhook URL is live. In the n8n workflow, copy the Production URL from the Webhook node. Go to your GitHub repository and navigate to Settings > Webhooks > Add webhook. In the Payload URL field, paste the n8n webhook URL. Change the Content type to application/json. Under "Which events would you like to trigger this webhook?", select "Just the push event." Click "Add webhook." Repeat this for all relevant repositories. 3. Configure the JIRA Nodes (Crucial Step) Your JIRA project has unique IDs for its statuses. You must update the workflow to match yours. Find the two JIRA nodes named "Update task status after PR" and "Update the task status without PR." In each node, go to the Status ID field. Click the dropdown and select the status that corresponds to "Done" or "Development Done" in your specific JIRA project workflow. The list is fetched directly from your connected JIRA instance. 4. Configure Notification Nodes Tell the workflow where to send updates. For Slack: Open the two nodes named "Send message in slack..." and select your desired channel from the Channel ID dropdown. For Notion: Open the two nodes named "Append a block in notion..." and paste the URL of the target Notion page or database into the Block ID field. 5. Final Activation Once all configurations are complete, ensure the workflow is Saved and the toggle switch is set to Active. You are now ready to automate! Customization Guidance This template is a powerful foundation. Here’s how you can adapt it to your team's specific needs. 1. Changing the PR Title or Body: Go to the "Request to create PR" (HTTP Request) node. In the JSON Body field, you can edit the title and body expressions. For example, you could add the committer's name ({{$('Webhook').item.json.body.pusher.name }}) or a link back to the JIRA task. 2. Adapting to a Fixed Branching Strategy: If your team always creates pull requests against a single branch (e.g., develop), you can simplify the workflow. In the "Request to create PR" node, change the base value in the JSON body from {{...}} to your static branch name: "base": "develop". You can then remove the base branch logic from the "Commit Message Breakdown" (Code) node. 3. Modifying Notification Messages: The text sent to Slack and Notion is fully customizable. Open any of the Slack or Notion nodes and edit the text fields. You can include any data from previous nodes, such as the PR URL ({{ $('Request to create PR').item.json.body.html_url }}) or the repository name. 4. Adjusting the Commit Regex for Different Conventions: This is an advanced customization. If your team uses a different commit format (e.g., (DEV-123) instead of DEV-123), you can edit the regular expression in the "Commit Message Breakdown" (Code) node. Be sure to test your changes carefully. 5. Adding/Removing Notification Channels: Don't use Notion? Simply delete the two Notion nodes. Want to send an email instead? Add a Gmail or SMTP node in parallel with a Slack node and configure it with the same data. Connect with us Website: https://www.intuz.com/services Email: getstarted@intuz.com LinkedIn: https://www.linkedin.com/company/intuz Get Started: https://n8n.partnerlinks.io/intuz For Custom Worflow Automation Click here- Get Started
by WeblineIndia
Android Feature Flag Cleanup Bot (GitLab + LaunchDarkly) This n8n automation detects unused (“dead”) feature flags in an Android Kotlin/Java codebase by comparing your GitLab repository code against LaunchDarkly’s feature flag list. It logs results in Google Sheets, creates Jira tickets for cleanup and sends Slack alerts automatically. Who’s it for Android engineering teams using Kotlin/Java. Teams managing feature flags in LaunchDarkly. DevOps/QA teams wanting to reduce technical debt from stale flags. How it works Weekly Trigger runs the process. GitLab Node fetches repository code. Regex Extraction finds all feature flags in code. LaunchDarkly API retrieves all configured flags. Comparison Logic marks flags as “dead” if unused in code and archived or off in production. Google Sheets stores flagged results. Jira creates a ticket for each dead flag. Slack notifies the team. How to set up Import JSON into n8n. Connect credentials for: GitLab OAuth2 Google Sheets Jira Slack webhook URL Update: GitLab repo details in the GitLab node. LaunchDarkly API key in HTTP Request node. Google Sheet ID in Google Sheets node. Jira project & issue type in Jira node. Slack message formatting in Slack node. Activate workflow. Requirements n8n** (self-hosted or cloud) GitLab repository with Kotlin/Java code LaunchDarkly account + API token Google Sheets API access Jira API access Slack incoming webhook How to customize Change regex pattern in “Detect flags” node if your flag naming convention differs. Adjust dead flag logic in “Find dead flags” node (e.g., treat test env separately). Modify Slack message to include more details (e.g., description from LaunchDarkly). Add email notifications for broader distribution. Add-ons Email Alerts** via Gmail/SMTP. GitHub / GitLab MR** to remove dead flags automatically. Confluence Integration** to document flag cleanup history. Use Case Examples Weekly automated cleanup alerts for large engineering teams. Maintaining clean feature flag lists in high-traffic apps. Compliance-driven projects requiring flag lifecycle tracking. Common troubleshooting | Issue | Possible Cause | Solution | | ------------------------------------ | --------------------------------------------- | -------------------------------------------------------- | | Workflow fails at GitLab node | Invalid repo path or missing OAuth scope | Update repo path & check GitLab OAuth permissions | | LaunchDarkly API request returns 401 | Invalid or expired API key | Generate a new API key in LaunchDarkly & update node | | Google Sheets node fails | Wrong Sheet ID or missing sharing permissions | Confirm Sheet ID and share with connected Google account | | Jira ticket not created | Missing required fields | Set project key, issue type, and summary in Jira node | | Slack alert not sent | Webhook URL invalid or revoked | Regenerate Slack webhook and update in node | Need Help? If you’d like, we can help set up and customize this workflow for your exact repo, flag rules and team notification preferences — including regex adjustments, extra reporting or adding automatic cleanup PRs. Contact our n8n automation team at WeblineIndia.
by Oneclick AI Squad
Simplify financial oversight with this automated n8n workflow. Triggered daily, it fetches cash flow and expense data from a Google Sheet, analyzes inflows and outflows, validates records, and generates a comprehensive daily report. The workflow sends multi-channel notifications via email and Slack, ensuring finance professionals stay updated with real-time financial insights. 💸📧 Key Features Daily automation keeps cash flow tracking current. Analyzes inflows and outflows for actionable insights. Multi-channel alerts enhance team visibility. Logs maintain a detailed record in Google Sheets. Workflow Process The Every Day node triggers a daily check at a set time. Get Cash Flow Data** retrieves financial data from a Google Sheet. Analyze Inflows & Outflows** processes the data to identify trends and totals. Validate Records** ensures all entries are complete and accurate. If records are valid, it branches to: Sends Email Daily Report to finance team members. Send Slack Alert to notify the team instantly. Logs to Sheet** appends the summary data to a Google Sheet for tracking. Setup Instructions Import the workflow into n8n and configure Google Sheets OAuth2 for data access. Set the daily trigger time (e.g., 9:00 AM IST) in the "Every Day" node. Test the workflow by adding sample cash flow data and verifying reports. Adjust analysis parameters as needed for specific financial metrics. Prerequisites Google Sheets OAuth2 credentials Gmail API Key for email reports Slack Bot Token (with chat:write permissions) Structured financial data in a Google Sheet Google Sheet Structure: Create a sheet with columns: Date Cash Inflow Cash Outflow Category Notes Updated At Modification Options Customize the "Analyze Inflows & Outflows" node to include custom financial ratios. Adjust the "Validate Records" filter to flag anomalies or missing data. Modify email and Slack templates with branded formatting. Integrate with accounting tools (e.g., Xero) for live data feeds. Set different trigger times to align with your financial review schedule. Discover more workflows – Get in touch with us
by Baptiste Fort
How it works? Send a message or a voice note on Telegram right after the meeting. n8n transcribes (if it’s a voice note) and sends the text to GPT. GPT generates a structured and professional meeting minutes report. The report is automatically stored in Airtable. Your team is instantly notified in Slack. A formal email is sent via Gmail to the right recipients. 👉 Works for all types of meetings: client calls, team syncs, project updates… whether you type a message or send a quick voice memo. ✅ Requirements Before running this workflow, you’ll need: A Telegram account with a bot configured (to send your messages/voice notes) An OpenAI API key (for GPT and voice transcription) An Airtable account with a base containing these fields: Email Subject Report A Slack account with the target channel for notifications A Gmail account connected to n8n (OAuth2) 🔧 Step-by-step setup Step 1 – Telegram Trigger Node**: Telegram Trigger Updates**: message 👉 Captures every message or voice note sent to the bot. Step 2 – Detect text or voice Node**: Code (“Message or Voice ?”) Expected output**: { type: "text", content } if message { type: "voice", file_id } if voice note 👉 Routes the workflow based on the input type. Step 3 – IF Condition Condition**: {{$json.type}} == voice 👉 Directs to the transcription branch if it’s a voice note. Voice Branch 🎤 Step 4 – Download the voice file Node**: Telegram → Voice note Parameter**: fileId = {{$json.file_id}} Step 5 – Wait Node**: Wait (2–3s) 👉 Lets Telegram prepare the file. Step 6 – Voice note download Node**: Telegram (file download) 👉 Retrieves the audio file. Step 7 – Transcribe to text Node**: OpenAI (Transcription) Resource**: audio Operation**: transcribe 👉 Converts the voice note into plain text. Step 8 – Short wait 👉 Ensures continuity before sending to GPT. Text Branch ✍️ Step 9 – Normalize Node**: Code (“Content”) Return**: { text: $json.content } 👉 Standardizes the text as if it were already a transcription. Step 10 – Detect email Node**: Code (“Domain or Email detection”) 👉 Extracts the target email (or builds a fallback contact@gmail.com). Step 11 – Generate meeting minutes Node**: Agent (“Generate Meeting Message”) Prompt**: specialized for “meeting minutes” Model**: GPT-4.1-mini Output**: { email, subject, body } 👉 GPT creates a clean and structured meeting report. Step 12 – Enforce clean JSON Node**: Output Parser Structured JSON Example**: json {"email": "address@gmail.com","subject":"Subject","body":Email"} 👉 Ensures the output is always valid JSON. Step 13 – Cleanup / Airtable mapping Node**: Code Return**: { Email, subject, Report } 👉 Prepares the correct fields aligned with your Airtable table. Step 14 – Store in Airtable Node**: Airtable (Create Record) Mapping**: Email = {{$json.Email}} subject = {{$json.subject}} Report = {{$json.Report}} 👉 Archives each meeting report in your Airtable base. Step 15 – Notify in Slack Node**: Slack (Send Message) Channel**: your team channel Message**: {{$json.fields.subject}}{{$json.fields.Report}} Step 16 – Send the email Node**: Gmail (Send Email) sendTo**: {{$('Create a record').item.json.fields.Email}} subject**: {{$('Create a record').item.json.fields.subject}} message**: {{$('Create a record').item.json.fields.Report}}
by Jitesh Dugar
Automated Certificate Generator with Email Validation & Delivery Automatically generate, validate, and deliver professional course completion certificates with zero manual work — from webhook request to PDF delivery in seconds. Overview This workflow transforms certificate generation from a manual design task into a fully automated system. It receives certificate requests via webhook, validates recipient emails using advanced verification, generates beautifully designed HTML certificates, converts them to high-quality PNG images, delivers via professional email templates, and maintains complete audit trails in Google Sheets. Powered by email validation APIs and HTML-to-image conversion, it ensures every certificate meets professional standards while preventing delivery to invalid or fraudulent email addresses. What This Workflow Does Receives certificate requests** via webhook from your LMS, CRM, or custom application Validates recipient emails** using VerifiEmail API with comprehensive checks: RFC compliance verification MX record validation Disposable email detection Spoof and fraud prevention Generates professional certificates** with custom HTML/CSS templates featuring: Purple gradient backgrounds with modern typography Google Fonts integration (Playfair Display + Montserrat) Gold achievement badges Auto-generated unique certificate IDs Formatted completion dates Instructor signatures Converts HTML to PNG** using HTMLcsstoImg API for permanent, shareable images Delivers via email** with branded HTML templates including download links and LinkedIn sharing CTAs Logs everything** to Google Sheets for reporting, analytics, and certificate verification Handles errors** with automatic validation checks and optional Slack notifications Key Features Zero Manual Work**: Fully automated from request to delivery Advanced Email Validation**: Blocks invalid, temporary, and fraudulent email addresses Professional Design**: Print-ready certificates with customizable branding Unique Certificate IDs**: Auto-generated format: CERT-{timestamp}-{random} Instant Delivery**: Certificates sent within seconds of completion Complete Audit Trail**: All certificates logged with 10+ data points Error Prevention**: Validation stops invalid requests before processing Highly Customizable**: Easy to modify colors, fonts, layouts, and email templates Scalable**: Handles hundreds of certificates per day API-Ready**: RESTful webhook endpoint for easy integration Use Cases Educational Institutions Automatically issue certificates for online courses and programs Generate graduation certificates for completed degrees Create participation certificates for workshops and seminars Corporate Training Award compliance training certificates to employees Recognize professional development completions Issue skill certification for internal programs Online Course Platforms Integrate with LMS systems (Teachable, Thinkific, Kajabi) Automate certificate delivery upon course completion Build certificate libraries for student portfolios Event Management Issue attendance certificates for conferences and webinars Generate speaker appreciation certificates Create volunteer recognition certificates Certification Programs Award professional certifications and credentials Generate CPE/CE certificates for continuing education Issue examination completion certificates Prerequisites Required Services & Accounts n8n** (self-hosted or cloud) - Workflow automation platform VerifiEmail Account** - Email validation API HTMLcsstoImg Account** - HTML to PNG conversion Gmail Account** - Email delivery via OAuth2 Google Workspace** - For Sheets logging and tracking Required Credentials VerifiEmail API Key HTMLcsstoImg User ID + API Key Gmail OAuth2 credentials Google Sheets OAuth2 credentials Setup Instructions 1. Import the Workflow Download the certificate-generator.json file In n8n, navigate to Workflows → Import from File Select the JSON file and click Import 2. Configure Credentials VerifiEmail API Sign up at https://verifi.email Navigate to Dashboard → API Keys Copy your API key In n8n: Settings → Credentials → Add Credential Search for "VerifiEmail" Name: VerifiEmail API Paste API key and save Assign to "Verifi Email" node in workflow HTMLcsstoImg API Sign up at https://htmlcsstoimg.com Go to Dashboard → API Copy User ID and API Key In n8n: Credentials → Add Credential → "HTMLcsstoImg" Name: HTMLcsstoImg API Enter User ID and API Key Assign to "HTML/CSS to Image" node Gmail OAuth2 In n8n: Credentials → Add Credential → "Gmail OAuth2" Click Connect my account Follow Google OAuth flow Grant permissions: Send email Name: Gmail OAuth2 Assign to "Send Certificate Email" node Google Sheets OAuth2 Create new Google Sheet: "Certificates Log" Add column headers in Row 1: Certificate ID Recipient Name Course Email Completion Date Generated At Certificate URL Status Instructor Duration In n8n: Credentials → Gmail OAuth2 (same as above works for Sheets) Assign to "Log to Google Sheets" node Select your "Certificates Log" spreadsheet Select "Sheet1" 3. Activate Workflow Click the toggle switch in top-right to activate Copy the Webhook URL from "Certificate Request Webhook" node Format: https://your-n8n-instance.com/webhook/certificate-generator 4. Configure Your Application For LMS Integration: // When course is completed fetch('https://your-n8n-instance.com/webhook/certificate-generator', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: student.fullName, course: course.title, date: new Date().toISOString().split('T')[0], email: student.email, instructor: course.instructor, duration: course.duration }) }); For Zapier/Make.com: Trigger: Course completed Action: Webhooks → POST URL: Your webhook URL Body: Map fields to JSON format 5. Test the Workflow Send test request: curl -X POST https://your-n8n-instance.com/webhook/certificate-generator \ -H "Content-Type: application/json" \ -d '{ "name": "Test User", "course": "Test Course", "date": "2025-10-04", "email": "test@gmail.com" }' Verify: Email validation passes Certificate generated successfully Image created at HTMLcsstoImage Email delivered to inbox Entry logged in Google Sheets How It Works Webhook Trigger → Receives POST request with certificate data Email Validation → VerifiEmail checks RFC, MX records, disposable status Field Validation → Ensures name, course, date present and email valid Data Combination → Merges webhook data with validation results HTML Generation → Creates styled certificate with dynamic content Image Conversion → HTMLcsstoImg renders 1200x850px PNG Email Delivery → Gmail sends professional template with download link Database Logging → Google Sheets records all certificate details Error Handling → Catches failures and stops invalid requests Processing Time: 5-10 seconds per certificate API Reference Endpoint POST /webhook/certificate-generator Content-Type: application/json Required Fields { "name": "string", // Full name of recipient "course": "string", // Course or program name "date": "YYYY-MM-DD", // Completion date "email": "string" // Recipient email address } Optional Fields { "instructor": "string", // Instructor name (default: "Program Director") "duration": "string", // Course duration (e.g., "40 hours") "certificateId": "string" // Custom ID (auto-generated if not provided) } Success Response { "success": true, "message": "Certificate generated and sent successfully", "certificateId": "CERT-1728000000-ABC123", "certificateUrl": "https://hcti.io/v1/image/xyz123" } Error Response { "success": false, "error": "Missing required fields: name, course, date, or valid email" } Customization Certificate Design Edit the "Generate HTML Certificate" Code node: Change Brand Colors: // Background gradient background: linear-gradient(135deg, #YOUR_COLOR_1 0%, #YOUR_COLOR_2 100%); // Border color border: 3px solid #YOUR_BRAND_COLOR; Add Company Logo: Modify Fonts: @import url('https://fonts.googleapis.com/css2?family=Your+Font&display=swap'); font-family: 'Your Font', sans-serif; Email Template Edit the "Send Certificate Email" node message: Update Company Info: © 2025 Your Company Name Contact: support@yourcompany.com Change Header Color: .header { background: linear-gradient(135deg, #YOUR_COLOR_1, #YOUR_COLOR_2); } Certificate ID Format In "Generate HTML Certificate" node: // Custom format: COURSE-YEAR-NUMBER const certId = ${data.course.substring(0,3).toUpperCase()}-${new Date().getFullYear()}-${Math.floor(Math.random() * 10000)}; Data Flow Webhook → Email Validation → Field Validation → Combine Data ↓ Generate HTML → Convert to PNG → Send Email ↓ Log to Sheets → Success Response ↓ Error Handling (if failed) Expected Output PNG Certificate Includes: Branded header with logo/company name Recipient name in large display font Course name and duration Formatted completion date Instructor signature section Unique certificate ID Gold achievement badge Professional borders and styling Google Sheets Entry: Certificate ID Recipient details Course information Completion date and time Direct link to certificate image Status: "Sent" Email Notification: Professional HTML template Personalized congratulations message Direct download button Certificate details table LinkedIn sharing encouragement Performance Processing Time:** 5-10 seconds per certificate Daily Capacity:** 250+ certificates (limited by free tier quotas) Image Resolution:** 1200x850px (print-ready) File Size:** ~200-400 KB per PNG Email Delivery:** ~98% success rate Troubleshooting Webhook not receiving data Verify webhook URL is correct Check n8n workflow is activated Ensure POST method is used Validate JSON format Email validation fails Use real email domains (not example.com) Check VerifiEmail API quota Verify API credentials are correct Test with gmail.com addresses first Certificate not generating Check required fields are present Verify date format is YYYY-MM-DD Review "Generate HTML Certificate" node logs Ensure HTMLcsstoImg API key valid Image conversion fails Verify HTMLcsstoImg credits available Check HTML syntax is valid Review API response in execution logs Test HTML locally first Email not delivered Confirm Gmail OAuth2 connected Check recipient email is valid Review spam/junk folders Verify Gmail daily limit not exceeded Google Sheets not updating Re-authenticate Google Sheets OAuth2 Verify spreadsheet permissions Check column names match exactly Ensure sheet exists and is accessible Best Practices Test with small batches before production rollout Monitor API quotas to avoid unexpected failures Use real email addresses during testing (avoid disposable) Archive old certificates periodically from Google Sheets Set up Slack notifications for error monitoring Validate webhook payload before sending Document customizations for team reference Back up Google Sheets regularly Review email deliverability weekly Keep credentials secure and rotate periodically Security Notes All API credentials encrypted in n8n Certificate URLs are publicly accessible via direct link Email validation prevents delivery to fraudulent addresses Webhook uses HTTPS for secure data transmission Google Sheets access controlled via OAuth2 permissions No sensitive data stored in workflow logs Future Enhancements PDF output option for formal certifications Multiple certificate templates (modern, classic, minimalist) QR code verification system Batch certificate generation Multi-language support Certificate revocation capability Analytics dashboard WhatsApp/SMS delivery option Integration with Notion/Confluence knowledge bases Support Resources n8n Documentation n8n Community Forum VerifiEmail Docs HTMLcsstoImage API Gmail API Reference Google Sheets API License This workflow template is provided as-is for free use and modification under the MIT License. Attribution appreciated but not required. Version: 1.0.0 Last Updated: October 2025 Compatibility: n8n v1.0.0+
by Daniel Shashko
AI Customer Support Triage with Gmail, OpenAI, Airtable & Slack How it Works This workflow monitors your Gmail support inbox every minute, automatically sending each unread email to OpenAI for intelligent analysis. The AI evaluates sentiment (Positive/Neutral/Negative/Critical), urgency level (Low/Medium/High/Critical), categorizes requests (Technical/Billing/Feature Request/Bug Report/General), extracts key issues, and generates professional response templates. The system calculates a priority score (0-110) by combining urgency and sentiment weights, then routes tickets accordingly. Critical issues trigger immediate Slack alerts with full context and 30-minute SLA reminders, while routine tickets post to standard monitoring channels. Every ticket logs to Airtable with complete analysis and thread tracking, then updates a Google Sheets dashboard for real-time analytics. A secondary AI pass generates strategic insights (trend identification, risk assessment, actionable recommendations) and stores them back in Airtable. The entire process takes seconds from email arrival to team notification, eliminating manual triage and ensuring critical issues get immediate attention. Who is this for? Customer support teams needing automated prioritization for high email volumes SaaS companies tracking support metrics and response times Startups with lean teams requiring intelligent ticket routing E-commerce businesses managing technical, billing, and return inquiries Support managers needing data-driven insights into customer pain points Setup Steps Setup time:** 20-30 minutes Requirements:** Gmail, OpenAI API key, Airtable account, Google Sheets, Slack workspace Monitor Support Emails: Connect Gmail via OAuth2, configure INBOX monitoring for unread emails AI Analysis Engine: Add OpenAI API key, system prompt pre-configured for support analysis Parse & Enrich Data: JavaScript code automatically calculates priority scores (no changes needed) Route by Urgency: Configure routing rules for critical vs routine tickets Slack Alerts: Create Slack app, get bot token and channel IDs, replace placeholders in nodes Airtable Database: Create base with "tblSupportTickets" table, add API key and Base ID (replace appXXXXXXXXXXXXXX) Google Sheets Dashboard: Create spreadsheet, enable Sheets API, add OAuth2 credentials, replace Sheet ID (1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) Generate Insights: Second OpenAI call analyzes patterns, stores insights in Airtable Test: Send test email, verify Slack alerts, check Airtable/Sheets data logging Customization Guidance Priority Scoring:** Adjust urgency weight (25) and sentiment weight (10) in Code node to match your SLA requirements Categories:** Modify AI system prompt to add industry-specific categories (e.g., healthcare: appointments, prescriptions) Routing Rules:** Add paths for High urgency, VIP customers, or specific categories Auto-Responses:** Insert Gmail send node after routine tickets for automatic acknowledgment emails Multi-Language:** Add Google Translate node for non-English support VIP Detection:** Query CRM APIs or match email domains to flag enterprise customers Team Assignment:** Route different categories to dedicated Slack channels by department Cost Optimization:** Use GPT-3.5 (~$0.001/email) instead of GPT-4, self-host n8n for unlimited executions Once configured, this workflow operates as your intelligent support triage layer—analyzing every email instantly, routing urgent issues to the right team, maintaining comprehensive analytics, and generating strategic insights to improve support operations. Built by Daniel Shashko Connect on LinkedIn