This workflow corresponds to n8n.io template #7631 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets Tool recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "My workflow 7",
"tags": [],
"nodes": [
{
"id": "09960517-0679-4cdf-9571-2a1fe1946285",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
576,
-96
],
"parameters": {
"text": "={{ $json.body.message }}",
"options": {
"systemMessage": "=You are an AI-powered customer support assistant for a web hosting company. Your name is Matt. Your role is to provide accurate, helpful, and friendly answers to customer queries regarding company\u2019s services, based strictly on the provided knowledge base and tools.\n\nCore Responsibilities:\n1. Assist customers with information about shared hosting plans, domain prices, hosting features, FAQs, and payment methods.\n2. Always use the provided Google Sheets tools to fetch the latest information when available instead of guessing.\n3. Respond concisely but with enough detail to fully answer the customer\u2019s question.\n4. Maintain a professional, approachable, and customer-focused tone.\n\nKnowledge Sources & Tools:\n- **Offerings** \u2192 Details of products and services offered.\n- **Shared_Hosting_Plans** \u2192 Details of hosting plans, pricing, and specifications.\n- **Domain_Prices** \u2192 Domain registration, transfer, and renewal prices.\n- **Hosting_Features** \u2192 Technical features and capabilities of hosting.\n- **FAQs** \u2192 Commonly asked questions and answers.\n- **Payment_Method_Details** \u2192 Accepted payment options, instructions, and currency details.\n- **Domain_Availability_Checker** \u2192 Use this tool to check the domain name availability\n- **Chat_Inquiries** \u2192 Store all chat messages for each session.\n\nChat Data Storage Rules:\n- Each chat session is identified by a unique **Session ID**.\n- In the **Chat_Inquiries** Google Sheet:\n - The **first column** contains the Session ID.\n - The **second column** contains the Name.\n - The **third column** contains the Email.\n - Subsequent columns store the conversation chronologically:\n - Column 4 = First message from user.\n - Column 5 = First reply from chatbot.\n - Column 6 = Next user message.\n - Column 7 = Next chatbot reply.\n - Continue appending messages to the next available column for the same Session ID.\n- Never overwrite existing messages \u2014 always append in the next empty column for that row (session).\n\nGuidelines:\n- Let the user send the Name and email first , only then reply to the first message when both are received,\n- Always verify facts from the knowledge base before answering.\n- If information is not found in the sheets, politely inform the user and avoid making up details.\n- If the asked product or services are not present in teh Offering tool, tell the user that we do not offer these products or srvices.\n- Provide step-by-step guidance when explaining processes (e.g., how to order hosting, how to pay).\n- Be proactive \u2014 if the user\u2019s question implies they might need related information (e.g., asking about hosting features might also need plan pricing), offer it in the same response.\n- Use a clear structure: introduce the answer, present the details, and end with an offer for further help.\n- Avoid overly technical jargon unless the user is clearly experienced.\n- Do not mention that you are an AI/Virtual assistant in your chat replys.\n- Do not provide names of teh tools or refrence them in your chat replys.\n- Add some delay in sending thr response to mimic the behavoiur of human typing.\n- Do not use steric sign(*) to style the reply (i.e., * **.com:** PKR 4444 for 1 Year ). Replace the steric sign with the html tags where needed.\n- Do not mention the products or services we are not offering untill unless asked for those products or services explicitly.\n- If someone mentions any domain name and show interest in buying domain, first of all check the domain availability before suggesting the domain prices.\n- If the domain name is not available, do not show apologetic tone. Show the positive tone instead.\n- Ensure complete chat history for the session is stored and updated in the sheet in the same row for that Session ID.\n\n\nExample Interactions:\n\n1. **Capturing Name and Email before first reply**\nUser: \"Hi there\"\nErik: \"Hello! Before we get started, could you please share your <b>full name</b> and <b>email address</b> so I can assist you better?\"\nUser: \"John Smith, john@example.com\"\nErik: \"Thank you, John. How can I help you today?\"\n\n---\n\n2. **Domain Price Inquiry (Available Domain)**\nUser: \"Can you tell me the price for example.com?\"\nErik: \"Let me first check the availability of <b>example.com</b> for you... \nGreat news! <b>example.com</b> is available. According to our latest pricing, it\u2019s $9.99/year for registration and renewal. Would you like me to guide you through the registration process?\"\n\n---\n\n3. **Domain Price Inquiry (Unavailable Domain \u2013 Positive Tone)**\nUser: \"I want to buy myshop.com\"\nErik: \"I\u2019ve checked for you \u2014 <b>myshop.com</b> is already taken. \nBut no worries! We can explore great alternatives like <b>myshop.net</b> or <b>myshop.online</b>, which are both available right now. Would you like me to share their prices?\"\n\n---\n\n4. **Shared Hosting Plan Inquiry**\nUser: \"What are your shared hosting plans?\"\nErik: \"We have multiple shared hosting plans designed for different needs: \n<b>Basic Plan</b> \u2014 Perfect for small websites, includes 1 domain, 10GB SSD storage, and free SSL. \n<b>Pro Plan</b> \u2014 Ideal for growing businesses, includes unlimited domains, 50GB SSD storage, free SSL, and priority support. \n<b>Business Plan</b> \u2014 Best for high-traffic sites, unlimited everything plus dedicated resources. \nWould you like me to check if there are any discounts available for annual payments?\"\n\n---\n\n5. **Unavailable Service Inquiry**\nUser: \"Do you offer VPS hosting?\"\nErik: \"Currently, we do not offer VPS hosting services. We specialize in shared hosting, domain registration, and related solutions. Would you like me to recommend the best shared hosting plan for your needs?\"\n\n---\n\n6. **Payment Method Inquiry**\nUser: \"How can I pay for my hosting plan?\"\nErik: \"We accept a variety of payment methods including <b>PayPal</b>, <b>credit/debit cards</b>, and <b>bank transfers</b>. Once you choose your plan, I can guide you through the payment steps in detail. Which method would you like to use?\"\n\n---\n\n7. **Proactive Cross-Sell**\nUser: \"I\u2019m interested in a domain name.\"\nErik: \"Sure! Could you share the domain name you have in mind? Once I check its availability, I can also let you know about hosting plan discounts you can get if you register the domain with us.\"\n\n---\n\n8. **Follow-up within the same session**\nUser: \"Tell me more about the Pro Plan.\"\nErik: \"Our <b>Pro Plan</b> includes unlimited domains, 50GB SSD storage, free SSL certificates, and priority support. It\u2019s ideal for small to medium businesses with growing traffic. Would you like me to prepare a complete cost breakdown including domain registration?\"\n\n\nRemember: Always be accurate, friendly, and efficient. Your primary goal is to help the user make quick, informed decisions about company\u2019s services.\n\nNote:\nToday is {{ $now }}\n"
},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "4803a5f0-d58c-4c1d-9ad8-c52712c27e7e",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
0,
128
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6cbc434c-668f-4fed-b887-89265d2c74ef",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
192,
128
],
"parameters": {
"sessionKey": "={{ $('Webhook').item.json.body.sessionId }}",
"sessionIdType": "customKey",
"contextWindowLength": 15
},
"typeVersion": 1.3
},
{
"id": "131460d0-9882-4526-9638-fbbe67f21c1c",
"name": "Shared_Hosting_Plans",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
384,
128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 2043456934,
"cachedResultUrl": "",
"cachedResultName": "Shared_Hosting_Plans"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SOFmoAm8uJ6bADAMH0OnX1NxDtG3DZs3wwt5Ojnr510",
"cachedResultUrl": "",
"cachedResultName": "knowledge_base"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "1c79ffed-dd69-41db-8038-558d97c87025",
"name": "Domain_Prices",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
544,
128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 105151249,
"cachedResultUrl": "",
"cachedResultName": "Domain_Prices"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SOFmoAm8uJ6bADAMH0OnX1NxDtG3DZs3wwt5Ojnr510",
"cachedResultUrl": "",
"cachedResultName": "knowledge_base"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "29214e9b-e987-46d4-ba70-20ab5d10aee2",
"name": "Hosting_Features",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
688,
128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1112678828,
"cachedResultUrl": "",
"cachedResultName": "Hosting_Features"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SOFmoAm8uJ6bADAMH0OnX1NxDtG3DZs3wwt5Ojnr510",
"cachedResultUrl": "",
"cachedResultName": "knowledge_base"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "e36c643d-1717-4beb-8ae7-5a235c89169c",
"name": "FAQs",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
800,
128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 335311410,
"cachedResultUrl": "",
"cachedResultName": "FAQs"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SOFmoAm8uJ6bADAMH0OnX1NxDtG3DZs3wwt5Ojnr510",
"cachedResultUrl": "",
"cachedResultName": "knowledge_base"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "04d9e9f0-d8c8-4157-9e3d-3ffffcd32fac",
"name": "Payment_Method_Details",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
928,
128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 499178757,
"cachedResultUrl": "",
"cachedResultName": "Payment_Method_Details"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SOFmoAm8uJ6bADAMH0OnX1NxDtG3DZs3wwt5Ojnr510",
"cachedResultUrl": "",
"cachedResultName": "knowledge_base"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "6894ddca-ff8b-46a8-b384-1563fed361d3",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
0,
-96
],
"parameters": {
"path": "2636ab69-9b01-4d0a-9146-178947f0c5cf",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "eb46101b-975a-4509-b4e8-162297b847e2",
"name": "Respond to Webhook1",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1392,
-96
],
"parameters": {
"options": {
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Access-Control-Allow-Origin",
"value": "*"
},
{
"name": "Access-Control-Allow-Headers",
"value": "Content-Type, x-api-key"
},
{
"name": "Access-Control-Allow-Methods",
"value": "POST, OPTIONS"
}
]
}
}
},
"typeVersion": 1
},
{
"id": "52b4df1f-3f77-43d2-852c-23261091219a",
"name": "Offerings",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
1056,
128
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1058340463,
"cachedResultUrl": "",
"cachedResultName": "Offerings"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SOFmoAm8uJ6bADAMH0OnX1NxDtG3DZs3wwt5Ojnr510",
"cachedResultUrl": "",
"cachedResultName": "knowledge_base"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "d7ef0d76-dfe7-4288-854c-9d2b3c9c4504",
"name": "Domain_Availability_Checker",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
1232,
128
],
"parameters": {
"url": "https://your_whmcs_url.com/includes/api.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "identifier",
"value": "Your_WHMCS_Identifier"
},
{
"name": "secret",
"value": "Your_WHMCS_Secret"
},
{
"name": "action",
"value": "DomainWhois"
},
{
"name": "domain",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters3_Value', ``, 'string') }}"
}
]
},
"toolDescription": "Makes an HTTP request to check the Domain Avaialbility",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "79a71156-3772-4a3c-9951-f3471f524af3",
"name": "Chat_Inquiries",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
1424,
128
],
"parameters": {
"columns": {
"value": {
"Chat": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Chat', ``, 'string') }}",
"Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Name', ``, 'string') }}",
"Email": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email', ``, 'string') }}",
"Session Id": "={{ $('Webhook').item.json.body.sessionId }}",
"Start Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Date', ``, 'string') }}",
"Start Time (Pak Time)": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_Time__Pak_Time_', ``, 'string') }}"
},
"schema": [
{
"id": "Session Id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Session Id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Start Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start Time (Pak Time)",
"type": "string",
"display": true,
"required": false,
"displayName": "Start Time (Pak Time)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Chat",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Chat",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Session Id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "14ETwMLE0K_oigu-Xuu3exw6fVUP8rsWKZ4QlyGTsKwU",
"cachedResultUrl": "",
"cachedResultName": "Chat Inquiries"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "02a0718e-a89c-41f1-b839-710af6ba6168",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
-560
],
"parameters": {
"width": 736,
"height": 448,
"content": "## Customer Support Chat Agent for Web Hosting Companies\nThis template is designed for **web hosting companies, domain registrars, and IT service providers** who want to automate their customer support with an AI-powered chatbot. It's perfect for businesses looking to provide 24/7 customer assistance for hosting plans, domain services, and technical support while maintaining a professional, human-like interaction experience.\n\n## Use Cases\n- **24/7 customer support automation** for web hosting companies\n- **Sales team assistance** with real-time product information\n- **Customer self-service portals** with intelligent assistance\n- **Lead generation** through proactive service recommendations\n- **Customer retention** via improved support experience\n- **Support ticket reduction** by handling common queries automatically"
},
"typeVersion": 1
},
{
"id": "791f2157-a761-4126-b74c-12aa862625b2",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
-560
],
"parameters": {
"color": 5,
"width": 816,
"height": 448,
"content": "## How it works / What it does\n\nThis workflow creates an **AI-powered customer support chatbot** that provides comprehensive assistance for web hosting and domain services. The AI agent (named Matt) automatically:\n\n1. **Receives customer queries** through a webhook endpoint\n2. **Captures customer information** (name and email) at the start of each session\n3. **Processes natural language requests** using Google Gemini AI\n4. **Accesses real-time information** from multiple Google Sheets knowledge bases:\n - Shared Hosting Plans (pricing, features, specifications)\n - Domain Prices (registration, transfer, renewal costs)\n - Hosting Features (technical capabilities and specifications)\n - FAQs (common questions and answers)\n - Payment Method Details (accepted payment options)\n - Company Offerings (available products and services)\n5. **Checks domain availability** via WHMCS API integration\n6. **Provides accurate, contextual responses** based on the knowledge base\n7. **Maintains conversation history** with session-based memory\n8. **Stores complete chat sessions** in Google Sheets for analysis and follow-up"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"FAQs": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Respond to Webhook1",
"type": "main",
"index": 0
}
]
]
},
"Offerings": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Domain_Prices": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Chat_Inquiries": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Hosting_Features": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Shared_Hosting_Plans": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Payment_Method_Details": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Domain_Availability_Checker": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This template is designed for web hosting companies, domain registrars, and IT service providers who want to automate their customer support with an AI-powered chatbot. It's perfect for businesses looking to provide 24/7 customer assistance for hosting plans, domain services,…
Source: https://n8n.io/workflows/7631/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
N8N Workflow. Uses httpRequest, lmChatGoogleGemini, memoryBufferWindow, httpRequestTool. Webhook trigger; 22 nodes.
Are you drowning in daily operational chaos, desperately trying to juggle sales, projects, content, and client communication? Imagine an AI brain that handles it all, freeing you to lead your business
This workflow is an AI-powered Dental Appointment Assistant that automates appointment booking, rescheduling, and cancellations through Telegram or a Webhook. It uses intelligent agents to understand
This workflow transforms WhatsApp into a powerful personal AI using n8n + Green-API. Send text or voice messages — the assistant understands intent and handles daily tasks automatically. 💰 Expense & i
veo limpo new. Uses moveBinaryData, httpRequest, chatTrigger, baserow. Webhook trigger; 36 nodes.