Creating a AI Slack bot with Google Gemini
This is an example of how we can build a slack bot in a few easy steps Before you can start, you need to o a few things Create a copy of this workflow Create a slack bot Create a slash command on slack and paste the webhook url to the slack command Note Make sure to configure this webhook using a https:// wrapper and don't use the default http://localhost:5678 as that will not be recognized by your slack webhook. Once the data has been sent to your webhook, the next step will be passing it via an AI Agent to process data based on the queries we pass to our agent. To have some sort of a memory, be sure to set the slack token to the memory node. This way you can refer to other chats from the history. The final message is relayed back to slack as a new message. Since we can not wait longer than 3000 ms for slack response, we will create a new message with reference to the input we passed. We can advance this using the tools or data sources for it to be more custom tailored for your company. Usage To use the slackbot, go to slack and click on your set slash command eg /Bob and send your desired message. This will send the message to your endpoint and get return the processed results as the message. If you would like help setting this up, feel free to reach out to zacharia@effibotics.com
Rate limiting and waiting for external events
Task: Control your data flow with rate limits and external cues Main use cases: Control the rate of items flow into one or more services in your workflow Wait for external events to occur before continuing with the rest of the workflow
Create, update posts 🛠️ Wordpress tool MCP server 💪 all 12 operations
Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator? Join the community Complete MCP server exposing all Wordpress Tool operations to AI agents. Zero configuration needed - all 12 operations pre-built. ⚡ Quick Setup Import this workflow into your n8n instance Activate the workflow to start your MCP server Copy the webhook URL from the MCP trigger node Connect AI agents using the MCP URL 🔧 How it Works • MCP Trigger: Serves as your server endpoint for AI agent requests • Tool Nodes: Pre-configured for every Wordpress Tool operation • AI Expressions: Automatically populate parameters via $fromAI() placeholders • Native Integration: Uses official n8n Wordpress Tool tool with full error handling 📋 Available Operations (12 total) Every possible Wordpress Tool operation is included: 🔧 Post (4 operations) • Create a post • Get a post • Get many posts • Update a post 🔧 Page (4 operations) • Create a page • Get a page • Get many pages • Update a page 👤 User (4 operations) • Create a user • Get a user • Get many users • Update a user 🤖 AI Integration Parameter Handling: AI agents automatically provide values for: • Resource IDs and identifiers • Search queries and filters • Content and data payloads • Configuration options Response Format: Native Wordpress Tool API responses with full data structure Error Handling: Built-in n8n error management and retry logic 💡 Usage Examples Connect this MCP server to any AI agent or workflow: • Claude Desktop: Add MCP server URL to configuration • Custom AI Apps: Use MCP URL as tool endpoint • Other n8n Workflows: Call MCP tools from any workflow • API Integration: Direct HTTP calls to MCP endpoints ✨ Benefits • Complete Coverage: Every Wordpress Tool operation available • Zero Setup: No parameter mapping or configuration needed • AI-Ready: Built-in $fromAI() expressions for all parameters • Production Ready: Native n8n error handling and logging • Extensible: Easily modify or add custom logic > 🆓 Free for community use! Ready to deploy in under 2 minutes.
AI-Powered Cold Calling Automation with Vapi.ai, GPT-4o & Google Sheets
📞AI-Powered Cold Calling Automation with Vapi.ai, GPT-4o & Google Sheets Overview Transform your lead list into an AI-powered calling machine. This workflow automates your entire cold calling process using Vapi's conversational AI to initiate calls, qualify leads, capture detailed insights, and manage intelligent follow-ups - achieving 10x more calls than manual efforts while maintaining personalized, professional conversations. Built for sales teams, recruiters, and customer success professionals who need to scale outreach without sacrificing quality or adding headcount. 🎯 Use Cases Sales & Business Development Lead Qualification: Auto-dial new leads to assess interest and budget Demo Scheduling: Book meetings with qualified prospects automatically Re-engagement: Win back cold leads with personalized outreach Product Launches: Announce new features to your entire customer base Recruitment & HR Candidate Screening: Conduct first-round interviews at scale Interview Scheduling: Coordinate availability without back-and-forth Reference Checks: Automate reference verification calls Offer Follow-ups: Ensure candidates received and understood offers Customer Success Onboarding Calls: Welcome new customers with consistent messaging Renewal Reminders: Proactively reach out before contract expiration Upsell Campaigns: Identify expansion opportunities through conversations NPS Surveys: Gather voice feedback for authentic insights Market Research Customer Interviews: Collect qualitative feedback at scale Product Validation: Test new concepts with target audiences Competitive Intelligence: Understand why customers chose competitors Industry Surveys: Gather market trends through conversational data ⚙️ How it Works The workflow operates through two parallel processes: Process 1: Call Initiation (Manual/On-Demand) Trigger: Manual start or scheduled batch processing Lead Retrieval: Fetches leads marked "Pending" or "Retry Scheduled" from Google Sheets Validation: Checks retry count (max 5 attempts) and routes accordingly API Call: Sends request to Vapi with lead details and AI assistant configuration Status Update: Marks lead as "Call Initiated" with unique call ID Batch Processing: Loops through all eligible leads with controlled pacing Process 2: Result Collection (Every 10 Minutes) Schedule Trigger: Automatic execution every 10 minutes Active Call Check: Identifies all "Call Initiated" records Result Fetching: Retrieves call outcomes from Vapi API Data Processing: Extracts recordings, transcripts, summaries, and interest scores Sheet Update: Writes complete results or schedules retry for missed calls Team Notification: Sends Slack alerts on batch completion 📋 Setup Instructions Prerequisites n8n Instance: Version 1.0.0+ (self-hosted or cloud) Google Account: With Sheets API enabled Vapi Account: Active subscription with API access Slack Workspace: Optional, for notifications Step 1: Prepare Your Lead Database Create a Google Sheet with these exact columns (case-sensitive): Customer_id | Name | Phone Number | Email | Status | Recording URL | Transcript | Summary | Interest | Call Duration | Retry count | Last attempt | Call ID Initial Setup: Customer_id: Unique identifier (e.g., LEAD001) Name: Full name for personalization Phone Number: International format (+14155551234) Email: For follow-up campaigns Status: Set to "Pending" Retry count: Set to 0 Other fields: Leave empty (auto-populated) Step 2: Configure Vapi AI Assistant Create Your AI Voice Agent Log into vapi.ai Navigate to Assistants → Create New Design your conversation flow Configure voice settings (gender, accent, speed) Set up objection handling Save and copy the Assistant ID Set Up Phone Number Go to Phone Numbers → Purchase/Import Select local or toll-free number Configure caller ID settings Copy the Phone Number ID Step 3: Import & Configure Workflow Import to n8n Download Coldcallingloop.json In n8n: Import → From File Select the JSON file Connect Credentials Google Sheets: OAuth2 authentication Vapi API: HTTP Header Auth Name: Authorization Value: Bearer YOURAPIKEY Slack: OAuth2 (optional) Update Configuration All Google Sheets nodes: Select your spreadsheet HTTP Request nodes: Update assistantId and phoneNumberId Slack nodes: Choose notification channels Step 4: Test & Deploy Add test lead with your phone number Execute workflow manually Answer call and complete conversation Verify results in Google Sheet Activate workflow for production 🔄 Workflow Logic Explained Status Flow Diagram [New Lead: Pending] → [Call Initiated] → [Completed/Failed] ↓ [Retry Scheduled] ← (if failed & retry < 5) Key Decision Points Retry Limit Check (If1 Node) Condition: Retry count ≤ 5 True: Proceed with call False: Mark as "Max Retries Reached" Call Completion Check (If2 Node) Validates: Recording exists, transcript available, analysis complete Success: Update with full results Failure: Schedule retry with incremented counter Status Routing (If4 Node) "Pending": Direct to call queue "Retry Scheduled": Add wait period before calling 📊 Node Reference Guide Core Processing Nodes | Node | Type | Purpose | Configuration | |------|------|---------|---------------| | Get Leads from Sheet1 | Google Sheets | Fetches eligible leads | Filter: Status = "Pending" OR "Retry Scheduled" | | HTTP Request | HTTP | Initiates Vapi call | POST to api.vapi.ai/call with assistant config | | Loop Over Items | Split In Batches | Processes leads individually | Batch size: 1, ensures sequential processing | | Get Call Data | HTTP | Retrieves call results | GET from api.vapi.ai/call?id={callId} | | Edit Fields2 | Set | Formats result data | Maps Vapi response to sheet columns | Status Management Nodes | Node | Updates | Trigger | |------|---------|---------| | Update Status - Calling1 | "Call Initiated" | After successful API call | | Update Status - Calling | "Done" + results | When call completed successfully | | Update Status - for Missed call | "Retry Scheduled" | When call failed/no answer | | Update Status - Calling3 | "Retry Done" | After retry limit reached | Control Flow Nodes | Node | Function | Logic | |------|----------|-------| | If1 | Retry validation | Checks retry count ≤ 5 | | If2 | Result validation | Verifies call completion | | Wait | Retry delay | Pauses before retry attempt | | Merge | Path combination | Unifies success/retry flows | 🛠️ Customization Guide Modify Retry Strategy javascript // Add to Code node for progressive delays const retryCount = $json["Retry count"]; const delays = { 1: 30, // 30 minutes 2: 120, // 2 hours 3: 1440, // Next day 4: 2880, // 2 days 5: 10080 // 1 week }; return { waitMinutes: delays[retryCount] || 60 }; Add Business Hours Check javascript // Add before HTTP Request node const now = new Date(); const hour = now.getHours(); const day = now.getDay(); const isWeekday = day >= 1 && day <= 5; const isBusinessHours = hour >= 9 && hour <= 17; if (!isWeekday || !isBusinessHours) { throw new Error('Outside calling hours'); } Enhance Lead Context json { "assistantId": "your-assistant-id", "phoneNumberId": "your-phone-id", "customer": { "number": "+{{ $json['Phone Number'] }}", "name": "{{ $json.Name }}", "customData": { "company": "{{ $json.Company }}", "lastPurchase": "{{ $json['Last Purchase Date'] }}", "accountValue": "{{ $json['Account Value'] }}", "preferredProduct": "{{ $json['Product Interest'] }}" } } } 💡 Sticky Notes Configuration Note 1: Status Progression Location: Near Google Sheets nodes 📊 LEAD STATUS FLOW: Pending → Call Initiated → Done/Retry Scheduled Retry Scheduled → Call Initiated → Done/Failed ⚠️ Max retries: 5 attempts ❌ Failed = No answer after 5 tries ✅ Done = Call completed with results Note 2: Phone Format Requirements Location: Near HTTP Request nodes 📱 PHONE NUMBER FORMAT: ✅ Correct: +14155551234 ❌ Wrong: (415) 555-1234 ❌ Wrong: 415-555-1234 Must include: Plus sign (+) Country code No spaces or symbols Note 3: Vapi Setup Checklist Location: At workflow start 🔧 VAPI CONFIGURATION: □ Assistant ID copied from Vapi □ Phone Number ID from Vapi □ API Key in credentials □ Credits available □ Assistant tested in playground Note 4: Performance Guidelines Location: Near Loop nodes ⚡ OPTIMIZATION TIPS: • Batch size: 10-20 leads • Call hours: 9 AM - 5 PM local • Delay between calls: 5 seconds • Monthly archive old records • Monitor Vapi credit usage Common Issues & Solutions 🔴 "Authentication Failed" Cause: Expired or invalid credentials Fix: Re-authenticate Google Sheets OAuth Verify Vapi API key is active Check credential permissions 🔴 "Call Not Initiating" Cause: Invalid phone format or Vapi configuration Fix: Ensure phone includes country code Verify Vapi account has credits Test assistant in Vapi playground Check assistant and phone IDs 🔴 "Missing Results" Cause: Call still processing or webhook failure Fix: Wait 3-5 minutes for processing Check Vapi dashboard directly Verify Get Call Data node query Review If2 conditions 🔴 "Infinite Loop" Cause: Status not updating correctly Fix: Check retry count increment logic Verify status update mappings Clear test data and restart 🔴 "No Slack Notifications" Cause: Bot permissions or channel access Fix: Invite bot to channel Verify OAuth scopes Test Slack node individually 📁 Required Files & Resources | File | Description | Location | |------|-------------|----------| | Coldcallingloop.json | Complete workflow configuration | Main workflow file | | lead_template.xlsx | Google Sheets template with headers | Sample data file | 🏷️ Tags & Categories Primary Category Sales & Marketing Automation Workflow Tags cold-calling vapi-ai voice-automation lead-generation ai-sales google-sheets outbound-calling sales-automation conversational-ai crm-automation Use Case Tags b2b-sales recruitment customer-success market-research appointment-setting lead-qualification follow-up-automation Integration Tags vapi google-sheets slack voice-ai telephony 🚀 Future Enhancements Planned Features CRM Integration: Direct sync with Salesforce/HubSpot Multi-language: Support for 10+ languages SMS Follow-up: Automated text after calls Analytics Dashboard: Real-time performance metrics Sentiment Analysis: Emotional intelligence scoring Community Roadmap Webhook support for real-time updates Custom voice training options A/B testing for scripts Predictive best time to call Integration with calendar systems 📞 Support & Resources Support email : amitswba@gmail.com
Get all the entries from Contentful
No description available.
Run Apache Airflow DAG and retrieve XCom value
Run Apache Airflow DAG and Retrieve XCom Value What this workflow does This workflow integrates the Apache Airflow API DAGRun and XCom. It enables n8n to trigger Airflow DAGs and retrieve the execution results. Preparation: Update Airflow API Link Prefix Navigate to the airflow-api node. Update the prefix of the Airflow API link in the format: http(s)://ip:port. Example: https://airflow.example.com Configure Authentication Go to the Airflow: dag_run node. Update the Basic Auth credentials with your Airflow username and password. Repeat this step for Airflow: dagrun - state and Airflow: dagrun - get result nodes. Security Note: Using Basic Authentication requires storing credentials in plaintext. If possible, consider using API Keys or Tokens for enhanced security. An example is setting Airflow's API Authentication to basic\_auth. Choose other authentication methods if needed. Ensure the user account has the following permissions: can create on DAG Runs, can read on DAG Runs, can read on XComs, can edit on DAGs, and can read on DAGs. How to Use: To execute this workflow, use the Execute Sub-workflow node with the following input parameters: dag\_id: The DAG ID (name) in Airflow that you want to trigger. task\id: The Task ID (name) from which you want to retrieve the XCom return\value. conf: Input data for the Airflow DAG run. wait: Delay (in seconds) between each Airflow: dag_run - state check. wait\time: The maximum time (in seconds) to wait for Airflow: dagrun - state before returning an error. Output: The workflow returns the XCom result from Airflow: dag_run - get result. The XCom return_value is stored in the value field.
Track multi-broker investment portfolio with Google Sheets and Telegram alerts
All-in-One Portfolio Tracker & Telegram Finance Updates Workflow for n8n: Multi-Broker, Real-Time, Global 🚀 Overview Take control of all your investments—across multiple brokers and platforms—in one place, with live updates sent directly to your Telegram! 🌍💸 This n8n template brings together Google Sheets and Telegram so you can track your complete finance portfolio with ease, whether you’re in the US market, India, or anywhere in the world. 🔧 Built By - akash@codescale.tech How This Workflow Works Tracks your investments across multiple brokers, platforms, or asset types. Automatically sends updates to your Telegram account—see daily Profit & Loss (P&L), changes, and total returns in a rich, emoji-filled report. Works globally, with a sample provided for the US market, but can be configured for any country and broker. Schedule automated updates (e.g., market close/open) or get real-time insights on demand with Telegram commands. Highlights & Features 📊 Unified Dashboard: Integrate all your broker data in one Google Sheet for effortless monitoring (Google Sheet Link - https://docs.google.com/spreadsheets/d/1dakq9EhU8GrDgBsk82KvAen0N1P3FySAwNHFtG2lsLI/edit?usp=sharing) 🤖 Interactive Telegram Bot: Send /total or a specific broker’s name in the Telegram chat to get instant, formatted portfolio summaries. ⏰ Automatic Notifications: Receive scheduled P&L summaries at market open and close. 🗂️ Customizable for Any Region or Broker: Just update your Google Sheet with the platforms or brokers you use—including those in the US, Europe, Asia, etc. 🔐 Secure and Private: Only your pre-set Telegram user or chat receives the sensitive financial update. Example (For US Market) Let’s imagine you have portfolios with Robinhood, E*TRADE, and Charles Schwab. Every day at 10AM and 4PM Eastern Time, or whenever you send the /total command, you get this on Telegram: 📊 Daily P&L Report 🔹 Robinhood Invested: $5,000.00 P&L: $250.00 (5.00%) Change: $30.00 (0.60%) Current Value: $5,250.00 🔹 E*TRADE Invested: $8,000.00 P&L: $400.00 (5.00%) Change: $45.00 (0.56%) Current Value: $8,400.00 📈 Total Portfolio Total Invested: $13,000.00 Total P&L: $650.00 (5.00%) Today's Change: $75.00 (0.58%) 💰 Overall Value: $13,650.00 📈 Overall Return: 5.00% 💸 Overall P&L: $650.00 Easy Setup Steps Copy the Template to Your n8n Instance: Just import the provided workflow JSON. Configure Your Google Sheet: List all your brokers/platforms as rows (US, EU, or any other market). Update your credentials in n8n for Google Sheets and Telegram. Set Your Telegram Chat ID: Secure, so only you or your group receive updates. Customize Schedules: Change times for your local market hours or as you prefer. Send Commands in Telegram: /total for overall summary /Robinhood, /ETRADE, etc., for individual broker updates Who Is This For? Investors managing accounts across several brokers. Traders seeking real-time daily summaries. Portfolio managers wanting one consolidated, secure view. Users in any country, for any major market. Make It Yours! 🌏 Customize the sheet and workflow for your unique blend of accounts, currencies, and platforms—track mutual funds, stocks, ETFs, cryptos, or more. Get peace of mind with every notification, organized and delivered just for you! Start tracking smarter, not harder. Transform your finance workflow with n8n + Telegram today! 🚀
Complete client onboarding: Form to Monday.com, Google Drive & Email
Overview Streamline your entire client onboarding process with a single workflow. When a new client submits the intake form, this automation creates a Monday.com item, generates a complete Google Drive folder structure from your template, updates the Monday item with the folder link, and sends a personalized welcome email—all automatically. What This Workflow Does Displays a professional intake form (client name, email, project type) Creates a new item in your Monday.com board with all details Generates a Google Drive folder for the client Duplicates your template folder structure using Apps Script Updates the Monday.com item with the Google Drive folder link Sends a welcome email to the client with folder access Key Features End-to-end automation — From form submission to welcome email CRM integration — All client data captured in Monday.com Organized file storage — Consistent folder structure for every client Professional onboarding — Clients receive immediate welcome email with resources Fully customizable — Add more form fields, notifications, or integrations Prerequisites Monday.com account with API credentials Google Drive account with OAuth2 credentials Gmail account with OAuth2 credentials Google Apps Script deployment (code below) Template folder in Google Drive with {{NAME}} placeholders Setup Step 1: Get your Monday.com IDs Open your Monday.com board Board ID: Check the URL → monday.com/boards/BOARD_ID Group ID: Use Monday API Explorer or browser dev tools Column IDs: Found in column settings or via API Step 2: Create your Drive template folder 📁 {{NAME}} - Client Files ├── 📁 01. Contracts & Agreements ├── 📁 02. {{NAME}} - Assets ├── 📁 03. Deliverables ├── 📁 04. Communications └── 📄 {{NAME}} - Project Brief.gdoc Step 3: Deploy Apps Script Go to script.google.com Create new project → Paste code below Deploy → New deployment → Web app Execute as: Me | Access: Anyone Copy the deployment URL Step 4: Configure the workflow Replace these placeholders: YOURBOARDID — Monday.com board ID YOURGROUPID — Monday.com group ID DESTINATIONPARENTFOLDER_ID — Drive folder for new client folders YOURAPPSSCRIPT_URL — Apps Script deployment URL YOURTEMPLATEFOLDER_ID — Template folder to duplicate Step 5: Connect credentials Monday.com API credentials Google Drive OAuth2 Gmail OAuth2 --- Apps Script Code javascript function doPost(e) { try { var params = e.parameter; var templateFolderId = params.templateFolderId; var name = params.name; var destinationFolderId = params.destinationFolderId; if (!templateFolderId || !name) { return jsonResponse({ success: false, error: 'Missing required parameters: templateFolderId and name are required' }); } var templateFolder = DriveApp.getFolderById(templateFolderId); if (destinationFolderId) { var destinationFolder = DriveApp.getFolderById(destinationFolderId); copyContentsRecursively(templateFolder, destinationFolder, name); return jsonResponse({ success: true, id: destinationFolder.getId(), url: destinationFolder.getUrl(), name: destinationFolder.getName(), mode: 'copiedtoexisting', timestamp: new Date().toISOString() }); } else { var parentFolder = templateFolder.getParents().next(); var newFolderName = replacePlaceholders(templateFolder.getName(), name); var newFolder = parentFolder.createFolder(newFolderName); copyContentsRecursively(templateFolder, newFolder, name); return jsonResponse({ success: true, id: newFolder.getId(), url: newFolder.getUrl(), name: newFolder.getName(), mode: 'created_new', timestamp: new Date().toISOString() }); } } catch (error) { return jsonResponse({ success: false, error: error.toString() }); } } function replacePlaceholders(text, name) { var result = text; result = result.replace(/\{\{NAME\}\}/g, name); result = result.replace(/\{\{name\}\}/g, name.toLowerCase()); result = result.replace(/\{\{Name\}\}/g, name); return result; } function copyContentsRecursively(sourceFolder, destinationFolder, name) { var files = sourceFolder.getFiles(); while (files.hasNext()) { try { var file = files.next(); var newFileName = replacePlaceholders(file.getName(), name); file.makeCopy(newFileName, destinationFolder); Utilities.sleep(150); } catch (error) { Logger.log('Error copying file: ' + error.toString()); } } var subfolders = sourceFolder.getFolders(); while (subfolders.hasNext()) { try { var subfolder = subfolders.next(); var newSubfolderName = replacePlaceholders(subfolder.getName(), name); var newSubfolder = destinationFolder.createFolder(newSubfolderName); Utilities.sleep(200); copyContentsRecursively(subfolder, newSubfolder, name); } catch (error) { Logger.log('Error copying subfolder: ' + error.toString()); } } } function jsonResponse(data) { return ContentService .createTextOutput(JSON.stringify(data)) .setMimeType(ContentService.MimeType.JSON); } --- Use Cases Agencies — Automate client onboarding with CRM tracking Freelancers — Professional intake process for new projects Consulting firms — Standardized client setup workflow Creative studios — Organize assets and deliverables from day one Service businesses — Streamline customer setup and communication Customization Ideas Add more form fields: phone, company size, budget, deadline Add Slack notification to alert your team Create tasks in Monday.com sub-items Add to Google Calendar for kickoff meeting Integrate with invoicing (Stripe, QuickBooks) Notes Apps Script may take 30-60 seconds for large folder structures Monday.com column IDs must match your board's actual columns The welcome email can be customized with your branding Test with a single client before full deployment