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 Jitesh Dugar
Customer Testimonial Collector Workflow Transform scattered testimonials into organized marketing assets - achieving 500 percent increase in testimonial collection, instant multi-channel optimization, and turning happy customers into brand advocates with automated rewards and recognition. What This Workflow Does Revolutionizes testimonial management with AI-powered analysis and multi-channel optimization: Centralized Collection via Jotform with structured fields for consistency AI Tone Detection using GPT-4 to analyze sentiment, authenticity, and emotional impact with 0-100 scoring Smart Quote Extraction that automatically identifies best soundbites for different marketing channels Organized Library using Google Sheets database with searchable tags, ratings, and usage permissions Automated Thank-You emails with exclusive coupon codes (20 percent for 5-star reviews) Social Media Optimization where AI creates Twitter, LinkedIn, and website versions automatically Marketing Team Alerts with real-time notifications including priority levels and usage recommendations Smart Rewards using dynamic discount codes based on rating quality Use Case Matching where AI identifies which marketing channels and audiences fit each testimonial Marketing-Ready Assets including headlines, callout words, and visual suggestions Key Features AI Testimonial Analyst: GPT-4 evaluates testimonials across 20 plus dimensions including tone, authenticity, emotional impact, and competitive advantages revealed Multi-Channel Optimization: Automatically generates Twitter-ready (280 characters), LinkedIn professional (150 words), and website polished (50-75 words) versions Tone and Sentiment Detection: Classifies testimonials as Enthusiastic, Professional, Grateful, Impressed, Transformative, or Skeptical-to-Believer with 0-100 sentiment scores Best Quote Extraction: AI identifies the single most impactful sentence plus 2-3 alternate quotes for different contexts Authenticity Scoring: Filters generic testimonials by rating authenticity as very-authentic, authentic, or generic Key Benefits Identification: Automatically extracts specific benefits mentioned such as time savings, cost reduction, and quality improvement Pain Points Mapping: Identifies what problems the customer solved by using your product or service Specific Results Tracking: Captures measurable outcomes like revenue increase, efficiency gains, and customer satisfaction improvements Marketing Priority Levels: AI assigns high, medium, or low priority to help marketing teams focus on most impactful testimonials Target Audience Matching: Identifies which customer segments would most relate to each testimonial Buyer Journey Staging: Tags testimonials by awareness, consideration, or decision stage for funnel optimization Competitive Differentiation: Identifies what each testimonial reveals about your competitive advantages Visual Design Suggestions: AI recommends graphic styles and callout words for testimonial graphics Permission Tracking: Automatically logs customer consent for public use across different channels Smart Coupon Generation: Creates unique codes with expiration dates and rating-based discount tiers Referral Incentives: Thank-you emails include referral program details to drive word-of-mouth Perfect For SaaS Companies needing social proof for landing pages and product pages E-commerce Stores showcasing customer satisfaction and product quality B2B Service Providers including consulting, agencies, and professional services building credibility Course Creators and online educators leveraging student success stories Healthcare Practices with patient testimonials (HIPAA-compliant with proper permissions) Real Estate Agents collecting client feedback for marketing materials Restaurants and Hospitality businesses gathering guest reviews and experiences Fitness and Wellness brands showcasing transformation stories What You Will Need Required Integrations Jotform - Testimonial submission form (free tier works) OpenAI API - GPT-4 for AI testimonial analysis (approximately 20-40 cents per testimonial) Gmail - Automated thank-you emails and marketing team notifications Google Sheets - Testimonial library and searchable database Optional Integrations Social Media APIs to auto-post testimonials to Twitter, LinkedIn, Facebook CRM Integration to link testimonials to customer profiles in HubSpot or Salesforce WordPress or Website integration to auto-publish approved testimonials to website testimonial pages Quick Start Import Template - Copy JSON and import into n8n Add OpenAI Credentials - Set up OpenAI API key (GPT-4 recommended for best analysis) Create Jotform Testimonial Form with fields for Customer Name, Email, Company, Job Title, Product Used, Testimonial Text, Rating, Permission to Share, Photo Upload, and Use Case Configure Gmail - Add Gmail OAuth2 credentials (same for both Gmail nodes) Setup Google Sheets - Create spreadsheet with Testimonial Library sheet and replace sheet ID in workflow Customize Coupon Logic if needed by editing the Generate Coupon Code node Brand Email Templates by updating company name, logo URLs, and colors Set Marketing Team Email address in notification node Test Workflow by submitting test testimonial through Jotform Launch Campaign by sharing form link in post-purchase emails Customization Options Multi-Language Support by translating forms and AI prompts for international customers Video Testimonials by adding video upload field and storing URLs in sheets Anonymous Options to allow customers to submit testimonials without public attribution Approval Workflow by adding manager approval step before testimonials go live A/B Testing to tag testimonials for split testing different versions on landing pages Industry-Specific Fields customized for your vertical such as results achieved, ROI, time saved Automated Publishing to connect to WordPress or CMS to auto-publish approved testimonials Social Media Auto-Posting to schedule tweets and LinkedIn posts with testimonial content Reward Tiers to create VIP rewards for customers who refer others after submitting testimonials NPS Integration to combine with Net Promoter Score surveys Review Platform Sync to auto-request reviews on Google, Yelp, Trustpilot, G2, Capterra Case Study Pipeline to flag high-impact testimonials for full case study development Customer Success Alerts to notify CSMs when their customers submit testimonials Testimonial Rotation to auto-rotate testimonials on website based on visitor industry Sentiment Trending to track sentiment scores over time Expected Results 500 percent increase in testimonial submissions due to easy form and rewards 90 percent reduction in manual testimonial management through automated categorization 10 hours per month saved as marketing team instantly finds perfect testimonials 40 percent improvement in conversion rates from authentic testimonials on landing pages 85 percent customer satisfaction with reward process driving loyalty 60 percent of testimonials rated high priority by AI filtering 100 percent organized testimonial library ensuring no great testimonial is lost 3x increase in referrals from thank-you emails with incentives 75 percent reduction in testimonial editing time as AI creates ready-to-use content 50 percent more social media engagement from optimized testimonial posts Use Cases SaaS Company Example A marketing manager with 150 customers needs social proof for new landing page launching next week. Scattered testimonials exist in emails, support tickets, and social media messages with no time to organize them. Solution: Sends form link to 50 happiest customers and receives 35 testimonials within 48 hours. AI analyzes all submissions and extracts best quotes. Manager filters by high priority and landing page use case to find 8 perfect testimonials with website versions already optimized. Result: Landing page launches on time with authentic testimonials. Conversion rate increases 42 percent. Customer uses discount code to upgrade plan. Refers 2 colleagues who become customers. Total impact exceeds 1400 dollars in incremental revenue. E-commerce Fashion Brand Example Post-purchase emails have generic review links. Most customers ignore them. Social proof on product pages is weak with only 2-3 old reviews while competitors have hundreds of testimonials. Solution: Adds form link to order confirmation emails 7 days post-delivery with incentive messaging. 500 customers submit testimonials in first month (10 percent response rate). AI identifies best testimonials for each product category. Result: Product pages updated with enthusiastic testimonials. Add-to-cart rate increases 65 percent. Customer uses discount code for repeat purchase. Posts social media content that brand reposts to followers. One testimonial workflow generates over 3500 dollars in attributed revenue. B2B Consulting Firm Example Proposals need client testimonials but they are trapped in old email threads. Asking clients feels awkward and time-consuming with no systematic collection process. Solution: Sends form link at project completion milestones via personal email from account manager. 22 of 30 clients submit testimonials (73 percent response rate). AI extracts ROI stories and specific results. Result: Testimonial added to proposal template addressing exact objection about being better than current firm. Close rate on proposals increases 30 percent. Client refers colleague who becomes high-value client. Full case study developed generates inbound leads. One testimonial workflow generates over 80000 dollars in new business. Online Course Creator Example Students post success stories in Facebook group and via email with no organized collection system. Website has only 3 old testimonials from 2 years ago. Low enrollment due to lack of social proof. Solution: Adds form link to course completion emails and shares in Facebook group with incentive. 180 students submit testimonials in first month (9 percent of students). AI identifies transformation stories and specific skills gained. Result: Testimonial added to course landing page as featured transformation story. Enrollment rate increases 55 percent as specific details address will-this-work objection. Student enrolls in advanced course using discount code. Testimonial shared in ads generates high ROAS. Workflow drives over 15000 dollars in additional course revenue. Healthcare Practice Example Patients verbally express gratitude but practice has only 15 online reviews. Need more social proof for website to attract new patients. Asking patients in-person feels pushy. Solution: Sends form link in post-appointment follow-up emails with clear HIPAA disclosure. Permission checkboxes for sharing testimonial publicly and using name and photo. 75 patients submit testimonials in first month. AI identifies compassionate care themes and specific improvements. Result: Testimonial added to service page. Inquiry rate increases 40 percent as testimonial addresses surgery fear objection. Patient agrees to video testimonial which becomes centerpiece of landing page. Multiple new patients mention seeing testimonial during consultations. One testimonial workflow generates multiple new patients and significant revenue. Practice review rating improves substantially. Pro Tips Timing is Everything: Send form 7-10 days after purchase or project completion when customers are still excited Incentivize Generously: 15-20 percent discount codes dramatically increase submission rates Make It Easy: Pre-fill customer information when possible and keep form under 10 fields Photo Requests Work: 60 percent of customers will upload headshots if you explain it increases credibility Video Follow-Ups: After receiving strong text testimonial, reach out personally to request video version Permission Clarity: Be explicit about where and how testimonials will be used Response Templates: Create templates for personal follow-ups to high-priority testimonials Quarterly Campaigns: Run testimonial collection campaigns quarterly with bonus rewards Showcase Submissions: Feature new testimonials in monthly newsletter A/B Test Formats: Test different testimonial layouts on website Industry Segmentation: Filter testimonials by industry for targeted landing pages NPS Integration: Send testimonial forms only to Promoters for higher quality submissions Social Proof Everywhere: Use testimonial snippets in email signatures and proposal templates Update Regularly: Refresh website testimonials quarterly to maintain relevance Track Attribution: Tag testimonials with UTM parameters when shared on social media Learning Resources This workflow demonstrates advanced automation including AI Agents for Content Optimization, Dynamic Reward Logic, Marketing Asset Generation, Sentiment Analysis, Data Organization, Multi-Channel Optimization, Customer Journey Mapping, Competitive Intelligence, Workflow Efficiency, and Permission Management. Business Impact Metrics Track these key metrics to measure success: Testimonial Collection Rate: Monitor percentage of customers who submit testimonials (target 10-15 percent) Submission Quality Score: Monitor average AI authenticity and sentiment scores (target 80 plus out of 100) Marketing Team Efficiency: Measure time saved finding and formatting testimonials (expect 10 plus hours per month saved) Conversion Rate Impact: A/B test pages with and without optimized testimonials (expect 30-50 percent lift) Reward Redemption Rate: Track percentage of customers who use thank-you coupon codes (typical 40-60 percent) Referral Generation: Count referrals attributed to testimonial thank-you emails (expect 3-5 percent referral rate) Social Media Engagement: Monitor engagement on testimonial posts versus other content (expect 2-3x higher) High-Priority Testimonial Ratio: Track percentage of testimonials rated high priority by AI (target 50-70 percent) Time to Marketing Use: Measure days from submission to live testimonial on website (aim for under 1 day) Customer Satisfaction: Survey customers about testimonial submission experience (target 90 percent plus positive) Template Compatibility Compatible with n8n version 1.0 and above Works with n8n Cloud and Self-Hosted No coding required for basic setup Fully customizable for industry-specific needs Ready to turn customers into brand advocates? Import this template and transform scattered testimonials into organized marketing assets with AI-powered analysis and automation!
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 Ranjan Dailata
Disclaimer Please note - This workflow is only available on n8n self-hosted as itβs making use of the community node for the Decodo Web Scraping This n8n workflow automates the process of scraping, analyzing, and summarizing Amazon product reviews using Decodoβs Amazon Scraper, OpenAI GPT-4.1-mini, and Google Sheets for seamless reporting. It turns messy, unstructured customer feedback into actionable product insights β all without manual review reading. Who this is for This workflow is designed for: E-commerce product managers** who need consolidated insights from hundreds of reviews. Brand analysts and marketing teams** performing sentiment or trend tracking. AI and data engineers** building automated review intelligence pipelines. Sellers and D2C founders** who want to monitor customer satisfaction and pain points. Product researchers** performing market comparison or competitive analysis. What problem this workflow solves Reading and analyzing hundreds or thousands of Amazon reviews manually is inefficient and subjective. This workflow automates the entire process β from data collection to AI summarization β enabling teams to instantly identify customer pain points, trends, and strengths. Specifically, it: Eliminates manual review extraction from product pages. Generates comprehensive and abstract summaries using GPT-4.1-mini. Centralizes structured insights into Google Sheets for visualization or sharing. Helps track product sentiment and emerging issues over time. What this workflow does Hereβs a breakdown of the automation process: Set Input Fields Define your Amazon product URL, geo region, and desired file name. Decodo Amazon Scraper Fetches real-time product reviews from the Amazon product page, including star ratings and AI-generated summaries. Extract Reviews Node Extracts raw customer reviews and Decodoβs AI summary into a structured JSON format. Perform Review Analysis (GPT-4.1-mini) Uses OpenAI GPT-4.1-mini to create two key summaries: Comprehensive Review: A detailed summary that captures sentiment, recurring themes, and product pros/cons. Abstract Review: A concise executive summary that captures the overall essence of user feedback. Persist Structured JSON Saves the raw and AI-enriched data to a local file for reference. Append to Google Sheets Uploads both the original reviews and AI summaries into a Google Sheet for ongoing analysis, reporting, or dashboard integration. Outcome: You get a structured, AI-enriched dataset of Amazon product reviews β summarized, searchable, and easy to visualize. Setup Pre-requisite If you are new to Decode, please signup on this link visit.decodo.com Please make sure to install the n8n custom node for Decodo. Step 1 β Import the Workflow Open n8n and import the JSON workflow template. Ensure the following credentials are configured: Decodo Credentials account β Decodo API Key OpenAI account β OpenAI API Key Google Sheets account β Connected via OAuth Step 2 β Input Product Details In the Set node, replace: amazon_url β your product link (e.g., https://www.amazon.com/dp/B0BVM1PSYN) geo β your region (e.g., US, India) file_name β output file name (optional) Step 3 β Connect Google Sheets Link your desired Google Sheet for data storage. Ensure the sheet columns match: product_reviews all_reviews Step 4 β Run the Workflow Click Execute Workflow. Within seconds, your Amazon product reviews will be fetched, summarized by AI, and logged into Google Sheets. How to customize this workflow You can tailor this workflow for different use cases: Add Sentiment Analysis** β Add another GPT node to classify reviews as positive, neutral, or negative. Multi-Language Reviews** β Include a language detection node before summarization. Send Alerts** β Add a Slack or Gmail node to notify when negative sentiment exceeds a threshold. Store in Database** β Replace Google Sheets with MySQL, Postgres, or Notion nodes. Visualization Layer** β Connect your Google Sheet to Looker Studio or Power BI for dynamic dashboards. Alternative AI Models** β Swap GPT-4.1-mini with Gemini 1.5 Pro, Claude 3, or Mistral for experimentation. Summary This workflow transforms the tedious process of reading hundreds of Amazon reviews into a streamlined AI-powered insight engine. By combining Decodoβs scraping precision, OpenAIβs summarization power, and Google Sheetsβ accessibility, it enables continuous review monitoring. In one click, it delivers comprehensive and abstract AI summaries, ready for your next product decision meeting or market strategy session.
by Cj Elijah Garay
AI-Powered Discord Task Manager with Priority Intelligence Mission-Aligned Task Tracker: Discord + AI + Google Sheets Opening Summary This n8n template demonstrates how to automate task management by syncing tasks from a Discord channel to Google Sheets, enriching them with AI-driven prioritization, and delivering a daily prioritized digest back to Discord. It streamlines task organization aligned with personal mission and productivity frameworks. Use cases are many: Try managing your teamβs project tasks by automatically prioritizing them based on strategic goals! Try personal task tracking with AI-powered prioritization for optimized daily productivity! Try automating follow-ups and completed task archiving seamlessly between Discord and Google Sheets! Good to know Using OpenAI GPT-4.1 and GPT-5 mini models may incur API costs based on usage (check your OpenAI pricing plan). Google Sheets API has rate limits; large task volumes may require batch adjustments to avoid quota errors. Discord API OAuth2 authentication is needed with permissions to read messages, add reactions, and post messages. The workflow requires shared Google Sheets with specific sheets named Tasks and completed tasks (template link provided). Reaction emojis in Discord (βοΈ for processed, β for completed) are used to track task status within Discord. AI-driven prioritization follows mission alignment based on Eisenhower Matrix, energy levels, and impact scoring. Uses concepts from: Deep work by Cal Newport Essentialism: The Disciplined Pursuit of Less β Greg McKeown (2014) Getting Results the Agile Way β J.D. Meier Hyperfocus β Chris Bailey (2018) Slow Productivity β Cal Newport (2024) Newportβs newest book. Explicitly about doing fewer things, working at a natural pace, and obsessing over qualityβbasically Deep Work 2.0 How it works Schedule Trigger fires hourly to initiate task syncing. Set discord IDs here node defines Discord server and channel IDs for input/output. get data - tasks Channel fetches all messages from the Discord input channel. Loop Over Items1 and if message is recorded already prevent reprocessing tasks. clean data prepares message information to uniform structure. ai task organizer node sends each task text to OpenAI GPT-4.1 mini agent, which analyzes and assigns priority, impact, energy level, category, and other metadata aligned to the user's mission. Tasks are appended to Google Sheets Tasks sheet using Append row in task sheet. react to confirm adds a reaction on Discord to mark the message as processed. Get tasks to do retrieves all in-progress tasks from Google Sheets for daily prioritization. Aggregated task data is analyzed by the AI Agent with GPT-5 mini to select top 6 tasks (3 high-energy, 3 low-energy). The daily prioritized list is split into acceptable message sizes and sent back to a Discord output channel by Send a message node. The workflow checks for tasks with β reactions in Discord (get checked ones), updates their status to "Completed" in Google Sheets (Update row in sheet). Completed tasks are moved to a separate completed tasks sheet (move completed rows to completed sheet) and deleted from active list (delete completed rows) in a loop until none remain. Wait nodes and limits are used to control API call pacing and batch sizes. How to use Set your Discord server and channel IDs for input (tasks-to-do) and output (my-prio-tasks-today) in the Set discord IDs here node. Connect your Google Sheets account and set the Spreadsheet ID in all relevant nodes (the sheet must have Tasks and completed tasks sheets with expected columns). Add your OpenAI API credentials for GPT-4.1 mini (task processing) and GPT-5 mini (daily digest). Ensure your Discord app has OAuth2 tokens with message read, react, and post permissions. Post tasks as messages in the configured Discord input channel. Run the workflow or activate it; it will sync, process, prioritize, and update tasks automatically on schedule. Customize the schedule trigger if you want more frequent or different syncing intervals. Requirements Discord account and bot/app with OAuth2 app credentials for message read, react, and post permissions. Google Sheets account for task data storage, with a spreadsheet structured as specified (Sheets: Tasks, completed tasks). OpenAI API account with access to GPT-4.1 mini and GPT-5 mini models for AI task analysis and summarization. Google Sheets OAuth2 credentials configured in n8n. Properly set Discord server and channel IDs in the workflow. Customising this workflow Try adding support for multiple Discord servers or channels to centralize tasks from different teams or projects. Extend AI prompts to include deadlines parsing or automated reminders. Customize the Google Sheets columns or the scoring logic to fit your unique productivity frameworks or KPIs. Incorporate notifications via email or Slack based on task priority or completion. Replace Google Sheets with other databases if scalable storage is required. Adjust the energy level and impact criteria in AI prompts to match your personal productivity rhythms. Sample inputs: "publish tasks tracker asap" "Improve personal portfolio asap" "Watch new movie - Jujutsu Kaisen" Sample output: π₯ Today's Agenda ββββββββββββββββββββββββββββββββ β‘ Morning Deep Work Blocks (High Energy Required) Do these during peak hours (6 AM to 2 PM or whenever you're sharpest) 1οΈβ£ Improve personal portfolio for job applications π‘ Why: Critical for landing > 50k automation job - enhances job application success π Priority: 100 | Impact: 10/10 Link: (https://discord.com/channels/1373770435146689/1481777943919293/1440107502032) 2οΈβ£ Complete all Udemy n8n courses ASAP π‘ Why: Essential skill for landing >50k automation job and digital product creation π Priority: 88 | Impact: 9/10 Link: (https://discord.com/channels/137770435134668/14348177539192/14365639629204) 3οΈβ£ Finish finance debt tracker and publish as template π‘ Why: Generates immediate income potential and supports income generation π Priority: 86 | Impact: 9/10 Link: (https://discord.com/channels/1373767704351346/1434817779453919/1436445965471973) ββββββββββββββββββββββββββββββββ π― DOWNTIME BLOCK (Low-Medium Energy) Do these during energy dips (post-lunch, late afternoon, tired moments) 1οΈβ£ Call Bank collections agency (09277055515 / 09559050973) π‘ Why: Limited-time offer; could significantly monthly payments π Priority: 96 | Impact: 10/10 | Energy: Medium Link: (https://discord.com/channels/13767704351/14348177453/14379926889894) 2οΈβ£ Publish n8n workflow and submit for verification π‘ Why: Enables earning from this and future n8n workflows β immediate income opportunity π Priority: 96 | Impact: 9/10 | Energy: Medium Link: (https://discord.com/channels/1373767435134/14347794539/143810998822) 3οΈβ£ Plan and pay Loan π‘ Why: Immediate debt payments reduce penalties/interest and support financial stability π Priority: 96 | Impact: 10/10 | Energy: Medium Link: (https://discord.com/channels/1373767704351346/143481777945391/14382823609982) ββββββββββββββββββββββββββββββββ πͺ EXECUTION STRATEGY π‘οΈ Morning Block: Protect this ruthlessly β no meetings, no social, deep work only. βοΈ Downtime Block: Tackle these during lower-energy windows; they move the money/debt needle without burning you out. π― Win Condition: Complete all 6 = massive progress toward landing high-paying work and eliminating high-priority debt. Protect your morning deep work at all costs β it's your leverage. You're building financial freedom one prioritized action at a time. If you finish all 6 today: your portfolio and skills will be significantly closer to landing high-paying work, and you'll make a major dent in urgent debt obligations. Questions? If you have questions or need help with this workflow, feel free to reach out: elijahmamuri@gmail.com elijahfxtrading@gmail.com
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 Jan Zaiser
This n8n template demonstrates how to automatically process incoming invoice emails using AI to extract structured data, organize files in Google Drive, log everything in Google Sheets, and forward to your accounting system, completely hands-free. Use cases are many: Perfect for freelancers managing client invoices, small businesses handling supplier bills, accounting departments processing high invoice volumes, or anyone who wants to eliminate manual data entry and maintain a perfectly organized invoice archive! Good to know The AI extraction works with most standard invoice formats but may require prompt adjustments for unusual layouts. Ensure your IMAP email account allows external app connections and has sufficient storage for the archive folder. Google Drive folder structure is automatically created if it doesn't exist yet. How it works The IMAP Email trigger monitors your inbox for new messages with attachments. JavaScript splits multiple attachments into separate items, ensuring each invoice is processed individually. PDF text extraction reads the content from each invoice file. An AI model (like OpenAI or Gemini) analyzes the extracted text and identifies key fields: company name, invoice number, date, amount, VAT, and more. Additional date metadata is generated (month, year, formatted dates) for smart categorization. The invoice PDF is uploaded to a temporary "Incoming Files" folder on Google Drive for safe processing. The workflow searches for or creates the correct monthly folder (e.g., "Invoices / October 2025") in your Drive structure. The invoice is moved to the final destination with a clean, standardized filename: 2025-10-02_Company-Name_InvoiceNumber.pdf. All extracted data is logged to Google Sheets for easy tracking, reporting, and audit trails. The finalized invoice is forwarded to your DateV accounting email inbox. The original email is automatically moved to an archive folder, keeping your inbox clean and organized. How to use The IMAP trigger is configured for continuous monitoring, but you can adjust the polling interval based on your needs. Customize the AI prompt to match your specific invoice formats or extract additional fields relevant to your business. The folder structure on Google Drive can be modified to match your existing organization system. Requirements IMAP-enabled email account (Gmail, Outlook, or any email provider supporting IMAP) Google Drive account for file storage Google Sheets for invoice logging AI model access (OpenAI, Gemini, or compatible LLM for data extraction) DateV email address (or replace with your preferred accounting system) Customising this workflow Replace the DateV email step with integrations to other accounting platforms like Xero, QuickBooks, or Lexoffice. Add conditional logic to route different invoice types to different folders or sheets. Extend the AI extraction to include line items, payment terms, or custom fields specific to your industry. Connect additional notifications via Slack, Teams, or SMS when high-value invoices are received. Disclaimer: The node to move the e-mail is a community-node, so itβs only for self-hosting.
by AppStoneLab Technologies LLP
AI-Powered Hiring Pipeline: Auto-Screen CVs, Score Candidates & Send Interview Invites Stop manually reading every CV. This workflow watches your inbox, extracts CV text using Mistral OCR, scores every candidate against your job description using Google Gemini AI, and automatically routes them - shortlisted candidates get a professional interview invite, rejected ones get a polite decline, and HR receives a full AI summary with the CV attached. All hands-free. Who Is This For? HR teams and recruiters** at startups or growing companies who receive a high volume of CV emails Technical hiring managers** who want AI-assisted pre-screening before spending time on interviews Solo founders** who are hiring but don't have a dedicated recruiter No-code automation builders** looking for a production-ready hiring automation template What Problem Does This Solve? Manually reviewing CVs is time-consuming, inconsistent, and expensive. This workflow eliminates the bottleneck by automatically: Extracting CV text from PDF attachments (including scanned documents) via Mistral OCR Evaluating every candidate against your specific job description using Gemini AI Routing candidates and sending the right email to the right person - instantly You focus on interviewing. The pipeline handles everything else. Key Features π₯ Email-triggered** β fires automatically when a CV arrives in your inbox, no manual steps π Mistral OCR** β works on both digitally-created and scanned/image-based PDF CVs π€ Gemini AI scoring** β returns a 0β100 score, shortlist/reject decision, candidate summary, and key skills π Smart routing** β shortlisted and rejected candidates are handled differently in the same workflow π§ 3 beautiful HTML email templates** β HR notification (with CV attached), interview invite, and polite decline βοΈ Binary passthrough** β original CV PDF is preserved and forwarded to HR's email as an attachment π Sticky note documentation** β every node is documented inside the workflow canvas How It Works (Step-by-Step) π₯ Watch Inbox β IMAP trigger fires when a new email arrives with a CV attachment π OCR Extraction β Mistral's mistral-ocr-latest model reads the CV and outputs clean structured text π€ AI Scoring β Google Gemini evaluates the CV against your job description and returns a structured JSON with score, decision, candidate name, 3β4 sentence summary, and top 5 skills βοΈ Parse & Route β a Code node cleans Gemini's response, extracts candidate email from the IMAP from field, and passes the binary CV forward π IF Decision β routes shortlisted candidates to the true branch and rejected to the false branch π§ HR Email β HR receives a branded email with the AI score, candidate summary, key skills, and the original CV attached π§ Interview Invite β shortlisted candidate receives a professional invitation with a scheduling link and "What to Expect" section π§ Polite Decline β rejected candidate receives a warm, empathetic decline with a link to your careers page π οΈ Setup Instructions Step 1 - Credentials Required You need to set up 4 credentials in n8n: | Credential | Node Used | Where to Get It | |---|---|---| | IMAP account | Email Trigger | Your email provider settings (Gmail: use App Password) | | Mistral Cloud API | OCR Extraction | Mistral AI Studio β API Keys | | Google Gemini (PaLM) API | AI Scoring | Google AI Studio β Get API Key | | SMTP account | All 3 email nodes | Your email provider SMTP settings | > π‘ Gmail users: Enable 2FA and generate an App Password for both IMAP and SMTP. Use imap.gmail.com:993 and smtp.gmail.com:587. Step 2 - Update Email Addresses In all 3 Send Email nodes, replace the placeholder emails: fromEmail β your sending address (e.g. hr@yourcompany.com) toEmail in the HR node β your HR team's inbox The candidate email fields are already dynamic ({{ $json.candidate_email }}) Step 3 - Add Your Job Description Open the π€ AI Score CV (Gemini) node and replace the JOB DESCRIPTION: section in the prompt with your actual role requirements. The current template uses an AI Engineer JD from AppStoneLab as a working example. Step 4 - Add Your Interview Scheduling Link In the π§ Send Interview Invite to Candidate node, find YOUR_CALENDLY_OR_CAL_LINK_HERE in the HTML and replace it with your actual booking link (Calendly, Cal.com, TidyCal, etc.). How to Customize for Your Use Case | What to Change | Where | Example | |---|---|---| | Job description | Gemini node prompt | Swap in your own role requirements | | Scoring threshold | IF node condition | Change "shortlisted" to score-based logic e.g. score >= 70 | | Company name & branding | All 3 HTML email templates | Replace "AppStoneLab Technologies" with your company | | Careers page URL | Decline email HTML | Replace appstonelab.com/career with your URL | | AI model | Gemini node | Switch to gemini-3-flash-preview or gemini-3.1-pro-preview for different speed/quality | | Watched mailbox | IMAP trigger | Change INBOX to a dedicated folder like INBOX.careers | | Interview questions | Invite email HTML | Add/edit the "What to Expect" section steps | API Keys β Quick Links Mistral AI** β Mistral AI Studio - Free tier includes OCR. Pricing: $1 per 1,000 pages for mistral-ocr-latest Google Gemini** β Google AI Studio - Free tier available. gemini-3-flash-preview is fast and cheap for production Gmail App Password** β Google App Passwords n8n IMAP docs** β docs.n8n.io/integrations/core-nodes/n8n-nodes-base.emailimap n8n SMTP docs** β docs.n8n.io/integrations/core-nodes/n8n-nodes-base.sendemail Important Notes The IMAP Format field must be set to Resolved (not Simple) - this is required for binary attachment data to flow correctly through the workflow The Code node carries the binary CV attachment forward from the IMAP trigger to the HR email node. If you add new nodes between them, make sure binary passthrough is preserved Mistral OCR works on both text-based and scanned/image PDFs, making it more reliable than n8n's built-in Extract from File node The workflow uses the from.value[0].address path to extract the candidate's email from the IMAP trigger output - this is the correct path for the Resolved format π¬ Questions or Issues? Drop a comment on this template or reach out on the n8n community forum. Happy to help you adapt this for your specific hiring use case.
by Jitesh Dugar
Automated Event Badge Generator Streamline your event registration process with this fully automated badge generation system. Perfect for conferences, seminars, corporate events, universities, and training programs. π― What This Workflow Does Receives Registration Data via webhook (POST request) Validates & Sanitizes attendee information (email, name, role) Generates Unique QR Codes for each attendee with scannable IDs Creates Beautiful HTML Badges with gradient design and branding Converts to High-Quality PNG Images (400x680px) via HTMLCSStoImage API Logs Everything to Google Sheets for tracking and analytics Sends Personalized Emails with badge attachment and event instructions Handles Errors Gracefully with admin notifications β¨ Key Features Professional Badge Design**: Gradient purple background, attendee photos (initials), QR codes Automatic QR Code Generation**: Unique scannable codes for quick check-in Email Delivery**: Personalized HTML emails with download links Google Sheets Tracking**: Complete audit trail of all badge generations Error Handling**: Admin alerts when generation fails Scalable**: Process registrations one-by-one or in batches π§ Required Setup APIs & Credentials: HTMLCSStoImg API - Sign up at https://htmlcsstoimg.com Get API Key Gmail OAuth2 Connect your Gmail account Grant send permissions Google Sheets OAuth2 Create a tracking spreadsheet Add headers: Name, Email, Event, Role, Attendee ID, Badge URL, Timestamp Connect via OAuth2 Before Activation: Replace YOUR_GOOGLE_SHEETS_ID with your Google Sheet ID Replace admin@example.com with your admin email address Add all three credentials Test with sample data π Use Cases Conferences & Seminars**: Generate badges for 100+ attendees Universities**: Student ID cards and event passes Corporate Events**: Employee badges with QR check-in Training Programs**: Course participant badges Workshops**: Professional badges with role identification Trade Shows**: Exhibitor and visitor badges π¨ Customization Options Badge Design**: Modify HTML/CSS for custom branding, colors, logos QR Code Size**: Adjust dimensions for different use cases Email Template**: Personalize welcome message and instructions Role-Based Badges**: Different designs for VIP, Speaker, Staff, Attendee Multi-Event Support**: Handle multiple events with different templates π What You'll Track Total badges generated Attendee names, emails, roles Badge image URLs for reprints Generation timestamps Event names and dates β‘ Processing Time Average**: 5-8 seconds per badge Includes**: Validation, QR generation, HTML rendering, image conversion, logging, email π Security Features Email format validation Continue-on-fail error handling Admin notifications on failures Secure credential storage π‘ Pro Tips Use a dedicated Gmail account for automation Monitor HTMLCSStoImg API limits Create separate sheets for different events Archive old data periodically Set up webhook authentication for production π Getting Started Import this workflow Add the three required credentials Update Sheet ID and admin email Test with sample registration data Activate and integrate with your registration form Perfect for event organizers, HR teams, universities, and anyone managing events with 10-1000+ attendees!
by isaWOW
Paste your interview recording URL into a simple form, describe the moments you want to find, and the workflow takes care of everything else. WayinVideo AI scans the full recording and extracts only the clips that match your search β then downloads each one, uploads it to Google Drive, and logs every detail into a Google Sheet library. You receive a summary email with a direct link to your library the moment all clips are saved. Built for podcast producers, content teams, and agencies who want to build a searchable clip archive from interview recordings without any manual editing. What This Workflow Does AI moment extraction** β Sends your interview URL and a plain-English query to WayinVideo, which finds and exports only the clips matching your description Smart file naming** β Each clip is saved to Google Drive with a filename that includes the guest name, clip number, and relevance score β so your folder stays organised from day one Searchable clip library** β Saves every clip's title, description, timestamp, score, tags, and Drive link to a Google Sheet β so your whole team can search and reuse clips later Auto-polling with retry** β Waits 90 seconds, then checks if clips are ready, and loops back every 30 seconds automatically until processing is complete Permanent Drive storage** β Clips are uploaded to Google Drive immediately β no risk of losing them when WayinVideo export links expire after 24 hours Summary email on completion** β Sends a confirmation email with a link to your Google Sheet library as soon as all clips are saved Form-based input** β Anyone on your team can submit an interview and query through a web form β no access to n8n required Setup Requirements Tools you'll need: Active n8n instance (self-hosted or n8n Cloud) WayinVideo account + API key Google account connected to n8n via Google Drive OAuth2 Google account connected to n8n via Google Sheets OAuth2 Google account connected to n8n via Gmail OAuth2 A Google Sheet with a tab named exactly: Interview Clip Library Estimated Setup Time: 15β20 minutes Step-by-Step Setup Get your WayinVideo API key Log in at WayinVideo, go to your account settings or developer section, and copy your API key. Paste the API key into node "2. WayinVideo β Submit Find Moments" Open this node, find the Authorization header value, and replace YOUR_WAYIN_API_KEY with your actual key. Paste the API key into node "4. WayinVideo β Get Clips Result" Open this node, find the same Authorization header, and replace YOUR_WAYIN_API_KEY again. > β οΈ This key appears in 2 nodes β you must replace it in both "2. WayinVideo β Submit Find Moments" and "4. WayinVideo β Get Clips Result". Missing either one will cause the workflow to fail. Set your Google Drive folder ID in node "9. Google Drive β Upload Clip" Open this node and replace YOUR_GDRIVE_FOLDER_ID with your actual folder ID. To find it: open your target Google Drive folder in a browser β the folder ID is the string of letters and numbers at the end of the URL after /folders/. Then connect your Google Drive credential via OAuth2 in the same node. Set your Google Sheet ID in node "10. Google Sheets β Save to Library" Open this node and replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID. To find it: open your Google Sheet in a browser β the Sheet ID is the long string in the URL between /d/ and /edit. Then connect your Google Sheets credential via OAuth2 in the same node. > β οΈ Before running the workflow, make sure your Google Sheet has a tab named exactly Interview Clip Library β the sheet name must match this exactly or the workflow will fail to save rows. Connect your Gmail account in node "11. Gmail β Send Summary Email" Open this node, click the credential field, and connect your Google account via Gmail OAuth2. Follow the on-screen prompts to authorise n8n. Activate the workflow Toggle the workflow to Active. Open the form URL generated by node "1. Form β Interview URL + Details" and submit a test interview URL to confirm the full workflow runs end to end. How It Works (Step by Step) Step 1 β Form Trigger (Web Form) The workflow starts when someone fills in the web form. You enter five things: the interview recording URL (Zoom, YouTube, or any direct link), the guest's name, the interview topic or category, a plain-English description of what moments to find, and the email address for the summary. The form includes query tips to help users write better searches β the form description gives examples like "career advice and turning point moments" to guide them. Step 2 β Submit to WayinVideo Find Moments The recording URL, search query, and project name (built from the guest name and topic) are sent to WayinVideo's Find Moments endpoint. The request asks for up to 5 matching clips at HD 720p quality with original-language captions. WayinVideo scans the video and returns a task ID to track the job. Step 3 β Wait 90 Seconds The workflow pauses for 90 seconds to give WayinVideo time to scan the recording before checking for results. This prevents the workflow from requesting results before they are ready. Step 4 β Poll WayinVideo for Results The workflow calls WayinVideo's results endpoint using the task ID from Step 2. It checks whether the clips have been found and exported yet, and receives either a completed clips list or a status showing the job is still running. Step 5 β Check: Status SUCCEEDED? (YES / NO branch) YES** β If the status equals SUCCEEDED, the workflow moves forward to split and process each clip. NO** β If the job is still running, the workflow routes to a 30-second wait and then loops back to Step 4 to check again. This repeats automatically until the clips are ready. > β οΈ Infinite Loop Risk: If WayinVideo never returns SUCCEEDED β due to an invalid URL, private video, or API error β this loop runs forever. Add a retry counter to stop after 8β10 attempts and send an error notification instead. Step 6 β Wait 30 Seconds (Retry) When clips are not ready yet, the workflow pauses 30 seconds before checking again. This gap prevents too many requests hitting the WayinVideo API in quick succession. Step 7 β Split Each Clip (Code) Once clips are ready, this step reads the full clips list and splits it into individual results β one per clip. Each result carries the clip title, download link, relevance score, description, tags, start time, end time, and clip index number. Step 8 β Download Each Clip File For each clip, the workflow fetches the video file from WayinVideo's export link and downloads it as a binary file β ready to be uploaded to Google Drive. Step 9 β Upload to Google Drive Each downloaded clip is uploaded to your specified Google Drive folder. The filename is built automatically using the guest name, clip number, and relevance score β for example: Raj_Sharma_Clip_1_Score_87.mp4. This keeps your Drive folder organised and sortable by score. Step 10 β Save to Google Sheets Library After each clip is uploaded, the workflow adds a new row to your Interview Clip Library sheet. It records the guest name, topic, query used, clip title, description, timestamp range, relevance score, tags, a direct Google Drive view link, the Drive file ID, the original interview URL, and the date. This creates a searchable, permanent library your whole team can use. Step 11 β Gmail Sends Summary Email After all clips are saved to the sheet, a summary email is sent to the address you entered in the form. The email confirms that clips have been uploaded to Google Drive and saved to the library, and reminds you to open the Interview Clip Library sheet to access all the Drive links. The final result is a set of clips in Google Drive, a fully logged library row per clip in Google Sheets, and a confirmation email β all from one form submission. Key Features β Plain-English search queries β Describe moments in normal language β "failure and comeback story" or "key career turning point" β and WayinVideo finds them β Score-based file naming β Every clip filename includes the guest name and relevance score β so your Drive folder is self-sorting and instantly readable β Permanent clip archive β Clips are saved to Google Drive immediately β no 24-hour expiry risk because the file is stored before the export link dies β Full metadata in Google Sheets β Every clip's title, description, timestamp, score, tags, and Drive link are logged β your team can search and reuse clips without rewatching recordings β Auto-retry polling β The workflow keeps checking until clips are ready β no manual monitoring needed β Guest + topic project naming β WayinVideo jobs are named using the guest name and topic you enter β so your WayinVideo project dashboard stays organised too β Captions on every clip β Original-language captions are embedded in each exported clip β useful for accessibility and silent viewing β One summary email per run β A single confirmation email is sent after all clips are saved β clean and non-spammy Customisation Options Extract more clips per search In node "2. WayinVideo β Submit Find Moments", change "limit": 5 to a higher number β use 10 to get a broader set of matching moments from longer recordings. Upgrade to Full HD resolution In node "2. WayinVideo β Submit Find Moments", change "resolution": "HD_720" to "FULL_HD_1080" for higher quality exports β useful for client-facing or broadcast use. Generate vertical clips for social media In node "2. WayinVideo β Submit Find Moments", add "enable_ai_reframe": true and "ratio": "RATIO_9_16" to automatically reframe clips to 9:16 vertical format β ready for Reels, Shorts, or TikTok. Add a Slack notification when the library is updated Insert a Slack node after "11. Gmail β Send Summary Email" to post a channel message with the guest name, topic, and number of clips saved β so your team gets notified without checking email. Sort clips into guest-specific Drive subfolders In node "9. Google Drive β Upload Clip", change the folder ID to a dynamic expression using the guest name field from the form β so each guest's clips automatically go into their own subfolder. Add a retry limit to stop infinite loops Add a Set step before "6. Wait β 30 Seconds Retry" to track a retry counter, then add a second IF check to stop after 10 attempts and route to "11. Gmail β Send Summary Email" with a failure message instead of looping forever. Troubleshooting WayinVideo API key not working: Check that you replaced YOUR_WAYIN_API_KEY in both "2. WayinVideo β Submit Find Moments" and "4. WayinVideo β Get Clips Result" β missing either one causes the workflow to fail Confirm your WayinVideo account is active and the key has not expired or been revoked Make sure there are no extra spaces before or after the key when pasting Workflow stuck in the retry loop: Check that the interview recording URL is publicly accessible β private, password-protected, or region-blocked videos will not be processed by WayinVideo Open the output of "4. WayinVideo β Get Clips Result" and inspect the raw response β WayinVideo may have returned an error message explaining the failure If the status never reaches SUCCEEDED, deactivate and reactivate the workflow, fix the video URL, and resubmit the form Google Drive upload failing: Open node "9. Google Drive β Upload Clip" and confirm the Google Drive OAuth2 credential is connected and not expired β reconnect it if needed Confirm YOUR_GDRIVE_FOLDER_ID was replaced with just the folder ID string (e.g. 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs), not the full URL Check that your Google account has write permission for the target folder Google Sheets not saving rows: Confirm your Google Sheet has a tab named exactly Interview Clip Library β the name must match character-for-character, including capitalisation Open node "10. Google Sheets β Save to Library" and check that YOUR_GOOGLE_SHEET_ID was replaced with just the Sheet ID (the string between /d/ and /edit in the Sheet URL) Check that the Google Sheets OAuth2 credential is connected and not expired β reconnect it in n8n credentials if needed No clips found (empty results): Your query may be too short or too vague β WayinVideo needs descriptive phrases to find relevant moments; try "career advice and lessons learned" instead of just "advice" Confirm the recording has clear spoken audio β low-quality audio or heavy background noise reduces accuracy Check that the recording URL is a direct video link and not a login-required viewer or landing page Support Need help setting this up or want a custom version built for your team or agency? π§ Email:info@isawow.com π Website:https://isawow.com
by Jitesh Dugar
AI-Powered Feedback Automation with PDF Reports & Team Notifications Transform customer feedback into actionable insights automatically with AI analysis, professional PDF reports, personalized emails, and real-time team notifications. Table of Contents Overview Features Demo Prerequisites Quick Start Configuration Usage Troubleshooting License Overview AI-Powered Feedback Automation is a complete, production-ready n8n workflow that automatically processes customer feedback submissions with artificial intelligence, generates beautiful branded PDF reports, sends personalized email responses, logs data for analytics, and notifies your team in real-time. What Problem Does This Solve? Manual feedback processing is time-consuming and inconsistent. This workflow eliminates all manual work by: Automatically analyzing** sentiment and extracting key insights using OpenAI Generating professional** PDF reports with custom branding Sending personalized** thank-you emails to customers Logging everything** to Google Sheets for analytics and reporting Notifying your team** instantly via Slack with actionable summaries Perfect For Product Teams** - Collect and analyze user feedback systematically Educational Institutions** - Process student/parent feedback efficiently Customer Support** - Track customer satisfaction and sentiment trends E-commerce** - Manage product reviews and customer suggestions Healthcare** - Collect patient feedback and satisfaction scores Event Management** - Gather attendee feedback post-event Consulting Firms** - Streamline client feedback collection Features AI-Powered Analysis Sentiment Classification** - Automatically categorizes feedback as Positive, Neutral, or Negative Key Highlights Extraction** - Identifies the most important points from customer comments Actionable Recommendations** - AI generates specific suggestions based on feedback Executive Summaries** - Creates concise 2-3 sentence overviews of each submission Professional Report Generation Beautiful PDF Reports** - Branded, professional documents with custom styling Visual Elements** - Star ratings, color-coded sentiment badges, organized sections Responsive Design** - Mobile-friendly and print-optimized layouts 30-Day Hosting** - PDF reports automatically hosted with expiration dates Automated Email Communications Personalized Messages** - Thank-you emails customized with customer name and feedback PDF Attachments** - Direct download links to full feedback reports Sentiment Indicators** - Color-coded visual feedback summaries Professional Templates** - Modern, responsive email designs Data Logging & Analytics Google Sheets Integration** - Automatic logging of all feedback submissions Complete Audit Trail** - Tracks submission IDs, timestamps, and processing status Analytics Ready** - Structured data perfect for dashboards and trend analysis Historical Records** - Permanent storage of all feedback data Team Notifications Slack Integration** - Real-time alerts to team channels Rich Formatting** - Structured messages with highlights and action items Direct Links** - Quick access to full PDF reports from Slack Thread Discussions** - Enable team conversations around feedback Robust Error Handling Email Validation** - Automatically checks and handles invalid email addresses Fallback Mechanisms** - Continues workflow even if email sending fails Data Cleaning** - Sanitizes and normalizes all input data Graceful Degradation** - AI parsing failures handled with intelligent fallbacks Demo Workflow Overview User Submits Feedback β Data Cleaning & Validation β AI Sentiment Analysis (OpenAI) β HTML Report Generation β PDF Conversion β Email Validation ββ¬β Valid β Send Email ββ Invalid β Skip β Log to Google Sheets β Notify Team (Slack) β Webhook Response Sample Input { "name": "Sarah Johnson", "email": "sarah@example.com", "rating": 4, "comments": "Great product! Delivery was a bit slow but customer service was helpful.", "suggestions": "Improve shipping speed and tracking updates." } Sample Output β AI Analysis: "Positive" sentiment with 3 key highlights β PDF Report: Professional 2-page document with branding β Email Sent: Personalized thank-you message delivered β Data Logged: New row added to Google Sheet β Team Notified: Slack message with summary posted β Webhook Response: 200 OK with submission details Prerequisites Required Services & Accounts n8n Instance (v0.220.0 or higher) Self-hosted or n8n Cloud Installation Guide OpenAI Account API key with GPT-3.5-turbo or GPT-4 access Sign Up Google Account (Gmail + Google Sheets) OAuth2 setup for Gmail API OAuth2 setup for Google Sheets API Setup Guide Slack Workspace Admin access to create apps or OAuth Bot token with chat:write and channels:read scopes Create Slack App HTML to PDF API Service GET at: PDFMunk API key required VerifiEmail API GET at: VerfiEmail API key required Quick Start 1. Import Template Option A: Import via URL Copy the workflow JSON URL and paste in n8n: Settings β Import from URL β [Paste URL] Option B: Import via File Download workflow.json In n8n: Workflows β Import from File Select the downloaded JSON file Click "Import" 2. Configure Credentials (5 minutes) Navigate to: Settings β Credentials and add: β OpenAI API - Add API key from OpenAI dashboard β Gmail OAuth2 - Connect and authorize your Gmail account β Google Sheets OAuth2 - Use same Google account β Slack OAuth2 - Install app to workspace and authorize β HTML to PDF API - Add API key from your PDF service β VerifiEmail API - Add API key from VerifiEmail dashboard 3. Create Google Sheet (2 minutes) Create a new Google Sheet named "Feedback Log" with these column headers: Submission ID | Timestamp | Name | Email | Rating | Sentiment | Comments | Suggestions | AI Summary | PDF URL | PDF Available Until | Email Sent 4. Configure Workflow (3 minutes) Open the imported workflow Click "Log Feedback Data" node Select your "Feedback Log" spreadsheet Click "Notify Team" node Select your Slack channel (e.g., #feedback) 5. Test & Activate (5 minutes) Execute the "Webhook" node to get test URL Send test POST request (see test data below) Verify all nodes execute successfully Check email, Google Sheet, and Slack Click "Active" toggle to enable workflow Total Setup Time: ~15-20 minutes Configuration Webhook Configuration The workflow receives feedback via POST webhook: URL Format: https://your-n8n-domain.com/webhook/feedback-submission Expected Payload: { "name": "string (required)", "email": "string (optional, validated)", "rating": "integer 1-5 (required)", "comments": "string (optional)", "suggestions": "string (optional)" } Usage Testing the Workflow Using Postman/Insomnia: Create new POST request URL: https://your-n8n-domain.com/webhook/feedback-submission Headers: Content-Type: application/json Body (raw JSON): { "name": "Test User", "email": "your-email@example.com", "rating": 5, "comments": "This is a test feedback submission. Everything works great!", "suggestions": "Maybe add more features in the future." } Send request Expected response (200 OK): { "success": true, "message": "Thank you for your feedback! We've sent you a detailed report via email.", "data": { "submissionId": "FB-1234567890123-abc123xyz", "name": "Test User", "email": "your-email@example.com", "rating": "5", "sentiment": "Positive", "emailSent": "true", "reportUrl": "https://generated-pdf-url.com/report.pdf", "reportAvailableUntil": "2025-11-10" } } Using cURL: curl -X POST https://your-n8n-domain.com/webhook/feedback-submission \ -H "Content-Type: application/json" \ -d '{ "name": "Sarah Johnson", "email": "sarah@example.com", "rating": 4, "comments": "Great product! Delivery was a bit slow but customer service was helpful.", "suggestions": "Improve shipping speed and tracking updates." }' Monitoring & Maintenance Daily: Check Slack for new feedback notifications Review Google Sheet for any anomalies Weekly: Verify workflow execution success rate Check OpenAI API usage and costs Review sentiment trends in Google Sheet Monthly: Analyze feedback patterns and trends Update AI prompts if needed Check PDF service usage limits Review and optimize workflow performance Best Practices Rate Limiting Monitor for spam submissions Add rate limiting to webhook if needed Use n8n's built-in throttling Data Privacy Ensure GDPR/privacy compliance Add data retention policies Implement data deletion workflow Error Handling Set up error notifications Create error logging workflow Monitor execution failures Performance Keep Google Sheet under 50,000 rows Archive old data quarterly Use database for high volume (1000+/month) Troubleshooting Common Issues Issue 1: Webhook Not Receiving Data Symptoms: Webhook node shows no executions Forms submit but nothing happens Solutions: β Verify workflow is Active (toggle at top right) β Check webhook URL is correct in form β Test webhook with Postman/cURL first β Check n8n logs for errors: Settings β Log Streaming β Verify firewall/network allows incoming webhooks Issue 2: OpenAI Node Fails Symptoms: Error: "API key invalid" Error: "Insufficient credits" Node times out Solutions: β Verify API key is correct and active β Check OpenAI account has sufficient credits β Check API usage limits: platform.openai.com/usage β Increase node timeout in workflow settings β Try with shorter feedback text Issue 3: PDF Not Generating Symptoms: "PDF generation failed" error Empty PDF URL 404 when accessing PDF Solutions: β Verify PDF API key is valid β Check API service status β Verify HTML content is valid (test in browser) β Check API usage limits/quota β Try alternative PDF service Issue 4: Email Not Sending Symptoms: Gmail node shows error Email doesn't arrive "Permission denied" error Solutions: β Re-authenticate Gmail OAuth2 credential β Check email address is valid β Check spam/junk folder β Verify Gmail API is enabled in Google Console β Check daily sending limits not exceeded β Test with different email address Issue 5: Google Sheets Not Updating Symptoms: No new rows added "Spreadsheet not found" error Permission errors Solutions: β Verify spreadsheet ID is correct β Check sheet name matches exactly (case-sensitive) β Verify column headers match exactly β Re-authenticate Google Sheets credential β Check spreadsheet isn't protected/locked β Verify spreadsheet isn't full (limit: 10M cells) Issue 6: Slack Not Posting Symptoms: Slack node fails Message doesn't appear in channel "Channel not found" error Solutions: β Verify bot is invited to channel: /invite @BotName β Check bot has chat:write permission β Re-authenticate Slack credential β Verify channel ID is correct β Check Slack workspace isn't on free plan limits β Test with different channel Debugging Tips Enable Debug Mode Settings β Executions β Save execution progress Watch each node execute step-by-step Check Execution Logs Click on failed node View "Input" and "Output" tabs Check error messages Test Nodes Individually Click "Execute Node" on each node Verify output before proceeding Use Browser Console Open Developer Tools (F12) Check for JavaScript errors Monitor network requests Enable Verbose Logging For self-hosted n8n N8N_LOG_LEVEL=debug npm start π License This template is licensed under the MIT License - see the LICENSE file for details.
by Vigh Sandor
Network Vulnerability Scanner (used NMAP as engine) with Automated CVE Report Workflow Overview This n8n workflow provides comprehensive network vulnerability scanning with automated CVE enrichment and professional report generation. It performs Nmap scans, queries the National Vulnerability Database (NVD) for CVE information, generates detailed HTML/PDF reports, and distributes them via Telegram and email. Key Features Automated Network Scanning**: Full Nmap service and version detection scan CVE Enrichment**: Automatic vulnerability lookup using NVD API CVSS Scoring**: Vulnerability severity assessment with CVSS v3.1/v3.0 scores Professional Reporting**: HTML reports with detailed findings and recommendations PDF Generation**: Password-protected PDF reports using Prince XML Multi-Channel Distribution**: Telegram and email delivery Multiple Triggers**: Webhook API, web form, manual execution, scheduled scans Rate Limiting**: Respects NVD API rate limits Comprehensive Data**: Service detection, CPE matching, CVE details with references Use Cases Regular security audits of network infrastructure Compliance scanning for vulnerability management Penetration testing reconnaissance phase Asset inventory with vulnerability context Continuous security monitoring Vulnerability assessment reporting for management DevSecOps integration for infrastructure testing Setup Instructions Prerequisites Before setting up this workflow, ensure you have: System Requirements n8n instance (self-hosted) with command execution capability Alpine Linux base image (or compatible Linux distribution) Minimum 2 GB RAM (4 GB recommended for large scans) 2 GB free disk space for dependencies Network access to scan targets Internet connectivity for NVD API Required Knowledge Basic networking concepts (IP addresses, ports, protocols) Understanding of CVE/CVSS vulnerability scoring Nmap scanning basics External Services Telegram Bot (optional, for Telegram notifications) Email server / SMTP credentials (optional, for email reports) NVD API access (public, no API key required but rate-limited) Step 1: Understanding the Workflow Components Core Dependencies Nmap: Network scanner Purpose: Port scanning, service detection, version identification Usage: Performs TCP SYN scan with service/version detection nmap-helper: JSON conversion tool Repository: https://github.com/net-shaper/nmap-helper Purpose: Converts Nmap XML output to JSON format Prince XML: HTML to PDF converter Website: https://www.princexml.com Version: 16.1 (Alpine 3.20) Purpose: Generates professional PDF reports from HTML Features: Password protection, print-optimized formatting NVD API: Vulnerability database Endpoint: https://services.nvd.nist.gov/rest/json/cves/2.0 Purpose: CVE information, CVSS scores, vulnerability descriptions Rate Limit: Public API allows limited requests per minute Documentation: https://nvd.nist.gov/developers Step 2: Telegram Bot Configuration (Optional) If you want to receive reports via Telegram: Create Telegram Bot Open Telegram and search for @BotFather Start a chat and send /newbot Follow prompts: Bot name: Network Scanner Bot (or your choice) Username: network_scanner_bot (must end with 'bot') BotFather will provide: Bot token: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz (save this) Bot URL: https://t.me/your_bot_username Get Your Chat ID Start a chat with your new bot Send any message to the bot Visit: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates Find your chat ID in the response Save this chat ID (e.g., 123456789) Alternative: Group Chat ID For sending to a group: Add bot to your group Send a message in the group Check getUpdates URL Group chat IDs are negative: -1001234567890 Add Credentials to n8n Navigate to Credentials in n8n Click Add Credential Select Telegram API Fill in: Access Token: Your bot token from BotFather Click Save Test connection if available Step 3: Email Configuration (Optional) If you want to receive reports via email: Add SMTP Credentials to n8n Navigate to Credentials in n8n Click Add Credential Select SMTP Fill in: Host: SMTP server address (e.g., smtp.gmail.com) Port: SMTP port (587 for TLS, 465 for SSL, 25 for unencrypted) User: Your email username Password: Your email password or app password Secure: Enable for TLS/SSL Click Save Gmail Users: Enable 2-factor authentication Generate app-specific password: https://myaccount.google.com/apppasswords Use app password in n8n credential Step 4: Import and Configure Workflow Configure Basic Parameters Locate "1. Set Parameters" Node: Click the node to open settings Default configuration: network: Input from webhook/form/manual trigger timestamp: Auto-generated (format: yyyyMMdd_HHmmss) report_password: Almafa123456 (change this!) Change Report Password: Edit report_password assignment Set strong password: 12+ characters, mixed case, numbers, symbols This password will protect the PDF report Save changes Step 5: Configure Notification Endpoints Telegram Configuration Locate "14/a. Send Report in Telegram" Node: Open node settings Update fields: Chat ID: Replace -123456789012 with your actual chat ID Credentials: Select your Telegram credential Save changes Message customization: Current: Sends PDF as document attachment Automatic filename: vulnerability_report_<timestamp>.pdf No caption by default (add if needed) Email Configuration Locate "14/b. Send Report in Email with SMTP" Node: Open node settings Update fields: From Email: report.creator@example.com β Your sender email To Email: report.receiver@example.com β Your recipient email Subject: Customize if needed (default includes network target) Text: Email body message Credentials: Select your SMTP credential Save changes Multiple Recipients: Change toEmail field to comma-separated list: admin@example.com, security@example.com, manager@example.com Add CC/BCC: In node options, add: cc: Carbon copy recipients bcc: Blind carbon copy recipients Step 6: Configure Triggers The workflow supports 4 trigger methods: Trigger 1: Webhook API (Production) Locate "Webhook" Node: Path: /vuln-scan Method: POST Response: Immediate acknowledgment "Process started!" Async: Scan runs in background Trigger 2: Web Form (User-Friendly) Locate "On form submission" Node: Path: /webhook-test/form/target Method: GET (form display), POST (form submit) Form Title: "Add scan parameters" Field: network (required) Form URL: https://your-n8n-domain.com/webhook-test/form/target Users can: Open form URL in browser Enter target network/IP Click submit Receive confirmation Trigger 3: Manual Execution (Testing) Locate "Manual Trigger" Node: Click to activate Opens workflow with "Pre-Set-Target" node Default target: scanme.nmap.org (Nmap's official test server) To change default target: Open "Pre-Set-Target" node Edit network value Enter your test target Save changes Trigger 4: Scheduled Scans (Automated) Locate "Schedule Trigger" Node: Default: Daily at 1:00 AM Uses "Pre-Set-Target" for network To change schedule: Open node settings Modify trigger time: Hour: 1 (1 AM) Minute: 0 Day of week: All days (or select specific days) Save changes Schedule Examples: Every day at 3 AM: Hour: 3, Minute: 0 Weekly on Monday at 2 AM: Hour: 2, Day: Monday Twice daily (8 AM, 8 PM): Create two Schedule Trigger nodes Step 7: Test the Workflow Recommended Test Target Use Nmap's official test server for initial testing: Target**: scanme.nmap.org Purpose**: Official Nmap testing server Safe**: Designed for scanning practice Permissions**: Public permission to scan Important: Never scan targets without permission. Unauthorized scanning is illegal. Manual Test Execution Open workflow in n8n editor Click Manual Trigger node to select it Click Execute Workflow button Workflow will start with scanme.nmap.org as target Monitor Execution Watch nodes turn green as they complete: Need to Add Helper?: Checks if nmap-helper installed Add NMAP-HELPER: Installs helper (if needed, ~2-3 minutes) Optional Params Setter: Sets scan parameters 2. Execute Nmap Scan: Runs scan (5-30 minutes depending on target) 3. Parse NMAP JSON to Services: Extracts services (~1 second) 5. CVE Enrichment Loop: Queries NVD API (1 second per service) 8-10. Report Generation: Creates HTML/PDF reports (~5-10 seconds) 12. Convert to PDF: Generates password-protected PDF (~10 seconds) 14a/14b. Distribution: Sends reports Check Outputs Click nodes to view outputs: Parse NMAP JSON**: View discovered services CVE Enrichment**: See vulnerabilities found Prepare Report Structure**: Check statistics Read Report PDF**: Download report to verify Verify Distribution Telegram: Open Telegram chat with your bot Check for PDF document Download and open with password Email: Check inbox for report email Verify subject line includes target network Download PDF attachment Open with password How to Use Understanding the Scan Process Initiating Scans Method 1: Webhook API Use curl or any HTTP client and add "network" parameter in a POST request. Response: Process started! Scan runs asynchronously. You'll receive results via configured channels (Telegram/Email). Method 2: Web Form Open form URL in browser: https://your-n8n.com/webhook-test/form/target Fill in form: network: Enter target (IP, range, domain) Click Submit Receive confirmation Wait for report delivery Advantages: No command line needed User-friendly interface Input validation Good for non-technical users Method 3: Manual Execution For testing or one-off scans: Open workflow in n8n Edit "Pre-Set-Target" node: Change network value to your target Click Manual Trigger node Click Execute Workflow Monitor progress in real-time Advantages: See execution in real-time Debug issues immediately Test configuration changes View intermediate outputs Method 4: Scheduled Scans For regular, automated security audits: Configure "Schedule Trigger" node with desired time Configure "Pre-Set-Target" node with default target Activate workflow Scans run automatically on schedule Advantages: Automated security monitoring Regular compliance scans No manual intervention needed Consistent scheduling Scan Targets Explained Supported Target Formats Single IP Address: 192.168.1.100 10.0.0.50 CIDR Notation (Subnet): 192.168.1.0/24 # Scans 192.168.1.0-255 (254 hosts) 10.0.0.0/16 # Scans 10.0.0.0-255.255 (65534 hosts) 172.16.0.0/12 # Scans entire 172.16-31.x.x range IP Range: 192.168.1.1-50 # Scans 192.168.1.1 to 192.168.1.50 10.0.0.1-10.0.0.100 # Scans across range Multiple Targets: 192.168.1.1,192.168.1.2,192.168.1.3 Hostname/Domain: scanme.nmap.org example.com server.local Choosing Appropriate Targets Development/Testing: Use scanme.nmap.org (official test target) Use your own isolated lab network Never scan public internet without permission Internal Networks: Use CIDR notation for entire subnets Scan DMZ networks separately from internal Consider network segmentation in scan design Understanding Report Contents Report Structure The generated report includes: 1. Executive Summary: Total hosts discovered Total services identified Total vulnerabilities found Severity breakdown (Critical, High, Medium, Low, Info) Scan date and time Target network 2. Overall Statistics: Visual dashboard with key metrics Severity distribution chart Quick risk assessment 3. Detailed Findings by Host: For each discovered host: IP address Hostname (if resolved) List of open ports and services Service details: Port number and protocol Service name (e.g., http, ssh, mysql) Product (e.g., Apache, OpenSSH, MySQL) Version (e.g., 2.4.41, 8.2p1, 5.7.33) CPE identifier 4. Vulnerability Details: For each vulnerable service: CVE ID**: Unique vulnerability identifier (e.g., CVE-2021-44228) Severity**: CRITICAL / HIGH / MEDIUM / LOW / INFO CVSS Score**: Numerical score (0.0-10.0) Published Date**: When vulnerability was disclosed Description**: Detailed vulnerability explanation References**: Links to advisories, patches, exploits 5. Recommendations: Immediate actions (patch critical/high severity) Long-term improvements (security processes) Best practices Vulnerability Severity Levels CRITICAL (CVSS 9.0-10.0): Color: Red Characteristics: Remote code execution, full system compromise Action: Immediate patching required Examples: Log4Shell, EternalBlue, Heartbleed HIGH (CVSS 7.0-8.9): Color: Orange Characteristics: Significant security impact, data exposure Action: Patch within days Examples: SQL injection, privilege escalation, authentication bypass MEDIUM (CVSS 4.0-6.9): Color: Yellow Characteristics: Moderate security impact Action: Patch within weeks Examples: Information disclosure, denial of service, XSS LOW (CVSS 0.1-3.9): Color: Green Characteristics: Minor security impact Action: Patch during regular maintenance Examples: Path disclosure, weak ciphers, verbose error messages INFO (CVSS 0.0): Color: Blue Characteristics: No vulnerability found or informational Action: No action required, awareness only Examples: Service version detected, no known CVEs Understanding CPE CPE (Common Platform Enumeration): Standard naming scheme for IT products Used for CVE lookup in NVD database Workflow CPE Handling: Nmap detects service and version Nmap provides CPE (if in database) Workflow uses CPE to query NVD API NVD returns CVEs associated with that CPE Special case: nginx vendor fixed from igor_sysoev to nginx Working with Reports Accessing HTML Report Location: /tmp/vulnerability_report_<timestamp>.html Viewing: Open in web browser directly from n8n Click "11. Read Report for Output" node Download HTML file Open locally in any browser Advantages: Interactive (clickable links) Searchable text Easy to edit/customize Smaller file size Accessing PDF Report Location: /tmp/vulnerability_report_<timestamp>.pdf Password: Default: Almafa123456 (configured in "1. Set Parameters") Change in workflow before production use Required to open PDF Opening PDF: Receive PDF via Telegram or Email Open with PDF reader (Adobe, Foxit, Browser) Enter password when prompted View, print, or share Advantages: Professional appearance Print-optimized formatting Password protection Portable (works anywhere) Preserves formatting Report Customization Change Report Title: Open "8. Prepare Report Structure" node Find metadata object Edit title and subtitle fields Customize Styling: Open "9. Generate HTML Report" node Modify CSS in <style> section Change colors, fonts, layout Add Company Logo: Edit HTML generation code Add `` tag in header section Include base64-encoded logo or URL Modify Recommendations: Open "9. Generate HTML Report" node Find Recommendations section Edit recommendation text Scanning Ethics and Legality Authorization is Mandatory: Never scan networks without explicit written permission Unauthorized scanning is illegal in most jurisdictions Can result in criminal charges and civil liability Scope Definition: Document approved scan scope Exclude out-of-scope systems Maintain scan authorization documents Notification: Inform network administrators before scans Provide scan window and source IPs Have emergency contact procedures Safe Targets for Testing: scanme.nmap.org: Official Nmap test server Your own isolated lab network Cloud instances you own Explicitly authorized environments Compliance Considerations PCI DSS: Quarterly internal vulnerability scans required Scan all system components Re-scan after significant changes Document scan results HIPAA: Regular vulnerability assessments required Risk analysis and management Document remediation efforts ISO 27001: Vulnerability management process Regular technical vulnerability scans Document procedures NIST Cybersecurity Framework: Identify vulnerabilities (DE.CM-8) Maintain inventory Implement vulnerability management License and Credits Workflow: Created for n8n workflow automation Free for personal and commercial use Modify and distribute as needed No warranty provided Dependencies: Nmap**: GPL v2 - https://nmap.org nmap-helper**: Open source - https://github.com/net-shaper/nmap-helper Prince XML**: Commercial license required for production use - https://www.princexml.com NVD API**: Public API by NIST - https://nvd.nist.gov Third-Party Services: Telegram Bot API: https://core.telegram.org/bots/api SMTP: Standard email protocol Support For Nmap issues: Documentation: https://nmap.org/book/ Community: https://seclists.org/nmap-dev/ For NVD API issues: Status page: https://nvd.nist.gov Contact: https://nvd.nist.gov/general/contact For Prince XML issues: Documentation: https://www.princexml.com/doc/ Support: https://www.princexml.com/doc/help/ Workflow Metadata External Dependencies**: Nmap, nmap-helper, Prince XML, NVD API License**: Open for modification and commercial use Security Disclaimer This workflow is provided for legitimate security testing and vulnerability assessment purposes only. Users are solely responsible for ensuring they have proper authorization before scanning any network or system. Unauthorized network scanning is illegal and unethical. The authors assume no liability for misuse of this workflow or any damages resulting from its use. Always obtain written permission before conducting security assessments.