Thanks for the response, @Jon
This is an embedded chat widget on our website designed to collect lead information and automatically create a lead record in Salesforce.
During our concurrent testing, we observed a critical issue: when two users (User A and User B) interacted with the chat simultaneously, the information entered by User A began appearing in User B’s chat window. More concerningly, if User A confirmed or submitted their details, it was User B’s chat session that triggered the submission to Salesforce — but with User A’s information.
Let me know if you’d like more details or a replication scenario.
Below is the workflow.
When I try to
{
“nodes”: [
{
“parameters”: {
“public”: true,
“mode”: “webhook”,
“options”: {
“allowedOrigins”: “*”
}
},
“type”: “@n8n/n8n-nodes-langchain.chatTrigger”,
“typeVersion”: 1.1,
“position”: [
-340,
-100
],
“id”: “bfadbf20-e668-4603-8449-c224fb5ac8d1”,
“name”: “When chat message received”,
“webhookId”: “9c5f863a-ebae-4cc8-a40b-1b210b168f87”
},
{
“parameters”: {
“options”: {
“systemMessage”: “=You are a friendly and professional assistant for 8x8 Inc., designed to collect detailed information from individuals interested in joining the 8x8 Partner Program.\n\nYour primary goal is to guide the user through a structured, conversational flow and collect all required data accurately and securely.\n\n—\n\n⚠️ Session Isolation Requirement:\nYou must treat each user interaction as part of a unique and isolated session. Store and track all inputs exclusively under a session identifier (e.g. a combination of {{ $json.sessionId }}, {{ $execution.id }}, and {{ $now }}). Never reuse or expose data across sessions.\n\n—\n\n🌐 Flow Overview:\nBegin by confirming whether the user wants to join the 8x8 Partner Program. If yes, offer two paths:\n\n- Enter all required details at once\n- Proceed step-by-step (recommended)\n\n—\n\n🧾 Step-by-Step Information Collection:\n\n1. Personal Information\n- First Name\n- Last Name\n- Email Address (validate format)\n- Phone Number (include country code, e.g. +1, +44)\n\n2. Company Information\n- Company Name\n- Website\n- Country (accept ISO codes like US or GBR, map to full country name)\n- Street Address\n- City\n- Postal Code\n\n3. Business Profile\n- Number of Employees (must be numeric)\n- Annual Revenue (numeric only)\n- Currency (map to 2-char code, e.g., `$` → `USD`, `£` → `GBP` — offer dropdown options)\n\n—\n\n📋 Review and Submit:\nOnce all data is collected:\n\n- Show a summary grouped by category\n- Allow the user to edit any section\n- Confirm submission to 8x8’s Partner Onboarding Team\n\n—\n\n🚫 Scope Limitations:\nDo not answer general questions unrelated to the 8x8 Partner Program. If asked, redirect the user back to the onboarding process.\n”
}
},
“type”: “@n8n/n8n-nodes-langchain.agent”,
“typeVersion”: 1.8,
“position”: [
-80,
-80
],
“id”: “513bb4b8-8eb6-45d9-8693-eac3c869a405”,
“name”: “AI Agent”
},
{
“parameters”: {
“model”: {
“__rl”: true,
“value”: “gpt-4o”,
“mode”: “id”
},
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.lmChatOpenAi”,
“typeVersion”: 1.2,
“position”: [
-60,
140
],
“id”: “39d6b61d-7c15-4e44-be4f-f4e49c08e3a0”,
“name”: “OpenAI Chat Model”,
“credentials”: {
“openAiApi”: {
“id”: “GR7Ts2YeBtZxj7q7”,
“name”: “OpenAi account”
}
}
},
{
“parameters”: {
“sessionIdType”: “customKey”,
“sessionKey”: “={{ $json }}”
},
“type”: “@n8n/n8n-nodes-langchain.memoryBufferWindow”,
“typeVersion”: 1.3,
“position”: [
80,
240
],
“id”: “495ef062-b4ac-4bde-ab64-404b9badcd1f”,
“name”: “Simple Memory”
},
{
“parameters”: {
“company”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Company’, ``, ‘string’) }}”,
“lastname”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Last_Name’, ``, ‘string’) }}”,
“additionalFields”: {
“annualRevenue”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Annual_Revenue’, ``, ‘number’) }}”,
“country”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Country’, ``, ‘string’) }}”,
“numberOfEmployees”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Number_Of_Employees’, ``, ‘number’) }}”,
“phone”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Phone’, ``, ‘string’) }}”,
“postalCode”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Postal_Code’, ``, ‘string’) }}”,
“street”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Street’, ``, ‘string’) }}”,
“website”: “={{ /n8n-auto-generated-fromAI-override/ $fromAI(‘Website’, ``, ‘string’) }}”
}
},
“type”: “n8n-nodes-base.salesforceTool”,
“typeVersion”: 1,
“position”: [
240,
120
],
“id”: “45b2a503-cb42-4f00-bb3f-1b2b62ead42f”,
“name”: “Salesforce”,
“credentials”: {
“salesforceOAuth2Api”: {
“id”: “S4r9jsAkb21JqtE8”,
“name”: “SFDC VLocity Acceptance”
}
}
}
],
“connections”: {
“When chat message received”: {
“main”: [
[
{
“node”: “AI Agent”,
“type”: “main”,
“index”: 0
}
]
]
},
“OpenAI Chat Model”: {
“ai_languageModel”: [
[
{
“node”: “AI Agent”,
“type”: “ai_languageModel”,
“index”: 0
}
]
]
},
“Simple Memory”: {
“ai_memory”: [
[
{
“node”: “AI Agent”,
“type”: “ai_memory”,
“index”: 0
}
]
]
},
“Salesforce”: {
“ai_tool”: [
[
{
“node”: “AI Agent”,
“type”: “ai_tool”,
“index”: 0
}
]
]
}
},
“pinData”: {
“When chat message received”: [
{
“action”: “sendMessage”,
“sessionId”: “f76cc276-dd28-4fd4-9263-8778e41b0f2c”,
“chatInput”: "did I ask it previously ? ",
“metadata”: “{}”
}
]
},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “7512335d323f2050ce706d66a11fa4bb27da6c727023cbed57d8f192351a9ebb”
}
}
Thanks in advance.
Regards,
Sathish