{
  "workflow": {
    "id": 5427,
    "name": "Conversational lead capture with Gemini 2.0 Flash AI and Google Sheets",
    "views": 873,
    "recentViews": 0,
    "totalViews": 873,
    "createdAt": "2025-06-28T04:28:00.336Z",
    "description": "## AI Lead Capture System - Complete Setup Guide\n## Prerequisites\n\nn8n instance (cloud or self-hosted)\nGoogle AI Studio account (free tier available)\nGoogle account for Sheets integration\nWebsite with chat widget capability\n\n## Phase 1: Core Infrastructure Setup\nStep 1: Set Up Google AI Studio\n\nGo to Google AI Studio\nCreate account or sign in with Google\nNavigate to \"Get API Key\"\nCreate new API key for your project\nCopy and securely store the API key\nFree tier limits: 15 requests/minute, 1 million tokens/month\n\nStep 2: Configure Google Sheets\n\nCreate new Google Sheet for lead storage\nAdd column headers (exact names):\n\nFull Name\nCompany Name\nEmail Address\nPhone Number\nProject Intent/Needs\nProject Timeline\nBudget Range\nPreferred Communication Channel\nHow they heard about DAEX AI\n\n\nCopy the Google Sheet ID from URL (between /d/ and /edit)\nEnsure sheet is accessible to your Google account\n\n Step 3: Import n8n Workflow\n\nOpen your n8n instance\nCreate new workflow\nClick \"...\" menu → Import from JSON\nPaste the provided workflow JSON\nWorkflow will appear with all nodes connected\n\n## Phase 2: Credential Configuration\n Step 4: Set Up Google Gemini API\n\nIn n8n, go to Credentials → Add Credential\nSearch for \"Google PaLM API\"\nEnter your API key from Step 1\nTest connection\nLink to the \"Google Gemini Chat Model\" node\n\n Step 5: Configure Google Sheets Access\n\nGo to Credentials → Add Credential\nSelect \"Google Sheets OAuth2 API\"\nFollow OAuth flow to authorize your Google account\nTest connection with your sheet\nLink to the \"Google Sheets\" node\n\n## Phase 3: Workflow Customization\n Step 6: Update Company Information\n\nOpen the AI Agent node\nIn the system message, replace all mentions of:\n\nCompany name and description\nService offerings and specializations\nFAQ knowledge base\nTypical project timelines and pricing ranges\n\n\nAdjust conversation tone to match your brand voice\n\n Step 7: Configure Lead Qualification Fields\n\nIn the AI Agent system message, modify the required information list:\n\nAdd/remove qualification questions\nAdjust budget ranges for your services\nCustomize timeline options\nUpdate communication channel preferences\n\n\nIn Google Sheets node, update column mappings if you changed fields\n\n Step 8: Set Up Sheet Integration\n\nOpen Google Sheets node\nClick on Document ID dropdown\nSelect your lead capture sheet\nVerify all column mappings match your sheet headers\nTest with sample data\n\n## Phase 4: Website Integration\n Step 9: Get Webhook URL\n\nOpen Webhook node in n8n\nCopy the webhook URL (starts with your n8n domain)\nNote: URL format is https://your-n8n-domain.com/webhook/[unique-id]\n\nStep 10: Connect Your Chat Widget\nChoose your integration method:\nOption A: Direct JavaScript Integration\njavascript// Add to your website\nfunction sendMessage(message, sessionId) {\n    fetch('YOUR_WEBHOOK_URL', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({\n            message: message,\n            sessionId: sessionId || 'visitor-' + Date.now()\n        })\n    })\n    .then(response =&gt; response.json())\n    .then(data =&gt; {\n        // Display AI response in your chat widget\n        displayMessage(data.message);\n    });\n}\nOption B: Chat Platform Webhook\n\nOpen your chat platform settings (Intercom, Crisp, etc.)\nFind webhook/integration section\nAdd webhook URL pointing to your n8n endpoint\nConfigure to send message and session data\n\nOption C: Zapier/Make.com Integration\n\nCreate new Zap/Scenario\nTrigger: New chat message from your platform\nAction: HTTP POST to your n8n webhook\nMap message content and session ID\n\n## Phase 5: Testing & Optimization\nStep 11: Test Complete Flow\n\nSend test message through your chat widget\nVerify AI responds appropriately\nCheck conversation context is maintained\nConfirm lead data appears in Google Sheets\nTest with various conversation scenarios\n\nStep 12: Monitor Performance\n\nCheck n8n execution logs for errors\nMonitor Google Sheets for data quality\nReview conversation logs for improvement opportunities\nTrack response times and conversion rates\n\nStep 13: Fine-Tune Conversations\n\nAnalyze real conversation logs\nUpdate system prompts based on common questions\nAdd new FAQ knowledge to the AI agent\nAdjust qualification questions based on lead quality\nOptimize for your specific customer patterns\n\n## Phase 6: Advanced Features (Optional)\nStep 14: Add Lead Scoring\n\nCreate new column in Google Sheets for \"Lead Score\"\nUpdate AI agent to calculate scores based on:\n\nBudget range (higher budget = higher score)\nTimeline urgency (sooner = higher score)\nProject complexity (complex = higher score)\n\n\nAdd conditional formatting in Google Sheets to highlight high-value leads\n\nStep 15: Set Up Notifications\n\nAdd email notification node after Google Sheets\nConfigure to send alerts for high-priority leads\nInclude lead details and conversation summary\nSet up different notification rules for different lead scores\n\nStep 16: Analytics Dashboard\n\nConnect Google Sheets to Google Data Studio or similar\nCreate dashboard showing:\n\nDaily lead volume\nConversion rates by source\nAverage qualification time\nLead quality scores\nRevenue pipeline from captured leads\n\n\n\nTroubleshooting Common Issues\nAI Not Responding\n\nCheck Google Gemini API key validity\nVerify API quota not exceeded\nReview n8n execution logs for errors\n\nData Not Saving to Sheets\n\nConfirm Google Sheets permissions\nCheck column name matching\nVerify sheet ID is correct\n\nChat Widget Not Connecting\n\nTest webhook URL directly with curl/Postman\nVerify JSON format matches expected structure\nCheck CORS settings if browser-based integration\n\nConversation Context Lost\n\nEnsure sessionId is unique per visitor\nCheck memory node configuration\nVerify sessionId is passed consistently\n",
    "workflow": {
      "meta": {
        "instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
      },
      "nodes": [
        {
          "id": "f4127c9c-ac82-435c-b9ab-919b767680fa",
          "name": "Respond to Webhook",
          "type": "n8n-nodes-base.respondToWebhook",
          "notes": "💬 REAL-TIME RESPONSE DELIVERY - INSTANT GRATIFICATION\n\nDelivers the AI's response back to your chat interface in milliseconds. Creates the illusion of instant human interaction that keeps prospects engaged.\n\n✅ RESPONSE OPTIMIZATION:\n• Sub-2-second response time (faster than human typing)\n• Formats responses for your specific chat platform\n• Maintains conversation state across multiple exchanges\n• Handles error states gracefully (AI failures, rate limits)\n• Supports rich media responses (links, images, documents)\n• Mobile-optimized formatting for all screen sizes\n\n📤 RESPONSE STRUCTURE:\n{\n  \"message\": \"Thanks for your interest! What type of project are you working on?\",\n  \"action\": \"continue\", // or \"complete\" when qualified\n  \"metadata\": {\n    \"leadScore\": 85,\n    \"nextSteps\": \"schedule-demo\",\n    \"priority\": \"high\"\n  }\n}\n\n🎯 CONVERSION OPTIMIZATION:\n• Fast responses prevent prospect abandonment\n• Consistent messaging reduces confusion\n• Smart routing based on conversation stage\n• Automatic escalation triggers for high-value leads\n• Integration with calendar booking for demos\n\n⚙️ ADVANCED FEATURES:\n• Typing indicators for human-like experience\n• Message read receipts and delivery confirmation\n• Fallback responses for API failures\n• Rate limiting protection and queue management\n• Multi-language support based on prospect location\n\n🔧 CUSTOMIZATION OPTIONS:\n• Adjust response format for your chat platform\n• Add custom metadata for your CRM integration\n• Configure error handling and retry logic\n• Set up A/B testing for different response styles\n\n💡 PRO TIP: Monitor response times in your analytics. Any delay over 3 seconds significantly reduces conversion rates.",
          "position": [
            240,
            -120
          ],
          "parameters": {
            "options": {}
          },
          "typeVersion": 1.1
        },
        {
          "id": "8bec2419-1971-47f1-8959-4e71a51f8799",
          "name": "Webhook",
          "type": "n8n-nodes-base.webhook",
          "notes": "🌐 UNIVERSAL CHAT CONNECTOR - YOUR WEBSITE'S FRONT DOOR\n\nThe entry point that connects ANY chat platform to your AI agent. This webhook makes your lead capture system platform-agnostic and future-proof.\n\n✅ UNIVERSAL INTEGRATION:\n• Works with ANY chat widget (Intercom, Crisp, Tidio, custom)\n• Connects to WhatsApp Business API for messaging\n• Integrates with Facebook Messenger and Instagram DM\n• Handles contact forms, popup modals, and embedded chat\n• Processes email inquiries and social media messages\n• Mobile app integration ready\n\n📝 EXPECTED DATA FORMAT:\n{\n  \"message\": \"Hi, I need help with AI automation\",\n  \"sessionId\": \"visitor-12345-timestamp\",\n  \"source\": \"website-chat\" // optional for tracking\n}\n\n🔧 INTEGRATION EXAMPLES:\n• WordPress: Simple JavaScript fetch() call\n• Shopify: Webhook to this endpoint from chat apps\n• React/Vue: Axios POST with conversation state\n• Zapier: Connect 2000+ platforms instantly\n• Make.com: Visual integration builder\n\n🎯 BUSINESS SCALING:\n• One workflow handles all customer touchpoints\n• Consistent lead qualification across all channels\n• Centralized conversation analytics and reporting\n• A/B test different conversation flows easily\n• Scale from 10 to 10,000 conversations seamlessly\n\n⚡ QUICK SETUP:\n1. Copy this webhook URL\n2. Add to your chat widget's webhook settings\n3. Send test message with proper JSON format\n4. Verify response appears in your chat interface\n\n💡 PRO TIP: Include 'source' field in requests to track which channels generate the highest-quality leads.",
          "position": [
            -280,
            -120
          ],
          "webhookId": "b7d8aa99-594d-46f8-b928-f68571fee00c",
          "parameters": {
            "path": "4777b330-6bf9-460e-aaf0-52d6263d17d7",
            "options": {},
            "httpMethod": "POST",
            "responseMode": "responseNode"
          },
          "typeVersion": 2
        },
        {
          "id": "69a763e3-0d4d-4c86-90d6-498c65e1fcb8",
          "name": "Google Sheets",
          "type": "n8n-nodes-base.googleSheetsTool",
          "notes": "📊 INTELLIGENT LEAD DATA STORAGE - STRUCTURED DATA FROM CHAOS\n\nAutomatically extracts and organizes lead information from natural conversation into your CRM. No more manual data entry or missed details!\n\n✅ AI-POWERED DATA EXTRACTION:\n• $fromAI() functions intelligently parse conversation text\n• Extracts contact info, project details, budget, timeline\n• Handles partial data (fills in gaps as conversation progresses)\n• Validates and formats data automatically (emails, phone numbers)\n• Appends new leads as rows in real-time\n• Never loses a lead due to human error\n\n🎯 BUSINESS VALUE:\n• Saves 15-20 minutes per lead on manual data entry\n• 100% accurate lead capture (no typos or missed fields)\n• Instant CRM integration for your sales team\n• Real-time lead notifications and follow-up triggers\n• Complete conversation history stored for context\n• Lead scoring based on budget, timeline, and project scope\n\n🔧 SETUP CHECKLIST:\n1. Create Google Sheet with headers matching schema\n2. Connect Google Sheets OAuth in n8n credentials\n3. Update documentId to your sheet URL\n4. Test with sample conversation data\n5. Set up conditional formatting for lead prioritization\n\n📈 ADVANCED FEATURES TO ADD:\n• Timestamp for lead velocity tracking\n• Lead source attribution for marketing ROI\n• Automatic lead scoring (A/B/C priority)\n• Integration with Zapier for multi-platform sync\n• Duplicate detection and merge functionality\n\n💡 PRO TIP: Add conditional formatting in Google Sheets to highlight high-value leads (budget >$10k, timeline <30 days) for immediate follow-up.",
          "position": [
            220,
            160
          ],
          "parameters": {
            "columns": {
              "value": {
                "Full Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Full_Name', ``, 'string') }}",
                "Budget Range": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Budget_Range', ``, 'string') }}",
                "Company Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Company_Name', ``, 'string') }}",
                "Phone Number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone_Number', ``, 'string') }}",
                "Email Address": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email_Address', ``, 'string') }}",
                "Project Timeline": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Project_Timeline', ``, 'string') }}",
                "Project Intent/Needs": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Project_Intent_Needs', ``, 'string') }}",
                "How they heard about DAEX AI": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('How_they_heard_about_DAEX_AI', ``, 'string') }}",
                "Preferred Communication Channel": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Preferred_Communication_Channel', ``, 'string') }}"
              },
              "schema": [
                {
                  "id": "Full Name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Full Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Company Name",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Company Name",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Email Address",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Email Address",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Phone Number",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Phone Number",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Project Intent/Needs",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Project Intent/Needs",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Project Timeline",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Project Timeline",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Budget Range",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Budget Range",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "Preferred Communication Channel",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "Preferred Communication Channel",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                },
                {
                  "id": "How they heard about DAEX AI",
                  "type": "string",
                  "display": true,
                  "required": false,
                  "displayName": "How they heard about DAEX AI",
                  "defaultMatch": false,
                  "canBeUsedToMatch": true
                }
              ],
              "mappingMode": "defineBelow",
              "matchingColumns": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {},
            "operation": "append",
            "sheetName": {
              "__rl": true,
              "mode": "list",
              "value": "gid=0",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OBxt6TX3edgxiSYnsULCuSM5OL7GYlA6W3DjNYBEpfo/edit#gid=0",
              "cachedResultName": "Sheet1"
            },
            "documentId": {
              "__rl": true,
              "mode": "list",
              "value": "1OBxt6TX3edgxiSYnsULCuSM5OL7GYlA6W3DjNYBEpfo",
              "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OBxt6TX3edgxiSYnsULCuSM5OL7GYlA6W3DjNYBEpfo/edit?usp=drivesdk",
              "cachedResultName": "client intake form"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.5
        },
        {
          "id": "d2679c41-cd73-480c-8066-6c14c388a528",
          "name": "Simple Memory",
          "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
          "notes": "💭 CONVERSATION MEMORY - NO MORE \"WHAT'S YOUR NAME AGAIN?\"\n\nKeeps track of conversation history so your AI doesn't ask the same questions twice or lose context mid-conversation. Essential for natural, human-like interactions.\n\n✅ WHAT IT REMEMBERS:\n• Customer's name and company details\n• Previously discussed project requirements\n• Budget range and timeline preferences\n• Questions already asked and answered\n• Context from earlier in the conversation\n• Emotional tone and customer preferences\n\n🔧 MEMORY CONFIGURATION:\n• sessionId: Separates different website visitors (never mix conversations!)\n• 9 messages = ~4-5 back-and-forth exchanges\n• Includes both customer messages AND AI responses\n• Automatically expires after session ends\n\n🎯 BUSINESS VALUE:\n• Creates seamless conversation experience\n• Reduces customer frustration from repeated questions\n• Enables complex, multi-topic discussions\n• Allows for intelligent follow-up questions\n• Maintains context even if customer refreshes page\n\n⚙️ TUNING OPTIONS:\n• Increase contextWindowLength (10-20) for longer sales conversations\n• Decrease (5-7) for simple lead capture to save memory/costs\n• Use persistent memory for returning customers (requires database)\n\n💡 PRO TIP: Monitor memory usage in logs to optimize for your conversation patterns. Longer memory = better context but higher costs.",
          "position": [
            -40,
            80
          ],
          "parameters": {
            "sessionKey": "={{ $json.body.sessionId }}",
            "sessionIdType": "customKey",
            "contextWindowLength": 9
          },
          "typeVersion": 1.3
        },
        {
          "id": "22983be8-6b3f-47bb-a9ab-85cc4bc24172",
          "name": "Google Gemini Chat Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
          "notes": "🧠 AI LANGUAGE MODEL - THE BRAIN BEHIND THE CONVERSATION\n\nPowers the conversational intelligence with Google's latest multimodal AI. This is what makes your chatbot sound human and handle complex customer inquiries.\n\n✅ WHY GEMINI 2.0 FLASH:\n• Lightning-fast responses (under 2 seconds) = no awkward waiting\n• Excellent at maintaining natural conversation flow\n• Cost-effective for high-volume lead capture ($0.000075 per 1K tokens)\n• Strong reasoning for complex customer questions and objections\n• Multimodal capabilities (can handle text, images, and more)\n• Built-in safety filters and brand-appropriate responses\n\n💰 COST BREAKDOWN:\n• ~1,000 conversations per month = $15-25 in API costs\n• Compare to: One sales rep salary = $4,000-8,000/month\n• ROI is immediate and scales infinitely\n\n🔧 SETUP OPTIONS:\n• Get Google AI Studio API key (free tier: 15 requests/minute)\n• Alternative models: GPT-4, Claude, or local Ollama models\n• Adjust temperature for more/less creative responses\n• Set max tokens to control response length and costs\n\n🎯 BUSINESS IMPACT:\n• Handles multiple conversations simultaneously\n• Never gets tired, frustrated, or has bad days\n• Consistent quality regardless of volume\n• Can be trained on your specific industry knowledge",
          "position": [
            -220,
            180
          ],
          "parameters": {
            "options": {},
            "modelName": "models/gemini-2.0-flash-exp"
          },
          "credentials": {
            "googlePalmApi": {
              "id": "credential-id",
              "name": "googlePalmApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "f1e4f258-7527-4c6d-84c4-c5b1da74df9a",
          "name": "AI Agent",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "notes": "🤖 CONVERSATIONAL AI BRAIN - THE SALES REP THAT NEVER SLEEPS\n\nThis is your automated sales assistant that handles lead qualification 24/7. Think of it as your best sales rep working around the clock.\n\n✅ WHAT IT DOES:\n• Welcomes visitors with human-like warmth and personality\n• Asks qualifying questions naturally (no robotic forms!)\n• Remembers context throughout the entire conversation\n• Handles objections and answers FAQs about your services\n• Extracts and saves complete lead data automatically\n• Maintains conversation flow even with complex customer questions\n\n🎯 BUSINESS VALUE:\n• Captures leads while you sleep (24/7 availability)\n• Qualifies prospects before they hit your calendar\n• Saves 2-3 hours daily on manual lead intake\n• Converts 30-40% more website visitors into qualified leads\n• Consistent messaging that matches your brand voice\n\n🔧 CUSTOMIZATION POINTS:\n• Update company name/description in system message\n• Modify qualifying questions for your specific business\n• Adjust conversation tone for your brand personality\n• Add your unique service offerings and FAQs\n• Set lead scoring criteria based on responses\n\n💡 PRO TIP: The more specific you make the system message about your services and ideal customers, the better it qualifies leads and handles objections.",
          "position": [
            -100,
            -120
          ],
          "parameters": {
            "text": "={{ $json.body.message }} ",
            "options": {
              "systemMessage": "=You are a Welcome Agent for a company specializing in building custom AI assistants to suit client needs, including sales bots, data extraction tools, and automated customer service systems. Your role is to collect client information through a natural, conversational approach, answer FAQs, and save information to Google Sheets.\n\nCRITICAL INSTRUCTIONS:\n1. Begin with ONE friendly, warm welcome message introducing yourself and the company as a custom AI assistant developer.\n2. LISTEN CAREFULLY to what clients say and respond conversationally:\n  - Use natural language with occasional filler words like \"actually\" or \"you know\"\n  - Vary your sentence structure and length to sound more human\n  - Ask follow-up questions about interesting points they mention\n  - If they ask questions about services, answer them as a knowledgeable team member would\n  - Acknowledge their emotions and respond empathetically\n\n3. Collect all required information naturally, weaving questions into conversation:\n  a. Full Name\n  b. Company Name\n  c. Email Address\n  d. Phone Number (mention this is optional)\n  e. Project Intent/Needs\n  f. Project Timeline\n  g. Budget Range\n  h. Preferred Communication Channel\n  i. How they heard about the company\n\n4. Remember what they've told you and reference it later in conversation\n5. Be conversational when acknowledging responses: \"That's great to hear\" instead of \"Information acknowledged\"\n6. Use their name occasionally and mirror their communication style\n7. After collecting ALL information, provide a friendly summary of the conversation\n8. Then use the saveToGoogleSheets function to save the data\n\nCONVERSATION APPROACH:\n- Welcome them like a real person would: \"Hi there! I'm [Name] from [Company]. What brings you to our site today?\"\n- Have genuine-sounding reactions: \"That's exactly the kind of challenge we help with!\"\n- If they ask questions, answer conversationally, not like a knowledge base\n- Transition naturally: \"By the way, I didn't catch your name?\" rather than \"Please provide your full name\"\n- Add occasional personal touches: \"I worked with a similar project last month, actually\"\n- Express enthusiasm about their project specifically\n\nKEY FAQ KNOWLEDGE:\n- Explain all company services conversationally, like you're excited about them\n- Emphasize specialty in customizing AI assistants with real examples\n- Give approximate timelines based on past projects, not generic ranges\n- Discuss pricing honestly but tactfully\n- Talk about integration capabilities from personal experience\n- Discuss AI capabilities with nuance, not marketing speak\n\nAfter collecting all information, CALL THE SAVE FUNCTION:\nsaveToGoogleSheets([\n new Date().toISOString(),\n fullName,\n companyName,\n emailAddress,\n phoneNumber,\n projectIntent,\n projectTimeline,\n budgetRange,\n preferredCommunicationChannel,\n referralSource\n]);\n\nThen say something friendly and specific to their situation: \"Thanks so much, [Name]! I've passed your information to our team. Given your interest in [specific need they mentioned], I think you'll really enjoy talking with our specialists. Someone will reach out to you [timeframe based on their urgency].\"\n\nHUMAN-LIKE BEHAVIORS:\n- Occasionally start sentences with conjunctions (And, But, So)\n- Use contractions (I'm, we're, you'll) consistently\n- React to surprising or interesting information they share\n- Admit when you don't know something instead of giving generic answers\n- Use humor appropriately when the conversation allows for it\n- Show genuine interest in their business challenges\n- Don't sound overly scripted or perfectly structured in responses"
            },
            "promptType": "define"
          },
          "typeVersion": 1.8
        },
        {
          "id": "4371b7e4-4635-434e-b206-29d56f673eef",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -560,
            -160
          ],
          "parameters": {
            "height": 240,
            "content": "## Webhook Entry Point\n\n**Receives requests from:**\n- Website chat widgets\n- Mobile apps\n- Third-party platforms\n- Custom integrations"
          },
          "typeVersion": 1
        },
        {
          "id": "9714adba-d2ab-4633-9a30-4a65e8a0fac8",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            380,
            -160
          ],
          "parameters": {
            "height": 340,
            "content": "## Response Output\n\n**Returns structured response:**\n- AI-generated answer\n- Consistent formatting\n- Ready for frontend display\n- JSON format compatible"
          },
          "typeVersion": 1
        },
        {
          "id": "58365a2a-41df-49ea-9872-9a355deef92e",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -520,
            160
          ],
          "parameters": {
            "width": 400,
            "height": 220,
            "content": "## AI Processing Core\n\n**Powered by Google Gemini 2.0 Flash**\n- Fast response times\n- Context-aware conversations\n- Natural language understanding\n- Maintains conversation history per session"
          },
          "typeVersion": 1
        },
        {
          "id": "9cb625cd-a34a-4195-9828-550642f70659",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            60,
            200
          ],
          "parameters": {
            "width": 360,
            "height": 280,
            "content": "## Data storage to spreadsheet\n a. Full Name\n  b. Company Name\n  c. Email Address\n  d. Phone Number (mention this is optional)\n  e. Project Intent/Needs\n  f. Project Timeline\n  g. Budget Range\n  h. Preferred Communication Channel\n  i. How they heard about the company\n"
          },
          "typeVersion": 1
        }
      ],
      "pinData": {},
      "connections": {
        "Webhook": {
          "main": [
            [
              {
                "node": "AI Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "AI Agent": {
          "main": [
            [
              {
                "node": "Respond to Webhook",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Google Sheets": {
          "ai_tool": [
            [
              {
                "node": "AI Agent",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "Simple Memory": {
          "ai_memory": [
            [
              {
                "node": "AI Agent",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "Google Gemini Chat Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 10,
      "nodeTypes": {
        "n8n-nodes-base.webhook": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "n8n-nodes-base.googleSheetsTool": {
          "count": 1
        },
        "n8n-nodes-base.respondToWebhook": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatGoogleGemini": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "David Olusola",
      "username": "dae221",
      "bio": "I design enterprise-grade automation systems that eliminate bottlenecks, cut manual work by 70%+, and unlock millions in lost revenue opportunities. My clients — typically achieve 5–10x ROI within the first 90 days. Currently partnering with select high-growth companies ready to scale faster with AI automation.  david@daexai.com",
      "verified": true,
      "links": [
        ""
      ],
      "avatar": "https://gravatar.com/avatar/2abbc4c9e828c54a8d8838beda1382e8e4a66684ef9fa8451dbeb3e72b0c9f9c?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 47,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.webhook",
        "codex": {
          "data": {
            "alias": [
              "HTTP",
              "API",
              "Build",
              "WH"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 535,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.respondToWebhook",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "Utility"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Respond to Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Respond to Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 7,
            "name": "Utility"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1163,
        "icon": "fa:database",
        "name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Memory"
              ],
              "Memory": [
                "For beginners"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Simple Memory"
        },
        "iconData": {
          "icon": "database",
          "type": "icon"
        },
        "displayName": "Simple Memory",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1262,
        "icon": "file:google.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Google Gemini Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"
        },
        "displayName": "Google Gemini Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 37,
        "name": "Lead Generation"
      },
      {
        "id": 47,
        "name": "AI Chatbot"
      }
    ],
    "image": []
  }
}