by PollupAI
Who is this for This workflow is designed for Customer Success Managers and Sales Teams who manage high-volume pipelines in HubSpot. If you have prospects who stop responding after the contract is sent, this automation helps you recover them without manual follow-up. What it does This template automatically identifies deals that have "stalled" in your pipeline (specifically in the Contract Sent stage) and initiates a personalized re-engagement sequence. Monitors Pipeline: Runs on a schedule to find deals marked as stalled in HubSpot. Smart Filtering: Identifies all associated contacts for a deal and selects the first available contact. This ensures the email goes to a real person involved in the deal. Spam Prevention: Fetches the Last Contacted date from HubSpot. If there has been any activity (call, email, meeting) in the last 7 days, the workflow skips that contact. This safety gate prevents automation from interfering with active conversations. AI Personalization: Uses GPT-5-mini (via OpenAI) to generate a helpful check-in email. The prompt is context-aware, using the contact's name and deal stage to sound personal rather than generic. Multi-Channel Sync: Sends the approved email via Gmail, alerts the internal team in Slack, and logs the email body to the HubSpot Activity Timeline. How to set up Credentials: Connect your HubSpot, OpenAI, Slack, and Gmail accounts in n8n. Configuration: Open the Config: Setup Variables node and enter your Sender Name, Company Name, and Calendar Link. Slack Channel: Open the Slack: Notify CSM node and select the channel where you want your team to be alerted (e.g., #sales-alerts). HubSpot Settings: By default, this targets the contractsent stage. Ensure your HubSpot pipeline matches this ID. Requirements n8n** (Cloud or Self-hosted) HubSpot** account OpenAI** API Key Gmail* & *Slack** accounts How to customize the workflow Target Different Stages: To re-engage leads in other phases (e.g., "Qualification" or "Onboarding"), open the **HubSpot: Search Stalled Deals node and change the dealstage filter to your desired pipeline stage ID. Adjust the Safety Gate: The workflow blocks emails if there has been contact in the last **7 days. To change this window (e.g., to 30 days for cold leads), open the Filter: Last Activity Check node and edit the time value in the expression. Modify the AI Persona: Open the **AI: Generate Email node to edit the System Prompt. You can adjust the tone (formal vs. casual), lengths constraints, or language to match your brand voice.
by WeblineIndia
AI-Powered News Risk Monitoring & Alert System (Google News + Groq + Gmail) This workflow acts as an automated, proactive monitoring system that separates "market noise" from actual "market risk". Instead of flooding your inbox with every single news mention about a company or topic, it uses artificial intelligence (Llama 3 via Groq) to act as a virtual risk analyst. The AI reviews recent Google News articles, categorizes the risk as Low, Medium or High and only sends you an email alert when the risk is significant (Medium or High). Fast Track Setup Prepare your Data: Create a Google Sheet named "Risk Keywords" and list your target companies or terms under a "Keyword" column. Connect Credentials: Add your Google Sheets, Groq API and Gmail credentials to your n8n instance. Configure Nodes: Select your specific spreadsheet in the "Fetch Risk Keywords" node and update the "Gmail Alert Dispatcher" node with your recipient email address. Run: Trigger the workflow manually to start receiving your filtered risk alerts. What It Does This workflow automates the tedious process of monitoring the news for potential business risks. It begins by fetching a customized list of keywords — such as company names, competitors or industry terms — from a Google Sheet. It then processes these keywords one by one, using an iterator to safely manage the flow of data. For each keyword, the workflow scrapes the top 4 most recent articles from a Google News RSS feed. To ensure the system doesn't overwhelm the AI service with too many requests at once, it introduces a brief 2-second rate-limit delay. Once the news data is collected, an AI Agent uses Llama 3 (via Groq) to read the headline and snippet of each article. The AI is instructed to determine the risk level and provide a one-sentence reason for its decision. The workflow then filters out any "Low" risk news, bundles the "Medium" and "High" risk alerts together, formats them into a clean text summary and emails the final report directly to you. Who’s It For Investors and Traders:** Who need to monitor sudden negative news about stocks in their portfolio without reading every minor press release. Risk Management Professionals:** Who must keep an eye on supply chain disruptions, regulatory changes or macroeconomic indicators like inflation. Public Relations (PR) Teams:** Who want instant alerts when a client or their own brand is mentioned in a potentially damaging context. Business Owners and Executives:** Who need to monitor competitor struggles or industry shifts that could impact their strategic planning. Requirements to use this workflow To successfully run this workflow, you will need: [An active n8n account](https://n8n.partnerlinks.io/om1efg2qgvwi ). A Google account to create the "Risk Keywords" Google Sheet. Google Sheets credentials configured within n8n. A Groq API key to power the Llama 3 AI analysis. Gmail credentials configured within n8n to send the final alerts. How It Works & Set Up Follow these step-by-step instructions to configure and use the workflow: Set Up the Google Sheet: Create a new Google Sheet and name it exactly "Risk Keywords". In the first tab (Sheet1), create a header row and name the first column "Keyword". Fill the rows below with the terms you want to monitor (e.g., "Tesla", "Nvidia", "Inflation Rate"). Configure n8n Credentials: Go to your n8n credentials page and ensure you have active connections for Google Sheets (OAuth2) and Gmail (OAuth2). Create a new credential for the Groq API and input your secret API key. Adjust the Google Sheets Node: Open the "Fetch Risk Keywords" node. Use the dropdown menus to select your "Risk Keywords" document and "Sheet1". Adjust the AI Node: Open the "Llama 3 (via Groq)" node and ensure your Groq credential is selected. Configure the Email Destination: Open the "Gmail Alert Dispatcher" node. Find the "Send To" field and replace "RECIPIENT_EMAIL_HERE" with your actual email address. How To Customize Nodes Top 4 Articles Filter (Limit Node):** Currently, the workflow only analyzes the top 4 recent articles to save API costs and time. You can open this node and change the maxItems value to 10 or 20 if you want a broader scan. API Rate-Limit Delay (Wait Node):** The workflow pauses for 2 seconds between batches. If you are using a free tier API with strict limits, you can increase this wait time to 5 or 10 seconds. Risk Analysis Agent (Agent Node):** You can open this node to tweak the AI's system message. For example, you can tell the AI to look specifically for "financial risk" or "reputational damage" rather than general risk. Add‑ons You can easily extend this workflow to make it even more powerful: Schedule Trigger:** Replace the manual "Start" node with a Schedule Trigger to run this scan automatically every morning at 8:00 AM or every hour. Slack or MS Teams Integration:** Instead of sending a Gmail alert, you can swap the Gmail node for a Slack or Microsoft Teams node to push high-risk alerts directly to a company channel. Database Logging:** Add an Airtable or Notion node right before the email dispatcher to keep a historical log of all high-risk events over time. Use Case Examples Here are a few ways this workflow can be utilized in the real world: Supply Chain Monitoring: Add keywords for your key suppliers or global shipping routes (e.g., "Suez Canal disruption"). Get alerted immediately if a medium or high risk threatens your inventory. Competitor Watchlist: Track your top 5 competitors. If a competitor faces a high-risk situation (like a lawsuit or product recall), you are notified and can capitalize on the market shift. PR Crisis Prevention: Input your own brand names and executive names. Catch negative press (high risk) the moment it hits Google News so your team can draft a response quickly. Macroeconomic Tracking: Monitor terms like "interest rate hike", "housing market crash" or "recession". Automatically filter out opinion pieces and only get alerted to high-risk factual reports. (Note: There are countless other use cases for this workflow depending on the keywords and AI prompt you choose!) Troubleshooting Guide | Issue | Possible Cause | Solution | | :--- | :--- | :--- | | Workflow fails at the Groq AI node | API Rate Limits exceeded or invalid API Key. | Check your Groq dashboard to ensure your API key is correct and you haven't hit your rate limit. Increase the wait time in the "API Rate-Limit Delay" node. | | No emails are being sent | All news was categorized as "Low" risk. | This is normal behavior! If you want to test the email, temporarily bypass the "Filter High/Medium Risk" node or add a highly controversial keyword to your sheet. | | Email formatting looks broken | The AI outputted invalid JSON data. | The "Format Alert Email" code node is designed to handle errors. However, to prevent this, you can refine the prompt in the "Risk Analysis Agent" to be stricter about JSON formatting. | | Google Sheets node fails | Incorrect document selected or permissions issue. | Re-authenticate your Google account in n8n credentials and ensure the sheet is exactly named "Risk Keywords". | Need Help? Building and customizing automated workflows can sometimes be tricky, especially when integrating AI and dealing with complex data structures. Whether you need help setting up this exact News Risk Alert workflow, customizing it with the Add-ons mentioned above or building an entirely new automation tailored to your business needs, our n8n workflow developers at WeblineIndia are here to help! Please feel free to contact WeblineIndia for expert assistance.
by Alejandro Alfonso
Terms of Service Change Watcher with AI Summaries Automatically monitors Terms of Service, Privacy Policy, and other legal pages for changes. When content changes are detected, GPT-4o analyzes the old vs new text and emails you a plain-English summary with an impact rating. How it works Every day at 8 AM, the workflow reads your list of URLs from a Google Sheet Each page is fetched and stripped to plain text The text is compared against the previously stored version If a change is detected, the old and new content are sent to GPT-4o for analysis You receive an email with a summary of exactly what changed and how it impacts you All changes are logged to a Change Log sheet for a historical record Setup Create a Google Sheet with two tabs: Pages (columns: url, page_name, last_content, last_checked) and Change Log (columns: date, page_name, url, summary) Add the URLs you want to monitor in the Pages tab — leave last_content and last_checked empty Connect your Google Sheets OAuth2, Gmail OAuth2, and OpenAI API credentials Update the Google Sheet document in all four Google Sheets nodes Set your email address in the Send Change Alert node Run once to save baselines, then activate the workflow
by isaWOW
Description Connect Fireflies and WayinVideo to this workflow once and every recorded sales call automatically generates a set of training clips delivered to your Slack channel. The moment Fireflies finishes transcribing a call, the workflow takes the video recording, submits it to WayinVideo with your custom search query, waits for processing, and logs every matching clip with its timestamp, score, and description to Google Sheets. Your sales team receives a single Slack message with the top clips, ready to review and use for coaching. Built for sales managers and revenue teams who want a consistent stream of real training moments without manually scrubbing through call recordings. What This Workflow Does Triggers automatically when a call ends** — Fireflies fires the workflow the moment transcription completes, so clips are extracted from every call without any manual step Submits the recording to WayinVideo** — Sends the video URL with your natural language query to the WayinVideo Find Moments API to locate matching moments Polls until processing is complete** — Waits 45 seconds then checks WayinVideo's status repeatedly, retrying up to 20 times over approximately 15 minutes before timing out Sorts clips by relevance score** — Ranks all returned clips from highest to lowest score and keeps only your configured maximum number of top clips Converts timestamps to readable format** — Transforms raw millisecond timestamps into MM:SS format so your team can jump straight to the right moment in the recording Logs every clip to Google Sheets** — Appends one row per clip with date, meeting title, clip number, start and end time, duration, score, tags, and description Sends one Slack alert after all clips are saved** — Posts a formatted breakdown to your sales training channel exactly once after all rows are logged, never once per clip Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with webhook access and video recording enabled WayinVideo account with API access Google Sheets (one sheet with a tab named Sales Training Clips) Slack workspace with OAuth2 app configured Credentials Required Fireflies API key (pasted into 2. Set — Config Values) WayinVideo API key (pasted into 2. Set — Config Values) Google Sheets OAuth2 Slack OAuth2 Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Activate the workflow and copy the webhook URL — Toggle the workflow to Active → click on node 1. Webhook — Fireflies Transcript Done → copy the Production URL shown Register the webhook in Fireflies — Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → paste the webhook URL → save Get your Fireflies API key — In Fireflies, go to Settings → Integrations → Fireflies API → copy your API key Get your WayinVideo API key — Log in to your WayinVideo account → go to API settings or your account dashboard → copy your API key Fill in Config Values — Open node 2. Set — Config Values → replace all placeholders: | Field | What to enter | |---|---| | YOUR_FIREFLIES_API_KEY | Your Fireflies API key from step 4 | | YOUR_WAYINVIDEO_API_KEY | Your WayinVideo API key from step 5 | | YOUR_GOOGLE_SHEET_ID | The ID from your Google Sheet URL (the string between /d/ and /edit) | | Sales Training Clips | Leave as-is, or change to match your sheet tab name exactly | | #sales-training | Your Slack channel name including the # | | findMomentsQuery | Your natural language search query — default is objection handling and rebuttal moments — change to match what you want to extract (e.g. pricing discussion moments or closing technique moments) | | maxClips | Leave as 3 or change to a higher number to extract more clips per call | > ⚠️ findMomentsQuery should use 4–6 descriptive words for best WayinVideo results — very short queries may return no results. Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Sales Training Clips → add these 11 column headers in row 1: Date, Meeting Title, Clip #, Clip Title, Start, End, Duration (sec), Score, Tags, Description, Logged At Connect Google Sheets — Open node 14. Google Sheets — Log Training Clips → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Connect Slack — Open node 16. Slack — Send Training Clips Alert → click the credential dropdown → connect your Slack workspace via OAuth2 → invite the n8n bot to your sales training channel (/invite @n8n) Activate the workflow — Confirm the workflow is Active — Fireflies will now fire it automatically after every recorded sales call How It Works (Step by Step) Step 1 — Webhook: Fireflies Transcript Done This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a request to this webhook URL containing the meeting ID. No manual trigger is needed — it fires automatically after every recorded call. Step 2 — Set: Config Values Your Fireflies API key, WayinVideo API key, Google Sheet ID, sheet tab name, Slack channel, Find Moments query, max clips setting, and the meeting ID from the webhook are all stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats. Step 3 — HTTP: Fetch Transcript A request is sent to the Fireflies API using your API key and the meeting ID. It retrieves the meeting title, date, duration, participants, transcript URL, and — most importantly — the video_url and audio_url fields for the recording. Only metadata is fetched, not full transcript sentences. Step 4 — Code: Extract Video URL This step checks for a video URL first, then falls back to an audio URL if no video is available. If neither is present, the workflow throws an error and stops cleanly — WayinVideo requires a media URL to process. The meeting metadata is also cleaned and formatted here for use in the sheet and Slack message. Step 5 — HTTP: Submit Find Moments Task The recording URL and your natural language query are submitted to the WayinVideo Find Moments API. The project name is set automatically using the meeting title. WayinVideo returns a project ID confirming the job was accepted and processing has started. Step 6 — Code: Save Project ID The project ID returned by WayinVideo is saved along with all the meeting metadata. A poll counter is initialized at zero — this counter tracks how many times the workflow has checked the status and enforces the 20-poll timeout. Step 7 — Wait: 45 Seconds The workflow pauses for 45 seconds before checking the WayinVideo status for the first time. This initial wait gives WayinVideo time to begin processing before the first poll. Step 8 — HTTP: Poll Find Moments Results A GET request is sent to the WayinVideo results endpoint using the project ID. It returns the current processing status and, once complete, the full list of matched clips with their timestamps, scores, titles, descriptions, and tags. Step 9 — Code: Check Status The poll counter is incremented and the status is evaluated. If the status is SUCCEEDED, the isReady flag is set to true and the workflow moves forward. If the status is FAILED, the workflow throws an error with the failure message and stops. If the status is anything else (still processing), the workflow continues to the next check. If the poll counter reaches 20 without a SUCCEEDED status (approximately 15 minutes), the workflow throws a timeout error and stops. Step 10 — IF: Processing Complete? This is the retry gate. If isReady is true (YES path — processing is done), the workflow moves forward to extract and log the clips. If isReady is false (NO path — still processing), the workflow routes to 11. Set — Still Processing which loops back to 7. Wait — 45 Seconds for another cycle. Step 11 — Set: Still Processing This step handles the not-yet-complete case. It sets a brief in-progress message and the loop continues back to the wait step for another 45-second pause before the next poll. Step 12 — Code: Process Clips All clips returned by WayinVideo are sorted by relevance score from highest to lowest. The top clips up to your maxClips limit are kept. Each clip's millisecond timestamps are converted to MM:SS format for easy reading. Sheet rows are assembled for each clip and the full Slack message is built — including meeting title, date, duration, the query used, total clips found, and a numbered clip breakdown with timestamps, duration, score, and a short description. Step 13 — Code: Split Rows for Sheets The clips array is converted into individual items — one per clip — so each can be written to Google Sheets as a separate row. An isLastRow flag is set to true only on the final clip, which controls when the Slack alert fires. Step 14 — Google Sheets: Log Training Clips Each clip is appended as one row to your Sales Training Clips tab. All 11 columns are populated: date, meeting title, clip number, clip title, start time, end time, duration in seconds, relevance score, tags, description, and logged-at timestamp. Step 15 — IF: Last Clip Logged? After each row is written, this check reads the isLastRow flag. If true (YES path — this was the final clip), the Slack alert fires. If false (NO path — more clips still need logging), the workflow routes to 17. Set — More Clips and the loop continues to the next clip row. Step 16 — Slack: Send Training Clips Alert Once all clips are logged, one formatted Slack message is posted to your sales training channel. It shows the meeting title, date, duration, the query used, total clips found, and a numbered breakdown of each clip with timestamps, duration, score, and a short description. Step 17 — Set: More Clips This step handles non-final clips during the logging loop. It sets a brief in-progress message and the loop continues to the next clip. Key Features ✅ Natural language clip search — You describe what you want to find in plain English and WayinVideo locates the matching moments — no manual scrubbing through recordings ✅ Retry loop with hard timeout — The workflow polls every 45 seconds for up to 20 attempts (approximately 15 minutes) before stopping — long calls never hang indefinitely ✅ Clips ranked by relevance score — Results are sorted by WayinVideo's confidence score so your top clip is always the most relevant match to your query ✅ MM:SS timestamps for every clip — Raw millisecond data is converted to human-readable timestamps so anyone on the team can jump straight to the right moment ✅ Slack fires exactly once — The isLastRow flag ensures your sales team receives one clean notification after all clips are logged, never one message per clip ✅ Video URL preferred, audio fallback — The workflow uses the video recording when available and falls back to audio automatically — no manual configuration per meeting type ✅ Per-clip Google Sheets logging — Each clip gets its own row with score, tags, timestamps, and description — your sheet becomes a searchable training library over time ✅ Customizable query per workflow instance — Change findMomentsQuery once in Config Values and every future call is analyzed against your chosen training focus Customisation Options Change the training focus — In node 2. Set — Config Values, update findMomentsQuery to match whatever you want to extract — for example pricing and discount discussions, discovery questions about pain points, or closing and next steps conversations to build different training clip libraries. Increase the number of clips per call — In node 2. Set — Config Values, change maxClips from 3 to 5 or 10 to capture more moments per recording — useful for longer calls or when you want a broader set of examples per session. Reduce the polling wait time for faster calls — In node 7. Wait — 45 Seconds, change the wait duration to 30 for shorter recordings that WayinVideo processes faster, or increase to 60 for very long calls to reduce unnecessary API calls. Add a Slack alert when no clips are found — In node 12. Code — Process Clips, the workflow currently throws an error if clips is empty — instead you can change this to return a noClips: true flag and add an IF check that posts a brief Slack message noting no matching moments were found for this call. Log clips to a different sheet per month — In node 2. Set — Config Values, make sheetName dynamic by appending the current month (e.g. Sales Training Clips — April 2026) so clips are automatically organized into monthly tabs without any manual file management. Troubleshooting Workflow not triggering when a call ends: Confirm the workflow is Active — inactive workflows do not receive Fireflies webhooks Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → confirm the URL matches the Production URL from node 1. Webhook — Fireflies Transcript Done exactly Fireflies only fires webhooks for meetings where you are the organizer and where the bot was invited to record — calls without the bot will not have a video URL WayinVideo returning no project ID or auth error: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. Set — Config Values is replaced with your actual key — not the placeholder text Check the execution log of node 5. HTTP — Submit Find Moments Task for the exact API error response Confirm the findMomentsQuery uses 4–6 descriptive words — very short single-word queries may be rejected or return empty results Polling loop running too long or timing out: If the loop exceeds 20 polls, it stops with a timeout error — check the WayinVideo dashboard to see if the job is still processing or failed on their end For very long recordings (over 60 minutes), consider increasing the wait in node 7. Wait — 45 Seconds to 90 seconds to reduce the chance of timeout on a tight poll budget Check node 9. Code — Check Status execution log to see the current status value returned on each poll Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node 14. Google Sheets — Log Training Clips is connected and not expired Check that YOUR_GOOGLE_SHEET_ID in node 2. Set — Config Values is the ID from the sheet URL, not the full URL Confirm the tab is named Sales Training Clips exactly — capitalization must match sheetName in Config Values Verify all 11 column headers in row 1 match exactly: Date, Meeting Title, Clip #, Clip Title, Start, End, Duration (sec), Score, Tags, Description, Logged At Slack alert not arriving after clips are logged: Confirm the Slack OAuth2 credential in node 16. Slack — Send Training Clips Alert is connected and authorized Check that #sales-training in node 2. Set — Config Values includes the # prefix and matches your channel name exactly Type /invite @n8n in the channel to ensure the bot has posting permission Check the isLastRow value in the execution log of node 15. IF — Last Clip Logged? — if it never reaches true, the clips array may have had only one clip that was not marked as last correctly 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 Milo Bravo
Email Lead Router: Gmail → Gemini → Salesforce Pipeline Who is this for? Event sales teams & conference organizers processing 100+ sponsor/partner emails weekly who need instant lead qualification, Salesforce automation, & pipeline analytics. What problem is this workflow solving? Event email chaos kills revenue: 200+ sponsor emails/week → manual Salesforce entry No sentiment/intent scoring = missed $ opps 10+ hours/week routing + logging Fragmented pipeline visibility Zero-drop AI qualification → auto-Salesforce → team routing. What this workflow does Gmail Trigger captures event inbox emails Gemini #1 scores sentiment (Positive/Neutral/Negative + confidence) Gemini #2 extracts topic, intent, urgency (1-10), org, budget signals Upserts Salesforce Lead (deduped by email) w/ 9 custom fields: Sentiment__c, Urgency_Score__c, etc. Hot leads (Positive + urgency ≥7) → auto Salesforce Opportunity Creates Salesforce Task w/ AI-suggested follow-up action Logs to email_analytics Data Table + Google Sheets (Looker Studio dashboard) Routes: Positive → Hot email + Slack #hot-leads (2h); Neutral → Follow-up + #follow-ups (24h); Negative → Insights + #insights Setup (8 minutes): Gmail OAuth2 (event inbox) Google Gemini API Salesforce OAuth2* + *9 custom Lead fields** (Sentiment__c, Urgency_Score__c, etc.) Slack OAuth2 + channels (#hot-leads, #follow-ups, #insights) email_analytics Data Table ID Update Send Email recipients Test w/ Evaluation Dataset How to customize: Tune urgency threshold (7→8) Add event keywords (webinar/tradeshow) Swap Slack → Teams; Salesforce → HubSpot Multi-inbox territory routing ROI: 100% Salesforce coverage** (no manual entry) 8x faster qualification** (2min vs 16h/week) 30% opp velocity** (auto opps/tasks) Live Looker dashboard** → data-driven decisions Need help customizing?: Contact me for consulting and support: LinkedIn / Message Keywords: event sales leads, Salesforce automation, Gemini lead scoring, email sentiment, sales pipeline n8n, AI sales routing
by Țugui Dragoș
This workflow is a comprehensive, production-grade automation for B2B lead management and multichannel outreach, designed for Sales Development Representatives (SDRs), growth teams, and sales operations. It covers the entire SDR pipeline: from lead ingestion and validation, through enrichment, scoring, AI-powered outreach, reply handling, analytics, and reporting. Key Features: Lead validation (email, suppression, geo/GDPR) Multi-source data enrichment Lead scoring and tiering (HIGH/MEDIUM/LOW) AI-generated personalized cold emails (with A/B subject testing) Multichannel outreach (Email, LinkedIn, WhatsApp) with rate limiting and compliance AI-based reply simulation and intent classification Automated routing (qualification, follow-up, manual review) Full event logging to database Aggregated analytics and daily reporting Human-readable AI summary and Slack notifications What This Workflow Does 1. Lead Ingestion & Validation Loads leads from a source (test data, CRM, webhook, etc.) Validates email format and checks against suppression lists (blocked domains/emails) Applies geo and GDPR compliance logic (blocks/flags leads from restricted countries) 2. Data Enrichment Enriches each lead via one or more external APIs (company info, tech stack, revenue, etc.) Handles enrichment failures gracefully and logs them for analytics 3. Lead Scoring & Segmentation Scores leads based on industry, country, company size, revenue, and pain points Segments leads into HIGH, MEDIUM, or LOW tiers for tailored outreach 4. AI-Powered Outreach Generation Uses OpenAI (or compatible LLM) to generate personalized cold email content Creates A/B tested subject lines for each email Generates LinkedIn and WhatsApp message variants for multichannel outreach 5. Multichannel Outreach Execution Sends emails via SMTP (with rate limiting and quiet hours) Simulates LinkedIn and WhatsApp sends (can be replaced with real integrations) Logs all outreach events to a Postgres database 6. Reply Simulation & AI Classification Simulates a variety of lead replies (interested, not interested, follow-up, unclear) Uses AI to classify reply intent and suggest next actions 7. Automated Routing & Follow-up Routes leads based on AI classification: Interested: Schedules meeting, logs qualification, proposes follow-up Follow-up Later: Schedules future follow-up Not Interested: Marks as closed/lost Unclear: Flags for manual review and notifies team via Slack 8. Event Logging & Analytics Logs every significant event (enrichment, outreach, reply, status change) to a database Aggregates results by lead score, channel, and status Calculates key metrics (qualification rate, enrichment success, multichannel rate, etc.) 9. Reporting & Team Notification Generates a daily analytics row and stores it in the database Uses AI to create a human-readable summary of the run Posts a detailed summary to a Slack channel Use Cases Automated SDR Workflows:** Replace manual lead research, outreach, and follow-up with a fully automated, auditable process. Growth Experiments:** Run A/B tests on messaging, subject lines, and channels at scale. Sales Analytics:** Get transparent, granular reporting on every step of the SDR funnel. Compliance-First Outreach:** Ensure all outreach respects geo, GDPR, and suppression rules. AI-Driven Personalization:** Use LLMs to generate highly relevant, non-generic outreach at scale. Installation & Setup 1. Import the Workflow Download or copy the workflow from the n8n Template Store. In your n8n editor, click Import and paste the workflow JSON, or use the "Use Template" button. 2. Configure Required Credentials Postgres:** Set up a Postgres credential for event and analytics logging. SMTP:** Add your email provider's SMTP credentials for sending emails. OpenAI:** Add your OpenAI API key for AI-powered nodes. Slack:** Add your Slack API credential for notifications. Enrichment APIs:** Add credentials for any external enrichment APIs you use. 3. Customize Lead Source Replace the test data in the Load Test Leads node with your real lead source (e.g., webhook, CRM, Google Sheets, etc.). 4. Adjust Compliance & Suppression Logic Update the suppression lists and geo/GDPR logic in the relevant nodes to match your organization's requirements. 5. Review Multichannel Logic The workflow simulates LinkedIn and WhatsApp sends. Replace these with real integrations if needed. 6. Database Preparation Ensure your Postgres database has the following tables (or adjust node configs): lead_events (for all event logs) analytics_daily (for daily summary rows) meetings (for scheduled meetings) execution_runs (for workflow run metadata) 7. Test the Workflow Run the workflow manually with sample data. Check the database and Slack for logs and notifications. Review AI-generated content for tone and compliance. Configuration Details Rate Limiting:** Email, LinkedIn, and WhatsApp sends are rate-limited and respect quiet hours. A/B Testing:** Each email uses a randomly selected subject variant for ongoing optimization. AI Models:** Uses OpenAI GPT-4o-mini by default; can be swapped for other models. Event Logging:** Every action (enrichment, outreach, reply, status change) is logged with timestamp and payload for full traceability. Analytics:** Aggregates by lead score, channel, and status; calculates rates and averages. Slack Notifications:** Posts a summary of each run, including key metrics and AI-generated insights. Advanced Customization Add/Replace Enrichment APIs:** Plug in any HTTP-based enrichment service. Custom Lead Scoring:** Adjust the scoring logic in the Compute Lead Score node to fit your ICP. Custom AI Prompts:** Edit the system messages in AI nodes for your brand voice. Additional Channels:** Integrate SMS, phone, or other channels as needed. Webhook Triggers:** Replace manual trigger with webhook for real-time automation. Requirements n8n version 1.123.0 or later Postgres database (or adapt for your DB) SMTP email provider OpenAI API key (or compatible LLM) Slack workspace (for notifications) (Optional) Enrichment API keys Template Store Submission Notes All credentials are handled via n8n's credential system (no hardcoded secrets). The workflow is modular, well-commented, and ready for production use. All event and analytics logging is auditable and GDPR-compliant. Please review and test all integrations in your environment before using in production. Example Analytics Output | Metric | Value | |-----------------------|---------| | Total Leads | 100 | | Qualified | 22 | | Follow-up Scheduled | 15 | | Closed Lost | 40 | | Manual Review | 3 | | Qualification Rate | 22% | | Enrichment Success | 90% | | Multichannel Rate | 60% | Ready to automate your SDR pipeline? Import this workflow and start scaling your B2B outreach today!
by 荒城直也
Workflow Overview Zoom Attendance Evaluator with Follow-up is an n8n automation workflow that automatically evaluates Zoom meeting attendance and sends follow-up emails to no-shows and early leavers with recordings and materials. Who's it for Companies and organizations that regularly host online seminars and webinars Educational institutions conducting online classes Anyone looking to streamline participant attendance management and follow-up processes How it works Scheduled execution: Runs automatically every hour Fetch meeting data: Retrieves recent Zoom meetings and participant information Evaluate attendance: Automatically classifies participants into four categories: No-show: 0 minutes attended Early-leaver: Less than 50% attendance Partial attendance: 50-80% attendance Full attendance: Over 80% attendance Automatic follow-up: Sends automated emails with recording links and materials to no-shows and early leavers Record keeping: Logs all follow-ups to Google Sheets for tracking Requirements Zoom account: OAuth2 authentication setup required SMTP email server: Configuration needed (Gmail, SendGrid, etc.) Google Drive: For storing handout materials Google Sheets: For attendance logging Credentials for each service configured in n8n How to customize the workflow Adjust attendance thresholds: Modify the 50% and 80% values in the "Evaluate Attendance" node code Change execution frequency: Configure the time interval in the "Schedule Trigger" node Customize email template: Edit subject and body in the "Prepare Email Data" node Next session registration link: Replace the placeholder URL in the code with your actual registration link This workflow completely automates post-meeting follow-up tasks, helping improve participant engagement and reduce manual work.
by Rahul Joshi
Description Automatically capture customer onboarding help requests from Typeform, log them in Google Sheets, validate email addresses, and send a professional HTML welcome email via Gmail. Ensures smooth onboarding communication with audit-ready tracking and error handling. 📝📧 What This Template Does Monitors Typeform submissions for new onboarding help requests. 📥 Logs all responses into Google Sheets with structured fields. 📊 Validates email addresses to prevent errors. ✅ Generates professional HTML welcome emails with company branding. 🎨 Sends onboarding emails directly via Gmail. 📧 Handles missing or invalid emails with error logging. ⚠️ Key Benefits Streamlines customer onboarding request handling. ⏱️ Creates a centralized log for analytics and audits. 🧾 Improves customer experience with branded email communication. 💡 Reduces manual effort in follow-up and data entry. 🔄 Ensures reliable handling of incomplete or invalid submissions. 🛡️ Features Typeform trigger for new form submissions. 📝 Automatic Google Sheets logging of customer details. 📈 Conditional email validation before sending. 🔍 Dynamic HTML email generation with customer details. 🎨 Automated Gmail delivery of welcome emails. 📧 Error handling node for missing/invalid email submissions. 🚨 Requirements n8n instance (cloud or self-hosted). Typeform API credentials with webhook permissions. Google Sheets OAuth2 credentials with spreadsheet write access. Gmail OAuth2 credentials with send email permissions. Pre-configured Google Sheet for onboarding request tracking. Target Audience Customer success and onboarding teams. 👩💻 SaaS startups managing onboarding inquiries. 🚀 Support teams handling product/service onboarding. 🛠️ SMBs looking for efficient onboarding automation. 🏢 Remote teams needing structured onboarding workflows. 🌐 Step-by-Step Setup Instructions Connect Typeform, Google Sheets, and Gmail credentials in n8n. 🔑 Insert your Typeform form ID in the trigger node. 📝 Replace the Google Sheet ID with your tracking sheet. 📊 Map form fields to spreadsheet columns (ensure headers match). 🔗 Customize email HTML template with branding and company info. 🎨 Update sender email in the Gmail node. 📧 Test the workflow with a sample form submission. ✅
by Nirav Gajera
🤖 AI Resume Screener — Google Forms to Automated Shortlisting & Email Automatically score every job application with AI, update your tracking sheet, and send personalised emails to candidates — all without human review. 📖 Description This workflow automates your entire first-round resume screening process. When a candidate submits your Google Form application, the workflow triggers, extracts their details, scores them against the job description using AI, writes the results back to your Google Sheet, and sends the right email — a congratulations to shortlisted candidates, a polite rejection to others. Your HR team only reviews candidates the AI has already scored 7 or above. Built for companies hiring across multiple roles simultaneously, HR teams wanting to reduce screening time, and startups with no dedicated recruiting staff. ✨ Key Features Google Sheets Trigger** — fires automatically when a new application row is added Duplicate prevention** — tracks processed rows with a Processed column, never scores the same application twice Multi-role support** — built-in Job Description map for 5 roles, easily extendable AI scoring 1–10** — Google Gemini scores each candidate against the JD with strengths, weaknesses, recommendation Direct sheet write via API** — writes score + grade + status to exact row using Google Sheets API Smart email routing** — score ≥ 7 → shortlisted (HR alert + candidate email), score < 7 → rejection email Rate limit protection** — Wait node between HR alert and candidate email prevents SMTP throttling Robust AI parsing** — 3-layer fallback ensures AI output always produces a usable result 🔄 How It Works New Google Form submission ↓ Google Sheets Trigger (rowAdded, polls every minute) ↓ Read All Rows → Filter Unprocessed Rows (col_18 / Processed ≠ 1) ↓ Extract Fields + Load Job Description → name, email, phone, position, experience, skills, cover note → loads matching JD from built-in map ↓ AI Resume Scorer (Google Gemini) → score: 1–10 → grade: Strong Yes / Maybe / No → strengths, weaknesses, recommendation, summary ↓ Parse AI Output (3-layer fallback) ↓ Build Sheet Request → Write to Sheet via API → writes score, grade, strengths, weaknesses, recommendation, summary, status, timestamp, Processed=1 ↓ Score ≥ 7? ✅ YES → Alert Email to HR + Wait 10s → Shortlist Email to Candidate ❌ NO → Rejection Email to Candidate 🤖 AI Scoring System The AI scores each candidate from 1 to 10 against the job description: | Score | Grade | Action | | :---: | :--- | :--- | | 8–10 | Strong Yes | Shortlisted ✅ | | 7 | Strong Yes / Maybe | Shortlisted ✅ | | 5–6 | Maybe | Rejected ❌ | | 1–4 | No | Rejected ❌ | For each application the AI also provides: Strengths** — what the candidate does well vs the JD Weaknesses** — gaps or concerns Recommendation** — e.g. "Invite for technical interview" Summary** — 2–3 sentence overall assessment 📋 Built-in Job Descriptions Five roles are pre-configured and auto-matched by position name: | Role | Key Requirements | | :--- | :--- | | Frontend Developer | 2+ yrs React/Vue, HTML/CSS/JS, REST APIs, Git | | Backend Developer | 2+ yrs Node.js/Python/Java, PostgreSQL/MongoDB, Docker | | UI/UX Designer | 2+ yrs UI/UX, Figma or Adobe XD, portfolio | | Project Manager | 3+ yrs PM, PMP/Scrum preferred, Jira/Asana | | Digital Marketing Executive | 2+ yrs digital marketing, Google Ads, Meta Ads, GA4 | Add more roles by editing the JD_MAP object in the Extract Fields + Load JD node. 📧 Email Templates Shortlist Email (to candidate) Subject: Congratulations [Name] - You have been shortlisted! Navy blue header Score table (score/10, grade, position, experience, skills) Strengths highlighted in green AI assessment in blue Promise: HR contacts within 2 business days HR Alert Email (internal) Subject: Strong Candidate - [Name] for [Position] Amber header — urgent feel Full candidate details + complete AI breakdown Strengths, weaknesses, recommendation, summary all included Rejection Email (to candidate) Subject: Your application for [Position] - Update Grey header — professional and neutral Polite decline with encouragement No score or feedback shared 🛠 Setup Requirements 1. Google Form Create a Google Form with these fields: | Field | Type | | :--- | :--- | | Full Name | Short answer | | Email Address | Short answer | | Phone Number | Short answer | | Select the Position You Are Applying For | Dropdown | | Years of Experience | Short answer | | Relevant Skills | Long answer | | Cover Note | Long answer | Link the form to a Google Sheet (Responses tab). 2. Google Sheet — Response Sheet Columns The form creates columns A–H automatically. Add these columns manually for AI results: | Col | Header | Filled by | | :---: | :--- | :--- | | A | Timestamp | Google Forms | | B | Select the Position... | Google Forms | | C | Full Name | Google Forms | | D | Email Address | Google Forms | | E | Phone Number | Google Forms | | F | Years of Experience | Google Forms | | G | Relevant Skills | Google Forms | | H | Upload CV | Google Forms | | I | Cover Note | Google Forms | | J | AI Score | This workflow | | K | Grade | This workflow | | L | Strengths | This workflow | | M | Weaknesses | This workflow | | N | Recommendation | This workflow | | O | Summary | This workflow | | P | Status | This workflow | | Q | Processed At | This workflow | | R | Processed | This workflow (1 = done) | > Important: The workflow uses column R (Processed) to track which rows have been scored. Rows where R = 1 are skipped on subsequent triggers. 3. Credentials Required | Credential | Used for | Free? | | :--- | :--- | :--- | | Google Sheets Trigger OAuth2 | Detects new rows | Free | | Google Sheets OAuth2 | Read rows + write results | Free | | Google Gemini (PaLM) API | AI resume scoring | Free tier available | | SMTP | Sending emails | Depends on provider | 4. Update Sheet ID In the Read All Rows and Write to Sheet via API nodes, replace the Sheet ID with your own: https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/... 5. Update Email Addresses In all three email nodes, update: fromEmail — your HR sending address HR alert toEmail — your internal HR inbox SMTP credential — your email provider ⚙️ Workflow Nodes | Node | Type | Purpose | | :--- | :--- | :--- | | Google Sheets Trigger | Trigger | Fires on new row (polls every minute) | | Read All Rows | Google Sheets | Reads all form responses | | Filter Unprocessed Rows | Code | Skips rows where Processed = 1 | | Extract Fields + Load JD | Code | Extracts candidate data + matches JD | | AI Resume Scorer | AI Agent | Scores candidate vs JD using Gemini | | Google Gemini Chat Model | LLM | AI model for scoring | | Parse AI Output | Code | Parses JSON with 3-layer fallback | | Build Sheet Request | Code | Prepares API write request for exact row | | Write to Sheet via API | HTTP Request | Writes results to columns J–R | | Score ≥ 7? | IF | Routes by score | | Alert Email - HR Team | Email Send | Notifies HR of strong candidates | | Wait 10s | Wait | Prevents SMTP rate limiting | | Shortlist Email - Candidate | Email Send | Congratulations to shortlisted | | Rejection Email - Candidate | Email Send | Polite rejection to others | 🔑 Key Technical Details Why HTTP Request for sheet write instead of Google Sheets node? The standard Google Sheets node cannot reliably write to a specific row by row number. Using the Sheets API PUT values/{range} endpoint writes to the exact cell range Form responses 1!J{rowNum}:R{rowNum} — always the correct row regardless of concurrent submissions. Why Read All Rows then Filter instead of reading one row? The Google Sheets Trigger fires on rowAdded but may not pass the exact new row data reliably. Reading all rows and filtering by Processed ≠ 1 is more reliable and handles backlog processing too. The Processed column (R) Set to 1 after scoring completes. This prevents re-processing if the trigger fires again before the workflow finishes, or if old unprocessed rows exist. 3-layer AI output fallback: Direct JSON parse Strip markdown fences then parse Regex extract JSON block Default values if all fail (score: 5, grade: Maybe) 📊 Sample Sheet Output After Scoring Col J (AI Score): 8 Col K (Grade): Strong Yes Col L (Strengths): 3+ yrs React experience; Strong TypeScript skills; Relevant API work Col M (Weaknesses): No Docker experience mentioned; No TypeScript explicitly listed Col N (Recommendation): Invite for technical interview Col O (Summary): Strong frontend candidate with solid React/Vue background. Experience aligns well with role requirements. Minor gaps in DevOps knowledge. Col P (Status): Shortlisted Col Q (Processed At): 2026-03-18T10:30:00.000Z Col R (Processed): 1 🔧 Customisation Add more roles: Edit the JD_MAP object in Extract Fields + Load JD: const JD_MAP = { 'Your New Role': 'ROLE: ... REQUIREMENTS: ...', // add as many as needed }; Change the score threshold: In the Score ≥ 7? IF node, change rightValue: 5 to any number. Setting to 8 makes the bar higher (only Strong Yes candidates shortlisted). Add a second HR alert channel: After the HR Alert Email, add a Slack or Telegram node to ping your team instantly for high-scoring candidates. Add calendar booking link: Include a Calendly link in the shortlist email so candidates can self-schedule interviews immediately. Extend with CV parsing: Add a Google Drive node before the AI scorer to download the CV attachment, extract text, and include it in the AI prompt for more accurate scoring. ⚠️ Important Notes The Google Sheets Trigger polls every minute — there may be up to a 1-minute delay after form submission before scoring begins The Processed column must exist in your sheet (column R) before activating the workflow Trailing spaces in Google Forms column headers are common — the key.trim() normalization in the code handles this automatically The Wait node between HR alert and shortlist email is intentional — prevents hitting SMTP rate limits when processing multiple candidates 💡 Enhancement Ideas CV download + parse** — download Google Drive CV attachment and include content in AI scoring Calendly integration** — auto-create interview slot and include booking link in shortlist email Slack alert** — instant Slack message to hiring manager for score ≥ 9 candidates Airtable sync** — mirror all candidate data to an Airtable CRM for pipeline tracking Telegram bot** — let HR check candidate status by texting a bot with the candidate email Multi-stage pipeline** — add a second workflow that triggers when HR marks a candidate for second round 📦 Requirements Summary n8n (cloud or self-hosted) Google Workspace account (Forms + Sheets) Google AI Studio account for Gemini API key (free tier available) SMTP email account (Gmail, SendGrid, Mailtrap etc.) Built with n8n · Google Gemini AI · Google Forms · Google Sheets · SMTP
by Jitesh Dugar
Workshop Certificate Pre-Issuance System 🎯Description Transform your event registration process with this comprehensive automation that eliminates manual certificate creation and ensures only verified attendees receive credentials. ✨ What This Workflow Does This powerful automation takes workshop/event registrations from Jotform and: Validates Email Addresses - Real-time verification using VerifiEmail API to prevent bounced emails and spam registrations Generates Professional PDF Certificates - Creates beautifully designed certificates with attendee name, event details, and unique QR code Saves to Google Drive - Automatically organizes all certificates in a dedicated folder with searchable filenames Sends Confirmation Emails - Delivers professional HTML emails with embedded certificate preview and download link Maintains Complete Records - Logs all successful and failed registrations in Google Sheets for reporting and follow-up 🎯 Perfect For Workshop Organizers** - Pre-issue attendance confirmations Training Companies** - Automate enrollment certificates Conference Managers** - Streamline attendee credentialing Event Planners** - Reduce check-in time with QR codes Educational Institutions** - Issue course registration confirmations Webinar Hosts** - Send instant confirmation certificates 💡 Key Features 🔒 Email Verification Validates deliverability before issuing certificates Detects disposable/temporary emails Prevents spam and fake registrations Reduces bounce rates to near-zero 🎨 Beautiful PDF Certificates Professional Georgia serif design Customizable colors and branding Unique QR code for event check-in Unique certificate ID for tracking Print-ready A4 format 📧 Professional Email Delivery Mobile-responsive HTML design Embedded QR code preview Direct link to Google Drive PDF Branded confirmation message Event details and instructions 📊 Complete Tracking All registrations logged in Google Sheets Separate tracking for failed validations Export data for check-in lists Real-time registration counts Deduplication by email ⚡ Lightning Fast Average execution: 15-30 seconds Instant delivery after registration No manual intervention required Scales automatically 🔧 Technical Highlights Conditional Logic** - Smart routing based on email validity Data Transformation** - Clean formatting of form data Error Handling** - Graceful handling of invalid emails Merge Operations** - Combines form data with verification results Dynamic QR Codes** - Generated with verification URLs Secure Storage** - Certificates backed up in Google Drive 📦 What You'll Need Required Services: Jotform - For registration forms VerifiEmail API - Email verification service Google Account - For Gmail, Drive, and Sheets HTMLCSStoPDF - PDF generation service Estimated Setup Time: 20 minutes 🚀 Use Cases Workshop Series Issue certificates immediately after registration Reduce no-shows with professional confirmation Easy check-in with QR code scanning Virtual Events Instant confirmation for webinar attendees Digital certificates for participants Automated follow-up communication Training Programs Pre-enrollment certificates Attendance confirmations Course registration verification Conferences & Meetups Early bird confirmation certificates Attendee badge preparation Venue capacity management 📈 Benefits ✅ Save Hours of Manual Work - No more creating certificates one by one ✅ Increase Attendance - Professional confirmations boost show-up rates ✅ Prevent Fraud - Email verification stops fake registrations ✅ Improve Experience - Instant delivery delights attendees ✅ Stay Organized - All data tracked in one central location ✅ Scale Effortlessly - Handle 10 or 10,000 registrations the same way 🎨 Customization Options The workflow is fully customizable: Certificate Design** - Modify HTML template colors, fonts, layout Email Template** - Adjust branding and messaging Form Fields** - Adapt to your specific registration needs QR Code Content** - Customize verification data Storage Location** - Choose different Drive folders Tracking Fields** - Add custom data to Google Sheets 🔐 Privacy & Security Email addresses verified before certificate issuance Secure OAuth2 authentication for all Google services No sensitive data stored in workflow GDPR-compliant data handling Certificates stored in private Google Drive 📱 Mobile Responsive Professional emails display perfectly on all devices QR codes optimized for mobile scanning Certificates viewable on phones and tablets Download links work seamlessly everywhere 🏆 Why This Workflow Stands Out Unlike basic registration confirmations, this workflow: Validates emails before generating certificates** (saves resources) Creates actual PDF documents** (not just email confirmations) Includes QR codes for event check-in** (reduces venue queues) Maintains dual tracking** (successful + failed attempts) Provides shareable Drive links** (easy resending) Works 24/7 automatically** (no manual intervention) 🎓 Learning Opportunities This workflow demonstrates: Conditional branching based on API responses Data merging from multiple sources HTML to PDF conversion Dynamic content generation Error handling and logging Professional email template design QR code integration Cloud storage automation 💬 Support & Customization Perfect for n8n beginners and experts alike: Detailed sticky notes** explain every step Clear node naming** makes it easy to understand Modular design** allows easy modifications Well-documented code** in function nodes Example data** included for testing 🌟 Get Started Import the workflow JSON Connect your credentials (Jotform, VerifiEmail, Google) Create your registration form Customize the certificate design Test with a sample registration Activate and watch it work! Tags: #events #certificates #automation #email-verification #pdf-generation #registration #workshops #training #conferences #qr-codes Category: Marketing & Events Difficulty: Intermediate
by Anwar Bouilouta
Most service businesses and freelancers track their quotes in Airtable (or something similar), but when it comes to actually sending the quote, they're still manually copying data into a document, exporting a PDF, attaching it to an email, and then going back to update the record. This workflow cuts all of that out. Who is this for Freelancers, agencies, and small service businesses who already use Airtable to track client work and want to stop manually creating quote documents. If you've ever caught yourself copying the same line items into a Google Doc for the third time in a week, this is for you. How it works The workflow starts with a webhook. You can call it from an Airtable automation (when a record hits "Ready to Send", for example) or trigger it manually from Postman or any HTTP client. Once triggered, it pulls the quote record from Airtable, grabs the client details and line items, and builds a branded HTML document with proper formatting, subtotals, tax calculation, and a grand total. That HTML then gets converted to a PDF through pdf.co's free API. From there, the PDF gets uploaded to a Google Drive folder and emailed to the client as an attachment via Gmail. The Airtable record is updated with the Drive link and marked as "Sent" so you have a clear audit trail. How to set it up Create an Airtable base with a "Quotes" table. You'll need these columns: Client Name, Client Email, Line Items (long text, one per line in the format Description | Qty | Price), Tax Rate, Notes, and Status Open the "Configure Settings" node in the workflow and fill in your business name, email address, physical address, and Google Drive folder ID Connect your Airtable, Gmail, and Google Drive accounts in n8n Sign up for a free pdf.co account and add the API key as an HTTP Header Auth credential Activate the workflow and test it by sending a POST request with {"recordId": "rec..."} to the webhook URL Requirements Airtable account (free tier works) Gmail account with OAuth connected in n8n Google Drive for PDF storage pdf.co API key (free tier gives you 100 credits/month, each conversion costs 1 credit) Customizing the workflow The HTML template lives inside the "Build HTML Quote" code node. You can change the layout, fonts, colors, and add your logo by editing the HTML string directly. The brand color is pulled from the Configure Settings node, so changing it there updates the whole document. You can also adjust the quote validity period (default is 30 days) or change the reference number format in the same code node. If you want to swap pdf.co for another HTML-to-PDF service, just update the HTTP Request node URL and payload format.
by Aslamul Fikri Alfirdausi
This n8n template demonstrates how to build O'Carla, an advanced all-in-one Discord AI assistant. It intelligently handles natural conversations, professional image generation, and visual file analysis within a single server integration. Use cases are many: Deploy a smart community manager that remembers past interactions, an on-demand artistic tool for your members, or an AI that can "read" and explain uploaded documents and images! Good to know API Costs:** Each interaction costs vary depending on the model used (Gemini vs. OpenRouter). Check your provider's dashboard for updated pricing. Infrastructure:* This workflow requires a separate Discord bot script (e.g., Node.js) to forward events to the n8n Webhook. It is recommended to host the bot using *PM2** for 24/7 uptime. How it works Webhook Trigger: Receives incoming data (text and attachments) from your Discord bot. Intent Routing: The workflow uses conditional logic to detect if the user wants an image (via keyword gambar:), a vision analysis (via attachments), or a standard chat. Multi-Model Intelligence: Gemini 2.5: Powers rapid and high-quality general chat reasoning. Llama 3.2 Vision (via OpenRouter): Specifically used to describe and analyze images or text-based files. Flux (via Pollinations): Uses a specialized AI Agent to refine prompts and generate professional-grade images. Contextual Memory: A 50-message buffer window ensures O'Carla maintains the context of your conversation based on your Discord User ID. Clean UI Output: Generated image links are automatically shortened via TinyURL to keep the Discord chat interface tidy. How to use Connect your Google Gemini and OpenRouter API keys in the respective nodes. Replace the Webhook URL in your bot script with this workflow's Production Webhook URL. Type gambar: [your prompt] in Discord to generate images. Upload an image or file to Discord to trigger the AI Vision analysis. Requirements n8n instance (Self-hosted or Cloud). Google Gemini API Key. OpenRouter API Key. Discord Bot Token and hosting environment. Customising this workflow O'Carla is highly flexible. You can change her personality by modifying the System Message in the Agent nodes, adjust the memory window length, or swap the LLM models to specialized ones like Claude 3.5 or GPT-4o.