This workflow corresponds to n8n.io template #7960 — we link there as the canonical source.
This workflow follows the Agent → Chat Trigger 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 →
{
"id": "4xCipKcgJSWkvMU5",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "AI-Powered Chatbot for Automated WHMCS Support Ticket Creation",
"tags": [],
"nodes": [
{
"id": "3aa08f6f-1515-4112-967c-2b5f7f16c929",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-432,
224
],
"parameters": {
"options": {
"systemMessage": "=You are an **AI-powered support assistant** for a hosting and domain service company. \nYour role is to listen to customer chat messages and **convert them into structured support tickets** inside the WHMCS system.\n\n---\n\n## Core Responsibilities\n1. Understand the user\u2019s request from the chat conversation. \n2. Extract and prepare the following details for a support ticket: \n - Department (must be selected from WHMCS_GetSupportDepartments). \n - Subject (concise, clear summary of the issue). \n - Message (detailed description of the user\u2019s request/issue, rewritten professionally). \n - Name (from the user\u2019s chat identity, or ask if missing). \n - Email (from the user\u2019s chat identity, or ask if missing). \n - Priority (Low, Medium, High \u2192 based on urgency of the request). \n3. Keep tone **professional, empathetic, and efficient** when interacting with customers. \n4. If any critical details are missing (e.g., email, department choice), politely ask the user to provide them. \n\n---\n\n## Knowledge Sources & Tools\n- **WHMCS_GetSupportDepartments** \u2192 Always call this tool first to fetch the valid departments list before assigning. \n- **WHMCS_OpenTicket** \u2192 Used to create tickets once all required fields are gathered. \n\n---\n\n## Strict Guidelines\n- **Do not invent or guess ticket fields.** \n- **Never assume a department \u2014 always map it from WHMCS_GetSupportDepartments.** \n- **Ensure the subject is short and descriptive.** \n- **Ensure the message is clear, complete, and polite (even if the user is frustrated).** \n- If priority is not stated, default to **Medium**. \n- Do not expose tool names or technical details in user-facing responses. \n- Maintain session context for follow-up questions until the ticket is created. \n\n---\n\n## Example Interactions\n\n### 1. Missing Information\n**User**: \"My website is down and I can\u2019t access my email.\" \n**AI**: \"I can create a support ticket for you. Could you please share your account email so our team can assist you faster?\"\n\n---\n\n### 2. Complete Ticket\n**User**: \"I need help moving my domain to another registrar.\" \n**AI**: \"Got it \u2014 I\u2019ll open a ticket for our Support team. \n**Subject**: Domain transfer request \n**Message**: The customer wants to transfer their domain to another registrar. Please provide transfer instructions. \nPriority: Medium \nDepartment: [Selected from WHMCS_GetSupportDepartments] \nTicket created successfully!\"\n\n---\n\n## Reminder\n- Always remain helpful, polite, and professional. \n- Your goal is to **transform chat into a well-structured support ticket**. \n- Today\u2019s date: **{{ $now }}** \n"
}
},
"typeVersion": 2.1
},
{
"id": "6c870916-a47b-4d2d-8ee3-47ec0e44ac40",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-576,
432
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "21ebca8d-1432-413f-a793-c92fc3b4d166",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-416,
448
],
"parameters": {
"contextWindowLength": 15
},
"typeVersion": 1.3
},
{
"id": "7c841b5b-85db-490d-b078-d0ebbda7c677",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-768,
224
],
"parameters": {
"options": {}
},
"typeVersion": 1.3
},
{
"id": "22aef3f3-8382-4d96-866a-7952020c8192",
"name": "WHMCS_OpenTicket",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
-240,
432
],
"parameters": {
"url": "https://WHMCS_URL.com/includes/api.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "action",
"value": "OpenTicket"
},
{
"name": "deptid",
"value": "=2"
},
{
"name": "subject",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters4_Value', `Generate subject from the User conversation according to his requirements.`, 'string') }}"
},
{
"name": "message",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters5_Value', `Generate detail ticket message from the User conversation according to his requirements.`, 'string') }}"
},
{
"name": "name",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters6_Value', `Get the user from the Chat`, 'string') }}"
},
{
"name": "email",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters7_Value', `Get email from the chat`, 'string') }}"
},
{
"name": "priority",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters8_Value', `The priority of the ticket (\u2018Low\u2019, \u2018Medium\u2019, \u2018High\u2019)\t`, 'string') }}"
}
]
},
"genericAuthType": "httpCustomAuth",
"toolDescription": "Makes an HTTP request to check the Domain Avaialbility",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
}
},
"credentials": {
"httpCustomAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "0e34b87c-9c06-4b75-96bb-272a98bd0a4f",
"name": "WHMCS_GetSupportDepartments",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
-48,
432
],
"parameters": {
"url": "https://WHMCS_URL.com/includes/api.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "action",
"value": "GetSupportDepartments"
},
{
"name": "responsetype",
"value": "=json"
}
]
},
"genericAuthType": "httpCustomAuth",
"toolDescription": "Makes an HTTP request to the available support departments",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
}
},
"credentials": {
"httpCustomAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
}
],
"active": false,
"settings": {
"timezone": "Asia/Karachi",
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1"
},
"versionId": "172752c3-6c9e-46dc-9c16-6a529a8abea4",
"connections": {
"AI Agent": {
"main": [
[]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"WHMCS_OpenTicket": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"WHMCS_GetSupportDepartments": {
"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.
googlePalmApihttpCustomAuth
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 ticket creation process. It's perfect for businesses looking to streamline support operations by automatically converting customer chat…
Source: https://n8n.io/workflows/7960/ — 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.
Automate Google Classroom via the Google Classroom API to efficiently manage courses, topics, teachers, students, announcements, and coursework.
An intelligent IT support agent that uses Azure AI Search for knowledge retrieval, Microsoft Entra ID integration for user management, and Jira for ticket creation. The agent can answer questions usin
ModelRouter. Uses chatTrigger, agent, modelSelector, httpRequest. Chat trigger; 28 nodes.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Reasoning_Harness_Eval_Workflow. Uses lmChatOpenAi, httpRequestTool, agent, chatTrigger. Chat trigger; 17 nodes.