by isaWOW
Description Paste any onboarding video URL into a simple form and the workflow handles everything automatically. It transcribes the video, sends the full transcript to an AI that writes the exact number of quiz questions you requested, and saves the complete quiz directly to your Google Sheet. Built for HR teams, L&D managers, and anyone who creates employee training content at scale. What This Workflow Does Accepts video input via form** — Collects the video URL, department topic, and desired question count from a clean, shareable web form Transcribes the video automatically** — Sends the video to WayinVideo and receives a clean, timestamped transcript with speaker labels Polls until transcription is ready** — Waits 45 seconds then keeps checking until the transcript is fully complete before moving forward Generates accurate MCQ questions** — An AI agent reads the full transcript and creates exactly the number of questions requested, each with four options and a correct answer Anchors every question to the transcript** — Each question includes a speaker reference and timestamp so you can verify answers directly in the video Saves the quiz to Google Sheets** — Appends all questions, metadata, and generation timestamp to your Quiz Bank tab automatically Setup Requirements Tools you'll need Active n8n instance (self-hosted or n8n Cloud) WayinVideo account + API key (for video transcription) OpenAI API key (GPT-4o-mini for quiz generation) Google Sheets with OAuth2 access (for saving the quiz) Estimated Setup Time: 10–15 minutes Step-by-Step Setup Get your WayinVideo API key — Log in to your WayinVideo account, go to API settings, and copy your API key. Add your WayinVideo key to Node 2 — Open the 2. WayinVideo — Submit Transcript node. In the Authorization header, replace YOUR_WAYINVIDEO_API_KEY with your actual key. Add your WayinVideo key to Node 4 — Open the 4. WayinVideo — Get Transcript node. Replace YOUR_WAYINVIDEO_API_KEY again in the Authorization header. > ⚠️ Your WayinVideo API key appears in two nodes — replace it in both 2. WayinVideo — Submit Transcript AND 4. WayinVideo — Get Transcript or the workflow will fail. Add your OpenAI API key — Open the OpenAI — Chat Model node and connect your OpenAI API credentials. If you haven't added them yet, go to n8n Settings → Credentials → New → OpenAI. Fix the IF node condition — Open the 5. If — Transcript Status Check node. Set the left value to {{ $json.data.status }} and the right value to SUCCEEDED. This tells the workflow to move forward only when transcription is complete. > ⚠️ This step is critical. Without this condition, the workflow will loop forever and never generate your quiz. Create your Google Sheet — Create a new Google Sheet with a tab named exactly Quiz Bank. Add these column headers in row 1: Department, Video URL, Total Questions, Quiz Questions, Generated On. Connect Google Sheets — Open the 7. Google Sheets — Save Quiz Bank node. Connect your Google Sheets OAuth2 credentials. Add your Sheet ID — In the same node, replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID. Find it in your Google Sheet URL — it's the long string between /d/ and /edit. Activate the workflow — Toggle the workflow ON. Open the form URL and run a test with a short video to confirm everything works end to end. How It Works (Step by Step) Step 1 — Form Trigger: Collect Video Details The workflow starts when someone submits the web form. They enter the onboarding video URL, their department or topic name, and how many questions they want. This is the only manual step — everything after this is fully automatic. Step 2 — HTTP Request: Submit Video to WayinVideo The workflow sends the video URL to the WayinVideo API to start the transcription job. WayinVideo processes the video and returns a unique transcription ID that the workflow uses to track progress. Step 3 — Wait: Pause for 45 Seconds The workflow pauses for 45 seconds to give WayinVideo time to process the video before checking whether it's ready. For longer videos, you can increase this wait time. Step 4 — HTTP Request: Fetch the Transcript Using the transcription ID from Step 2, the workflow calls WayinVideo again to retrieve the results. The response includes the full transcript with speaker names, timestamps, and spoken text for each segment. Step 5 — IF Check: Is the Transcript Ready? The workflow checks whether the transcription status equals SUCCEEDED. If yes, it moves forward to quiz generation. If no, it loops back to the 45-second wait and tries again. This polling loop repeats automatically until the transcript is fully ready. Step 6 — AI Agent: Generate the Quiz The full transcript is passed to GPT-4o-mini with a detailed prompt. The AI reads only the transcript — no outside knowledge — and generates exactly the number of MCQ questions requested. Each question has four options, one correct answer, and a reference to the speaker and approximate timestamp in the video. Step 7 — Google Sheets: Save the Quiz The completed quiz, along with the department name, video URL, question count, and generation timestamp, is appended as a new row in your Quiz Bank tab. The quiz is ready to review, share, or export. Key Features ✅ Exact question count — The AI always generates exactly the number of questions you requested — no more, no less ✅ Transcript-only questions — Every question is based strictly on what was said in the video, with no general knowledge mixed in ✅ Speaker + timestamp references — Each answer includes a citation so trainers can verify answers directly in the video ✅ Automatic polling loop — The workflow retries until transcription is complete, so you never have to check manually ✅ Simple form interface — Anyone on your team can use it — no n8n knowledge required ✅ Centralised quiz bank — All quizzes are saved to one Google Sheet, organised by department and date ✅ Swap the AI model — Easily upgrade to a stronger model for more complex training content Customisation Options Increase the wait time for long videos — Open the 3. Wait — 45 Seconds node and increase the wait duration if your training videos are longer than 15–20 minutes. Upgrade to a stronger AI model — In the OpenAI — Chat Model node, replace gpt-4o-mini with gpt-4o for higher-quality questions on dense or technical content. Change the quiz language — Edit the system prompt in the 6. AI — Generate MCQ Quiz node to request questions in any language. Also update the target_lang parameter in the 2. WayinVideo — Submit Transcript node to match. Add a difficulty level to the form — Add a new field to the 1. Form — Video URL + Topic node (e.g. Easy / Medium / Hard) and reference it in the AI prompt to adjust question complexity. Send the quiz by email — Add a Gmail or Outlook node after 7. Google Sheets — Save Quiz Bank to automatically email the completed quiz to the requester or their manager. Add a Slack notification — Insert a Slack node at the end to post a message to a team channel whenever a new quiz is saved, including the department name and question count. Troubleshooting Workflow loops forever and never generates questions: Open 5. If — Transcript Status Check and confirm the condition is set: left value {{ $json.data.status }} equals SUCCEEDED Without this condition, the workflow will always take the false path and loop indefinitely Transcription fails or returns an error: Check that your WayinVideo API key is correct in both nodes 2 and 4 Make sure the video URL is publicly accessible — private or region-restricted videos will fail Try increasing the wait time in 3. Wait — 45 Seconds for longer videos Quiz not saving to Google Sheets: Verify your Google Sheets OAuth2 credentials are connected in 7. Google Sheets — Save Quiz Bank Confirm the Sheet ID is correct — use only the ID string, not the full URL Check that the tab is named exactly Quiz Bank (case-sensitive) AI generates the wrong number of questions: The prompt already instructs the AI firmly on question count — if this happens, open 6. AI — Generate MCQ Quiz and add an extra line to the prompt: You must generate exactly [N] questions. Stop at exactly [N]. Consider upgrading to gpt-4o for stricter instruction-following Form not collecting responses: Make sure the workflow is toggled ON (activated) before sharing the form URL Test mode and production mode use different URLs in n8n 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 Incrementors
Paste your webinar recording URL into a simple form — and this workflow does the rest automatically. WayinVideo AI scans the full recording and extracts the most engaging clip segments, ready for your lead nurture campaigns. Each clip is downloaded and saved directly to your Google Drive folder with no manual effort. Built for marketers, agencies, and growth teams who run webinars and want to repurpose content at scale without editing software. What This Workflow Does Form-triggered input** — Collects the recording URL, webinar topic, brand name, and clip limit from a clean hosted form before any processing begins AI-powered clip extraction** — Submits the webinar video to WayinVideo, which identifies and cuts the highest-engagement moments automatically Smart polling loop** — Waits 45 seconds and checks for results repeatedly until clips are ready — no manual checking needed Per-clip file download** — Downloads every generated clip as an individual video file directly from the WayinVideo export link Automatic Google Drive upload** — Saves each clip to your chosen Drive folder with the AI-generated clip title as the filename Batch processing** — Handles multiple clips in a single run — all clips are downloaded and uploaded one by one without any extra configuration Setup Requirements Tools You'll Need Active n8n instance (self-hosted or n8n Cloud) WayinVideo account with API access (wayin.ai) Google account with Google Drive OAuth2 access in n8n Estimated Setup Time: 5–10 minutes Step-by-Step Setup 1. Get Your WayinVideo API Key WayinVideo is the AI engine that finds and clips the best moments from your webinar. Go to WayinVideo and log in or create an account Navigate to your Dashboard → API section Copy your Bearer token Open the 2. WayinVideo — Submit Clipping Task node in n8n Find the Authorization header and replace YOUR_WAYINVIDEO_API_KEY with your token Open the 4. WayinVideo — Poll Clip Results node and replace the same placeholder there > ⚠️ This API key appears in two nodes — Submit (node 2) and Poll (node 4). Replace it in both or the workflow will fail on the polling step. 2. Connect Google Drive (OAuth2) In n8n, go to Credentials → Add Credential → Google Drive OAuth2 API Complete the Google authentication flow Open the 8. Google Drive — Upload Clip node Select your new credential from the dropdown 3. Set Your Google Drive Folder ID Open Google Drive and navigate to the folder where you want clips saved Look at the URL bar — copy the string after /folders/ In the 8. Google Drive — Upload Clip node, replace YOUR_GOOGLE_DRIVE_FOLDER_ID with that string Update YOUR_FOLDER_NAME with a recognisable label for your own reference 4. Activate the Workflow Save the workflow Toggle it Active at the top of the editor Open the form URL (shown in the 1. Form — Webinar URL + Details node) and submit a test recording How It Works (Step by Step) Step 1 — Form: Collect Webinar Details The workflow starts when you fill out a hosted n8n form. You provide four things: the webinar recording URL, the topic or title, your company name, and the maximum number of clips you want generated. Once submitted, all this data is passed to the next step. Step 2 — Submit Clipping Task to WayinVideo The workflow sends your recording URL to the WayinVideo API using a POST request. It also sends the project name, clip limit, resolution setting (HD 720p), and caption preferences. WayinVideo returns a Job ID that is used to track the processing status in the next steps. Step 3 — Wait 45 Seconds The workflow pauses for 45 seconds. This gives WayinVideo time to begin processing the video before the first status check. Checking too early would return an empty result. Step 4 — Poll for Clip Results Using the Job ID from Step 2, the workflow calls the WayinVideo results endpoint to check if the clips are ready. The response either contains completed clip data or an empty result. Step 5 — Clips Ready? (Smart Retry Loop) The workflow checks whether the result data is populated: YES (clips are ready)** — moves forward to extract and download each clip NO (still processing)** — loops back to the 45-second wait and checks again > This retry loop runs every 45 seconds until WayinVideo finishes. For longer webinars (60+ minutes) this may take several cycles — this is completely normal. Step 6 — Extract Each Clip A Code step splits the clips array into individual items. For each clip it extracts the title, export link, engagement score, tags, description, and start/end timestamps. Each clip then flows through the next steps independently. Step 7 — Download the Clip File For each clip, the workflow fetches the export link from WayinVideo and downloads the video file directly as a binary file attachment. Step 8 — Upload to Google Drive Each downloaded clip file is uploaded to your configured Google Drive folder. The filename is set automatically using the AI-generated clip title from Step 6 — so your Drive folder stays organised without any manual renaming. Key Features ✅ No editing software needed — WayinVideo selects the best clips automatically using AI engagement scoring ✅ Form-based entry point — Anyone on your team can submit a webinar without touching n8n ✅ Automatic retry loop — Polling continues every 45 seconds until processing is done — no babysitting required ✅ Per-clip Drive organisation — Each clip is saved as a separate file with its AI-generated title as the filename ✅ Engagement scoring — The API returns a score for each clip so you can prioritise the highest-impact segments ✅ Caption support — Captions are enabled by default, making clips ready for social media with no extra steps ✅ Configurable clip count — Set the max number of clips per webinar directly in the form — no code changes needed ✅ Scalable batch processing — Multiple clips are processed and uploaded in a single workflow run automatically Customisation Options Change clip length for social media In the 2. WayinVideo — Submit Clipping Task node, change target_duration from DURATION_30_60 to DURATION_15_30 to generate shorter clips optimised for Instagram Reels or YouTube Shorts. Enable vertical video reframing In the same Submit node, set enable_ai_reframe to true to let WayinVideo automatically crop and reframe clips to a vertical 9:16 format — ready for mobile-first platforms without any editing. Change output language Set target_lang in the Submit node to hi, es, fr, or de to receive captions and AI output in a different language — useful for international webinars. Organise clips by client or campaign Add a Set node before the Google Drive upload step to dynamically build a folder path based on the brand name submitted in the form. This keeps clips from different clients separated automatically. Send clip links by email after upload Add a Gmail node after the 8. Google Drive — Upload Clip step to email the Google Drive link of each clip to your team or client as soon as the upload is complete. Add a Slack notification when done Place a Slack node at the end of the workflow to send a summary message to a channel once all clips are uploaded — including the clip titles and Drive links — so your team knows when new content is ready. Troubleshooting API key not working / WayinVideo returns an error: Double-check that YOUR_WAYINVIDEO_API_KEY has been replaced in both node 2 and node 4 Confirm your WayinVideo account is active and has available processing credits Make sure the Authorization header value starts with Bearer followed by your key with no extra spaces Workflow stuck in the polling loop: Long webinars (90+ minutes) can take 5–10 minutes to process — multiple retry cycles are expected Open your WayinVideo dashboard to check if the job is still running or has failed If the loop runs for more than 20 minutes with no result, the recording URL may be unsupported or behind a login wall Clips not uploading to Google Drive: Re-authenticate your Google Drive OAuth2 credential in n8n (credentials can expire) Verify the folder ID in node 8 is correct — copy it fresh from the Drive URL Check that your Google account has write access to the target folder Form not submitting / workflow not starting: Make sure the workflow is toggled Active — inactive workflows do not accept form submissions Use the exact form URL shown in the 1. Form — Webinar URL + Details node trigger settings Confirm the webinar URL is publicly accessible — password-protected Zoom recordings will not be processed Clip files downloading but not uploading correctly: Confirm the Google Drive credential is selected in the 8. Google Drive — Upload Clip node (not left as unconfigured) Check n8n execution logs for any binary data errors in the download step — some export links may expire quickly after generation Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/contact-us/
by Devon Toh
Classify Cold Email Replies and Notify via Telegram with OpenAI and Instantly Automatically classifies incoming cold email replies as HOT, WARM, or COLD using AI and sends priority Telegram notifications with auto-acknowledgment for fast response times. Who is this for? Outbound sales teams using Instantly for cold email who want instant lead classification and speed-to-lead automation. What problem does this solve? Manually checking inboxes for replies is slow. Hot leads go cold while you sleep. This workflow classifies replies in seconds, notifies you on Telegram, and auto-acknowledges warm/hot leads so they know you're responsive. How it works: Instantly Reply Webhook - receives reply event from Instantly Respond 200 OK - acknowledges webhook immediately Validate Payload - checks required fields (email, reply body) Extract Lead Fields - normalizes lead data (email, name, subject, campaign) Classify Reply - OpenAI - GPT-4o-mini classifies as HOT/WARM/COLD with reasoning Parse Classification - extracts classification + carries forward lead data Is HOT? / Is WARM? - routes to the right notification branch Telegram - HOT/WARM/COLD Lead - sends priority-formatted notification Auto-Ack HOT/WARM Gmail - instantly sends acknowledgment email to engaged leads Log Reply to Sheet - logs everything for tracking Setup: Add credentials: OpenAI, Gmail, Telegram Bot, Header Auth Replace YOUR_TELEGRAM_CHAT_ID with your chat ID (message @userinfobot) Create a Google Sheet with columns: timestamp, lead_email, lead_name, classification, campaign, subject, reply_snippet, reasoning, auto_ack_sent, manual_reply_sent, manual_reply_at Replace YOUR_GOOGLE_SHEET_ID with your sheet ID Configure Instantly webhook: Settings > Integrations > Webhooks > reply_received event > paste your n8n webhook URL Customization: Edit the OpenAI system prompt to adjust classification criteria Modify auto-ack email copy in the Gmail nodes Adjust Telegram message formatting per branch
by Rajeet Nair
Overview This workflow automates the complete appointment booking process, from request validation to scheduling, notifications, and reminders. It checks calendar availability in real time, prevents double bookings, suggests alternative slots when unavailable, and automatically sends confirmations and reminders—ensuring a smooth and reliable booking experience. Perfect for service-based businesses, consultants, and teams managing appointments at scale. How It Works Webhook Trigger Receives booking requests (name, email, date, time, notes). Workflow Configuration Defines: Google Calendar ID Appointment duration Business hours Sender email Data Validation Parses and validates input fields Ensures required data is present and correctly formatted Calendar Availability Check Fetches existing events from Google Calendar Compares requested time with existing bookings Conflict Detection Detects overlapping events Determines whether the slot is available Decision Logic If available → proceed with booking If not available → trigger alternative flow Booking Flow (Available Slot) Create Calendar Event Schedules appointment in Google Calendar Adds attendee and event details Confirmation Email Sends booking confirmation with event details Includes calendar event link Webhook Response Returns success response to client/system Reminder System Schedules automated reminders: 24-hour reminder before appointment 1-hour reminder before appointment Uses wait nodes to trigger emails at exact times Includes appointment details to reduce no-shows Alternative Flow (Unavailable Slot) Generate Alternative Slots Finds next available time slots within business hours Ensures slots are within a defined time window Alternative Email Notification Sends suggested time slots to the user Webhook Response Returns unavailable status with alternatives Setup Instructions Webhook Setup Configure endpoint (booking) Connect to your frontend or booking form Google Calendar Add Google Calendar credentials Set calendar ID Gmail Integration Add Gmail credentials for: Confirmation emails Reminder emails Alternative slot notifications Configure Parameters Set: Appointment duration (e.g., 60 minutes) Business hours (e.g., 9–17) Sender email Customize Messages Edit email templates for: Confirmation Alternatives Reminders Use Cases Appointment booking systems for businesses Coaching and consulting session scheduling Service-based business automation (salons, clinics, etc.) Internal team scheduling tools Calendly-style booking workflows Requirements Google Calendar account Gmail account n8n instance (cloud or self-hosted) Key Features Real-time availability checking Automatic conflict detection Calendar event creation Alternative slot suggestions Email notifications and confirmations Automated reminder system (24h + 1h) Fully customizable booking logic Summary A complete appointment scheduling system that automates booking validation, calendar management, notifications, and reminders. It reduces manual coordination, prevents scheduling conflicts, and improves attendance with automated follow-ups.
by Jitesh Dugar
Email List Hygiene - Automated Weekly Validator Overview Validates email lists through automated checks, categorizes results as Valid/Invalid/Risky, updates Google Sheets in real-time, and delivers HTML reports. Runs every Friday at 5 PM via cron scheduling. Workflow Architecture Schedule Trigger → Read Google Sheets → Loop (Process Each Email) → Validate API → IF Branch (Valid/Invalid) → Update Google Sheets → Merge → Loop Back → Calculate Statistics → Send Email Report Loop Mechanism Split in Batches processes one email at a time Each email: validate → branch → update sheet → merge → continue Loop accumulates all results internally "Done" output triggers statistics calculation after all emails processed Health Score Formula Score = (Valid% × 100) - (Invalid% × 20) - (Risky% × 10) Bounded: 0-100 Ranges: 80-100: Excellent (green) 60-79: Good (orange) 0-59: Needs Attention (red) Prerequisites Required: Google account with Sheets access Email validation API (VerifiEmail) n8n v1.0+ Google Sheet Structure | Column | Type | Filled By | |--------|------|-----------| | row_number | Number | Auto-generated | | name | Text | You | | email | Text | You | | status | Text | Workflow | | checked_at | Text | Workflow | | notes | Text | Workflow | Only populate first three columns. Setup 1. Import Template Import JSON file to n8n via Workflows → Add workflow → Import from File 2. Configure Credentials Google Sheets OAuth2 (used by 3 nodes): Create credential via any Google Sheets node Grant spreadsheet permissions Apply same credential to all Google Sheets nodes Validation API: Get API key from https://verifi.email Add credential to "Validate Email Address" node Gmail OAuth2: Add credential to "Send Weekly Report" node Grant email sending permissions 3. Connect Google Sheet In all three Google Sheets nodes: Select your spreadsheet from Document dropdown Select sheet tab Verify "Column to Match On" = row_number (for Update nodes) 4. Set Email Recipient In "Send Weekly Report" node: Change "Send To" from placeholder to your email Optional: Add CC/BCC for multiple recipients 5. Test Add 3-5 test emails (mix of valid/invalid) Click "Execute Workflow" Verify sheet updates and email arrives 6. Activate Toggle "Active" switch. Workflow runs automatically every Friday at 5 PM. Customization Change Schedule: Edit "Weekly Schedule" node cron expression: Daily 9 AM: 0 9 * * * Monday 5 PM: 0 17 * * 1 First of month: 0 9 1 * * Email Design: Edit HTML in "Send Weekly Report" message field. Modify colors (search hex codes), text, or add branding. Archive Invalid Emails: Add Google Sheets Append node after "Update Invalid Status" → create "Invalid_Archive" tab → append email, name, reason, date Slack Notifications: Add Slack node after email report → configure channel → use summary text from statistics Rate Limiting: Add Wait node (1-2 seconds) after validation for large lists to prevent API throttling Troubleshooting "Column not found": Verify exact column names in sheet: row_number, name, email, status, checked_at, notes (case-sensitive) Only processes 1 email: Check Google Sheets node Range field is empty or set to include all rows. Verify "Use Header Row" enabled. Wrong statistics: Enable "Execute Once" in Calculate Statistics node settings (gear icon) Email not arriving: Check spam/promotions folder, verify Gmail credential authorized, confirm recipient address correct API errors: Verify API key valid, check quota not exceeded, test with simple email like test@gmail.com Merge node error: Confirm both Update nodes connect to Merge inputs (top and bottom). Check both branches execute successfully. Validation Checks Each email undergoes: RFC 5322 format compliance MX record existence (domain has mail servers) SMTP verification (mailbox exists) Disposable email service detection Catch-all domain detection Categories: Valid: All checks passed Invalid: Critical checks failed Risky: Disposable or catch-all domain Support Check execution logs in n8n Executions tab for errors. Use "Execute Node" on individual nodes to isolate issues. Visit n8n community forum for additional help. Tags email-validation marketing-automation data-cleaning google-sheets scheduled-workflow deliverability list-hygiene
by Łukasz
What Is This? This workflow is an automated invoice payment tracking and vindication system that monitors unpaid and overdue invoices stored in NocoDB, then sends escalating reminders to clients based on configurable time thresholds. The system handles three escalation levels: friendly payment reminders before/at due date, formal warning notices for overdue invoices, and legal action notifications for severely overdue accounts. It works with any accounting system that can populate a NocoDB database, making it ideal for businesses using custom invoicing systems, international accounting software, or multiple invoice sources. Who Is It For? Designed for small to medium-sized businesses, IT service providers, consulting agencies, and accounting departments that need professional payment enforcement without expensive debt collection services. This workflow is particularly valuable for companies experiencing cash flow challenges due to late-paying clients. B2B service providers, software development agencies, consultancies, and freelancers managing multiple client invoices will benefit from automated, multi-channel payment reminders that maintain professional relationships while firmly enforcing payment terms. Whether you're tracking 5 high-value contracts or managing 200+ monthly invoices, this automation ensures no payment deadline slips through the cracks. It's especially useful for businesses operating internationally or using accounting systems without built-in reminder features. How Does It Work? This comprehensive invoice vindication automation consists of four main stages: 1. Configuration & Company Details Setup Defines critical parameters including escalation timeframes (Days before Due Date for reminder, Days after Due Date for warning, Days after Due Date for Legal action), and toggles for notification channels (Send Email, Send Physical Letter). The workflow also captures complete company information for professional correspondence including banking details, tax identification numbers, and contact information. 2. Invoice & Client Data Retrieval Connects to NocoDB to fetch all invoices with their associated client information. The workflow uses a Split in Batches node to process each invoice individually, retrieving complete client details (name, email, full address) from the linked Clients table. This two-step fetch ensures all necessary data is available for personalized communications. 3. Intelligent Filtering & Categorization Invoices are filtered to remove already-paid invoices (checking both Invoice Status ≠ "Paid" and Payment Date = empty), then categorized into three escalation groups: Today/Upcoming Invoices**: Due date is today OR X days away → Sends friendly payment reminder Overdue for Warning**: Exactly Y days past due date → Sends formal warning about potential legal action Overdue for Legal Notice**: Exactly Z days past due date → Sends notice of commenced legal proceedings 4. Multi-Channel Notification Dispatch For each escalation level, the workflow generates professionally formatted HTML content with complete invoice details, payment instructions, and appropriate urgency levels. Notifications are dispatched via: Email** (Gmail): Professional HTML emails with company branding Physical Mail** (PostGrid): Printed letters delivered via postal service for serious escalations Slack**: Internal team notifications for tracking sent reminders Each notification includes invoice number, amounts, due dates, payment details (bank account, SWIFT code), and clear call-to-action based on escalation level. How To Set It Up? Prerequisites: An active N8N account or self-hosted instance A NocoDB instance (hosted at your domain or using NocoDB Cloud) A Slack workspace with bot permissions (Optional) Gmail account configured for sending emails (Optional) PostGrid account for physical mail delivery Step 1: Create NocoDB Tables Execute the "Create Tables" manual trigger to automatically create two tables in your NocoDB base: Invoices Table with fields: Invoice Id (SingleLineText) Amount (Currency, PLN) Issue Date (Date) Due Date (Date) Invoice Status (SingleSelect: Unpaid, Partial, Paid, Overdue) Vindication Status (SingleSelect: None, Reminder Sent, Warning Sent, Legal Notice Sent) Reminder Sent Date, Warning Sent Date, Legal Notice Sent Date (Date fields) Payment Date (Date) Clients Table with fields: Name (SingleLineText) Email (Email) Country Code, Province, City, Postal Code, Address (SingleLineText) The workflow automatically creates a one-to-many relationship between Clients and Invoices. Step 2: Configure NocoDB Connection In the "NocoDB Config" node: Base ID**: Your NocoDB base identifier (e.g., pksfpoc943gwhvy) NocoDB Url**: Your NocoDB instance URL (e.g., https://noco.sbyte.eu/) Update all NocoDB credentials to point to your instance using the "NocoDB Token" authentication. Step 3: Set Escalation Timing In the "Config" node, configure: Days before Due Date for reminder**: How early to send friendly reminders (default: 7 days before) Days after Due Date for warning**: When to escalate to formal warning (default: 7 days overdue) Days after Due Date for Legal action**: When to send legal notices (default: 10 days overdue) Critical: Ensure "Days after Due Date for Legal action" > "Days after Due Date for warning" to maintain proper escalation sequence. Setting legal action earlier than warning will confuse clients. Step 4: Configure Notification Channels In the "Config" node: Send Email**: Toggle to enable/disable Gmail notifications Send Physical Letter**: Toggle to enable/disable PostGrid physical mail Step 5: Add Your Company Details In the "Your Company Details" node, provide: Company Name, Email, Phone Full address (Country Code, City, Street, Postal Code) Banking information (Bank Name, Bank Account Number, SWIFT Code) Tax Identification Number (TIN) This information appears in all correspondence and legal notices. Step 6: Configure Credentials Set up the following credentials: NocoDB API Token**: From your NocoDB account settings Gmail OAuth2**: For email delivery (if Send Email = true) PostGrid API**: For physical letter delivery (if Send Physical Letter = true) Slack OAuth2**: For internal team notifications Step 7: Customize Slack Channel In the "Send a message" node, update the Slack channel ID to your desired notification channel. Step 8: Schedule Execution The workflow runs automatically daily at 7:00 AM via the "Run daily" trigger node. Adjust timing in the Schedule Trigger node as needed. For testing, execute manually using the "Execute workflow" button. What's More? Professional HTML Email Templates: Three distinct HTML email templates provide escalating urgency levels while maintaining professional communication standards. Each template includes: Company branding and letterhead Clear invoice details with formatting Payment instructions with bank details Appropriate tone for escalation level (friendly → formal → legal) Contact information for questions Smart Date Calculations: The workflow uses N8N's DateTime functions to calculate: Days until due date for upcoming invoices Days overdue for late payments Exact matching for escalation thresholds (uses equals operator, not ranges) This ensures invoices are processed exactly once at each escalation stage, preventing duplicate notifications. Flexible Data Model: The NocoDB schema supports tracking: Multiple vindication stages with dedicated date fields Invoice status progression (Unpaid → Partial → Overdue → Paid) Vindication status history (None → Reminder Sent → Warning Sent → Legal Notice Sent) Payment reconciliation via Payment Date field Multi-Format Address Handling: The workflow correctly formats addresses for: Email recipients (standard format) PostGrid API (structured JSON with country codes, provinces, postal codes) HTML templates (human-readable format) Batch Processing with Error Isolation: The Split in Batches node processes invoices individually, ensuring one failed notification (e.g., invalid email address) doesn't block processing of remaining invoices. Each invoice proceeds through the workflow independently. Conditional Notification Routing: IF nodes check configuration flags before sending notifications, allowing granular control: Send only emails for low-cost operations Send only physical letters for serious escalations Send both for maximum impact Disable specific channels temporarily without modifying workflow Slack Notification Intelligence: Slack messages include structured blocks showing: Email subject (escalation type) Invoice number and amount Contractor name Days overdue calculation Payment deadline and issue date This provides at-a-glance visibility into which invoices triggered notifications and why. Table Creation Automation: Rather than requiring manual NocoDB table setup, the workflow includes HTTP Request nodes that programmatically create tables with exact field types, validation rules, and relationships using NocoDB's Meta API. This ensures consistent schema across deployments and eliminates manual configuration errors. Currency Support: While defaulting to PLN (Polish Złoty), the Amount field uses NocoDB's Currency type, which can be easily changed to EUR, USD, GBP, or 150+ other currencies via the table schema without modifying workflow logic. Thank You, Perfect! Visit my profile for other free business automations. And if you're looking for dedicated software development or custom n8n workflow solutions, don't hesitate to reach out at developers@sailingbyte.com or on sailingbyte.com!
by Madame AI
Audit browser & Proxies fingerprint and IP integrity to Slack reports Introduction This workflow performs a comprehensive security audit on your web scraping infrastructure to detect potential IP leaks or bot detection flags. It iterates through a list of fingerprinting services and guarded websites using BrowserAct, uses AI to analyze the diagnostic data for anomalies (like mismatched User-Agents or leaked WebRTC IPs), and logs the results to Google Sheets before delivering a final "Go/No-Go" report to Slack. Target Audience Web scraping developers, DevOps engineers, and security analysts who need to verify that their automation infrastructure is not being flagged as a bot. How it works Initialization: The workflow starts by clearing a designated Google Sheet to prepare for a fresh audit. Target Definition: A Set node defines a list of diagnostic URLs (e.g., BrowserScan, IPQualityScore) and specific guarded websites (e.g., Footlocker) to test. Looping: A Split In Batches node iterates through each URL one by one. Data Extraction: The BrowserAct node visits each URL. It executes the "Bot Detection Check" template to extract raw fingerprint data, headers, and access logs. Forensic Analysis: An AI Agent (using OpenRouter/GPT-4o) acts as a security analyst. It parses the raw scraping output to identify specific red flags, such as "WebDriver" leaks, IP blacklisting, or CAPTCHA blocks. Logging: The individual analysis for each site is appended to a Google Sheet. Aggregation: Once all sites are checked, the workflow fetches all rows from the Google Sheet. Final Verdict: A second AI Agent reviews the aggregate data to generate a master report, calculating a success rate and identifying consistency issues across different checks. Notification: The final formatted report is sent to a Slack channel. How to set up Configure Credentials: Connect your BrowserAct, OpenRouter, Google Sheets, and Slack accounts in n8n. Prepare BrowserAct: Ensure you have the Bot Detection Check template saved and active in your BrowserAct library. Setup Google Sheet: Create a new Google Sheet. (See headers below). Define Targets: Open the Define Target URLs node and populate the array with the detection services you wish to test. Configure Guarded Sites: Open the Add guarded test step node if you wish to change the specific e-commerce or protected site being tested (default is Footlocker). Select Slack Channel: Update the Send Report node to point to your desired Slack channel. Google Sheet Headers To use this workflow, create a Google Sheet with the following header in the first row: Result Requirements BrowserAct Account:* Required to perform the browser-based checks. You must have the *Bot Detection Check** template. OpenRouter Account:** Required for the GPT-4o model to perform the forensic analysis. Google Sheets:** Used as a temporary database to store logs during the loop. Slack Account:** Used to receive the final audit report. How to customize the workflow Add Email Alerts: Add a Gmail or SendGrid node after the final AI Agent to email the report to stakeholders if the "Scorecard" falls below a certain threshold. Deepen the Analysis: Modify the System Prompt in the Analyze the site results node to check for specific custom headers or headers required by your target websites. Rotate Proxies: If the report returns a "Fail," you could extend the workflow to trigger a proxy rotation API (like Bright Data or IPRoyal) automatically. Need Help? How to Find Your BrowserAct API Key & Workflow ID How to Connect n8n to BrowserAct How to Use & Customize BrowserAct Templates Workflow Guidance and Showcase Video How to Test Your Proxies for n8n: AI-Powered Fingerprint & Bot Check
by Hyrum Hurst
Who this is for Property management companies managing frequent tenant move-outs across multiple units. What this workflow does Automatically schedules and coordinates move-out cleaning and repair tasks, sends vendor instructions, notifies internal teams, tracks completions, and logs everything for reporting. How it works Cron triggers workflow before lease end. AI generates personalized move-out instructions and checklists. Vendors and property management teams are notified. Completion updates logged in Google Sheets. Optional AI suggests follow-up actions for delays. How to set up Connect tenant data, configure Cron, Slack, Email, and Task Manager credentials. Customize AI prompts and verify notification flows. Requirements Google Sheets Email & Slack credentials AI Node access Task Manager (Trello/Asana/etc.) Built by QuarterSmart. Created by Hyrum Hurst.
by Terence Hielscher
How it works A CV arrives by email. easybits extracts structured candidate data from the PDF: same JSON schema every time, regardless of CV layout or language. The workflow then fetches the open job description from Airtable, compares the candidate's skills against the role requirements, calculates a match score, saves the candidate record, and sends a Slack notification flagged as shortlist or review. What makes this different The scoring is based on the actual job description, not a static keyword list. Upload a new job description, and the scoring updates automatically for every new CV. Set up steps Create a free easybits.tech account and set up two pipelines: one for CV extraction, one for job description extraction. Copy the pipeline IDs. Add your Gmail OAuth2 credential in n8n Add your easybits API key as a Header Auth credential Add your Airtable personal access token — create two tables: Jobs and Candidates (schemas in sticky notes) Add your Slack webhook URL Run the Job Description Parser workflow first by emailing a job description PDF to your recruitment inbox Then activate the CV Screening workflow — it reads from the Jobs table automatically Prerequisites easybits.tech account (free tier available) Gmail account with OAuth2 access Airtable account Slack workspace with incoming webhooks enabled Setup time: approximately 20 to 30 minutes
by Salman Mehboob
**Send personalized LinkedIn InMails automatically to CEOs and founders using n8n, Google Sheets, and Unipile — with built-in duplicate prevention, credit tracking, and full conversation ID logging. Scale your LinkedIn outreach without manually writing or sending a single InMail. This workflow reads your leads from a Google Sheet, filters out already-messaged prospects, and sends each one a fully personalized InMail — with their first name and company name injected automatically — on a schedule, hands-free. Built for founders, sales professionals, and automation builders who want consistent, professional LinkedIn outreach without the repetitive manual effort. Every sent InMail is tracked back to your sheet with its unique conversation ID, making follow-up sequences easy to build on top. Good to know This workflow sends InMails via LinkedIn Sales Navigator or LinkedIn Recruiter Classic — you must have one of these plans active on your LinkedIn account InMail credits are consumed from your LinkedIn plan's monthly allowance — they are not charged separately by Unipile Monthly InMail credit allowances by plan: Sales Navigator Core: 50 credits/month Sales Navigator Advanced: 50 credits/month Recruiter Classic: 100 credits/month Unipile pricing is based on the number of connected accounts — the base plan starts at €49/$55 per month for up to 10 accounts. A 7-day free trial is available with no credit card required Already-messaged leads are automatically skipped on every future run — no duplicate InMails The chat_id returned after each sent InMail is saved to your sheet and can be used to build follow-up message sequences How it works Schedule Trigger runs the workflow automatically at your chosen frequency All leads are fetched from your Google Sheet and filtered to only those where the inmail column does not equal Sent A configurable Limit node caps how many InMails go out per run to protect your monthly credit allowance A Code node extracts the LinkedIn username from each profile URL All required data — first name, company name, username, and Unipile credentials — is bundled in the Data Arrangement node The Loop node processes leads one by one, sending each through the full InMail flow individually Unipile API resolves the LinkedIn username to an internal Provider ID required for sending InMails The InMail is sent via Unipile's /api/v1/chats endpoint using the sales_navigator API parameter, with the subject line and message body personalized automatically with the lead's first name and company name The sheet is immediately updated with Sent status and the unique chat_id of the opened conversation A Wait node pauses between each InMail to mimic human behavior and avoid LinkedIn restrictions The loop continues until all leads in the current batch are processed Set up steps Step 1: Prepare Your Google Sheet Create a sheet with these exact columns: first_name | last_name | linkedin_url | company_name | inmail | chat_ID | row_number Leave inmail and chat_ID empty — the workflow fills these automatically after each InMail is sent Make sure company_name is filled for every lead — it is used in both the subject line and the message body Step 2: Get Your Unipile Credentials Sign up at unipile.com — a 7-day free trial is available with no credit card required Connect your LinkedIn Sales Navigator or LinkedIn Recruiter Classic account from the Unipile dashboard Copy your API Key, DSN, and LinkedIn Account ID Open the Data Arrangement node and replace the three placeholder values with your credentials Step 3: Set Your LinkedIn Plan in the Send InMail Node Open the Send InMail node The api field is set to sales_navigator by default If you are using LinkedIn Recruiter Classic, change the api value to recruiter Do not change this field if you are on any Sales Navigator plan Step 4: Connect Google Sheets In n8n, go to Credentials → New Credential → Google Sheets OAuth2 Authenticate with the Google account that owns your leads sheet Update the Get Leads and Update Data nodes to point to your sheet Step 5: Set Your Safety Limits Open the Limit Connection Request node — set max items per run (recommended: 10–15) Open the Wait node — set your delay between each InMail (recommended: 3–5 minutes) Open the Schedule Trigger — set your run frequency (recommended: every 4–8 hours) Requirements LinkedIn Sales Navigator (Core, Advanced, or Advanced Plus) or LinkedIn Recruiter Classic — required to send InMails via the API Unipile account with your LinkedIn account connected — starts at €49/$55/month for up to 10 accounts, 7-day free trial available Google Sheet with lead data in the required column format n8n instance (cloud or self-hosted) Customising this workflow Build a follow-up message workflow using the stored chat_id to send a reply into the same conversation thread if there is no response after a set number of days Add an AI node to auto-generate unique personalized InMail messages per lead based on their job title, industry, or company size Replace the Schedule Trigger with a webhook to fire outreach instantly when a new lead is added to your CRM Add a Slack or email notification node to receive a daily summary of InMails sent Add error handling nodes to catch failed API calls and flag those leads in a separate sheet tab for manual review Combine this workflow with the LinkedIn Connection Request workflow to build a full outreach sequence — connection request first, InMail after acceptance *For assistance and support: salmanmehboob1947@gmail.com Linkedin: https://www.linkedin.com/in/salman-mehboob-pro/*
by AI/ML API | D1m7asis
Who’s it for For makers, founders, and productivity nerds who want to listen to their inbox instead of reading it. No servers, no hosting — all done with n8n, a Telegram bot, and AI/ML API (LLM + TTS). What it does / How it works This workflow listens for new Gmail emails, extracts the sender, subject, date, and snippet, generates a 2–3 sentence natural summary using GPT-5 via AI/ML API, then converts the text into a lifelike voice message using Inworld TTS-1-Max. The final audio file is downloaded and instantly delivered to your Telegram via a bot. A separate auxiliary flow captures your Telegram chat_id once, stores it in a Data Table, and the main flow reuses it every time — no hardcoding required. High-level flow: Gmail Trigger detects new incoming email Code node builds a clean emailData block AI/ML API (GPT-5) generates a natural spoken summary AI/ML API (Inworld TTS-1-Max) converts summary → voice Audio file is downloaded Voice message is sent to the same Telegram chat Requirements A working n8n instance (self-hosted or cloud) Gmail OAuth2 credentials Telegram bot token from @BotFather AI/ML API key Base URL: https://api.aimlapi.com/v1 Supports GPT-5 and Inworld TTS-1-Max Set up steps Create a Telegram bot via @BotFather and add Telegram API credentials in n8n Create an AI/ML API credential using your API key Add Gmail OAuth2 credentials for inbox access Import the workflow JSON Open nodes and attach the correct credentials (no hardcoded tokens inside nodes) Run the Telegram Trigger once and send any message to your bot — this saves your chat_id Activate your workflow and receive your first voice-summary How to customize Replace GPT-5 with another LLM from AI/ML API (same schema) Change prompt style: tone, structure, language, or verbosity Add language selection or multi-voice support Add filters (e.g., only important emails, only starred emails) Log all activity to Google Sheets or a database Add IF conditions: voice only during certain hours, weekday vs weekend rules Add rate-limits or user allowlists Change the voice model for different notification styles: corporate, friendly, narrator
by Krade1027
Monitor device disconnections from Omada emails to Google Sheets with Pushover alerts Who’s it for This workflow is designed for IT admins, network engineers, or small business owners who need to automatically monitor device connectivity from Omada Controller email alerts. If you want a lightweight, low-cost solution for tracking device uptime without complex monitoring software, this template is for you. How it works The workflow listens for Omada Controller email alerts using Gmail, parses each email, and logs device connection status (connected/disconnected) into Google Sheets. Every 5 minutes, it checks for devices that have been disconnected for more than 30 minutes. If a device has not reconnected, the workflow sends a push notification via Pushover. Old logs are cleared automatically every 2 days to keep the sheet clean. Workflow Overview The workflow is broken into three main parts: 1. Email Processing (Receives Alert -> Append Row in Sheet) Triggered whenever a new email is received. It uses a Code node to parse the raw text of the email, extracting details like device name, MAC address, and connection status. This data is formatted and appended as a new row to Google Sheets, creating a comprehensive log of all connection events. Important: In the Gmail trigger node, make sure to set the search field or filter so that it only matches the subject line used by Omada Controller alert emails. This ensures the workflow only processes the intended alerts and not unrelated emails. 2. Disconnected Device Alerting (Check Every 5 minutes -> Alert User) Runs every 5 minutes. It reads the device log from Google Sheets, identifies the most recent status for each device, and filters for devices currently disconnected. If a device has been disconnected for more than 30 minutes, a high-priority push notification is sent to Pushover account. Once sent, the workflow updates the corresponding row in the Google Sheet to prevent duplicate alerts. 3. Data Maintenance (Clear Rows Every 2 days -> Clear sheet) Runs every two days to clean up the Google Sheet by deleting the oldest rows, keeping the log from growing too large. Services and Dependencies To run this workflow, you’ll need the following services connected to n8n: Google Sheets**: Logs all connection events and tracks device status Gmail**: Acts as the trigger, listening for Omada Controller alerts Pushover**: Sends real-time, high-priority push notifications to mobile devices Setup Instructions 1. Create a Google Sheet Log Create a new Google Sheet in your Google Drive Name it something like Omada Device Log Add these headers in the first row: exact spelling and order is crucial rowId, timestamp, timestampISO, category, severity, mac, name, type, status, checkAfter, alertSent, timeStampFormated 2. Configure Credentials Google Sheets**: Create a new OAuth2 credential in n8n Gmail**: Create a new OAuth2 credential (must receive Omada alerts) Pushover**: Create a new API credential and get user keys for each recipient 3. Import the Workflow Copy the JSON workflow file In n8n: click New → Import from JSON Paste the JSON code 4. Update the Nodes Receives Alert**: Link it to your Gmail credential Append Row in Sheet, Get Row(s) in Sheet, Update Alert, Clear sheet**: Replace YOUR_GOOGLE_SHEET_ID with your Google Sheet’s ID (found in the sheet URL between /d/ and /edit) Alert User**: Replace YOUR_PUSHOVER_USER_KEY with your Pushover user keys Node Breakdown Receives Alert** (Gmail Trigger): Listens for new emails Process Email and Extract** (Code): Parses email and extracts structured data (timestamps, device info, status) Append Row in Sheet** (Google Sheets): Adds a new row to your log Check Every 5 minutes** (Schedule Trigger): Runs regularly to check device status Get Row(s) in Sheet** (Google Sheets): Reads log to get latest status per device Check Device and Notify** (Code): Groups rows by MAC, filters disconnected devices past 30 minutes Alert User** (Pushover): Sends formatted push notification with device details Update Alert** (Google Sheets): Marks the row as alerted to prevent duplicates Clear Rows Every 2 days** (Schedule Trigger): Runs maintenance Clear sheet** (Google Sheets): Deletes old rows, preserves header