by WeblineIndia
Birthday & Milestone Message Automation (n8n Google Sheets + Gemini AI + Gmail) This workflow automatically sends personalized birthday and anniversary emails to clients. It runs daily, checks a Google Sheet for matching dates, generates a warm AI message using Google Gemini and sends it via Gmail. It also includes a thoughtful investment idea tailored to the client’s age, risk profile and relationship type. Quick Implementation Steps Connect Google Sheets OAuth2 Add your Google Gemini API key Connect Gmail OAuth2 Update the Google Sheet ID Ensure your sheet has required columns: Client Name, Email, Advisor Name, Birthday, Anniversary, Relationship Type (Premium / Normal), Client Age, Risk Profile Activate the workflow What It Does This workflow automates client relationship engagement for financial advisors by sending personalized messages on important milestones like birthdays and anniversaries. It eliminates the need for manual tracking and ensures that no important date is missed. Every day at a scheduled time, the workflow reads all client records from a Google Sheet and checks if any client has a birthday or anniversary on that day. If a match is found, it prepares detailed variables including client information, tone and occasion. The workflow then intelligently selects a suitable investment idea based on the client’s age group and risk profile. This context is passed to Google Gemini, which generates a warm, human-like message. Finally, the message is formatted and sent as a text email via Gmail. Who’s It For Financial advisors Wealth managers Investment consultants Relationship managers handling client portfolios Firms managing high-value or premium clients Requirements To use this workflow, you need: n8n instance (Cloud or Self-hosted) Google Sheets account with client data Google Gemini API key Gmail account for sending emails Proper OAuth2 credentials configured in n8n A Google Sheet with the following columns: Client Name Email Advisor Name Birthday Anniversary Relationship Type (Premium / Normal) Client Age Risk Profile How It Works & Setup Guide 🧩 Step-by-Step Workflow Execution Schedule Trigger Runs every day at 9:01 AM Read Client Data Fetches all rows from Google Sheets Settings Node Stores configuration such as: Message tone Default values Subject line format Labels for birthday and anniversary Date Matching (IF Node) Checks if today matches: Client Birthday OR Client Anniversary If no match → workflow stops Prepare Variables Extracts and formats: Client details Occasion type Message tone (premium or normal) Email subject AI prompt Investment Suggestion Logic (Code Node) Selects suggestion based on: Age group (Young / Mid / Senior) Risk profile (Low / Moderate / High) Adds a meaningful explanation AI Message Generation Google Gemini generates: Warm personalized message Includes emotional investment suggestion Format Email Converts AI output into clean text format Send Email Gmail sends the message directly to the client How To Customize Nodes Schedule Node** Change time based on your preference Settings Node** Modify: Tone (formal, friendly) Subject lines Default age or risk values Advisor firm name Google Sheet Node** Replace Sheet ID with your own data source Code Node (Investment Logic)** Add or modify: Investment ideas Age group logic Risk mapping Gemini Node** Adjust prompt for: More emotional tone Shorter or longer messages Gmail Node** Change sender name or email behavior Add-ons (Enhancements) Add WhatsApp or SMS integration for multi-channel messaging Store sent messages in Google Sheets or CRM Add Slack notifications for internal tracking Include attachments (PDF reports or offers) Add client segmentation logic for advanced personalization Use Case Examples Automatically send birthday wishes to all clients without manual effort Strengthen relationships with premium clients using personalized messages Promote subtle investment awareness without sounding salesy Maintain consistent engagement across a large client base Improve client retention through thoughtful communication There can be many more such use cases depending on how you want to extend and customize this workflow. Troubleshooting Guide | Issue | Possible Cause | Solution | |------|--------------|---------| | No emails are sent | No matching date found | Verify birthday/anniversary format in sheet | | Workflow stops early | IF condition not satisfied | Check date comparison logic | | Incorrect client data | Column mismatch | Ensure exact column names are used | | Gemini not generating response | API key issue | Verify Gemini credentials | | Emails not delivered | Gmail authentication issue | Reconnect Gmail OAuth | | Wrong message tone | Settings misconfigured | Check tone values in Settings node | Need Help? If you need assistance setting up this workflow, customizing it for your business or building advanced automation solutions, feel free to reach out to our n8n workflow development team at WeblineIndia. Our team can help you design scalable, production-ready workflows tailored to your exact requirements.
by Jitesh Dugar
Customer Onboarding Email Verification Automated email verification and welcome email workflow that validates new user signups, prevents fake emails, and creates a seamless onboarding experience with real-time team notifications. Features ✅ Real-time email validation with VerifiEmail API ✅ Automatic data sanitization (lowercase, trim whitespace) ✅ Smart typo detection and correction suggestions ✅ Disposable email domain blocking ✅ Professional HTML welcome emails with responsive design ✅ Automatic duplicate prevention in Google Sheets logging ✅ Real-time Slack notifications for sales/marketing teams ✅ MX record and SMTP deliverability checks What You Need Required Accounts/APIs: VerifiEmail API - For email validation (verifi.email) Gmail account (or SMTP server) - For sending welcome emails Google Sheets - For logging verified users Slack workspace - For team notifications (optional but recommended) Setup Instructions Create Google Sheet Create new spreadsheet named "Verified Users" Add headers: Name | Email | Status | Verified At | Original Email | Validation Score Connect Credentials Add VerifiEmail API key in n8n credentials Connect Gmail via OAuth2 (enable 2FA, generate app password if needed) Connect Google Sheets via OAuth2 Connect Slack workspace via OAuth2 Customize Email Template Open "Personalize Welcome Email" node Replace "Your Company" with your brand name (appears 3 times) Update CTA URLs: yourapp.com/dashboard → Your actual dashboard URL yourapp.com/getting-started → Your docs/guide URL yourapp.com/support → Your support page URL Modify colors: Purple gradient #667eea to #764ba2 (line 37) Configure Slack Channel Create #new-signup channel in Slack (or use existing) Update channel in "Team Notification" node Test Workflow Activate workflow Copy webhook URL from Webhook node Test with: curl -X POST [webhook-url] -H "Content-Type: application/json" -d '{"name":"Test User","email":"test@gmail.com"}' Integrate with Your Signup Form Point form submission to webhook URL Ensure payload includes name and email fields Input Format Send POST request to webhook with this JSON: { "name": "John Doe", "email": "johndoe@gmail.com" } The workflow handles various input formats (nested in body field, query params, etc.) and sanitizes automatically. Output After execution, you'll get: Email validated via VerifiEmail API with deliverability score Welcome email sent to user with personalized greeting and CTAs User logged to Google Sheets with timestamp and validation details Slack notification sent to team with user details and status Invalid emails blocked with typo correction suggestions prepared For Valid Emails (~85-90%): Professional HTML welcome email delivered Entry added to "Verified Users" sheet Real-time Slack alert to #new-signup channel For Invalid Emails (~10-15%): Workflow stops with error message No email sent (prevents bounces) Typo suggestion prepared (e.g., gmial.com → gmail.com) Customization Change Email Design: Edit the "Personalize Welcome Email" node HTML: Colors**: Change gradient in line 37: background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) Logo**: Add `` tag in header section Buttons**: Modify CTA text and links in lines 45-65 Footer**: Update copyright year and company name Modify Validation Rules: In "Prepare Correction Email" node, add more typo patterns: const commonTypos = { 'gmial': 'gmail', 'gmai': 'gmail', // Add your custom patterns: 'yourdomain': 'yourcorrectdomain' } Enable Correction Email Sending: Replace "Stop and Error" node with Gmail "Send Email" node: Connect from "Prepare Correction Email" Use {{ $json.email }} as recipient Use {{ $json.emailBody }} as message User receives helpful correction suggestion instead of silent failure Add More Notification Channels: After "Log Valid Users" node, add: Discord webhook for team notifications Microsoft Teams connector Email to sales@ or support@ Custom webhook to your CRM Log Invalid Attempts: Add Google Sheets node after "Prepare Correction Email": Create "Invalid Attempts" tab in same spreadsheet Log: Name, Email, Reason, Suggestion, Timestamp Analyze patterns weekly for form improvements Troubleshooting "undefined" error in Data Sanitization: Check webhook payload structure Verify name and email fields are present Test with the debug code provided in sticky notes All emails marked as invalid: Verify VerifiEmail API key is active Test API directly at verifi.email dashboard Welcome emails not sending: Confirm Gmail OAuth2 is connected (check for expired tokens) Verify sending limits not exceeded Check spam folder if testing with personal email Review Gmail "Sent" folder for delivery confirmation No Slack notifications: Verify OAuth2 connection is active Check bot has permission to post in #new-signup channel Confirm channel ID is correct Test Slack credentials in n8n Duplicate entries in Google Sheets: Verify "Email" is set as matching column Confirm operation is "Append or Update" not just "Append" Check Sheet1 has the exact column names expected High validation failure rate: Review invalid emails in execution logs Check for form submission issues (bots, testing) Verify VerifiEmail API is not blocking legitimate domains Performance Optimization For high-volume signups (>100/day): Switch Slack notifications to hourly digest Implement rate limiting on webhook Consider caching frequent domain validations Use Google Workspace for higher email sending limits Maintenance Weekly: Check VerifiEmail API usage and quota Review Slack notifications for anomalies Scan Google Sheets for data quality Test with sample signup Monthly: Archive old Google Sheets data (>90 days) Review invalid email patterns Update email template if needed Audit credential security Support For issues or questions, visit the n8n community forum.
by WeblineIndia
Job post expiry & refresh reminders from Google Sheets using HTTP Last‑Modified checks This workflow checks each job URL in your Google Sheet and identifies listings that look stale based on the page’s Last‑Modified date. At 10:00 Asia/Kolkata every day, it requests each URL (HEAD, then GET if needed), calculates the age in days, and sends a polite email reminder to the recruiter when age ≥ a configurable threshold (default 30 days). It includes a DRY_RUN mode to preview who would be emailed, and conservative rate limits for both HTTP requests and email sends. Who’s it for Recruitment teams maintaining job links on external boards/career sites. Coordinators who want a daily, hands‑off nudge to refresh or unlist outdated posts. Teams using Google Sheets to store job URLs and owner contacts. How it works Cron (10:00 IST) triggers daily. Google Sheets reads the Job Posts tab (job_url, recruiter_name, recruiter_email). Validate rows (URL + email format, weekend rule via config). HTTP HEAD to fetch headers; if Last-Modified missing, HTTP GET and parse common meta tags (article:modified_time, og:updated_time, lastmod, dateModified). Compute age (days since last modified in your configured timezone). If age_days ≥ THRESHOLD_DAYS, prepare a personalized email using templates. DRY_RUN? If true, output a preview; if false, rate‑limit and send emails via SMTP. How to set up Create the Sheet Tab name: Job Posts Columns: job_url, recruiter_name, recruiter_email Credentials in n8n Google Sheets (OAuth) SMTP (Gmail) (use an app password if 2FA) Open “Set: Config” and set: SPREADSHEET_ID = your Sheet ID SOURCE_SHEET = Job Posts TIMEZONE = Asia/Kolkata THRESHOLD_DAYS = 30 (change if needed) USER_AGENT = n8n-job-checker/1.0 HTTP_TIMEOUT_SECONDS = 10 HTTP_RETRIES = 2 RATE_LIMIT_HTTP_SECONDS = 5 RATE_LIMIT_EMAIL_SECONDS = 2 SMTP_FROM = sender email (e.g., hiring-ops@company.com) SUBJECT_TEMPLATE, HTML_TEMPLATE, TEXT_TEMPLATE (placeholders: {{recruiter_name}}, {{job_url}}, {{age_days}}, {{last_modified}}) INCLUDE_WEEKENDS = true DRY_RUN = false (set true to preview) Activate the workflow. Requirements Google Sheet with Job Posts tab and required columns. SMTP (Gmail) account to send emails. n8n (cloud or self‑hosted) with Google Sheets + SMTP credentials. How to customize Threshold:** Change THRESHOLD_DAYS (e.g., 15, 45). Schedule:** Adjust the Cron time from 10:00 IST to your preferred hour. Templates:** Edit SUBJECT_TEMPLATE, HTML_TEMPLATE, and TEXT_TEMPLATE. Rate limits:** Tune RATE_LIMIT_HTTP_SECONDS and RATE_LIMIT_EMAIL_SECONDS for your environment. Weekend behavior:** Toggle INCLUDE_WEEKENDS. Preview runs:** Use DRY_RUN=true to check recipients before real sends. Add‑ons Helper columns:** Write back last_modified_http, age_days, reminder_sent_at, last_checked_at, notes to the sheet. Per‑row override:** Add threshold_days column to override the global threshold per job. Slack notifications:** DM the recruiter or a channel in addition to (or instead of) email. One‑time reminders:** Email only once until the page updates (track reminder_sent_at). Robots/backoff:** Respect robots.txt or add exponential backoff for high‑traffic sites. Use Case Examples Career site posts** that haven’t been updated in 30+ days. Remind owners to refresh copy or close the listing. Third‑party boards** (e.g., niche communities) where Last‑Modified is available — automate hygiene checks. Agency partnership links** — ensure outdated roles aren’t left live, protecting brand experience. Common troubleshooting | Issue | Possible Cause | Solution | | --- | --- | --- | | No emails sent | DRY_RUN is true | Set DRY_RUN=false to actually send. | | Rows skipped | Invalid/missing job_url or recruiter_email | Fix the row values; ensure valid URL and email. | | “Stale” not detected | Page has no Last-Modified header and no recognizable meta tags | Add manual review; consider the Helper columns add‑on to log missing dates, or track first_seen_at. | | Wrong time math | Timezone mismatch | Confirm TIMEZONE=Asia/Kolkata (or your TZ) in Set: Config. | | Too many requests | Sites rate‑limit frequent checks | Increase RATE_LIMIT_HTTP_SECONDS; consider running less frequently. | | Emails fail to send | SMTP auth or quota issues | Verify SMTP credentials, sender address, and provider limits; try a different sender or schedule. | Need Help? If you’d like help tailoring the templates, adding Slack notifications or writing back helper columns for audit, just message us at WeblineIndia and we will be happy to help you get this running smoothly.
by Jitesh Dugar
Verified Visitor Pass Generator Overview Transform your visitor management process with this fully automated, enterprise-grade workflow. The Verified Visitor Pass Generator eliminates manual data entry, prevents fake registrations through email verification, and creates professional branded visitor passes in under 30 seconds. What This Workflow Does This comprehensive automation handles the complete visitor onboarding lifecycle: Captures Visitor Data - Receives form submissions via webhook from Jotform, Typeform, or any custom form Verifies Email Authenticity - Uses VerifiEmail API to validate emails and block disposable/fake addresses Generates Unique IDs - Creates visitor IDs with timestamps for tracking and security Creates QR Codes - Generates scannable QR codes containing visitor information for fast check-in Designs Digital Passes - Produces professional, branded visitor badges with HTML/CSS to Image Sends Email Notifications - Delivers passes to visitors with visit details and instructions Alerts Security Team - Posts real-time notifications to Slack with visitor details Maintains Audit Trail - Logs all visitor data to Google Sheets for compliance and reporting Key Features ✅ Email Verification - Blocks fake registrations (95%+ accuracy) ✅ Branded Badges - Customizable design with logo, colors, and QR codes ✅ Instant Delivery - Visitors receive passes within 30 seconds ✅ Real-Time Alerts - Security team gets Slack notifications immediately ✅ Complete Audit Trail - All visitor data logged to Google Sheets ✅ Mobile-Friendly - Passes work on any smartphone ✅ QR Code Integration - Fast scanning for contactless check-in ✅ Professional Templates - HTML email templates included ✅ Error Handling - Invalid emails automatically rejected ✅ Zero Manual Work - 100% automated from submission to delivery Perfect For 🏢 Coworking spaces and shared offices 🏛️ Corporate offices and headquarters 🎪 Event venues and conference centers 🏥 Healthcare facilities 🏫 Educational institutions 🏭 Manufacturing facilities 🏨 Hotels and hospitality venues Business Impact Before Automation: ⏱️ 10-15 minutes per visitor (manual process) 📝 Manual data entry errors 🔒 No email verification 📊 No centralized tracking 💸 High labor costs After Automation: ⚡ 30 seconds per visitor ✅ Zero manual work 🔐 Email verification prevents fraud 📈 Complete analytics and reporting 💰 99% cost reduction Use Cases Scenario 1: Daily Office Visitors A coworking space receives 50 visitors daily. The workflow automatically verifies each visitor, generates professional passes, and maintains a searchable database for security compliance. Scenario 2: Event Registration A conference venue uses the workflow for event check-in. Attendees receive QR-coded passes that security scans for instant verification. Scenario 3: Contractor Management A corporate office tracks all contractor visits with automated logging, ensuring compliance with safety regulations and insurance requirements. Customization Options Easy Customizations: Change company logo and branding colors Modify email templates and messaging Adjust badge design and layout Add custom visitor fields Update location and contact information Advanced Customizations: Add SMS notifications (Twilio integration) Implement visitor pre-approval workflow Create recurring visitor fast-track Add NDA/terms acceptance step Integrate with access control systems Build visitor analytics dashboard What Users Love ⭐⭐⭐⭐⭐ "Reduced our visitor processing time from 10 minutes to 30 seconds. Game changer!" ⭐⭐⭐⭐⭐ "The email verification feature stopped all fake registrations. Security team loves it." ⭐⭐⭐⭐⭐ "Professional badges make our coworking space look enterprise-grade. Clients are impressed." 🔧 Required Integrations & Credentials 1. VerifiEmail API (Required) Setup:** Sign up at https://verifi.email and get API token 2. HTMLCSSToImage API (Required) Setup:** Sign up at https://htmlcsstoimg.com and get API credentials 3. Gmail OAuth2 or SMTP (Required) Setup:** Connect Gmail account via OAuth2 in n8n 4. Slack API (Required) Setup:** Create Slack app and get OAuth token 5. Google Sheets OAuth2 (Required) Setup:** Connect Google account and create spreadsheet 🎯 Quick Start Guide Step 1: Setup Credentials Create VerifiEmail account and get API token Setup HTMLCSSToImage API credentials Connect Gmail account via OAuth2 Create Slack app and get bot token Connect Google Sheets account Step 2: Configure Nodes Update company name in HTML badge template Replace logo in badge design (line 76 in HTML/CSS node) Update email template with your contact info Set Slack channel ID for notifications Create Google Sheets with proper column headers Step 3: Test Workflow Click "Execute Workflow" with test data Verify email is sent to test address Check Slack notification appears Confirm data logs to Google Sheets Scan QR code to verify it works Step 4: Activate Toggle workflow to "Active" Copy webhook URL to your form Submit first real visitor registration Monitor execution logs for issues 📈 Monitoring & Analytics Track these metrics in Google Sheets: Total visitors processed Email verification success rate Peak visitor hours/days Most common visit purposes Visitor company frequency Average processing time 📄 License This workflow is provided as-is for use in your n8n instance. Feel free to modify and adapt to your needs.
by Avkash Kakdiya
How it works This workflow automatically scrapes business leads from Google Maps on a daily schedule and ensures only high-quality, unique leads are processed. New businesses are cleaned, validated, and deduplicated against an existing Google Sheets database before enrichment begins. Verified emails are enriched using domain-based lookup and classified by confidence. Finally, the workflow sends a detailed email report and stores all enriched leads in Google Sheets for ongoing tracking. Step-by-step Scrape & deduplicate leads** Schedule Trigger – Runs the workflow automatically at a fixed time each day. Google Maps Scraper – Scrapes business listings based on search query and location. Format & Validate Data – Cleans fields, normalizes data, and scores lead quality. Check Existing Leads – Reads existing records from Google Sheets. Deduplicate Leads – Removes businesses already stored in the database. Format Error Data – Captures and structures scraper or processing errors. Error Notification – Sends an email alert if the workflow fails. Enrich emails** Has New Leads? – Checks whether any new unique leads remain after deduplication. Batch for AI Processing – Splits leads into small batches to control API usage. HTTP Request (Hunter) – Performs domain search to find professional emails. Merge & Validate Results – Selects the best email and assigns confidence levels. No New Leads Notification – Sends a message when no new leads are found. Report & store results** High Confidence Leads? – Separates outreach-ready leads from lower-confidence ones. Build Email Report – Generates a detailed HTML report with lead analytics. Send Email Report – Emails the daily lead summary to stakeholders. Prepare Sheet Data – Formats enriched leads for storage. Save to Google Sheets – Appends or updates leads in the sheet. Merge – Synchronizes parallel execution paths. Wait – Controls workflow execution flow and batching cycles. Why use this? Fully automates Google Maps lead generation and enrichment Prevents duplicate and low-quality leads from entering your database Enriches leads with verified emails and confidence scoring Delivers clear daily reports for faster outreach decisions Maintains a centralized, continuously updated lead system
by Muhammad Anas Farooq
n8n Gmail AI Auto-Labeler > An intelligent n8n workflow that automatically classifies and labels Gmail emails using Google Gemini AI, keeping your inbox organized with zero manual effort. This workflow uses AI-powered classification to analyze email content, learn from sender patterns, and automatically apply appropriate labels while archiving processed emails. How It Works Trigger: The workflow runs automatically every minute to check for new unread emails (or manually for bulk processing). Check for Existing Labels: Before processing, it verifies if the email already has an AI-assigned label to avoid duplicate processing. AI Classification: If unlabeled, the AI agent analyzes the email using: Sender History Tool - Fetches up to 10 previous emails from the same sender to identify patterns 80% Majority Rule - If 80%+ of sender's past emails have the same label, strongly prefers that category Label Examples Tool - When uncertain, compares the email with existing examples from suspected categories Smart Decision: The AI returns a structured JSON response: { "label": "Category Name" } Or "None" if no category fits. Apply & Archive: Label Applied → The workflow adds the appropriate Gmail label to the thread. Auto-Archive → Removes the email from INBOX (archives it) to maintain zero-inbox. Loop: Processes the next email in the batch, ensuring all new emails are classified. Requirements Gmail OAuth2 Credentials** - Connected Gmail account with API access. Google Gemini API Key** - Get it here Free tier: 15 requests/minute Gmail Labels** - Must be created in Gmail exactly as listed: Meetings Income Inquiries Notify / Verify Expenses Orders / Deliveries Trash Likely How to Use Import the Workflow: Copy the provided JSON file. In your n8n instance → click Import Workflow → select the JSON file. Create Gmail Labels: Open Gmail → Settings → Labels → Create new labels. Use the exact names listed above (case-sensitive). Get Your Label IDs: In the workflow, click "When clicking 'Execute workflow'" manual trigger. Execute the "Get Labels Info" node only. Copy each label's ID (format: Label_1234567890123456789). Update Code Nodes with Your Label IDs: Node 1: "Check Label Existence" const labelMap = { "Label_YOUR_ID_HERE": "Meetings", "Label_YOUR_ID_HERE": "Inquiries", "Label_YOUR_ID_HERE": "Notify / Verify", "Label_YOUR_ID_HERE": "Expenses", "Label_YOUR_ID_HERE": "Orders / Deliveries", "Label_YOUR_ID_HERE": "Trash Likely" }; Node 2: "Convert Label to Label ID" const labelToId = { "Meetings": "Label_YOUR_ID_HERE", "Inquiries": "Label_YOUR_ID_HERE", "Notify / Verify": "Label_YOUR_ID_HERE", "Expenses": "Label_YOUR_ID_HERE", "Orders / Deliveries": "Label_YOUR_ID_HERE", "Trash Likely": "Label_YOUR_ID_HERE" }; Set Up Credentials: Gmail OAuth2 → Authorize your Gmail account in n8n. Google Gemini API → Add your API key in n8n credentials. Test the Workflow: Send yourself test emails with clear content (e.g., invoice, meeting invite). Use the manual trigger to process them. Verify labels are applied correctly. Activate for Auto Mode: Toggle the workflow to Active. New unread emails will be processed automatically every minute. Notes Dual Execution Modes**: Auto Mode - Gmail Trigger polls inbox every minute for unread emails (real-time processing). Manual Mode - Use the manual trigger to bulk process existing emails (adjust limit in "Get many messages" node). AI Learning from Patterns**: The workflow applies an 80% majority rule - if 80% or more of a sender's historical emails share the same label, the AI strongly prefers that category for new emails from that sender. This creates intelligent sender-based routing over time. Skip Already Labeled Emails**: The "Check Label Existence" node prevents re-processing emails that already have an AI-assigned label. Ensures efficient execution and avoids duplicate work. Structured AI Output**: Uses a Structured Output Parser to ensure the AI always returns valid JSON: { "label": "Category" }. If uncertain, returns { "label": "None" } and the email stays in inbox. Background Archiving**: After labeling, emails are automatically removed from INBOX (archived). Maintains a zero-inbox workflow while preserving emails under their labels. Rate Limits**: Google Gemini free tier: 15 requests/minute. Adjust polling frequency if hitting limits. Example Behavior Minute 1**: New invoice email arrives → AI fetches sender history → 85% were labeled "Expenses" → applies "Expenses" label → archives email. Minute 2**: Meeting invite arrives → No sender history → AI analyzes content (Zoom link, time) → applies "Meetings" label → archives email. Minute 3**: Promotional email arrives → AI compares with "Trash Likely" examples → applies label → archives email. Minute 4**: Already-labeled email detected → skipped silently. Label Categories | Label | Description | |-------|-------------| | Meetings | Calendar invites, Zoom/Meet links, appointments, scheduled events | | Expenses | Bills, invoices, receipts, payment reminders, subscription renewals | | Income | Payments received, payouts, deposits, earnings notifications | | Notify / Verify | Verification codes, login alerts, 2FA codes, account notifications | | Orders / Deliveries | Order confirmations, shipping updates, tracking numbers, deliveries | | Inquiries | Business outreach, sales proposals, partnerships, cold emails | | Trash Likely | Spam, newsletters, promotions, marketing blasts, ads | > If no category fits clearly, the email returns "None" and remains in the inbox. Customization Change Polling Frequency**: Edit the "Gmail Trigger" node → pollTimes → mode (e.g., every5Minutes). Adjust Email Limit**: Modify limit: 10 in "Get many messages" node for manual bulk processing. Add Custom Labels**: Create in Gmail → Get ID → Update both Code nodes + AI system prompt. Modify 80% Rule**: Edit the AI agent's system message to adjust the majority threshold. Increase Tool Limits**: Change limit: 10 in Gmail tool nodes to fetch more historical data. Author: Muhammad Anas Farooq
by 飯盛 正幹
Who is this for? This template is designed for freelancers, small businesses, and finance teams who need automated invoice management with intelligent payment follow-ups. Perfect for service providers, agencies, or any business that needs to track receivables and reduce late payments. What this workflow does This workflow provides complete invoice lifecycle management with two main flows: Invoice Generation Flow: Receives order data via webhook with line items Splits line items using Split Out node for individual processing Calculates subtotals, tax, and totals Aggregates results and saves to Google Sheets Sends professional invoice email with payment link Payment Reminder Flow: Runs daily via Schedule Trigger to check for overdue invoices Loops through unpaid invoices using Split In Batches Routes to appropriate reminder level using Switch node (5 levels) Sends escalating reminders: friendly → second notice → urgent → final → collections Notifies internal team via Slack for collections handoff Setup Create a Google Sheet with columns: Invoice ID, Client, Email, Subtotal, Tax, Total, Due Date, Status, Created, Last Reminder Connect Google Sheets and Gmail credentials Configure Slack for collections escalation notifications Set up the webhook URL in your order management system Requirements Google Sheets (invoice database) Gmail account (invoice and reminder emails) Slack workspace (collections notifications) How to customize Adjust overdue day thresholds in the Code node Add SMS reminders via Twilio for urgent notices Modify email templates for your brand Connect to accounting software for automatic reconciliation
by AI Sales Agent HQ
What this workflow does Automatically re-engages dormant leads by detecting trigger events (funding rounds, company news, leadership changes) and generating personalized outreach emails. The workflow identifies leads inactive for 90+ days, checks multiple data sources for re-engagement opportunities, and sends AI-generated email drafts to sales reps for approval. How it works Schedule - Runs weekly (every Monday by default) CRM Data - Pulls leads that have been inactive for 90+ days Trigger Detection - Checks three sources in parallel: Crunchbase for funding events NewsAPI for company news Hunter.io for leadership changes AI Email - Claude generates a personalized re-engagement email based on the detected trigger Rep Notification - Sends the complete lead profile and email draft to the assigned sales rep for review Setup steps Replace Load inactive leads (mock) with your CRM integration (Salesforce, HubSpot, Pipedrive) Add API credentials for trigger detection: NewsAPI (free at newsapi.org) Crunchbase (optional, paid) Hunter.io (free tier available) Add your Anthropic API credentials for Claude Add your Gmail OAuth credentials Test with Test workflow manually node before enabling schedule API keys required | Service | Purpose | Cost | |---------|---------|------| | NewsAPI | Company news detection | Free (100 req/day) | | Crunchbase | Funding event detection | $99/mo (optional) | | Hunter.io | Leadership change detection | Free tier available | | Anthropic | AI email generation | Pay per use | | Gmail | Send notifications | Free |
by Onur
Template Description: > Stop manually reading every CV and copy-pasting data into a spreadsheet. This workflow acts as an AI recruiting assistant, automating your entire initial screening process. It captures applications from a public form, uses AI to read and understand PDF CVs, structures the candidate data, saves it to Google Sheets, and notifies all parties. This template is designed to save HR professionals and small business owners countless hours, ensuring no applicant is missed and all data is consistently structured and stored. 🚀 What does this workflow do? Provides a public web form for candidates to submit their name, email, experience, and PDF CV. Automatically reads the text content from the uploaded PDF CV. Uses an AI Agent (OpenAI) to intelligently parse the CV text, extracting key data like contact info, work experience, education, skills, and more. Writes a concise summary** of the CV, perfect for quick screening by HR. Checks for duplicate applications** based on the candidate's email address. Saves all structured applicant data** into a new row in a Google Sheet, creating a powerful candidate database. Sends an automated confirmation email to the applicant. Sends a new application alert with the CV summary to the recruiter. 🎯 Who is this for? HR Departments & Recruiters:** Streamline your hiring pipeline and build a structured candidate database. Small Business Owners:** Manage job applications professionally without dedicated HR software. Hiring Managers:** Quickly get a summarized overview of each candidate without reading the full CV initially. ✨ Benefits Massive Time Savings:** Drastically reduces the time spent on manual CV screening and data entry. Structured Candidate Data:** Turns every CV into a consistently formatted row in a spreadsheet, making it easy to compare candidates. Never Miss an Applicant:** Every submission is logged, and you're instantly notified. Improved Candidate Experience:** Applicants receive an immediate confirmation that their submission was successful. AI-Powered Summaries:** Get a quick, AI-generated summary of each CV delivered to your inbox. ⚙️ How it Works Form Submission: A candidate fills out the n8n form and uploads their CV. PDF Extraction: The workflow extracts the raw text from the PDF file. AI Analysis: The text is sent to OpenAI with a prompt to structure all key information (experience, skills, etc.) into a JSON format. Duplicate Check: The workflow checks your Google Sheet to see if the applicant's email already exists. If so, it stops. Save to Database: If the applicant is new, their structured data is saved as a new row in Google Sheets. Send Notifications: Two emails are sent simultaneously: a confirmation to the applicant and a notification with the CV summary to the recruiter. 📋 n8n Nodes Used Form Trigger Extract From File OpenAI Code (or JSON Parser) Google Sheets If Gmail 🔑 Prerequisites An active n8n instance. OpenAI Account & API Key**. Google Account** with access to Google Sheets and Gmail (OAuth2 Credentials). A Google Sheet** prepared with columns to store the applicant data (e.g., name, email, experience, skills, cv_summary, etc.). 🛠️ Setup Import the workflow into your n8n instance. Configure Credentials: Connect your credentials for OpenAI and Google (for Sheets & Gmail) in their respective nodes. Customize the Form: In the 1. Applicant Submits Form node, you can add or remove fields as needed. Activate the workflow. Once active, copy the Production URL from the Form Trigger node and share it to receive applications. Set Your Email: In the 8b. Send Notification... (Gmail) node, change the "To" address to your own email address to receive alerts. Link Your Google Sheet: In the 5. Check for Duplicate... and 7. Save Applicant Data... nodes, select your spreadsheet and sheet.
by go-surfe
🚀 Build Hyper-Targeted Prospecting Lists with Surfe & HubSpot This template automatically discovers companies that match your Ideal Customer Profile (ICP), finds the right people inside those companies and enriches them — ready to drop straight into HubSpot. Launch the workflow, sit back, and get a clean list of validated prospects in minutes. 1. ❓ What Problem Does This Solve? Sourcing prospects that truly fit your ICP is slow and repetitive. You jump between databases, copy domains, hunt down decision-makers, and then still have to enrich emails and phone numbers one by one. This workflow replaces all that manual effort: It queries Surfe’s database for companies that match your exact industry, size, revenue and geography filters. It pulls the best-fit people inside each company and enriches them in bulk. It keeps only records with both a direct email and mobile phone, then syncs them to HubSpot automatically. No spreadsheets, no copy-paste — just a fresh, qualified prospect list ready for outreach. 2. 🧰 Prerequisites You’ll need: A self-hosted or cloud instance of n8n A Surfe API Key A HubSpot Private App Token with contact read/write scopes A Gmail account (OAuth2) for the completion notification The workflow JSON file linked above N8N_FLOW_2__Building_Prospecting_Lists.json 3. 📌 Search ICP Companies Configuration — Fine-Tune Your Targeting 3.1 Editing the JSON Every targeting rule lives inside the “🔍 Search ICP Companies” HTTP node. Open the node Search ICP Companies → Parameters tab → JSON Body to edit the filters. | Filter | JSON path | What it does | Example | | --- | --- | --- | --- | | industries | filters.industries | Narrow to specific verticals (case-sensitive strings) | ["Software","Apps","SaaS"] | | employeeCount.from / to | filters.employeeCount | from / to | 1 / 35 | | countries | filters.countries | 2-letter ISO codes | ["FR","DE"] | | revenues | filters.revenues | Annual revenue brackets | ["1-10M"] | | limit | limit | Companies per run | 20 | 3.2 Where to find allowed values Surfe exposes an “🗂 Get Filters” endpoint that returns every accepted value for: industries employeeCounts revenues countries (always ISO-2 codes) You can hit it with a simple GET /v1/people/search/filters request or browse the interactive docs here: https://developers.surfe.com/public-008-people-filters developers.surfe.com For company-level searches, the same enumerations apply. 4. ⚙️ Setup Instructions 4.1 🔐 Create Your Credentials in n8n 4.1.1 🚀 Surfe API In your Surfe dashboard → Use Surfe Api → copy your API key Go to n8n → Credentials → Create Credential Choose Credential Type: Bearer Auth Name it something like SURFE API Key Paste your API key into the Bearer Token Save 4.1.2 📧 Gmail OAuth2 API Go to n8n → Credentials Create new credentials: Type: Gmail OAuth2 API A pop-up window will appear where you can log in with your Google account that is linked to Gmail Make sure you grant email send permissions when prompted 4.1.3 🎯 HubSpot 🔓 Private App Token Go to HubSpot → Settings → Integrations → Private Apps Create an app with scopes: crm.objects.contacts.read crm.objects.contacts.write crm.schemas.contacts.read Save the App token Go to n8n → Credentials → Create Credential → HubSpot App Token Paste your App Token ✅ You are now all set for the credentials 4.2 📥 Import and Configure the N8N Workflow Import the provided JSON workflow into N8N Create a New Blank Workflow click the … on the top left Import from File 4.2.1 🔗 Link Nodes to Your Credentials In the workflow, link your newly created credentials to each node of this list : Surfe HTTP nodes: Authentication → Generic Credential Type Generic Auth Type → Bearer Auth Bearer Auth → Select the credentials you created before Gmail Node Credentials to connect with → Gmail account Hubspot Node →Credentials to connect with → Gmail account Surfe HTTP nodes Surfe HTTP nodes HubSpot node → Credentials to connect with → select your HubSpot credentials in the list 5. 🔄 How This N8N Workflow Works Manual Trigger – Click Execute Workflow (or schedule it) to start. Search ICP Companies – Surfe returns company domains that match your filter set. Prepare JSON Payload with Company Domains – Formats the domain list for the next call. Search People in Companies – Finds people inside each company. Prepare JSON Payload Enrichment Request – Builds the bulk-enrichment request. Surfe Bulk Enrichments API – Launches one enrichment job for the whole batch. Wait + Polling loop – Checks job status every 3 seconds until it’s COMPLETED. Extract List of People – Pulls the enriched contacts from Surfe’s response. Filter: phone AND email – Keeps only fully reachable prospects (email and mobile). HubSpot: Create or Update – Inserts/updates each contact in HubSpot. Gmail – Sends you a “Your ICP prospecting enrichment is done” email. 6. 🧩 Use Cases Weekly prospect list refresh** – Generate 50 perfectly-matched prospects every Monday morning. Territory expansion** – Spin up a list of SMB software CEOs in a new country in minutes. ABM prep** – Build multi-stakeholder buying-group lists for target accounts. Campaign-specific lists** – Quickly assemble contacts for a limited-time product launch. 7. 🛠 Customization Ideas prepare 🎯 Refine filters for people – Add seniorities or other filters in the node JSON PAYLOAD WITH Company Domains use the surfe search people api doc https://developers.surfe.com/public-009-search-people-v2 ♻️ Deduplicate – Check HubSpot first to skip existing contacts. 🟢 Slack alert – Replace Gmail with a Slack notification. 📊 Reporting – Append enriched contacts to a Google Sheet for analytics. 8. ✅ Summary Fire off the workflow, and n8n will find ICP-fit companies, pull key people, enrich direct contact data and drop everything into HubSpot — all on autopilot. Prospecting lists, done for you.
by Veena Pandian
Who is this for? SEO managers, content marketers, bloggers, and growth teams who want to automatically catch declining content performance before it's too late — without manually checking Google Search Console every week. What this workflow does This workflow runs weekly to compare your recent Google Search Console performance against a historical baseline. It identifies pages experiencing traffic decay at three severity levels, sends detailed reports via Slack and email, logs all data to a tracking sheet, and auto-generates prioritized fix tasks for your most critical pages. How it works Weekly trigger fires every Monday at 8 AM. Fetches two GSC date ranges in parallel — the last 7 days (recent) and the previous 28 days (baseline, normalized to weekly averages). Compares per-page metrics including clicks, impressions, average position, and CTR. Classifies each page into one of five signals: CRITICAL_DECAY — clicks dropped 50%+ or position fell 5+ spots with 30%+ click loss DECAYING — clicks dropped 30%+ or position fell 3+ spots EARLY_DECAY — clicks dropped 15%+ or position fell 1.5+ spots STABLE — no significant change GROWING — clicks increased 20%+ Logs all results to a Decay Log Google Sheet tab for historical trending. Builds a weekly report with summary counts, estimated clicks lost, and per-page breakdowns. Sends the report to Slack and email simultaneously. Auto-generates fix tasks for critical pages with specific recommendations (backlink audit, content refresh, CTR optimization, or technical investigation) and logs them to a Fix Tasks sheet tab. Setup steps Set environment variables in your n8n instance: GSC_SITE_URL — your verified site URL (e.g., https://yoursite.com) DECAY_SHEET_URL — URL of your Google Sheet for logging Create a Google Sheet with two tabs: Decay Log with headers: date, page_path, signal, clicks_now, clicks_before, click_change_pct, position_now, position_before, position_change, impressions_now, impression_change_pct, ctr_now Fix Tasks with headers: created, priority, page_path, page_url, signal, click_change_pct, position_change, recommended_action Connect Google Search Console OAuth2 credentials (your site must be verified in GSC). Connect Google Sheets OAuth2 credentials. Connect Slack OAuth2 credentials and configure your alert channel. Configure email (SMTP) credentials and update the recipient email address in the "Email Weekly Report" node. Activate the workflow. Requirements n8n instance (self-hosted or cloud) Google Search Console property with verified ownership Google Cloud project with Search Console API and Sheets API enabled Slack workspace with a bot configured SMTP email credentials (or swap for Gmail node) How to customize Decay thresholds** — Adjust the percentage and position-change cutoffs in the "Compare Periods and Detect Decay" code node to match your sensitivity needs. Schedule** — Change from weekly to daily or bi-weekly in the trigger node. Baseline period** — Modify the 28-day comparison window to 14 or 90 days. Row limit** — Increase the rowLimit in GSC API calls beyond 500 if you have a large site. Fix task logic** — Enhance the remediation recommendations with AI-powered content analysis or integrate with project management tools (Notion, Asana, Trello). Notifications** — Add Telegram, Discord, or Microsoft Teams alongside or instead of Slack.
by Dean Pike
Client Form → Draft → Approve → Sign → Deliver, fully automated This workflow automates the entire agreement lifecycle from client form submission to signed document delivery. It generates personalized agreements from templates, manages internal approvals, orchestrates e-signatures via Signwell, and delivers fully executed documents with complete audit trails in n8n Data Tables. Good to know Handles client data collection via JotForm with custom field mapping Automatically populates Google Doc templates with client-specific details Internal approval workflow with email-based confirmation Signwell integration for embedded e-signatures - test mode enabled by default - disable for legally binding documents Complete lifecycle tracking in n8n Data Tables (draft → approval → sent → signed) Auto-cleanup: removes documents from Signwell after completion to save storage Who's it for Service businesses, consultants, agencies, and freelancers who send agreements to clients regularly. Perfect for anyone wanting to avoid other costly e-signature platforms with limited API and automation capabilities. Signwell has an affordable entry level tier with generous API limits. If you're looking to eliminate manual document preparation, have an approval workflow, and track signatures while maintaining professional client communication, then this solution is a good fit. How it works Phase 1: Draft Creation JotForm trigger captures client submission (company name, address, contact details, position) Standardizes form data and duplicates Google Doc template with custom filename Replaces template variables with client information (company name, address, full name, position, dates) Creates clean document URL and logs initial record to Data Tables Emails internal team with draft review link and client details Phase 2: Approval & Preparation Gmail monitors inbox for "Approved" reply email Fetches agreement record from Data Tables and marks as approved Downloads Google Doc as PDF and uploads to Drive folder Grants temporary public sharing access (required for Signwell file import) Creates Signwell document with embedded signature fields and signing URL Emails client with personalized signing link Revokes public sharing access for security and updates Data Tables with Signwell details Phase 3: Signature & Delivery Gmail monitors for Signwell completion notification Extracts signed document download link from notification email Downloads fully executed PDF from Signwell Uploads to "Final Versions" folder in Google Drive Updates Data Tables with completion status and final document URLs Sends confirmation email to client with signed PDF attached Deletes document from Signwell to free up storage Requirements JotForm account (free tier works) Gmail account with OAuth2 access Google Drive account (OAuth2) Google Docs account (OAuth2) with a draft Agreement template Signwell account with API key n8n Data Tables (built-in, no external service needed) Google Drive folders: "Services Agreements - Drafts" and "Services Agreements - Final Versions" How to set up Add credentials: JotForm API, Gmail OAuth2, Google Drive OAuth2, Google Docs OAuth2, Signwell API key Create JotForm: Build form with fields: Company Name, Company Address (address field), Full Name (name field), Your Position/Job Title, Email In "JotForm Trigger" node: select your form Create Google Doc template: Add variables {{clientCompanyName}}, {{clientFullName}}, {{clientNamePosition}}, {{clientCompanyAddress}}, {{agreementDate1}}, {{agreementDate2}} In "Copy and Rename File" node: select your template document and update folder ID to your "Drafts" folder Create Data Table: Name it "Services Agreements" with columns: documentFileName, clientEmail, clientFullName, clientNamePosition, clientCompanyName, clientCompanyAddress, documentUrl, approvalStatus, sentDocumentPdfUrl, sentDate, signwellUrl, signwellDocID, docSigned, finalExecutedDocGDrive, finalExecutedDocSignwellUrl In "Insert Row" and all "Get/Update Row" nodes: select your Data Table Create Gmail labels: "_AGREEMENTS" with 2 nested (sublabels) Agreement-Approvals" and "Agreement-Completed" for filtering In "Check for Email Approval" node: select your approval label and update internal email address In "Check Email for Completed Notification" node: select your completed label In "Create Document in Signwell" node: update API key and adjust signature field coordinates for your document Set Signwell to live mode: Change "test_mode": true to "test_mode": false when ready for production Activate workflow Customizing this workflow Change template variables: Edit "Update New File" node to add/remove fields (e.g., pricing, terms, scope of work) Modify approval email: Edit "Share Email Draft" node to change recipient, subject line, or message format Adjust Signwell fields: Edit "Create Document in Signwell" node to change signature/date field positions (x, y coordinates) to match your agreement template, and add any other fields you'd like Add approval deadline: Add Wait node with timeout after "Share Email Draft" to auto-remind for pending approvals Multi-signer support: Modify "Create Document in Signwell" recipients array to add multiple signers (e.g., both parties) Change storage folders: Update folder IDs in "Upload PDF File" and "Upload Completed Doc" nodes Add Slack notifications: Add Slack nodes after key milestones (draft created, approved, signed) Custom client messaging: Edit "Send Prepared Agreement to Client" and "Send Client Completed Agreement PDF" nodes for personalized communication Add reminder logic: Insert Wait + Send Email nodes between signing and completion to remind client if not signed within X days Quick Troubleshooting JotForm not triggering: Verify webhook is active in JotForm settings and form ID matches "JotForm Trigger" node Template variables not replacing: Check variable names in template doc exactly match {{variableName}} format (case-sensitive) Wrong internal email for approval: Update email address in "Share Email Draft" node to your own email Approval email not detected: Confirm Gmail label "Agreement-Approvals" exists and reply contains exact word "Approved" Signwell document creation fails: Verify PDF has public sharing enabled before API call AND Signwell API key is valid in "Create Document in Signwell" node Signature fields in wrong position: Adjust x/y coordinates in "Create Document in Signwell" node (test in Signwell UI first to find correct pixel positions) Completed document not downloading: Check Signwell completion email format - Code node extracts link via regex pattern Data Tables errors: Ensure documentFileName exactly matches between "Insert Row" and "Get/Update Row" operations Client emails not sending: Re-authorize Gmail OAuth2 credentials and verify sender name/address in Gmail nodes Drive folder not found: Update folder IDs in "Copy and Rename File", "Upload PDF File", and "Upload Completed Doc" nodes to your own folder IDs Signwell deletion fails: Verify signwellDocID was correctly stored in Data Tables before deletion (check "Update Row - Additional Doc Details" output) 401/403 API errors: Re-authorize all OAuth2 credentials (Gmail, Google Drive, Google Docs) Test mode documents: Change "test_mode": true to "test_mode": false in "Create Document in Signwell" node for production signatures Sample Outputs Agreement Drafts and Final folders/files in Google Drive File References Agreement Template (sample) Final Agreement Signed (sample)