This workflow follows the Agent → Google Gemini Chat 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 →
{
"updatedAt": "2025-11-16T12:10:03.000Z",
"createdAt": "2025-11-16T09:29:34.344Z",
"id": "CEREUymv8Tli6LYh",
"name": "Slack",
"description": null,
"active": false,
"isArchived": true,
"nodes": [
{
"parameters": {
"trigger": [
"message"
],
"watchWorkspace": true,
"options": {
"resolveIds": false
}
},
"type": "n8n-nodes-base.slackTrigger",
"typeVersion": 1,
"position": [
-1440,
-96
],
"id": "b07fbe97-b809-404b-84bc-ce5699d8d658",
"name": "Slack Trigger",
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=You are an AI assistant that lives in a Slack workspace.\n\nYour job:\n- Have friendly, helpful conversations with users.\n- Always respond as a helpful coworker, not a robot.\n- Your answer will be sent as a *thread reply* to the user\u2019s original message.\n\nAvailable tool:\n- \"Get Thread Messages\": use this tool to fetch the existing Slack thread so you can see previous messages and maintain context.\n - Call this when the user\u2019s message seems to be a follow-up, unclear, or missing context.\n - After you read the thread, respond based on the full conversation, not just the last message.\n\nReply rules:\n1. **Always assume your reply will be posted in the same thread** as the message with the given timestamp.\n - Do NOT output channel IDs, thread_ts, or any metadata \u2014 only the message text itself.\n2. Be concise and clear. Prefer short paragraphs and bullet points when helpful.\n3. If something is ambiguous, ask a short clarifying question instead of guessing.\n4. Use the user\u2019s name naturally once at the start if it feels appropriate.\n5. Do not mention tools or internal implementation details in your reply.\n\nContext:\n- User first name: {{ $json.first_name }}\n- Channel ID: {{ $json.channel }}\n- Thread timestamp: {{ $json.timestamp }}\n- User message: {{ $json.text }}\n\nGiven the user message and the context above, decide whether you need to call \"Get Thread Messages\". \nThen, write the best possible reply that should be posted as a Slack thread message.\n\n\n",
"options": {
"systemMessage": "You are a helpful assistant, your name is Jarvis, your ai assistant for today"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3,
"position": [
-656,
-224
],
"id": "b14a55c9-62d2-4def-8d89-61524b020f86",
"name": "AI Agent"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
-672,
288
],
"id": "8f4f333e-f79d-4511-8a94-b8c82ef48f30",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "user",
"user": {
"__rl": true,
"value": "={{ $json.user }}",
"mode": "id"
}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.3,
"position": [
-1040,
-80
],
"id": "303aebe9-defb-4676-8955-668aa16a474d",
"name": "Get information about a user",
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "80f580b8-2091-4235-99fb-858510bff83e",
"name": "timestamp",
"value": "={{ $('Slack Trigger').item.json.ts }}",
"type": "string"
},
{
"id": "576c521b-199b-430b-82bc-f8f9d0b389bf",
"name": "user",
"value": "={{ $('Slack Trigger').item.json.user }}",
"type": "string"
},
{
"id": "7936a6ba-62aa-49f3-b600-8910a6c210f4",
"name": "channel",
"value": "={{ $('Slack Trigger').item.json.channel }}",
"type": "string"
},
{
"id": "5698a03c-cdd0-46ca-86bb-312802f7066f",
"name": "text",
"value": "={{ $('Slack Trigger').item.json.text }}",
"type": "string"
},
{
"id": "2d0d000c-45c1-4256-b72c-d00d2d6651e2",
"name": "first_name",
"value": "={{ $json.profile.first_name }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-832,
-48
],
"id": "9f265e32-c116-4319-bde8-84961b361ff7",
"name": "Edit Fields"
},
{
"parameters": {
"select": "channel",
"channelId": {
"__rl": true,
"value": "C09PQU0KVB3",
"mode": "list",
"cachedResultName": "bookings"
},
"text": "={{ $json.output }}",
"otherOptions": {
"includeLinkToWorkflow": false,
"thread_ts": {
"replyValues": {
"thread_ts": "={{ $('Edit Fields').item.json.timestamp }}"
}
}
}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.3,
"position": [
-288,
-64
],
"id": "5c819c3b-9712-4dfe-b739-6e5078ce8a80",
"name": "send message and reply to a thread",
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $json.user }}"
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
-496,
32
],
"id": "5c2b72d8-4f3f-4bd2-bb03-1828f0899d4d",
"name": "Simple Memory"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "20626904-1647-4305-be34-a3f1a9fd2bc4",
"leftValue": "={{ $json.bot_id }}",
"rightValue": "={{ $json.user }}",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-1264,
240
],
"id": "c3076ed2-2242-4b89-9bf7-4ec1d7f2d317",
"name": "If"
}
],
"connections": {
"Slack Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "send message and reply to a thread",
"type": "main",
"index": 0
}
]
]
},
"Get information about a user": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Get information about a user",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "a9346146-249e-4216-9226-f4d3d0842488",
"activeVersionId": null,
"versionCounter": 3,
"triggerCount": 0,
"shared": [
{
"updatedAt": "2025-11-16T09:29:34.346Z",
"createdAt": "2025-11-16T09:29:34.346Z",
"role": "workflow:owner",
"workflowId": "CEREUymv8Tli6LYh",
"projectId": "6TsYTzg0HY92xH2K",
"project": {
"updatedAt": "2025-11-14T08:33:27.896Z",
"createdAt": "2025-11-14T07:49:25.938Z",
"id": "6TsYTzg0HY92xH2K",
"name": "Christine Kam <windowrevival@gmail.com>",
"type": "personal",
"icon": null,
"description": null,
"creatorId": "bc31a112-3ed8-48ca-b94c-7225571c3d7b"
}
}
],
"tags": [],
"activeVersion": null
}
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.
googlePalmApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Slack. Uses slackTrigger, agent, lmChatGoogleGemini, slack. Event-driven trigger; 8 nodes.
Source: https://github.com/donPuerto/n8n-workflows/blob/1218084aa4a7b90465c878f09c6960f21d9f1f9e/workflows/Slack.json — 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.
This workflow connects Slack with Google Workspace, Cal.com, OpenWeather, and Google Gemini to act as a Slack-based assistant for Gmail, Calendar, Docs, Sheets, Drive, and Contacts, and to post an aut
💸💬 Slack Pro is powerful — but the price hurts, especially for growing teams. This workflow is designed as a low-cost alternative solution that provides some Slack Pro functions (searchable history +
Customer support agent. Uses httpRequest, googleSheets, memoryBufferWindow, googleSheetsTool. Event-driven trigger; 19 nodes.
Customer support agent. Uses httpRequest, googleSheets, memoryBufferWindow, googleSheetsTool. Event-driven trigger; 19 nodes.
This workflow integrates Google Analytics 4 (GA4) with Slack, enabling users to query their website data using natural language inside a dedicated Slack channel. An AI Agent interprets user queries, f