{"workflow":{"id":13166,"name":"Manage Supabase database records with Telegram bot commands","views":46,"recentViews":0,"totalViews":46,"createdAt":"2026-02-02T01:32:36.923Z","description":"# Manage Supabase database with Telegram commands\n\n## How it works\n\n1. **Receive message** — Telegram trigger captures incoming bot messages\n2. **Validate user** — Checks if sender's chat ID is in the authorized list\n3. **Parse command** — Extracts command type (/add, /list, etc.) and parameters\n4. **Route & execute** — Performs the appropriate Supabase operation (INSERT, SELECT, UPDATE, DELETE)\n5. **Respond** — Sends formatted results back to Telegram\n\nTurn your Telegram into a powerful database management interface. This workflow lets you create, read, update, delete, and search records in your Supabase database using simple chat commands — no SQL knowledge required.\n\n## Who is this for?\n\nSmall business owners, freelancers, and teams who need to manage data on the go without opening dashboards or writing queries. Perfect for inventory tracking, simple CRM, expense logging, or any scenario where you need quick mobile access to your database.\n\n## What problem does it solve?\n\nManaging database records typically requires logging into admin panels or writing SQL queries. This workflow eliminates that friction by letting you interact with your data through familiar Telegram messages, from anywhere, on any device.\n\n## Benefits\n\n- **Mobile database access** — Manage your data from anywhere using just your phone\n- **Zero SQL required** — Simple commands replace complex database queries  \n- **Secure by default** — Only authorized Telegram users can access your data\n- **Instant feedback** — Get formatted responses confirming every operation\n- **Fully customizable** — Adapt to any table structure with minimal changes\n\n## Available commands\n\n| Command | Format | Example |\n|---------|--------|---------|\n| `/add` | name, price, quantity, category | `/add iPhone 15, 999.99, 50, electronics` |\n| `/list` | [category] | `/list` or `/list electronics` |\n| `/get` | id | `/get 15` |\n| `/update` | id field=value | `/update 15 price=899 quantity=45` |\n| `/delete` | id | `/delete 15` |\n| `/search` | text | `/search iPhone` |\n| `/help` | — | Shows all available commands |\n\n## Set up steps\n\n### 1. Create your Telegram bot\n- Message [@BotFather](https://t.me/BotFather) on Telegram\n- Send `/newbot` and follow the prompts\n- Save the API token you receive\n\n### 2. Get your Telegram chat ID\n- Message [@userinfobot](https://t.me/userinfobot) on Telegram\n- It will reply with your chat ID number\n\n### 3. Create the Supabase table\nRun this SQL in your Supabase project's SQL Editor:\n\n```sql\nCREATE TABLE products (\n  id SERIAL PRIMARY KEY,\n  name TEXT NOT NULL,\n  price DECIMAL(10,2),\n  quantity INTEGER DEFAULT 0,\n  category TEXT,\n  created_at TIMESTAMP DEFAULT NOW()\n);\n```\n\n### 4. Configure the workflow\n1. Import the workflow into n8n\n2. Add your **Telegram Bot** credentials (using the API token from step 1)\n3. Add your **Supabase** credentials (Project URL + API Key from Supabase dashboard)\n4. Open the **\"Is Authorized?\"** node and replace `123456789` with your actual chat ID from step 2\n5. Activate the workflow\n\n### 5. Test it\nSend `/help` to your bot to verify everything works!\n\n## Customization\n\n### Adding more authorized users\n\n1. Open the **\"Is Authorized?\"** node\n2. Click **\"Add condition\"**\n3. Add another OR condition: `chatId` equals `[new user's chat ID]`\n\n### Using a different table\n\n1. Change `products` to your table name in all Supabase nodes\n2. Update the field parsing in the **\"Parse Command and Parameters\"** code node\n3. Update field mappings in **\"Supabase Insert Product\"** and **\"Prepare Update Data\"** nodes\n4. Adjust the help message in **\"Send Help Message\"** node\n\n### Adding more fields\n\n1. Modify the command parsing logic in **\"Parse Command and Parameters\"**\n2. Add field mappings in the Supabase Insert node\n3. Update the **\"Prepare Update Data\"** Set node with new fields\n4. Update the help message\n\n## Example use cases\n\n- **Inventory management** — Track stock levels from your phone while in the warehouse\n- **Simple CRM** — Add and lookup contacts on the go\n- **Expense tracking** — Log expenses as they happen\n- **Task management** — Create and update tasks without opening any app\n- **Field data collection** — Teams can submit data from anywhere\n\n## Requirements\n\n- n8n instance (cloud or self-hosted)\n- Telegram account\n- Supabase account (free tier works)\n\n**Difficulty level:** Intermediate  \n**Estimated setup time:** 15-20 minutes  \n**Monthly operating cost:** $0 (Telegram and Supabase free tiers)\n","workflow":{"id":"ZrMZ6kmAjmMVe3MWBht-W","meta":{"instanceId":"cbeebdeaf8bbc721fb723a5ddd32639a318ef9cb6556e00e4d2dc7a2110a9ea6","templateCredsSetupCompleted":true},"name":"Manage Supabase database with Telegram commands","tags":[],"nodes":[{"id":"489db1e4-058f-4c8a-b570-6aec40dbe3a5","name":"Telegram Trigger","type":"n8n-nodes-base.telegramTrigger","position":[-1840,368],"webhookId":"telegram-webhook-id","parameters":{"updates":["message"],"additionalFields":{}},"typeVersion":1.1},{"id":"c42dbc91-8b38-422c-9121-6a1bb1171097","name":"Extract Message Data","type":"n8n-nodes-base.set","position":[-1616,368],"parameters":{"options":{},"assignments":{"assignments":[{"id":"field-chatId","name":"chatId","type":"number","value":"={{ $json.message.chat.id }}"},{"id":"field-text","name":"text","type":"string","value":"={{ $json.message.text }}"},{"id":"field-firstName","name":"firstName","type":"string","value":"={{ $json.message.from.first_name }}"}]}},"typeVersion":3.4},{"id":"0c7cf41a-0950-4985-88e5-26e5c79305e7","name":"Is Authorized?","type":"n8n-nodes-base.if","position":[-1392,368],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"or","conditions":[{"id":"condition-auth-1","operator":{"type":"number","operation":"equals"},"leftValue":"={{ $json.chatId }}","rightValue":123456789},{"id":"condition-auth-2","operator":{"type":"number","operation":"equals"},"leftValue":"={{ $json.chatId }}","rightValue":987654321}]}},"typeVersion":2.2},{"id":"28e1ac01-179b-4203-8e2a-a6d5edaf31f9","name":"Parse Command and Parameters","type":"n8n-nodes-base.code","position":[-1168,368],"parameters":{"jsCode":"/*\n * Parse Telegram Command\n * ======================\n * Purpose: Extracts the command and parameters from the Telegram message.\n *          Supports: /add, /list, /get, /update, /delete, /search, /help\n * \n * Input: Telegram message text\n * Output: Parsed command object with command name and parameters\n */\n\nconst text = $input.first().json.text || '';\nconst chatId = $input.first().json.chatId;\n\nconst commandMatch = text.match(/^\\/([a-z]+)/i);\nconst command = commandMatch ? commandMatch[1].toLowerCase() : 'unknown';\nconst paramsText = text.replace(/^\\/[a-z]+\\s*/i, '').trim();\n\nlet parsed = {\n  command: command,\n  chatId: chatId,\n  rawParams: paramsText,\n  params: {}\n};\n\nswitch (command) {\n  case 'add':\n    const addParts = paramsText.split(',').map(p => p.trim());\n    if (addParts.length >= 4) {\n      parsed.params = {\n        name: addParts[0],\n        price: parseFloat(addParts[1]) || 0,\n        quantity: parseInt(addParts[2]) || 0,\n        category: addParts[3]\n      };\n    } else {\n      parsed.params.error = 'Invalid format. Use: /add name, price, quantity, category';\n    }\n    break;\n  case 'list':\n    parsed.params.category = paramsText || null;\n    break;\n  case 'get':\n    parsed.params.id = parseInt(paramsText) || null;\n    if (!parsed.params.id) parsed.params.error = 'Invalid format. Use: /get id';\n    break;\n  case 'update':\n    const updateParts = paramsText.split(' ');\n    parsed.params.id = parseInt(updateParts[0]) || null;\n    parsed.params.updates = {};\n    if (parsed.params.id) {\n      for (let i = 1; i < updateParts.length; i++) {\n        const [field, value] = updateParts[i].split('=');\n        if (field && value !== undefined) {\n          if (field === 'price') parsed.params.updates[field] = parseFloat(value);\n          else if (field === 'quantity') parsed.params.updates[field] = parseInt(value);\n          else parsed.params.updates[field] = value;\n        }\n      }\n      if (Object.keys(parsed.params.updates).length === 0) {\n        parsed.params.error = 'No valid updates. Use: /update id field=value';\n      }\n    } else {\n      parsed.params.error = 'Invalid format. Use: /update id field=value';\n    }\n    break;\n  case 'delete':\n    parsed.params.id = parseInt(paramsText) || null;\n    if (!parsed.params.id) parsed.params.error = 'Invalid format. Use: /delete id';\n    break;\n  case 'search':\n    parsed.params.searchText = paramsText;\n    if (!paramsText) parsed.params.error = 'Invalid format. Use: /search text';\n    break;\n  case 'help':\n    break;\n  default:\n    parsed.params.error = 'Unknown command. Use /help to see available commands.';\n}\n\nreturn [{ json: parsed }];"},"typeVersion":2},{"id":"c591a0af-a344-4a68-acdc-9fb79a43fdf5","name":"Route by Command","type":"n8n-nodes-base.switch","position":[-944,272],"parameters":{"rules":{"values":[{"outputKey":"add","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"b56d6ee5-28ed-4bdb-b8fa-4ca2180a66a9","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"add"}]},"renameOutput":true},{"outputKey":"list","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"95a0ed9b-9638-4e21-9c19-f2397499da93","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"list"}]},"renameOutput":true},{"outputKey":"get","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"275caeec-ffe6-40d2-8556-0889df27746c","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"get"}]},"renameOutput":true},{"outputKey":"update","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"0e0e9994-9efa-4a91-ae90-9680217ba67e","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"update"}]},"renameOutput":true},{"outputKey":"delete","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"7874ddd3-8c0f-4851-b5e7-c69c35761179","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"delete"}]},"renameOutput":true},{"outputKey":"search","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5c96f930-9866-4f54-abf9-5ccef8ed8717","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"search"}]},"renameOutput":true},{"outputKey":"help","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"07cf0917-9987-4330-ab8f-34aa15c59a73","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.command }}","rightValue":"help"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3.2},{"id":"2d73fe4d-5cc1-4a09-ba63-d42bd5e885cb","name":"Add Has Error?","type":"n8n-nodes-base.if","position":[-720,-976],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-error","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.params.error }}","rightValue":""}]}},"typeVersion":2.2},{"id":"55fb6dea-5fd1-40e1-8f15-5adda8057f28","name":"Supabase Insert Product","type":"n8n-nodes-base.supabase","position":[-496,-880],"parameters":{"tableId":"products","fieldsUi":{"fieldValues":[{"fieldValue":"={{ $json.params.name }}"},{"fieldValue":"={{ $json.params.price }}"},{"fieldValue":"={{ $json.params.quantity }}"},{"fieldValue":"={{ $json.params.category }}"}]}},"typeVersion":1},{"id":"1b62e61f-dfad-4c95-8dde-5f8496e1295b","name":"Send Add Success","type":"n8n-nodes-base.telegram","position":[-272,-880],"webhookId":"4e950817-1411-49aa-ae13-8bf181e43922","parameters":{"text":"=✅ Product added successfully!\n\n📦 Name: {{ $json.name }}\n💰 Price: ${{ $json.price }}\n📊 Quantity: {{ $json.quantity }}\n🏷️ Category: {{ $json.category }}\n🆔 ID: {{ $json.id }}","chatId":"={{ $('Parse Command and Parameters').item.json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"c4623db7-78b7-453c-bb8e-49748cb7ec35","name":"Send Add Error","type":"n8n-nodes-base.telegram","position":[-496,-1072],"webhookId":"182c0b56-4f5a-4c3d-a82b-bda0b4e3ffdc","parameters":{"text":"=❌ Error: {{ $json.params.error }}\n\n📝 Correct format:\n/add name, price, quantity, category\n\nExample:\n/add iPhone 15, 999.99, 50, electronics","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"687c5ea4-d7f8-4eb3-ab17-2dfb77b0fe3b","name":"Filter by Category?","type":"n8n-nodes-base.if","position":[-720,-592],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-category","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.params.category }}","rightValue":""}]}},"typeVersion":2.2},{"id":"4f0e9584-9da4-443d-9d39-06b201a4fde2","name":"Supabase List Filtered","type":"n8n-nodes-base.supabase","position":[-496,-688],"parameters":{"tableId":"products","operation":"getAll","returnAll":true,"filterType":"string","filterString":"category=eq.{{ $json.params.category }}"},"typeVersion":1},{"id":"1f2f0ffa-a240-48c4-959d-998b662e194c","name":"Supabase List All","type":"n8n-nodes-base.supabase","position":[-496,-496],"parameters":{"tableId":"products","operation":"getAll","returnAll":true},"typeVersion":1},{"id":"740c9210-44dc-4cd6-9f76-44d2170018bc","name":"Format Product List","type":"n8n-nodes-base.code","position":[-272,-592],"parameters":{"jsCode":"const items = $input.all();\nconst chatId = $('Parse Command and Parameters').first().json.chatId;\nconst category = $('Parse Command and Parameters').first().json.params.category;\n\nif (items.length === 0) {\n  return [{\n    json: {\n      chatId: chatId,\n      message: category \n        ? `📭 No products found in category \"${category}\"`\n        : '📭 No products in database'\n    }\n  }];\n}\n\nlet message = category \n  ? `📦 Products in \"${category}\" (${items.length}):\\n\\n`\n  : `📦 All Products (${items.length}):\\n\\n`;\n\nitems.forEach((item, index) => {\n  const p = item.json;\n  message += `${index + 1}. [ID: ${p.id}] ${p.name}\\n`;\n  message += `   💰 $${p.price} | 📊 Qty: ${p.quantity} | 🏷️ ${p.category}\\n\\n`;\n});\n\nreturn [{ json: { chatId, message } }];"},"typeVersion":2},{"id":"98596398-5e01-45f6-9c0b-3da66360eab5","name":"Send Product List","type":"n8n-nodes-base.telegram","position":[-48,-592],"webhookId":"9a5bbf85-5567-4808-a79d-ca9cbdfc5a87","parameters":{"text":"={{ $json.message }}","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"ba38d3a8-ccb3-4c4f-9109-9a9538e246d8","name":"Get Has Error?","type":"n8n-nodes-base.if","position":[-720,-208],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-error-get","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.params.error }}","rightValue":""}]}},"typeVersion":2.2},{"id":"50649ea2-0d2e-402d-a9f4-d03294922ddb","name":"Supabase Get Product","type":"n8n-nodes-base.supabase","position":[-512,-112],"parameters":{"limit":1,"tableId":"products","operation":"getAll","filterType":"string","filterString":"id=eq.{{ $json.params.id }}"},"typeVersion":1},{"id":"8f30e94f-162c-4bc7-ba5b-6a653361adfd","name":"Send Product Details","type":"n8n-nodes-base.telegram","position":[-288,-112],"webhookId":"8a0466e1-eeba-4511-930b-ef29e862a425","parameters":{"text":"=📦 Product Details:\n\n🆔 ID: {{ $json.id }}\n📦 Name: {{ $json.name }}\n💰 Price: ${{ $json.price }}\n📊 Quantity: {{ $json.quantity }}\n🏷️ Category: {{ $json.category }}","chatId":"={{ $('Parse Command and Parameters').item.json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"fe7e3537-d833-4533-a271-54ccec98f9af","name":"Send Get Error","type":"n8n-nodes-base.telegram","position":[-512,-304],"webhookId":"7fdeb580-240c-4e42-88db-b6e1d7e953a8","parameters":{"text":"=❌ Error: {{ $json.params.error }}\n\n📝 Correct format:\n/get id\n\nExample:\n/get 15","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"68c690c1-54b1-4330-87aa-eb525b58b259","name":"Update Has Error?","type":"n8n-nodes-base.if","position":[-720,176],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-error-update","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.params.error }}","rightValue":""}]}},"typeVersion":2.2},{"id":"c17faffe-664c-4ebe-beba-eb6a1d0d106c","name":"Prepare Update Data","type":"n8n-nodes-base.set","position":[-512,288],"parameters":{"options":{"ignoreConversionErrors":true},"assignments":{"assignments":[{"id":"update-id","name":"id","type":"number","value":"={{ $json.params.id }}"},{"id":"update-name","name":"name","type":"string","value":"={{ $json.params.updates.name }}"},{"id":"update-price","name":"price","type":"number","value":"={{ $json.params.updates.price }}"},{"id":"update-quantity","name":"quantity","type":"number","value":"={{ $json.params.updates.quantity }}"},{"id":"update-category","name":"category","type":"string","value":"={{ $json.params.updates.category }}"}]}},"typeVersion":3.4},{"id":"2fb60504-55bf-44bb-827e-509a6094f824","name":"Supabase Update Product","type":"n8n-nodes-base.supabase","position":[-288,288],"parameters":{"tableId":"products","operation":"update","filterType":"string","filterString":"id=eq.{{ $json.id }}"},"typeVersion":1},{"id":"569b1d21-1f0d-4efb-beb8-a380696e6a8c","name":"Send Update Success","type":"n8n-nodes-base.telegram","position":[-64,288],"webhookId":"24635291-72ba-42ac-a36b-cec46c5637ef","parameters":{"text":"=✅ Product updated successfully!\n\n🆔 ID: {{ $json.id }}\nUpdated fields have been saved.","chatId":"={{ $('Parse Command and Parameters').item.json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"adb1157b-a0f7-40c7-983d-c9e6e4049889","name":"Send Update Error","type":"n8n-nodes-base.telegram","position":[-528,112],"webhookId":"9d88bdf8-ad57-480f-9db9-11d8c43191f2","parameters":{"text":"=❌ Error: {{ $json.params.error }}\n\n📝 Correct format:\n/update id field=value field=value\n\nExample:\n/update 15 price=899 quantity=45\n\nValid fields: name, price, quantity, category","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"5c85a5e0-c854-48b0-884b-9de3500d1cff","name":"Delete Has Error?","type":"n8n-nodes-base.if","position":[-720,560],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-error-delete","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.params.error }}","rightValue":""}]}},"typeVersion":2.2},{"id":"2b747995-9ad7-45af-83aa-52e29b8d1a67","name":"Supabase Delete Product","type":"n8n-nodes-base.supabase","position":[-496,656],"parameters":{"tableId":"products","operation":"delete","filterType":"string","filterString":"id=eq.{{ $json.params.id }}"},"typeVersion":1},{"id":"874359fc-363d-43bf-aece-bad14b0cee5f","name":"Send Delete Success","type":"n8n-nodes-base.telegram","position":[-272,656],"webhookId":"d7b99dfd-2b3c-41a8-893e-b87e8d1e6231","parameters":{"text":"=🗑️ Product deleted successfully!\n\nID {{ $('Parse Command and Parameters').item.json.params.id }} has been removed from the database.","chatId":"={{ $('Parse Command and Parameters').item.json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"ea553b05-a0f2-423e-846c-bd653ff3d63a","name":"Send Delete Error","type":"n8n-nodes-base.telegram","position":[-496,464],"webhookId":"1c9c7114-21d7-4cb6-b846-9d872aefda39","parameters":{"text":"=❌ Error: {{ $json.params.error }}\n\n📝 Correct format:\n/delete id\n\nExample:\n/delete 15","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"da42f0e5-5858-40e7-bcee-1a38a28bbe17","name":"Search Has Error?","type":"n8n-nodes-base.if","position":[-720,944],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-error-search","operator":{"type":"string","operation":"exists"},"leftValue":"={{ $json.params.error }}","rightValue":""}]}},"typeVersion":2.2},{"id":"cfe21419-6e35-4ce3-9191-db448f8122a6","name":"Supabase Search Products","type":"n8n-nodes-base.supabase","position":[-496,1040],"parameters":{"tableId":"products","operation":"getAll","returnAll":true,"filterType":"string","filterString":"name=ilike.*{{ $json.params.searchText }}*"},"typeVersion":1},{"id":"51ca1339-0864-4fdd-a068-f3aaba97d36f","name":"Format Search Results","type":"n8n-nodes-base.code","position":[-272,1040],"parameters":{"jsCode":"const items = $input.all();\nconst chatId = $('Parse Command and Parameters').first().json.chatId;\nconst searchText = $('Parse Command and Parameters').first().json.params.searchText;\n\nif (items.length === 0) {\n  return [{\n    json: {\n      chatId: chatId,\n      message: `🔍 No products found matching \"${searchText}\"`\n    }\n  }];\n}\n\nlet message = `🔍 Search results for \"${searchText}\" (${items.length}):\\n\\n`;\n\nitems.forEach((item, index) => {\n  const p = item.json;\n  message += `${index + 1}. [ID: ${p.id}] ${p.name}\\n`;\n  message += `   💰 $${p.price} | 📊 Qty: ${p.quantity} | 🏷️ ${p.category}\\n\\n`;\n});\n\nreturn [{ json: { chatId, message } }];"},"typeVersion":2},{"id":"d6b791df-df03-4aba-93a3-4bbbd6c142d3","name":"Send Search Results","type":"n8n-nodes-base.telegram","position":[-48,1040],"webhookId":"3079bd52-536f-4818-ace5-98a5ae60805a","parameters":{"text":"={{ $json.message }}","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"c572235c-384e-4e39-94c1-c1e418170b3c","name":"Send Search Error","type":"n8n-nodes-base.telegram","position":[-496,848],"webhookId":"af183f57-6b0f-40e7-8ba5-c34f43a52c38","parameters":{"text":"❌ Error: {{ $json.params.error }}\n\n📝 Correct format:\n/search text\n\nExample:\n/search iPhone","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"00d4fabb-b25d-41e9-8fd5-96395624b1bc","name":"Send Help Message","type":"n8n-nodes-base.telegram","position":[-720,1136],"webhookId":"2d4c4dcb-e6d8-4c36-b931-f125a19f9f63","parameters":{"text":"=📚 *Available Commands*\n\n➕ */add* name, price, quantity, category\nAdd a new product to the database\nExample: `/add iPhone 15, 999.99, 50, electronics`\n\n📋 */list* \\[category\\]\nList all products or filter by category\nExample: `/list` or `/list electronics`\n\n🔍 */get* id\nGet details of a specific product\nExample: `/get 15`\n\n✏️ */update* id field=value\nUpdate product fields\nExample: `/update 15 price=899 quantity=45`\n\n🗑️ */delete* id\nDelete a product\nExample: `/delete 15`\n\n🔎 */search* text\nSearch products by name\nExample: `/search iPhone`\n\n❓ */help*\nShow this help message","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"typeVersion":1.2},{"id":"12d7c984-6daa-4fa7-8abb-5354efbf225c","name":"Send Unknown Command","type":"n8n-nodes-base.telegram","position":[-720,1328],"webhookId":"51952e2c-bdcb-4f3b-b607-bb697d3a8929","parameters":{"text":"=❓ Unknown command.\n\nUse /help to see available commands.","chatId":"={{ $json.chatId }}","additionalFields":{}},"typeVersion":1.2},{"id":"8bb58b4c-aeb7-47a1-bf59-d9a5b9dd419d","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2672,-480],"parameters":{"width":576,"height":1300,"content":"## How it works\nThis workflow turns Telegram into a database management interface for Supabase. Send commands to your bot to create, read, update, delete, and search records in your database - all from your phone.\n\n1. **Receive message** - Telegram trigger captures incoming messages\n2. **Validate user** - Checks if sender's chat ID matches authorized list\n3. **Parse command** - Extracts command type and parameters\n4. **Route & execute** - Performs the appropriate Supabase operation\n5. **Respond** - Sends formatted results back to Telegram\n\n## Setup steps\n1. Create a Telegram bot via @BotFather and get your API token\n2. Configure Telegram credentials in n8n\n3. Create a Supabase project and get your API credentials\n4. Create your `products` table (see SQL below)\n5. Edit the \"Is Authorized?\" node and add your Telegram chat ID(s)\n6. Activate the workflow and test with /help\n\n## Supabase table SQL\n```sql\nCREATE TABLE products (\n  id SERIAL PRIMARY KEY,\n  name TEXT NOT NULL,\n  price DECIMAL(10,2),\n  quantity INTEGER DEFAULT 0,\n  category TEXT,\n  created_at TIMESTAMP DEFAULT NOW()\n);\n```\n\n## Add authorized users\nTo authorize more users, edit the \"Is Authorized?\" node and add more OR conditions with their chat IDs.\n\n## Customization Guide\n\n**To use a different table:**\n1. Change `products` to your table name in all Supabase nodes\n2. Update field names in \"Parse Command\" node\n3. Update field mappings in \"Supabase Insert\" node\n4. Adjust response formatting in Code nodes\n\n**To add more authorized users:**\n1. Open the \"Is Authorized?\" node\n2. Add another OR condition\n3. Set it to check chatId equals the new user's ID"},"typeVersion":1},{"id":"564354f4-db78-4911-9e50-5ae3ed89062f","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1686,256],"parameters":{"color":7,"width":412,"height":272,"content":"### 🔐 Authorization\nExtracts chat ID from message and validates against authorized list using OR conditions. To add more users, edit the If node and add more conditions."},"typeVersion":1},{"id":"22d93087-692b-4901-9e49-688005af6cb1","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1248,80],"parameters":{"color":7,"width":472,"height":576,"content":"### 🔀 Command Router\nParses the message to extract the command and routes to the appropriate handler. Supports: /add, /list, /get, /update, /delete, /search, /help"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"e6913d36-9002-42b6-be32-9a71209b6466","connections":{"Add Has Error?":{"main":[[{"node":"Send Add Error","type":"main","index":0}],[{"node":"Supabase Insert Product","type":"main","index":0}]]},"Get Has Error?":{"main":[[{"node":"Send Get Error","type":"main","index":0}],[{"node":"Supabase Get Product","type":"main","index":0}]]},"Is Authorized?":{"main":[[{"node":"Parse Command and Parameters","type":"main","index":0}],[]]},"Route by Command":{"main":[[{"node":"Add Has Error?","type":"main","index":0}],[{"node":"Filter by Category?","type":"main","index":0}],[{"node":"Get Has Error?","type":"main","index":0}],[{"node":"Update Has Error?","type":"main","index":0}],[{"node":"Delete Has Error?","type":"main","index":0}],[{"node":"Search Has Error?","type":"main","index":0}],[{"node":"Send Help Message","type":"main","index":0}],[{"node":"Send Unknown Command","type":"main","index":0}]]},"Telegram Trigger":{"main":[[{"node":"Extract Message Data","type":"main","index":0}]]},"Delete Has Error?":{"main":[[{"node":"Send Delete Error","type":"main","index":0}],[{"node":"Supabase Delete Product","type":"main","index":0}]]},"Search Has Error?":{"main":[[{"node":"Send Search Error","type":"main","index":0}],[{"node":"Supabase Search Products","type":"main","index":0}]]},"Send Product List":{"main":[[]]},"Supabase List All":{"main":[[{"node":"Format Product List","type":"main","index":0}]]},"Update Has Error?":{"main":[[{"node":"Send Update Error","type":"main","index":0}],[{"node":"Prepare Update Data","type":"main","index":0}]]},"Filter by Category?":{"main":[[{"node":"Supabase List Filtered","type":"main","index":0}],[{"node":"Supabase List All","type":"main","index":0}]]},"Format Product List":{"main":[[{"node":"Send Product List","type":"main","index":0}]]},"Prepare Update Data":{"main":[[{"node":"Supabase Update Product","type":"main","index":0}]]},"Extract Message Data":{"main":[[{"node":"Is Authorized?","type":"main","index":0}]]},"Supabase Get Product":{"main":[[{"node":"Send Product Details","type":"main","index":0}]]},"Format Search Results":{"main":[[{"node":"Send Search Results","type":"main","index":0}]]},"Supabase List Filtered":{"main":[[{"node":"Format Product List","type":"main","index":0}]]},"Supabase Delete Product":{"main":[[{"node":"Send Delete Success","type":"main","index":0}]]},"Supabase Insert Product":{"main":[[{"node":"Send Add Success","type":"main","index":0}]]},"Supabase Update Product":{"main":[[{"node":"Send Update Success","type":"main","index":0}]]},"Supabase Search Products":{"main":[[{"node":"Format Search Results","type":"main","index":0}]]},"Parse Command and Parameters":{"main":[[{"node":"Route by Command","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":37,"nodeTypes":{"n8n-nodes-base.if":{"count":7},"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.supabase":{"count":7},"n8n-nodes-base.telegram":{"count":13},"n8n-nodes-base.stickyNote":{"count":3},"n8n-nodes-base.telegramTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Diego Alejandro Parrás","username":"diegoalejandroparras","bio":"AI Management Professor @ UBA & Founder @ Nodemat. My baby: a production n8n cluster with 22 containers (6 dedicated webhooks including one for MCP servers, 6 runners, 6 workers, Redis & PostgreSQL). \n\nCreator of GIA Method. \n\nTeaching advanced automation while building enterprise AIBPS solutions. \nLet's talk complex architectures.","verified":true,"links":["https://www.linkedin.com/in/diegoparras/"],"avatar":"https://gravatar.com/avatar/2cc7ac6eaa28f81a5a481407b4230cd28d274eb4a0ab1e01e1516522ff17e90a?r=pg&d=retro&size=200"},"nodes":[{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":49,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegram","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Telegram"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":50,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegramTrigger","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.telegramtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Telegram Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":545,"icon":"file:supabase.svg","name":"n8n-nodes-base.supabase","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.supabase/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/supabase/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Supabase"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDkiIGhlaWdodD0iMTEzIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSJ1cmwoI2EpIiBkPSJNNjMuNzA4IDExMC4yODRjLTIuODYgMy42MDEtOC42NTggMS42MjgtOC43MjctMi45N2wtMS4wMDctNjcuMjUxaDQ1LjIyYzguMTkgMCAxMi43NTggOS40NiA3LjY2NSAxNS44NzR6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYzLjcwOCAxMTAuMjg0Yy0yLjg2IDMuNjAxLTguNjU4IDEuNjI4LTguNzI3LTIuOTdsLTEuMDA3LTY3LjI1MWg0NS4yMmM4LjE5IDAgMTIuNzU4IDkuNDYgNy42NjUgMTUuODc0eiIvPjxwYXRoIGZpbGw9IiMzRUNGOEUiIGQ9Ik00NS4zMTcgMi4wNzFjMi44Ni0zLjYwMSA4LjY1Ny0xLjYyOCA4LjcyNiAyLjk3bC40NDIgNjcuMjUxSDkuODNjLTguMTkgMC0xMi43NTktOS40Ni03LjY2NS0xNS44NzV6Ii8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTMuOTc0IiB4Mj0iOTQuMTYzIiB5MT0iNTQuOTc0IiB5Mj0iNzEuODI5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzI0OTM2MSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNFQ0Y4RSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMzYuMTU2IiB4Mj0iNTQuNDg0IiB5MT0iMzAuNTc4IiB5Mj0iNjUuMDgxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3AvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+"},"displayName":"Supabase","typeVersion":1,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":35,"name":"Document Extraction"}],"image":[]}}