by algopi.io
Who is this template for? This workflow template is designed for Marketing and pre-Sales to get prospects from a form like Tally, decline data in the famous opensource CRM (SuiteCRM), synchronize contact in Brevo with linking the id from CRM, and then notify in NextCloud. Bonus : validate email with ++CaptainVerify++ and notify in NextCloud depending on response How it works For each submission in the form, a webhook is triggered. A check of the email is done with CaptainVerify. Depending on the response, and if it is ok, then a Lead is created in SuiteCRM. Else, a message in your selected discussion is sent. As the lead has been created, we can create a contact in Brevo (for future campain), ank link this contact with the lead_id from the CRM in a dedicated field. Finaly, a message in your selected discussion in NextCloud informs you about the lead. Set up instructions Complete the Set up credentials step when you first open the workflow. You'll need a CaptainVerify account (Api Key), a dedicated SuiteCRM user with Oauth, a Brevo account (Api Key) and a Nextcloud account. Set up the Webhook in the form's tool of your choice (why not Tally ?). Set each node with the explanations in sticky Notes. Enjoy ! Template was created in n8n v1.44.1
by Matthieu
Search LinkedIn companies, Score with AI and add them to Google Sheet CRM Setup Video: https://youtube.com/watch?v=m904RNxtF0w&t Who is this for? This template is ideal for sales teams, business development professionals, and marketers looking to build a targeted prospect database with automatic qualification. Perfect for agencies, consultants, and B2B companies wanting to identify and prioritize the most promising potential clients. What problem does this workflow solve? Manually researching companies on LinkedIn, evaluating their fit for your services, and tracking them in your CRM is time-consuming and subjective. This automation streamlines lead generation by automatically finding, scoring, and importing qualified prospects into your database. What this workflow does This workflow automatically searches for companies on LinkedIn based on your criteria, retrieves detailed information about each company, filters them based on quality indicators, uses AI to score how well they match your ideal customer profile, and adds them to your Google Sheet CRM while preventing duplicates. Setup Create a Ghost Genius API account and get your API key Configure HTTP Request nodes with Header Auth credentials Create a copy of the provided Google Sheet template Set up your Google Sheet and OpenAI credentials following n8n documentation Customize the "Set Variables" node to match your target audience and scoring criteria How to customize this workflow Modify search parameters to target different industries, locations, or company sizes Adjust the follower count threshold based on your qualification criteria Customize the AI scoring system to align with your specific product or service offering Add notification nodes to alert you when high-scoring companies are identified
by Javier Hita
Who is this for? This workflow is perfect for sales teams, business development professionals, recruitment agencies, and fractional CFO service providers who need to identify and qualify companies actively hiring. Whether you're prospecting for new clients, building a database of potential customers, or researching market opportunities, this automated solution saves hours of manual research while delivering high-quality, AI-analyzed leads. What problem is this workflow solving? Finding qualified prospects in the finance sector is time-consuming and often inefficient. Traditional methods involve: Manually browsing LinkedIn job postings for hours Difficulty distinguishing between genuine opportunities and recruitment spam Inconsistent lead categorization and qualification Risk of contacting the same companies multiple times Lack of structured data for sales team follow-up This workflow automates the entire lead generation process, from data collection to AI-powered qualification, ensuring you focus only on the most promising opportunities. What this workflow does This comprehensive lead generation system performs six key functions: Automated LinkedIn Job Scraping: Uses Apify's reliable LinkedIn Jobs Scraper to extract detailed job postings for finance positions, including company information, job descriptions, and contact details. Smart Data Processing: Removes duplicates, filters companies by size, and structures data for consistent analysis across all leads. Intelligent Lead Categorization: Compares new leads against your existing database to optimize processing and avoid duplicate work. AI-Powered Qualification: Leverages OpenAI's GPT-4 Mini to analyze each lead and determine: Company Category: Consumer companies, Fractional CFO services, Recruiting agencies, or Other Finance Role Validation: Confirms the position is genuinely finance-related Seniority Level: Entry, Mid, Senior, Director, or C-Level classification Job Summary: Concise description for quick sales team review Automated Database Management: Stores qualified leads in Airtable with comprehensive profiles, preventing duplicates while maintaining data integrity. Lead Scoring & Routing: Prioritizes leads based on processing status and qualification results for efficient sales team follow-up. Setup Prerequisites You'll need accounts for three services: Airtable** (Free tier supported) - For lead storage and management Apify** (14-day free trial available) - For LinkedIn job scraping OpenAI** (Pay-per-use) - For AI-powered lead analysis Step 1: Create Required Credentials Apify API Credential Sign up for an Apify account at apify.com Navigate to Settings β Integrations β API tokens Create a new API token In n8n, create a new Apify API credential with your token OpenAI API Credential Create an account at platform.openai.com Generate an API key in the API section In n8n, create a new OpenAI credential with your key Airtable Personal Access Token Go to airtable.com/create/tokens Create a personal access token with the following scopes: data.records:read data.records:write schema.bases:read In n8n, create a new Airtable Personal Access Token credential Step 2: Set Up Airtable Base Create a new Airtable base with the following structure: Table Name: Qualified Leads Required Fields: Company Name (Single line text) Job Title (Single line text) Is Finance Job (Checkbox) Seniority Level (Single select: Entry, Mid, Senior, Director, C-Level) Company Category (Single select: Consumer, Recruiting, Fractional CFO, Other) Job Summary (Long text) Company LinkedIn (URL) Job Link (URL) Posted Date (Date) Location (Single line text) Industry (Single line text) Company Employees (Number) Step 3: Configure the Workflow Import the Workflow: Copy the JSON and import it into your n8n instance Update Credentials: Replace placeholder credential IDs with your actual credential IDs in: "Scrape LinkedIn Jobs" node (Apify credential) "OpenAI GPT-4 Mini" node (OpenAI credential) "Save to Airtable" and "Get Existing Leads" nodes (Airtable credential) Configure Airtable Connection: Update the base ID and table ID in both Airtable nodes Set Search Parameters: In the "Edit Variables" node, configure: linkedinUrls: Your target LinkedIn job search URLs maxEmployees: Maximum company size filter (default: 200) batchSize: Processing batch size for API efficiency (default: 5) Step 4: Test the Workflow Start with a small test by setting count: 50 in the HTTP Request node Use a specific LinkedIn job search URL (e.g., "CFO jobs in New York") Execute the workflow manually and verify results in your Airtable base Review the AI categorization accuracy and adjust prompts if needed How to customize this workflow to your needs Targeting Different Roles Modify the LinkedIn search URLs in the "Edit Variables" node to target different positions: "https://www.linkedin.com/jobs/search/?keywords=Controller" "https://www.linkedin.com/jobs/search/?keywords=Finance%20Director" "https://www.linkedin.com/jobs/search/?keywords=VP%20Finance" Adjusting Company Size Filters Change the maxEmployees parameter to focus on different company segments: Startups: 1-50 employees SMBs: 51-500 employees Enterprise: 500+ employees Customizing AI Analysis Enhance the GPT-4 prompt in the "AI Lead Analyzer" node to include: Industry-specific criteria Geographic preferences Technology stack requirements Company growth stage indicators Integration Options Extend the workflow by adding: Slack notifications** for new qualified leads Email alerts** for high-priority prospects CRM integration** (Salesforce, HubSpot, Pipedrive) Lead enrichment** with additional data sources Scheduling Automation Set up the workflow to run automatically: Daily**: For active prospecting campaigns Weekly**: For ongoing market research Monthly**: For periodic database updates Performance & Cost Optimization API Efficiency**: The workflow processes leads in batches to optimize API usage Smart Deduplication**: Avoids re-processing existing leads to reduce costs Configurable Limits**: Adjust batch sizes and employee count filters based on your needs Expected Costs**: Approximately $0.05-$0.20 per 100 analysed leads (OpenAI costs) Troubleshooting Common Issues: Rate Limiting**: Increase delays between API calls if you encounter rate limits Data Quality**: Review LinkedIn search URLs for relevance to your target market AI Accuracy**: Adjust prompts if categorisation doesn't match your criteria Airtable Errors**: Verify field names match exactly between workflow and base structure Support Resources: Apify LinkedIn Scraper Documentation OpenAI API Documentation Airtable API Reference Transform your lead generation process with this powerful, AI-driven workflow that delivers qualified prospects ready for immediate outreach.
by Niklas Hatje
Use case To guarantee an effective sales process deals must be distributed between sales reps in the best way. Normally, this involves manually assigning new deals that have come in. This workflow automates it for you! What this workflow does This workflow runs once a day and checks for unassigned deals in your Hubspot CRM. Once it finds one, it enriches the deal with information about the assigned contact and their company. It then checks the region of the assigned company before looking at the company's employee size. Based on this, it assigns the deal to the right sales rep within your company. Requirements New deals in Hubspot need to be unassigned in the beginning New deals have to have an attached contact that has an attached company in Hubspot The company needs to have values for region and employee count in Hubspot Setup The setup is quite straight forward and will probably take a few minutes only. Add your Hubspot credentials Customize your criterias for assigning deals in the Assign by Region and the following Assign nodes Make sure deals are assigned to the right salesrep in the Hubspot nodes at the end Activate the workflow Customizing this to your needs Adjust the trigger interval to your needs. Currently, it defaults to once a day Adjust your region settings by adding/updating/removing options in the respective node Adjust your employee size settings by adding/updating/removing options in the respective node Ideas to enhance this flow Wrap each region's assigned criteria into different sub-workflows for easier maintainability. This will not consume additional execution counts. Add more logic on what happens once a deal does not match any criteria you've set
by Stefan
Track n8n Node Definitions from GitHub and Export to Google Sheets Overview This workflow automatically retrieves and processes metadata from the official n8n GitHub repository, filters all available .node.json files, parses their structure, and appends structured information into a Google Sheet. Perfect for developers, community managers, and technical writers who need to maintain up-to-date information about n8n's evolving node ecosystem. Setup Instructions Prerequisites Before setting up this workflow, ensure you have: A GitHub account with API access A Google account with Google Sheets access An active n8n instance (cloud or self-hosted) Step 1: GitHub API Configuration Navigate to GitHub Settings β Developer Settings β Personal Access Tokens Generate a new token with public_repo permissions Copy the generated token and store it securely In n8n, create a new "GitHub API" credential Paste your token in the credential configuration and save Step 2: Google Sheets Setup Create a new Google Sheets document Set up the following column headers in the first row: node (Column A) - Node identifier/name nodeVersion (Column B) - Version of the node codexVersion (Column C) - Codex version number categories (Column D) - Node categories credentialDocumentation (Column E) - Credential documentation URL primaryDocumentation (Column F) - Primary documentation URL Note down the Google Sheets document ID from the URL Configure Google Sheets OAuth2 credentials in n8n Step 3: Workflow Configuration Import the workflow into your n8n instance Update the following placeholder values: Replace YOUR_GOOGLE_SHEETS_DOCUMENT_ID with your actual document ID Replace YOUR_WEBHOOK_ID if using webhook functionality Configure the GitHub API credentials in the HTTP Request nodes Set up Google Sheets credentials in the Google Sheets nodes Share your Google Sheets document with the email address associated with your Google OAuth2 credentials Grant "Editor" permissions to allow the workflow to write data Google Sheets Template Details The workflow creates a structured dataset with these columns: node**: Node identifier (e.g., n8n-nodes-base.slack) nodeVersion**: Version of the node (e.g., 1.0.0) codexVersion**: Codex version number (e.g., 1.0.0) categories**: Node categories (e.g., Communication, Productivity) credentialDocumentation**: URL to credential documentation primaryDocumentation**: URL to primary node documentation Customization Options Modifying Data Extraction You can customize the "Format Data" node to extract additional fields: Add new assignments in the Set node Modify the column mapping in the Google Sheets node Update your spreadsheet headers accordingly Changing Update Frequency To run this workflow on a schedule: Replace the Manual Trigger with a Cron node Set your desired schedule (e.g., daily, weekly) Configure appropriate timing to avoid API rate limits Adding Filters Customize the "Filter Node Files" code node to: Filter specific node types Include/exclude certain categories Process only recently updated nodes Features Fetches all node definitions from the n8n-io/n8n repository Filters for .node.json files only Downloads and parses metadata automatically Extracts key fields like node names, versions, categories, and documentation URLs Appends structured data to Google Sheets with batch processing Includes error handling and retry mechanisms Clears existing data before appending new information for fresh results Use Cases This workflow is ideal for: Track changes in official n8n node definitions over time Audit node categories and documentation links for completeness Build custom dashboards from node metadata Community management and documentation maintenance Integration planning and compatibility analysis
by Dvir Sharon
π Extract Google My Business Leads by Service & Location with Bright Data to Google Sheets This template requires a self-hosted n8n instance to run. A comprehensive n8n automation that extracts Google My Business listings by service type and geographic location using Bright Data's Google Maps dataset, with intelligent city expansion and automatic duplicate removal. π₯ Who is this for? Lead generation professionals Sales teams Marketing agencies Business development representatives Entrepreneurs conducting outreach or market research β What problem is this solving? Manual lead generation from Google Maps is time-consuming and inefficient. This workflow automates the process of finding businesses by service type and location, expanding searches across cities, removing duplicates, and organizing results in a structured format. βοΈ What this workflow does Input Processing Accepts service type, state, and country via web form Uses Claude AI to generate city lists Auto-categorizes services Creates search queries per city Data Collection Uses Bright Data's Google Maps dataset Processes in batches with rate limits Monitors scraping with retry logic Formats and handles API responses Quality Control Removes duplicates by name and phone Maintains clean data in Google Sheets Ensures structured, usable datasets π Output Data Points | Field | Description | Example | | :-------------- | :-------------------------- | :---------------------------- | | Business Name | Company or business name | TechFix Computer Repair | | Category | Business category type | Electronics | | Country | Country location | US | | City | Specific city searched | Austin | | Phone Number | Contact phone number | +1 (555) 123-4567 | | Website URL | Business website | https://techfix.com | | Google Maps URL | Direct Maps link | https://maps.google.com/... | | Address | Full business address | 123 Main St, Austin, TX | | Operating Hours | Business hours | Mon-Fri 9AM-6PM | | Google Rating | Star rating | 4.5 | | Total Reviews | Number of reviews | 127 | | Reviews URL | Link to reviews | https://maps.google.com/reviews... | π Setup Instructions Prerequisites n8n instance (self-hosted or cloud) Google account with Sheets access Bright Data account with Google Maps dataset access Anthropic API key for Claude AI Step-by-Step Import the workflow JSON into n8n Configure Bright Data credentials and dataset access Set up Google Sheets and OAuth2 credentials Configure Claude AI with your API key Replace all placeholder credential IDs and tokens. For improved security, use credentials instead of hardcoding the API token placeholder in the HTTP Request node. Test with sample data (e.g., "Coffee Shop" in California, US) Activate the workflow and use the form for submissions π How to Customize Modify Geographic Scope Add countries to the form dropdown Customize Claude prompts for city generation Adjust search logic for international markets Enhance Data Collection Add more fields from Bright Data Include revenue, employee count, social profiles Improve Duplicate Detection Use fuzzy matching for similar names Include address-based checks Customize Output Format Transform data for CRM compatibility Export to CSV, database, or multiple destinations Implement Advanced Features Integrate email finder services Include lead scoring logic Discover social media profiles Batch Processing Optimization Adjust batch sizes per Bright Data limits Use parallel processing and retry logic Integration Options Connect to CRMs like HubSpot or Salesforce Trigger email automation Integrate with marketing platforms
by Andrew
Who is this for? This workflow is ideal for n8n self-hosted users, DevOps engineers, and automation developers who want to automatically back up their n8n workflows to GitHub on a regular basis. What problem is this workflow solving Manually backing up n8n workflows can be time-consuming and prone to human error. This workflow automates the backup process, ensuring that all workflows are safely stored in a version-controlled GitHub repository every 24 hours. What this workflow does This automation runs daily to back up all workflows from your n8n instance to a specified GitHub repository. Each workflow is saved as a .json file using its unique ID, organized into a folder path defined by repo_path. The workflow is designed to manage memory usage efficiently by recursively calling itself. Once the backup is complete, it optionally sends a Slack notification to confirm success. Setup Configure the Config node in the subworkflow to set: GitHub Repo Owner GitHub Repo Name Main folder path (repo_path) Connect your GitHub and (optionally) Slack credentials. Set the workflow to run on a daily cron schedule. Test the workflow manually to confirm the GitHub integration works. Sign up for a free consultation and find out how n8n can help you.
by Incrementors
Description Activate this workflow once and every Friday at 5PM it automatically pulls your week's meeting data from Fireflies, calculates seven metrics, and emails a formatted report to your manager inbox. It tracks total meetings, total hours, average duration, busiest day, top participant, and longest meeting β plus a day-by-day breakdown and a numbered list of every meeting. Every week's summary is also logged to Google Sheets so you can track meeting load trends over time. Built for team leads, operations managers, and founders who want visibility into meeting time without manually checking Fireflies each week. What This Workflow Does Runs automatically every Friday** β Fires at 5PM every week so your end-of-week report arrives without any manual trigger Calculates seven meeting metrics** β Computes total meetings, total hours, average duration, busiest day, top participant, longest meeting, and a day-by-day breakdown from raw Fireflies data Identifies the busiest day** β Counts meetings per day of the week and surfaces which day had the most meetings and exactly how many Finds the top participant** β Counts how many meetings each person attended and surfaces the most-present person across the week Logs one summary row to Google Sheets** β Appends a 9-column weekly record for trend tracking so you can compare meeting load week over week Emails a formatted plain-text report** β Sends the full report with all metrics, daily breakdown, and numbered meeting list to your manager email automatically Exits cleanly with no meetings** β If no meetings were recorded this week, the workflow stops silently without sending an empty email Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with API access Google Sheets (one sheet with a tab named Weekly Meeting Report) Gmail account (used to send the weekly report) Credentials Required Fireflies API key (pasted into 2. Set β Config Values) Google Sheets OAuth2 Gmail OAuth2 Estimated Setup Time: 10β15 minutes Step-by-Step Setup Import the workflow β Open n8n β Workflows β Import from JSON β paste the workflow JSON β click Import Get your Fireflies API key β Log in to fireflies.ai β Settings β Integrations β 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 2 | | YOUR_GOOGLE_SHEET_ID | The ID from your Google Sheet URL (the string between /d/ and /edit) | | Weekly Meeting Report | Leave as-is, or change to match your sheet tab name exactly | | manager@yourcompany.com | The email address where the weekly report should be sent | | YOUR NAME | The sender name shown in the email sign-off | | YOUR COMPANY NAME | Your company name (shown in the email subject and body) | Create your Google Sheet β Open Google Sheets β add a tab named exactly Weekly Meeting Report β add these 9 column headers in row 1: Week, Total Meetings, Total Hours, Avg Duration (min), Busiest Day, Top Participant, Longest Meeting, All Participants, Logged At Connect Google Sheets β Open node 6. Google Sheets β Log Weekly Summary β click the credential dropdown β add Google Sheets OAuth2 β sign in with your Google account β authorize access Connect Gmail β Open node 7. Gmail β Send Weekly Report β click the credential dropdown β add Gmail OAuth2 β sign in with the Gmail account you want to send reports from β authorize access Activate the workflow β Toggle the workflow to Active β it will run automatically every Friday at 5PM > β οΈ To test immediately β Click on node 1. Schedule β Every Friday 5PM and use the manual Execute option to trigger a test run without waiting for Friday. How It Works (Step by Step) Step 1 β Schedule: Every Friday 5PM This step fires the workflow automatically every Friday evening at 5PM. No manual trigger is needed. Once the workflow is active, it runs on its own every week. Step 2 β Set: Config Values Your Fireflies API key, Google Sheet ID, sheet tab name, manager email, sender name, company name, and the 7-day date window are stored here. The week start and end dates are calculated automatically from today's date so you never need to update them manually. Step 3 β HTTP: Fetch Transcripts A request is sent to the Fireflies API using your API key. It retrieves the 100 most recent transcripts from your account β title, date, duration, and participants for each. Fetching 100 ensures meetings from busy weeks are not missed during the 7-day filter. Step 4 β Code: Calculate Meeting Metrics The 100 transcripts are filtered to only those recorded in the past 7 days. If no meetings are found, a hasMeetings: false flag is set and the result passes to the gate check. For weeks with meetings, seven metrics are calculated: total meeting count, total minutes and hours, average duration per meeting, busiest day of the week with count, top participant with count, longest meeting with title and duration, and a full list of all unique participants. A day-by-day breakdown is assembled showing meeting count and total minutes per day, sorted chronologically. A numbered meeting list is also built showing each meeting's date, title, and duration, sorted most recent first. Step 5 β IF: Meetings Found? This is the gate check. If meetings were found (YES path), the workflow continues to log and email the report. If no meetings were found this week (NO path), the workflow routes to 8. Set β No Meetings Skip and stops cleanly β no email is sent, no empty row is logged. Step 6 (No path) β Set: No Meetings Skip This step handles the empty-week case. It sets a brief message confirming no meetings were found and the workflow ends here for that run. Step 6 β Google Sheets: Log Weekly Summary One row is appended to your Weekly Meeting Report tab with all 9 columns: the week date range, total meetings, total hours, average duration, busiest day, top participant, longest meeting, all participants combined, and the logged-at timestamp. This runs before the email so the sheet is always up to date even if the email step fails. Step 7 β Gmail: Send Weekly Report A plain-text email is sent to your manager email address. The subject includes your company name and the week date range. The body contains the full summary section (all seven metrics), the day-by-day breakdown, the complete numbered meeting list, and a sign-off with your name and company. A footer notes that data has been logged to Google Sheets and that the report was auto-generated every Friday. The final result: every Friday evening your manager receives a clean, complete meeting hours report in their inbox β and one row is added to your Google Sheet for trend tracking. Key Features β Fully automated Friday delivery β Fires at 5PM every Friday with zero manual input after setup β Seven metrics calculated automatically β Total meetings, hours, average duration, busiest day, top participant, longest meeting, and daily breakdown β all from a single Fireflies API call β Top participant tracking β Counts appearances across all meetings and surfaces the most-present person so you can spot meeting bottlenecks β Trend-ready Google Sheets log β One row per week means you can chart meeting load trends, spot overloaded weeks, and compare month over month β Plain-text email format β Renders cleanly in any email client without HTML formatting issues β 100-transcript buffer β Fetches 100 recent transcripts to ensure high-volume weeks are never truncated during the 7-day filter β Clean empty-week exit β No meetings this week means a clean stop β no empty email, no blank Sheets row, no errors β Chronological daily breakdown β Day-by-day data is sorted by date, not alphabetically, so the breakdown reads naturally from Monday to Friday Customisation Options Change the report delivery day and time β In node 1. Schedule β Every Friday 5PM, edit the cron expression 0 17 * * 5 to change when the report fires. For example, 0 8 * * 1 sends a Monday morning summary of last week's meetings instead. Extend the date window to 30 days for a monthly report β In node 2. Set β Config Values, change {days: 7} in both the weekStart and sevenDaysAgoMs fields to {days: 30} and adjust the schedule to monthly for a full meeting hours report. Add a Slack summary alongside the email β After node 6. Google Sheets β Log Weekly Summary, add a Slack node that posts a short 3-line summary (total meetings, total hours, busiest day) to a #operations or #team-leads channel so the team sees it without checking email. Filter to specific meeting types only β In node 4. Code β Calculate Meeting Metrics, add a keyword filter on the meeting title before calculating metrics β for example, only include meetings with "client" or "sync" in the title to separate client time from internal meetings. Add a meeting-load alert β In node 4. Code β Calculate Meeting Metrics, add a check: if totalHours exceeds a threshold (e.g. 20 hours), set a heavyWeek flag to true. Then add an IF check after step 4 that sends an additional Slack or email alert flagging the overloaded week before the normal report runs. Troubleshooting Workflow not triggering on Friday: Confirm the workflow is toggled to Active β inactive workflows do not run on a schedule Check the cron expression in node 1. Schedule β Every Friday 5PM is exactly 0 17 * * 5 β any accidental edit breaks the schedule To test immediately, click on node 1 and use the manual Execute option Fireflies returning no transcripts or an auth error: Confirm YOUR_FIREFLIES_API_KEY in node 2. Set β Config Values is replaced with your actual key β not the placeholder text Get your key from fireflies.ai β Settings β Integrations β API Key If your team recorded more than 100 meetings in the past week, increase the limit value in node 3. HTTP β Fetch Transcripts from 100 to a higher number in the GraphQL query body Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node 6. Google Sheets β Log Weekly Summary is connected and not expired β re-authorize if needed Check that YOUR_GOOGLE_SHEET_ID in node 2. Set β Config Values matches the ID in your sheet URL exactly Confirm the tab is named Weekly Meeting Report exactly β capitalization must match sheetName in Config Values Verify all 9 column headers in row 1 match exactly: Week, Total Meetings, Total Hours, Avg Duration (min), Busiest Day, Top Participant, Longest Meeting, All Participants, Logged At Email not being received: Confirm the Gmail OAuth2 credential in node 7. Gmail β Send Weekly Report is connected and authorized with the correct sending account Check that manager@yourcompany.com in node 2. Set β Config Values is replaced with the actual recipient email address Check your spam or promotions folder β automated emails from Gmail OAuth2 sometimes land there on first send Check the execution log of node 7 for any error message from the Gmail API Metrics showing wrong totals or missing meetings: Confirm your n8n instance timezone is set correctly β the 7-day filter uses millisecond timestamps and timezone mismatches can cause meetings to fall outside the window If meetings are missing, check that the Fireflies transcripts were fully processed before Friday 5PM β transcripts still processing at trigger time will not appear in the results Check the execution log of node 4. Code β Calculate Meeting Metrics to see the raw list of meetings that passed the filter Support Need help setting this up or want a custom version built for your team or agency? π§ Email: info@incrementors.com π Website: https://www.incrementors.com/
by Pratyush Kumar Jha
Inbox2Ledger is an end-to-end n8n template that turns a noisy finance inbox into a clean, structured ledger. It fetches emails, uses AI guardrails to keep only finance-relevant messages, extracts invoice/receipt fields via an OCR-style agent, validates and auto-categorizes each expense, generates a unique case ID, and appends the result to a Google Sheet for accounting or downstream automations. Key Features Trigger*: Form submission or scheduled fetch (sample *On form submission node included) AI Filter**: Guardrail node determines whether an email is finance-related (payments, invoices, receipts) Keyword Filter**: Filters common invoice/bill/payment subject keywords Extraction**: Language-model agent returns normalized JSON: vendor_name invoice_date (YYYY-MM-DD) invoice_id total_amount tax_amount currency items_summary vendor_tax_id Validation**: Code node checks required fields and amount formats; flags extraction errors Categorization**: Rule-based expense categorizer (software & hosting, subscriptions, travel, payroll, etc.) with MCC/vendor fallbacks Output**: Appends structured rows to a Google Sheet with mapped columns: invoice_id, vendor_name, invoice_date, total_amount, currency, tax_amount, gl_category, approval_status, timestamp, case_id, items_summary, vendor_tax_id, processed_at High Accuracy**: Low false-positive rate using combined AI guardrails + subject filtering Quick Setup**: Example nodes and credentials pre-configured in the template Included Nodes & Flow Highlights On form submission (date picker trigger) β Get Email Content (Gmail) β Guardrail: Is Finance? (LangChain Guardrails) β IF (Guardrail Passed) β Filter Finance Keywords β AI Agent (Email OCR) β Validate Extraction β Check for Errors β Apply Finance Rules β Log to Invoices Sheet (Google Sheets) (Full node list and configuration included in the template.) Requirements & Credentials Gmail OAuth2 (read access)** β for fetching emails OpenAI API key (or compatible LLM)** β for guardrails & extraction Google Sheets OAuth2** β to append rows to the invoice sheet Recommended: Use the Google Sheet ID included in the template, or replace it with your own Sheet ID and gid. Quick Setup Guide π Demo & Setup Video Import the template into n8n Connect and authorize credentials: Gmail, Google Sheets, OpenAI (or preferred LLM) Update the Google Sheet ID / sheet gid if using your own sheet (Optional) Adjust the Guardrail topicalAlignment threshold or filter keywords Test using the form trigger or a single email, then enable the workflow Configuration Tips The extraction agent outputs a strict JSON schema β keep it for reliable downstream mapping Use a low LLM temperature (0.2) for deterministic extraction For non-USD currencies, ensure your accounting system supports the currency field or add a conversion step For high-volume inboxes, enable batching or rate-limit the Gmail node to avoid API quota issues Privacy & Security This template processes real email content and financial data β store credentials securely Restrict access to the n8n instance to authorized users only Review data-retention policies if using a hosted LLM service Example Use Cases Auto-log vendor invoices from email into an accounting Google Sheet Build an audit trail with case IDs for finance teams Preprocess incoming receipts before forwarding to AP tools or ERPs Tags (Recommended) finance, invoices, email, ai, ocr, google-sheets, automation, accounting, n8n-template
by Servify
This n8n template demonstrates how to build an autonomous AI assistant that handles real business tasks through natural conversation on Telegram. The example shows meeting scheduling with CRM lookup and calendar management, but the architecture supports any business automation you can imagine - simply add tools and the AI learns to use them automatically. Use cases are many: Try automating appointment scheduling, customer support tickets, invoice generation, lead qualification, email management, report generation, data entry, or task coordination! Good to know OpenAI API costs are minimal at ~$0.001 per conversation with GPT-4o-mini The AI agent makes autonomous decisions and can chain multiple tool calls to complete complex tasks Conversation context is not persisted between sessions (can be extended with a memory database) Calendar availability is checked for business hours (9 AM - 4 PM) by default The workflow assumes contacts are stored in Google Sheets with Name and Email columns This is production-ready code that can be deployed immediately for real business use How it works User sends a natural language message to the Telegram bot requesting a meeting The workflow extracts message content, chat ID, and user information CRM database is loaded from Google Sheets containing contact information The AI agent analyzes the request and autonomously decides which tools to use AI searches CRM for contacts, checks Google Calendar availability, and proposes 3 available time slots User confirms their preferred time through conversational reply Upon confirmation, the workflow creates a Google Calendar event with both parties invited A professional confirmation email is automatically sent via Gmail to the meeting attendee The entire multi-step process executes autonomously through simple conversation How to use Set up a Google Sheet as your CRM with columns: Name, Email, Phone Create a Telegram bot via BotFather and get your bot token Import this workflow and connect your credentials (Telegram, OpenAI, Google Sheets, Calendar, Gmail) Replace placeholder IDs with your actual Google Sheet ID and Calendar ID in the workflow nodes Activate the workflow to start listening for Telegram messages Test with: "Schedule a meeting with [contact name] tomorrow at 2 PM" Customize the AI Agent system prompt to match your scheduling preferences and timezone Requirements Telegram Bot Token (free from BotFather) OpenAI API account with GPT-4o-mini access Google Sheets OAuth2 credentials for CRM database access Google Calendar OAuth2 credentials for availability checking and event creation Gmail OAuth2 credentials for sending confirmation emails Customising this workflow Add new tools (APIs, databases, services) and the AI automatically learns to use them - no code changes needed Replace Telegram with Slack, WhatsApp, or SMS for different communication channels Extend capabilities beyond scheduling: invoice generation, customer support, lead qualification, report generation Connect external systems like HubSpot, Salesforce, QuickBooks, Asana, or custom APIs Add conversation memory by integrating a vector database for context-aware multi-turn conversations Implement approval workflows where AI drafts actions for human review before execution Build multiple specialized assistants with different tools and expertise for various business functions
by Avkash Kakdiya
How it works This workflow automatically generates personalized follow-up messages for leads or customers after key interactions (e.g., demos, sales calls). It enriches contact details from HubSpot (or optionally Monday.com), uses AI to draft a professional follow-up email, and distributes it across multiple communication channels (Slack, Telegram, Teams) as reminders for the sales team. Step-by-step 1. Trigger & Input Schedule Trigger β Runs automatically at a defined interval (e.g., daily). Set Sample Data β Captures the contactβs name, email, and context from the last interaction (e.g., βhad a product demo yesterday and showed strong interestβ). 2. Contact Enrichment HubSpot Contact Lookup β Searches HubSpot CRM by email to confirm or enrich contact details. Monday.com Contact Fetch (Optional) β Can pull additional CRM details if enabled. 3. AI Message Generation AI Language Model (OpenAI) β Provides the underlying engine for message creation. Generate Follow-Up Message β Drafts a short, professional, and friendly follow-up email: References previous interaction context. Suggests clear next steps (call, resources, etc.). Ends with a standardized signature block for consistency. 4. Multi-Channel Communication Slack Reminder β Posts the generated message as a reminder in the sales teamβs Slack channel. Telegram Reminder β Sends the follow-up draft to a Telegram chat. Teams Reminder β Shares the same message in a Microsoft Teams channel. Benefits Personalized Outreach at Scale β AI ensures each follow-up feels tailored and professional. Context-Aware Messaging β Pulls in CRM details and past interactions for relevance. Cross-Platform Delivery β Distributes reminders via Slack, Teams, and Telegram so no follow-up is missed. Time-Saving for Sales Teams β Eliminates manual drafting of repetitive follow-up emails. Consistent Branding β Ensures every message includes a unified signature block.
by Hemanth Arety
Handle WhatsApp customer inquiries with AI and intent routing (Whatsapp Chatbot) An intelligent, fully customizable WhatsApp customer support chatbot template that works for ANY business - whether you sell fashion, electronics, food, furniture, cosmetics, or anything else. This workflow combines pre-built responses for common queries with AI for complex questions, creating a cost-effective 24/7 customer support solution that adapts to your specific products and services. Who it's for This universal template works for ANY business type: E-commerce stores** (fashion, electronics, home goods, beauty, etc.) Local retail shops** (boutiques, grocery stores, bookshops, etc.) Service businesses** (salons, repair services, consultancies, etc.) Restaurants & cafes** (food delivery, reservations, menu inquiries) Any business** using WhatsApp Business API for customer communication What it does This is a UNIVERSAL template - it works for ANY business by simply updating the product categories, company information, and response templates. No coding knowledge required for basic customization! The workflow automates WhatsApp customer support through intelligent routing and AI assistance: Receives WhatsApp messages via WhatsApp Business API webhook trigger Parses message data extracting user info, chat ID, and message text Classifies intent using pattern matching to determine what the customer wants (product inquiry, contact info, support, greeting, etc.) Routes intelligently to the most appropriate response handler: Product inquiries β Pre-built catalog responses with pricing and links Contact information β Static company details (address, phone, hours) Complex queries β AI agent with full company context Maintains conversation context using memory to remember previous messages Sends formatted responses back to the customer via WhatsApp with markdown formatting The hybrid approach (pre-built responses + AI) balances speed, cost, and intelligence - common questions get instant answers while complex queries receive personalized AI assistance. How to set up Requirements You'll need: WhatsApp Business API** access (via Twilio, 360Dialog, Meta Cloud API, or other providers) Google Gemini API key** (for AI responses) - Get API key Google Docs** (optional - for product catalog reference) n8n instance** with WhatsApp nodes installed Setup Steps Configure WhatsApp Business API Sign up with a WhatsApp Business API provider (Twilio, 360Dialog, or Meta) Get your API credentials (phone number ID, access token, webhook verify token) Add credentials to n8n's WhatsApp node Copy the webhook URL from n8n and configure it in your provider's dashboard Customize Company Information Open the "Build AI System Prompt" node Replace all placeholder text with your actual company details: Company name Address and phone numbers Email and website Product categories and brands Policies (COD, warranty, returns, delivery) Store hours Configure Product Responses Edit the "Generate Product Response" node Replace the sample products with your actual catalog: Product names and specifications Prices (update currency if not using INR) Product URLs from your website Add/remove product categories as needed Update Contact Details Edit the "Generate Contact Info Response" node Add your complete contact information Update store hours and addresses Set Up AI Credentials Add your Google Gemini API key to the credential manager (Optional) Connect Google Docs if you want to use a product catalog document Activate and Test Activate the workflow in n8n Send test messages to your WhatsApp Business number Test different intents: greetings, product questions, contact requests Verify responses are accurate and timely WhatsApp Business API Providers Option 1: Meta Cloud API (Official, free for moderate usage) Sign up at: https://developers.facebook.com/ Requires Facebook Business account Best for: Small to medium businesses Option 2: Twilio (Reliable, paid service) Sign up at: https://www.twilio.com/whatsapp Pay-per-message pricing Best for: Businesses needing high reliability Option 3: 360Dialog (WhatsApp-focused) Sign up at: https://www.360dialog.com/ Competitive pricing Best for: WhatsApp-heavy businesses Option 4: MessageBird, Vonage, others Various pricing and features Research and compare based on your needs How it works Intent Classification System The workflow uses keyword pattern matching to classify user intent into these categories: Priority 1: Contact Information (highest priority) Triggers: "where is store", "address", "contact", "phone number" Response: Static contact details Why first: Users asking for contact info need immediate, accurate answers Priority 2: Greetings Triggers: "hi", "hello", "hey", "good morning" Response: Friendly welcome with menu options Helps: Sets a positive tone for the conversation Priority 3: Product Inquiries Triggers: Category keywords (monitor, processor, GPU, RAM, etc.) Response: Pre-built catalog with products, prices, and links Categories: Customizable based on your products Priority 4: AI Fallback Triggers: Everything else (comparisons, complex questions, multi-step queries) Response: Google Gemini AI with company knowledge Features: Conversation memory, personalized recommendations Response Architecture Pre-Built Responses (Fast & Cost-Effective) Instant answers (no API calls) Handles 70-80% of queries Consistent, accurate information No ongoing costs Used for: Product lists, contact info, FAQs AI Agent (Intelligent & Flexible) Handles complex questions Maintains conversation context Provides personalized recommendations Adapts to different query styles Used for: Comparisons, custom builds, technical questions Conversation Memory The workflow uses buffer window memory to remember recent conversation: Stores last 10 messages per user Enables multi-turn conversations AI can reference previous questions Creates more natural interactions Memory is user-specific (isolated by user ID) Message Flow Example User: "Hi" β Intent: greeting β Response: Welcome message with menu User: "Show me monitors" β Intent: product_inquiry (monitors) β Response: Pre-built list of monitors with prices User: "Which one is best for gaming?" β Intent: general_inquiry (complex) β Response: AI analyzes previous context (monitors) and recommends gaming-focused option User: "What's your address?" β Intent: contact_info β Response: Complete contact details How to customize the workflow STEP 1: Customize Product Categories The workflow comes with example categories for multiple business types. Replace them with YOUR categories: For a Fashion Store: const categories = [ { pattern: /(shirt|tshirt|top)/i, category: 'tops' }, { pattern: /(jeans|pants|trousers)/i, category: 'bottoms' }, { pattern: /(dress|gown|kurti)/i, category: 'dresses' }, { pattern: /(shoe|footwear|heels)/i, category: 'shoes' }, ]; For a Grocery Store: const categories = [ { pattern: /(vegetable|veggies)/i, category: 'vegetables' }, { pattern: /(fruit|fruits)/i, category: 'fruits' }, { pattern: /(dairy|milk|cheese)/i, category: 'dairy' }, { pattern: /(snack|chips|biscuit)/i, category: 'snacks' }, ]; For a Beauty/Cosmetics Store: const categories = [ { pattern: /(skincare|cream|serum)/i, category: 'skincare' }, { pattern: /(makeup|lipstick|foundation)/i, category: 'makeup' }, { pattern: /(perfume|fragrance)/i, category: 'perfumes' }, { pattern: /(hair|shampoo|conditioner)/i, category: 'haircare' }, ]; For a Home Furniture Store: const categories = [ { pattern: /(sofa|couch)/i, category: 'sofas' }, { pattern: /(bed|mattress)/i, category: 'bedroom' }, { pattern: /(table|desk|dining)/i, category: 'tables' }, { pattern: /(chair|seating)/i, category: 'chairs' }, ]; For a Restaurant: const categories = [ { pattern: /(pizza|italian)/i, category: 'italian' }, { pattern: /(burger|sandwich)/i, category: 'fast_food' }, { pattern: /(biryani|curry|indian)/i, category: 'indian' }, { pattern: /(dessert|sweet|ice cream)/i, category: 'desserts' }, ]; STEP 2: Customize Product Responses Update the "Generate Product Response" node with YOUR actual products: Example for Fashion Store: if (category === 'tops') { response = Hi ${userName}! Check out our TOPS collection:\\n\\n; response += π Cotton Casual T-Shirt\\n π° βΉ499\\n π¨ 5 colors available\\n π yourstore.com/tshirts\\n\\n; response += π Formal Shirt\\n π° βΉ899\\n π Buy 2 Get 20% OFF\\n π yourstore.com/shirts\\n\\n; } Example for Grocery Store: if (category === 'vegetables') { response = Fresh VEGETABLES available, ${userName}:\\n\\n; response += π₯ Fresh Carrots (1kg)\\n π° βΉ40\\n π± Organic\\n\\n; response += π Tomatoes (1kg)\\n π° βΉ30\\n β Farm Fresh\\n\\n; } Example for Restaurant: if (category === 'italian') { response = Delicious ITALIAN dishes, ${userName}:\\n\\n; response += π Margherita Pizza\\n π° βΉ299\\n π¨βπ³ Chef's Special\\n\\n; response += π Creamy Alfredo Pasta\\n π° βΉ349\\n π₯ Bestseller\\n\\n; } STEP 3: Update Company Information Edit the "Build AI System Prompt" node: For a Boutique: const systemPrompt = `You are a customer service assistant for Elegant Threads Boutique. COMPANY INFORMATION: Business: Women's Designer Clothing Boutique Products: Ethnic wear, western wear, accessories Price Range: βΉ1,500 - βΉ15,000 Speciality: Custom tailoring available Store Address: Shop 12, Fashion Street, Mumbai Phone: +91 98XXXXXXXX Delivery: Pan-Mumbai, 2-3 days Returns: 7-day no-questions-asked return policy `; For a Tech Store: const systemPrompt = `You are customer support for TechHub Electronics. COMPANY INFORMATION: Business: Consumer Electronics Retailer Products: Smartphones, laptops, accessories, home appliances Price Range: βΉ500 - βΉ2,00,000 Speciality: Same-day delivery in Delhi NCR Warranty: Extended warranty on all electronics Store: Connaught Place, New Delhi Phone: +91 11-XXXXXXXX `; For a Bakery: const systemPrompt = `You are the assistant for Sweet Delights Bakery. COMPANY INFORMATION: Business: Fresh Baked Goods & Custom Cakes Products: Cakes, pastries, cookies, bread Price Range: βΉ50 - βΉ3,000 Speciality: Custom cakes for all occasions (24hrs notice) Store: Baker Street, Bangalore Phone: +91 80-XXXXXXXX Delivery: Free above βΉ500 within 5km `; Additional Customization Options Change AI Model Replace Google Gemini with other LLM providers: OpenAI GPT-4**: Best for nuanced understanding Anthropic Claude**: Strong at following instructions Llama** (self-hosted): Cost-effective for high volume Simply swap the "Google Gemini Chat Model" node with your preferred model. Add More Intents Extend the intent classification in the "Classify User Intent" node: // Add order tracking if (/track.order|order.status|where.*order/i.test(text)) { intent = 'order_tracking'; } // Add complaint handling if (/complaint|unhappy|problem|issue|refund/i.test(text)) { intent = 'complaint'; } // Add shipping questions if (/shipping|delivery|courier|when.*arrive/i.test(text)) { intent = 'shipping_inquiry'; } Then add corresponding response nodes in the routing switch. Integrate with CRM Connect to HubSpot: Add HubSpot node after intent classification Log every conversation as a ticket Create contacts automatically Track customer journey Connect to Salesforce: Use Salesforce node to create leads Update opportunity stages based on intent Log interactions in Activity History Connect to Airtable: Store conversations in Airtable database Analyze common questions Build knowledge base from real conversations Add Multi-Language Support Method 1: Google Translate API Detect message language Translate to English for processing Translate response back to user's language Method 2: Multilingual AI Add language preference to AI prompt Train AI on multilingual responses Support major languages natively Rich Media Responses Send images: return [{ chatId: chatId, image: 'https://yoursite.com/product.jpg', caption: 'Check out this product!' }]; Send documents: Product catalogs (PDF) Warranty cards Invoice copies Installation guides Send location pins: Store locations Delivery tracking Service centers Human Handoff Logic Add escalation for complex issues: // Check if AI can't help if (complexityScore > 8 || sentiment === 'angry') { // Notify human agent // Transfer conversation // Set status: 'awaiting_agent' } Integrate with: Intercom for live chat handoff Slack for agent notifications Zendesk for ticket creation Connect to Inventory Real-time stock checking: Query your database for availability Show "In Stock" / "Out of Stock" status Suggest alternatives for unavailable products Notify customers when items are restocked Dynamic pricing: Pull current prices from database Apply promotional discounts automatically Show time-sensitive offers Add Analytics Track metrics: Messages per day/week/month Most common intents AI usage vs. pre-built responses Average response time Customer satisfaction scores Integration options: Google Analytics for website tracking Mixpanel for event tracking Custom dashboard in Grafana Google Sheets for simple logging Business Hours Management Add business hours logic: const now = new Date(); const hour = now.getHours(); const isBusinessHours = (hour >= 10 && hour < 20); // 10 AM - 8 PM if (!isBusinessHours) { return [{ response: "We're currently closed. Our hours are 10 AM - 8 PM. We'll respond when we open!" }]; } A/B Testing Responses Test different response styles: Formal vs. casual tone With/without emojis Short vs. detailed answers Different CTAs Track which versions lead to more sales/conversions. Tips for best results 1. Start Simple Begin with 3-5 main intents Add more as you see common patterns Don't over-complicate the initial setup 2. Monitor and Iterate Review conversations weekly Identify missed intents Refine pattern matching Update product information regularly 3. Balance Pre-Built vs. AI Use pre-built for: FAQs, product lists, contact info (fast, cheap) Use AI for: Comparisons, complex queries, personalization (slower, costs money) Aim for 70-80% pre-built, 20-30% AI 4. Optimize Response Times Pre-built responses are instant AI responses take 2-5 seconds Set user expectations ("Let me check that for you...") 5. Test Different Scenarios Happy path (normal inquiries) Edge cases (misspellings, slang) Multi-turn conversations Multiple topics in one message 6. Keep Responses Concise WhatsApp users prefer short messages Use formatting (bold, bullets) for readability Break long responses into multiple messages 7. Maintain Brand Voice Customize AI system prompt with your brand personality Use consistent tone across all responses Include brand-appropriate emojis 8. Handle Failures Gracefully Add error handling for API failures Have fallback responses ready Always offer human contact option 9. Respect Privacy Don't store sensitive information Comply with GDPR/local privacy laws Allow users to delete their data 10. Monitor Costs Track Gemini API usage Set spending alerts Optimize prompt length to reduce token usage Common use cases across industries Fashion & Apparel Store Answer size and fit questions Share new collection arrivals Check stock availability by size/color Process exchange requests Share styling tips Electronics & Tech Store Provide product specifications Compare different models Check warranty information Share installation guides Handle technical support queries Grocery & Food Store Check product availability Share daily fresh stock updates Take bulk orders Provide recipe suggestions Handle delivery slot bookings Beauty & Cosmetics Recommend products for skin types Share ingredient information Explain usage instructions Handle shade/color queries Process return for wrong products Home Furniture Store Share dimensions and specifications Check delivery timelines Provide assembly instructions Schedule store visits Custom furniture inquiries Restaurant & Cafe Share menu and prices Take table reservations Handle takeaway orders Answer dietary restriction questions Share daily specials Jewelry Store Share designs and prices Book appointments for trials Check customization options Verify metal purity/certifications Handle repair inquiries Bookstore Check book availability Take pre-orders for new releases Recommend books by genre Share reading lists Handle exchange requests Important Notes: This workflow requires WhatsApp Business API (not regular WhatsApp Business app) WhatsApp Business API typically requires business verification Message rates and limits vary by provider Test thoroughly before deploying to customers Always provide a way to reach human support Getting Started Tip: Start with just contact info and product inquiries. Once that works smoothly, add AI responses for complex queries. Gradually expand based on actual customer needs you observe in conversations.