This workflow follows the HTTP Request → Redis 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 →
{
"nodes": [
{
"id": "d2a02884-a082-4d77-8558-b819fdfd8e09",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1305,
-337
],
"parameters": {
"color": 7,
"width": 629.040241216464,
"height": 1416.261500302191,
"content": "## Use **Config Bot** to setup your telegram details, like:\n1- Telegram Group ID (Don't forget add bot as admin)\n2- Telegram Channel ID (Don't forget add bot as admin)\n3- Your telegram Bot Token. (Generate through @BotFather)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Setup data & filter & route to the correct Side.\n0- None of them - Soon - Wait V2\n1- Chat Type (`Private`)\n2- Chat Type (`Supergroup`)\n3- Chat Type (`Channel`)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Remember:\n* Do not make your support group public. Every message sent in the group on various topics will be forwarded to the user's ticket.\n* There is no need to promote your broadcasting channel; the main reason for the channel is to organize and broadcast messages.\n* You can host a Redis database without any coding/server management skills through Coolify.io.\n* In the next version, I will add the **edit messages** feature, where the forwarded messages will be updated with the new edited one.\n\n## Why use this method?\n* If you deal with Telegram P2P, anyone can delete messages from both sides. If you run a business, then one of your clients may delete all messages, causing you to lose the history. This solution prevents people from deleting messages; every message forwarded into the support group will not be possible to delete by the sender.\n* Team collaboration: Why share one account when you can convert the whole group into a ticketing system? With this project, you can invite all your coworkers to reply and provide support to your clients through Telegram.\n* Integrate with third-party services? Using N8N will pave the way for integrating your Telegram users' data into a CRM. In V2, we will enable the option to force new users to share their leads before receiving support."
},
"typeVersion": 1
},
{
"id": "c45c5efc-9c4d-4373-b267-bb13a01cb1de",
"name": "New User ?",
"type": "n8n-nodes-base.if",
"position": [
-400,
-140
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.isEmpty() }}",
"value2": "true",
"operation": "regex"
}
]
}
},
"typeVersion": 1
},
{
"id": "ab015a1f-9ee3-48f6-88c2-02d43fa739bc",
"name": "Format",
"type": "n8n-nodes-base.code",
"position": [
-1260,
260
],
"parameters": {
"jsCode": "function escapeRedisJsonSyntax(value) {\n if (typeof value === 'string') {\n return value.replace(/[\"\\\\/]/g, '\\\\$&');\n }\n return value;\n}\n\nconst outputItems = [];\n\nfor (let i = 0; i < items.length; i++) {\n const item = items[i];\n const escapedItem = { TG_USER_: {} };\n\n for (const key in item) {\n const value = item[key];\n if (Array.isArray(value)) {\n escapedItem.TG_USER_[key] = [escapeRedisJsonSyntax(value[0])];\n } else if (typeof value === 'object') {\n flattenObject(value, escapedItem.TG_USER_, key);\n } else {\n escapedItem.TG_USER_[key] = escapeRedisJsonSyntax(value);\n }\n }\n\n outputItems.push(escapedItem);\n}\n\nfunction flattenObject(obj, result, prefix) {\n for (const key in obj) {\n const newKey = prefix ? `${prefix}_${key}` : key;\n const value = obj[key];\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n result[newKey] = [escapeRedisJsonSyntax(value[0])];\n } else {\n flattenObject(value, result, newKey);\n }\n } else {\n result[newKey.replace('json_message_', '').replace('json_', '')] = escapeRedisJsonSyntax(value);\n }\n }\n}\n\nreturn outputItems;\n"
},
"typeVersion": 2
},
{
"id": "18c5126d-6c3e-4b5f-989e-d6830cb73a90",
"name": "Bot-Fields",
"type": "n8n-nodes-base.set",
"position": [
-1120,
260
],
"parameters": {
"mode": "raw",
"include": "selected",
"options": {},
"jsonOutput": "={{ $json.TG_USER_.removeField('BotToken').removeField('pairedItem_item').removeField('Support_Group_ID') }}"
},
"typeVersion": 3.2
},
{
"id": "0cc142e7-4fbc-4104-9529-1087a7bac68a",
"name": "Create Topic (Chat Ticket)",
"type": "n8n-nodes-base.httpRequest",
"position": [
80,
-260
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $('Bot-Config').item.json.BotToken }}/createForumTopic?chat_id={{ $('Bot-Config').item.json[\"Support_Group_ID\"]}}&name={{ encodeURIComponent(('['+$('Bot-Fields').item.json.from_first_name +'] - [id:'+ $('Bot-Fields').item.json.chat_id +']'))}}&icon_color=9367192&icon_custom_emoji_id=5417915203100613993",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "e983994f-7922-49c2-8c4e-73100a030898",
"name": "Save Topic ID",
"type": "n8n-nodes-base.redis",
"position": [
260,
-260
],
"parameters": {
"key": "=TG-USER-{{ $('Bot-Fields').item.json.chat_id }}",
"value": "={\"message_thread_id\":{{ $json.result.message_thread_id }}}",
"keyType": "hash",
"operation": "set"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1f3afe0c-3ec4-431f-92b7-f06df5e1b39d",
"name": "Get User Chat Topic",
"type": "n8n-nodes-base.redis",
"position": [
200,
-80
],
"parameters": {
"key": "=TG-USER-{{ $('Bot-Fields').item.json.chat_id }}",
"keyType": "hash",
"options": {},
"operation": "get",
"propertyName": "result"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "591e1768-58c9-428e-8a0d-69ba4cce7ccc",
"name": "Forward New Message",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
560,
-80
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $('Bot-Config').item.json.BotToken }}/forwardMessage?chat_id={{ $('Bot-Config').item.json[\"Support_Group_ID\"] }}&message_thread_id={{ $json[\"result\"][\"message_thread_id\"] }}&from_chat_id={{ $('Bot-Fields').item.json[\"chat_id\"] }}&message_id={{ $('Bot-Fields').item.json[\"message_id\"] }}",
"method": "POST",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "fd063a6d-0caa-4f81-921d-f8fa952d7b9b",
"name": "IF No Topic Created",
"type": "n8n-nodes-base.if",
"position": [
40,
320
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.error.message }}",
"value2": "thread not found",
"operation": "contains"
}
]
}
},
"typeVersion": 1
},
{
"id": "ef044803-5e2e-4e54-a10b-21ad5feadb26",
"name": "ReCreate Topic (Chat Ticket)",
"type": "n8n-nodes-base.httpRequest",
"position": [
220,
220
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $('Bot-Config').item.json.BotToken }}/createForumTopic?chat_id={{ $('Bot-Config').item.json[\"Support_Group_ID\"]}}&name={{ encodeURIComponent(('['+$('Bot-Fields').item.json.from_first_name +'] - [id:'+ $('Bot-Fields').item.json.chat_id +']'))}}&icon_color=9367192&icon_custom_emoji_id=5417915203100613993",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "691398ab-b434-46d0-b3fe-046235d7cdf8",
"name": "ReSave Topic ID",
"type": "n8n-nodes-base.redis",
"position": [
380,
220
],
"parameters": {
"key": "=TG-USER-{{ $('Bot-Fields').item.json.chat_id }}",
"value": "={\"message_thread_id\":{{ $json.result.message_thread_id }}}",
"keyType": "hash",
"operation": "set"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "69fc3fe2-a339-4c99-a85b-6facf41526bf",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
120.47661481708235
],
"parameters": {
"color": 3,
"width": 734.3067601294108,
"height": 466.5190319644644,
"content": "## Re Create New Topic\n**Sometimes** in support group may the team delete or close a ticket (topic) in case of that this steps will create topic again for the user, and store the new ticket id (topic/thread ID)."
},
"typeVersion": 1
},
{
"id": "4cb855d4-a306-4bd4-b24d-ee5f6db518d4",
"name": "Update User Data",
"type": "n8n-nodes-base.redis",
"position": [
-140,
-80
],
"parameters": {
"key": "=TG-USER-{{ $('Bot-Fields').item.json.chat_id }}",
"value": "={{ $item(\"0\").$node[\"Bot-Fields\"].json }}",
"keyType": "hash",
"operation": "set"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "878f0dec-ad7b-4584-b20a-dd3db634d6dd",
"name": "Save User Data",
"type": "n8n-nodes-base.redis",
"position": [
-140,
-260
],
"parameters": {
"key": "=TG-USER-{{ $('Bot-Fields').item.json.chat_id }}",
"value": "={{ $item(\"0\").$node[\"Bot-Fields\"].json }}",
"keyType": "hash",
"operation": "set"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "e411b235-74bf-4f1b-9070-da1d0dc15815",
"name": "Support Forum",
"type": "n8n-nodes-base.if",
"position": [
-620,
240
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $('Bot-Config').item.json.message.chat.id }}",
"value2": "={{ $('Bot-Config').item.json.Support_Group_ID }}",
"operation": "regex"
}
]
}
},
"typeVersion": 1
},
{
"id": "05c04455-1406-47aa-8a81-aa2ec914c502",
"name": "From Ticket",
"type": "n8n-nodes-base.if",
"position": [
-420,
220
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $('Bot-Fields').item.json.message_thread_id }}",
"operation": "isNotEmpty"
},
{
"value1": "={{ $('Bot-Fields').item.json.reply_to_message_is_topic_message }}",
"value2": "true",
"operation": "regex"
},
{
"value1": "={{ $('Bot-Fields').item.json.is_topic_message }}",
"value2": "true",
"operation": "regex"
}
]
}
},
"typeVersion": 1
},
{
"id": "71b55beb-7c93-40a1-a94b-f411d11eb713",
"name": "Forward Support Reply To User",
"type": "n8n-nodes-base.httpRequest",
"position": [
-200,
200
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $('Bot-Config').item.json.BotToken }}/forwardMessage?chat_id={{ $json[\"reply_to_message_forward_from_id\"] || $('Bot-Fields').item.json.reply_to_message_forum_topic_created_name.match(/\\[id:(\\d+)\\]/)[1] }}&from_chat_id={{ $('Bot-Config').item.json[\"Support_Group_ID\"] }}&message_id={{ $('Bot-Fields').item.json[\"message_id\"] }}",
"method": "POST",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "aa70a9f6-ac3c-4ac4-a829-ef3e35720f2f",
"name": "IF Topic Created",
"type": "n8n-nodes-base.if",
"position": [
-420,
440
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.forum_topic_created_name.isNotEmpty() }}",
"value2": "true",
"operation": "regex"
}
]
}
},
"typeVersion": 1
},
{
"id": "4b1ba81a-6986-48a9-b439-cd79cfe278b7",
"name": "Forward New Message to the recrated topic",
"type": "n8n-nodes-base.httpRequest",
"position": [
540,
220
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $('Bot-Config').item.json.BotToken }}/forwardMessage?chat_id={{ $('Bot-Config').item.json[\"Support_Group_ID\"] }}&message_thread_id={{ $json[\"result\"][\"message_thread_id\"] }}&from_chat_id={{ $('Bot-Fields').item.json[\"chat_id\"] }}&message_id={{ $('Bot-Fields').item.json[\"message_id\"] }}",
"method": "POST",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "7eef7a26-8c59-4020-90f8-45f28e36c43f",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
540,
420
],
"parameters": {},
"typeVersion": 1
},
{
"id": "db77035a-1256-4210-a13d-8333778fb579",
"name": "Check User in Database",
"type": "n8n-nodes-base.redis",
"notes": "Search Key",
"position": [
-580,
-140
],
"parameters": {
"operation": "keys",
"keyPattern": "=TG-USER-{{ $json.chat_id }}"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "c01200b7-8aa4-4d44-a9a9-a802179f3afc",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
120
],
"parameters": {
"color": 5,
"width": 656,
"height": 473,
"content": "## Support Side\n**This Part** is meant to forward replies that sent by support (members in the group)"
},
"typeVersion": 1
},
{
"id": "a443f847-248a-4287-8aad-737c4891b344",
"name": "Send User Ticket Created Notification",
"type": "n8n-nodes-base.telegram",
"position": [
-220,
420
],
"parameters": {
"text": "A new ticket has been created for you. Please wait while one of our support team members becomes available to reply.",
"chatId": "={{ $json.forum_topic_created_name.match(/\\[id:(\\d+)\\]/)[1] }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "2746b480-91ed-4968-809d-9eca523d290a",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656.2527877074685,
-340
],
"parameters": {
"color": 3,
"width": 1409.9137494026593,
"height": 422,
"content": "## User Side\n**This Part** is meant to save user data on a RAM database which is fast, and in same time forward the message to support after creating a new ticket (Topic) dedciated for the user id in the support group."
},
"typeVersion": 1
},
{
"id": "545d768f-a0b2-465a-a084-c43a6231d31a",
"name": "Bot-Config",
"type": "n8n-nodes-base.set",
"position": [
-880,
-200
],
"parameters": {
"fields": {
"values": [
{
"name": "BotToken",
"stringValue": "Your Bot Token here (Also add credntinals in Telegram Node)"
},
{
"name": "Support_Group_ID",
"stringValue": "Your Telegram Group here (Don't forget to give BOT admin privileges)"
},
{
"name": "Boradcast_Channel_ID",
"stringValue": "Your Telegram Channel here (Don't forget to give BOT admin privileges)"
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "59145dcd-51e3-4392-ad79-85601c872931",
"name": "Telegram-Bot",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-1240,
-200
],
"parameters": {
"updates": [
"message",
"channel_post"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "14b0ac28-5be5-4878-ab57-f7361291cc8e",
"name": "1st",
"type": "n8n-nodes-base.switch",
"position": [
-980,
260
],
"parameters": {
"rules": {
"rules": [
{
"output": 1,
"value2": "private",
"operation": "regex"
},
{
"output": 2,
"value2": "supergroup",
"operation": "regex"
},
{
"output": 3,
"value2": "channel",
"operation": "regex"
}
]
},
"value1": "={{ $json.chat_type || $json.channel_post_sender_chat_type }}",
"dataType": "string",
"fallbackOutput": 0
},
"typeVersion": 1
},
{
"id": "d91e0fdf-7344-4968-beac-49c2331b5170",
"name": "Split In Batches1",
"type": "n8n-nodes-base.splitInBatches",
"notes": "Telegram Limitation 29/sec",
"position": [
160,
780
],
"parameters": {
"options": {},
"batchSize": 29
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "f6ce5dbb-8707-4243-9814-5bd57397e652",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"position": [
560,
740
],
"parameters": {
"unit": "seconds",
"amount": 3
},
"typeVersion": 1
},
{
"id": "640e9ca9-de7d-4dae-a15a-d0232864c877",
"name": "Format Users",
"type": "n8n-nodes-base.code",
"position": [
-200,
780
],
"parameters": {
"jsCode": "let response = items[0].json; // get the Redis response\nlet newItems = []; // to store the new items\n\nfor(let key in response) {\n if(response.hasOwnProperty(key)) {\n newItems.push({\n json: {\n user: response[key]\n }\n });\n }\n}\n\nreturn newItems;\n"
},
"typeVersion": 1
},
{
"id": "8c330aca-3720-439e-87c6-47d914f828c3",
"name": "Broadcast Channel Post into Users",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
380,
760
],
"parameters": {
"url": "=https://api.telegram.org/bot{{ $('Bot-Config').item.json.BotToken }}/copyMessage?chat_id={{ $('Split In Batches1').item.json[\"user\"][\"chat_id\"] }}&from_chat_id={{ $('Bot-Config').item.json[\"Boradcast_Channel_ID\"] }}&message_id={{ $('Bot-Config').item.json[\"channel_post\"][\"message_id\"] }}",
"method": "POST",
"options": {}
},
"typeVersion": 4.1
},
{
"id": "3beb15dd-6e76-4350-97c3-22f39d768497",
"name": "Set Blocked Member",
"type": "n8n-nodes-base.redis",
"position": [
560,
900
],
"parameters": {
"key": "=TG-USER-{{ $('Bot-Fields').item.json.chat_id || $('Split In Batches1').item.json.user.chat_id }}",
"value": "={\"Blocked\":{{ '1' }}}",
"keyType": "hash",
"operation": "set"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "03d457f1-ca11-4134-b0f9-d4d029ce141a",
"name": "IF Verified Channel",
"type": "n8n-nodes-base.if",
"position": [
-558,
800
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $('Bot-Config').item.json.channel_post.sender_chat.id }}",
"value2": "={{ $('Bot-Config').item.json.Boradcast_Channel_ID }}",
"operation": "regex"
}
]
}
},
"typeVersion": 1
},
{
"id": "6f38d2d0-5734-4829-ab97-8aca57827646",
"name": "Filter Blocked Users",
"type": "n8n-nodes-base.filter",
"position": [
-20,
780
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.user.Blocked }}",
"value2": "1",
"operation": "notRegex"
}
]
}
},
"typeVersion": 1
},
{
"id": "37ffb301-0284-493e-abed-aaff293b4a92",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-660,
620
],
"parameters": {
"color": 6,
"width": 1413.320293398532,
"height": 460.58353708231465,
"content": "## Channel Side (Broadcasting)\n**This Part** where the support of brand broadcasting message to all previous users who used this bot before."
},
"typeVersion": 1
},
{
"id": "d34a0080-6db8-4d29-b6ff-b0b0bf3be8af",
"name": "Retrieve all users in DB",
"type": "n8n-nodes-base.redis",
"notes": "Search Key",
"position": [
-378,
780
],
"parameters": {
"operation": "keys",
"keyPattern": "=TG-USER-*"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 1
}
],
"connections": {
"1st": {
"main": [
null,
[
{
"node": "Check User in Database",
"type": "main",
"index": 0
}
],
[
{
"node": "Support Forum",
"type": "main",
"index": 0
}
],
[
{
"node": "IF Verified Channel",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Split In Batches1",
"type": "main",
"index": 0
}
]
]
},
"Format": {
"main": [
[
{
"node": "Bot-Fields",
"type": "main",
"index": 0
}
]
]
},
"Bot-Config": {
"main": [
[
{
"node": "Format",
"type": "main",
"index": 0
}
]
]
},
"Bot-Fields": {
"main": [
[
{
"node": "1st",
"type": "main",
"index": 0
}
]
]
},
"New User ?": {
"main": [
[
{
"node": "Save User Data",
"type": "main",
"index": 0
}
],
[
{
"node": "Update User Data",
"type": "main",
"index": 0
}
]
]
},
"From Ticket": {
"main": [
[
{
"node": "Forward Support Reply To User",
"type": "main",
"index": 0
}
],
[
{
"node": "IF Topic Created",
"type": "main",
"index": 0
}
]
]
},
"Format Users": {
"main": [
[
{
"node": "Filter Blocked Users",
"type": "main",
"index": 0
}
]
]
},
"Telegram-Bot": {
"main": [
[
{
"node": "Bot-Config",
"type": "main",
"index": 0
}
]
]
},
"Save Topic ID": {
"main": [
[
{
"node": "Forward New Message",
"type": "main",
"index": 0
}
]
]
},
"Support Forum": {
"main": [
[
{
"node": "From Ticket",
"type": "main",
"index": 0
}
]
]
},
"Save User Data": {
"main": [
[
{
"node": "Create Topic (Chat Ticket)",
"type": "main",
"index": 0
}
]
]
},
"ReSave Topic ID": {
"main": [
[
{
"node": "Forward New Message to the recrated topic",
"type": "main",
"index": 0
}
]
]
},
"IF Topic Created": {
"main": [
[
{
"node": "Send User Ticket Created Notification",
"type": "main",
"index": 0
}
]
]
},
"Update User Data": {
"main": [
[
{
"node": "Get User Chat Topic",
"type": "main",
"index": 0
}
]
]
},
"Split In Batches1": {
"main": [
[
{
"node": "Broadcast Channel Post into Users",
"type": "main",
"index": 0
}
]
]
},
"Set Blocked Member": {
"main": [
[
{
"node": "Split In Batches1",
"type": "main",
"index": 0
}
]
]
},
"Forward New Message": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
],
[
{
"node": "IF No Topic Created",
"type": "main",
"index": 0
}
]
]
},
"Get User Chat Topic": {
"main": [
[
{
"node": "Forward New Message",
"type": "main",
"index": 0
}
]
]
},
"IF No Topic Created": {
"main": [
[
{
"node": "ReCreate Topic (Chat Ticket)",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"IF Verified Channel": {
"main": [
[
{
"node": "Retrieve all users in DB",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Filter Blocked Users": {
"main": [
[
{
"node": "Split In Batches1",
"type": "main",
"index": 0
}
]
]
},
"Check User in Database": {
"main": [
[
{
"node": "New User ?",
"type": "main",
"index": 0
}
]
]
},
"Retrieve all users in DB": {
"main": [
[
{
"node": "Format Users",
"type": "main",
"index": 0
}
]
]
},
"Create Topic (Chat Ticket)": {
"main": [
[
{
"node": "Save Topic ID",
"type": "main",
"index": 0
}
]
]
},
"ReCreate Topic (Chat Ticket)": {
"main": [
[
{
"node": "ReSave Topic ID",
"type": "main",
"index": 0
}
]
]
},
"Forward Support Reply To User": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Broadcast Channel Post into Users": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
],
[
{
"node": "Set Blocked Member",
"type": "main",
"index": 0
}
]
]
},
"Send User Ticket Created Notification": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Forward New Message to the recrated topic": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"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.
redistelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow enables seamless management of customer support conversations in Telegram by automatically assigning or retrieving a dedicated chat topic for each user, ensuring messages stay organised and context is preserved across interactions. It's ideal for businesses or community managers handling high-volume Telegram support queries, reducing the chaos of scattered chats. The key step involves checking for an existing topic ID stored in Redis upon a new message trigger, then forwarding the message to that topic via Telegram's API, with HTTP requests handling the creation of new topics when needed.
Use this workflow when scaling Telegram-based support to maintain threaded discussions without manual intervention, particularly for bots integrated with external systems like Redis for state management. Avoid it for simple one-off notifications or non-conversational bots, where basic Telegram triggers suffice. Common variations include adding email notifications for topic escalations or integrating with CRM tools to log interactions.
About this workflow
Telegram Wait. Uses stickyNote, httpRequest, redis, noOp. Event-driven trigger; 36 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
Telegram Meditation Bot (Fixed with State). Uses telegramTrigger, redis, telegram, httpRequest. Event-driven trigger; 26 nodes.
Telegram Meditation Bot (Fixed with State). Uses telegramTrigger, redis, telegram, httpRequest. Event-driven trigger; 26 nodes.
Telegram Meditation Bot (Fixed with State). Uses telegramTrigger, redis, telegram, httpRequest. Event-driven trigger; 26 nodes.
Telegram Meditation Bot (Fixed with State). Uses telegramTrigger, redis, telegram, httpRequest. Event-driven trigger; 26 nodes.
Telegram Meditation Bot (Fixed with State). Uses telegramTrigger, redis, telegram, httpRequest. Event-driven trigger; 26 nodes.