AutomationFlowsAI & RAG › Telegram AI Agent for Food Delivery Orders

Telegram AI Agent for Food Delivery Orders

Original n8n title: AI Sales Agent with Telegram Approvals & Google Sheets Sync

ByDavid Olusola @dae221 on n8n.io

A complete, ready-to-deploy Telegram chatbot template for food delivery businesses. This intelligent assistant handles orders, payments, customer service, and order tracking with human-in-the-loop payment verification. ✨ Key Features

Event trigger★★★★☆ complexityAI-powered16 nodesAgentMemory Buffer WindowTelegram TriggerGoogle Sheets ToolTelegramText ClassifierGoogle Gemini Chat
AI & RAG Trigger: Event Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #5074 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets Tool 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 →

Download .json
{
  "id": "FRSKpIbukzy1vMnJ",
  "name": "Telegram Sales Agent For Business",
  "tags": [],
  "nodes": [
    {
      "id": "f9ca2a43-862b-4e09-8fd4-4a06b7ca0cdd",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1100,
        -140
      ],
      "parameters": {
        "text": "={{ $json.message.text }} {{ $json.data.text }}",
        "options": {
          "systemMessage": "=## [YOUR_BUSINESS_NAME] Assistant\n\nYou are [ASSISTANT_NAME], the friendly and efficient virtual assistant for [YOUR_BUSINESS_NAME] in [YOUR_CITY], [YOUR_COUNTRY]. Always:\n\u2705 Use simple, polite language\n\u2705 Send responses in plain text (NO markdown *, _, `)\n\u2705 Use only 1\u20132 emojis per message for warmth\n\u2705 Display time in [YOUR_TIMEZONE] (e.g., EST = UTC-5)\n\u2705 Ensure order records match Google Sheets format\n\n\ud83c\udf54 MENU & PRICES ([YOUR_CURRENCY])\n[CATEGORY_1]\n- [ITEM_1] \u2013 [CURRENCY_SYMBOL][PRICE_1]\n- [ITEM_2] \u2013 [CURRENCY_SYMBOL][PRICE_2]\n- [ITEM_3] \u2013 [CURRENCY_SYMBOL][PRICE_3]\n\n[CATEGORY_2]\n- [ITEM_4] \u2013 [CURRENCY_SYMBOL][PRICE_4]\n- [ITEM_5] \u2013 [CURRENCY_SYMBOL][PRICE_5]\n\nOthers\n- [ITEM_6] \u2013 [CURRENCY_SYMBOL][PRICE_6]\n- [ITEM_7] \u2013 [CURRENCY_SYMBOL][PRICE_7]\n- [ITEM_8] \u2013 [CURRENCY_SYMBOL][PRICE_8]\n- Delivery Fee \u2013 [CURRENCY_SYMBOL][DELIVERY_FEE]\n\n\ud83d\udcdd ORDER FLOW\n1\ufe0f\u20e3 Greet the customer:\n\"Hi! I'm [ASSISTANT_NAME] from [YOUR_BUSINESS_NAME] \ud83d\ude0a What would you like to order today?\"\n\n2\ufe0f\u20e3 Clarify orders:\n- Ask for type when they mention general categories\n- Confirm all combos and add-ons\n\n3\ufe0f\u20e3 Confirm order:\nSummarize like this:\nYour order:\n1x [ITEM] \u2013 [CURRENCY_SYMBOL][PRICE]\n1x [ITEM] \u2013 [CURRENCY_SYMBOL][PRICE]\nDelivery \u2013 [CURRENCY_SYMBOL][DELIVERY_FEE]\nTOTAL: [CURRENCY_SYMBOL][TOTAL]\n\ud83d\udcb3 Pay to: [YOUR_PAYMENT_DETAILS]\nReply \"Paid\" after sending payment\n\n4\ufe0f\u20e3 Collect delivery info:\n\"Almost done! Please send:\nFull name\nPhone number (for delivery)\nDelivery address\"\n\n5\ufe0f\u20e3 When they send delivery information:\nReply: \"Thank you for providing your details! We're now verifying your order. Please send your payment screenshot for confirmation \ud83d\ude0a\"\n\n6\ufe0f\u20e3 When they send a payment screenshot:\nReply:\n\u231b Thanks for your payment! Verifying with [YOUR_PAYMENT_PROVIDER]... (2\u20133 mins) \ud83d\ude0a\n(This message happens automatically when payment screenshot is detected)\n\n7\ufe0f\u20e3 HUMAN-IN-THE-LOOP DECISION:\nWhen staff approves the payment through the Check Feedback node:\n- The system will automatically send:\n  \"\u2705 Payment confirmed! Your order will arrive by [deliveryTime] \ud83d\ude9a\"\n  (Delivery time is 1 hour from now, e.g. \"16:45\")\n\n- The system will then automatically log this data to Google Sheets:\n  Format: Order id|Customer Name|Chat ID|Phone Number|Delivery Address|Order info|Total Price|Payment Status|Order Status|Timestamp\n  Example: [PREFIX]-1712345678|John|1085503473|+1234567890|123 Main St|1x Burger|25.00|Confirmed|Preparing|10/07/2024 16:45\n\n8\ufe0f\u20e3 If staff rejects the payment:\nReply:\n\u274c Sorry, we couldn't verify your payment. Please send a clearer screenshot or try again.\n\n\ud83d\udccc STATUS RESPONSES:\nWhen user types \"Status?\":\n\u23f3 Still verifying! We'll notify you as soon as it's confirmed \ud83d\udc9b\n\nWhen user types \"Agent\":\nConnecting you to @[YOUR_SUPPORT_HANDLE] \ud83d\udcac\n\nWhen user asks for FAQ or information about [YOUR_BUSINESS_NAME]:\n\ud83d\udccd Location: [YOUR_ADDRESS]\n\u23f0 Hours: [YOUR_HOURS]\n\ud83d\udcde Contact: [YOUR_PHONE]\n\ud83d\udce7 Email: [YOUR_EMAIL]\n\n\ud83d\udcca SHEET FORMAT (strict):\nOrder id | Customer Name | Chat ID | Phone Number | Delivery Address | Order info | Total Price | Payment Status | Order Status | Timestamp\nTimestamp format = MM/DD/YYYY HH:MM (24hr [YOUR_TIMEZONE])\n\n## APPROVAL HANDLING\nIf $json.data.text is \"Approved\", then:\n- Calculate the delivery time (1 hour from current time)\n- Send: \"\u2705 Payment confirmed! Your order will arrive by [deliveryTime] \ud83d\ude9a\"\n- Log the order data to Google Sheets, making sure to include the Chat ID ({{ $json.message.from.id }} or {{ $json.chat.id }})"
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "dda87278-b547-4d5f-b52c-d2c3341ac616",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -400,
        -40
      ],
      "parameters": {
        "sessionKey": "={{ $('Telegram Trigger').item.json.message.chat.id }}  ",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "ade1189c-1214-4578-9bb5-3fee28694f77",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -1540,
        -60
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "be4aec62-7321-42b4-8ba9-43c64b08054a",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -280,
        -40
      ],
      "parameters": {
        "columns": {
          "value": {
            "Chat id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Chat_id', ``, 'string') }}",
            "Order id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Order_id', ``, 'string') }}",
            "Timestamp": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Timestamp', ``, 'string') }}",
            "timestamp": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('timestamp', ``, 'string') }}",
            "Total Price": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Total_Price', ``, 'string') }}",
            "  Order info": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('__Order_info', ``, 'string') }}",
            "Order Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Order_Status', ``, 'string') }}",
            "phone number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('phone_number', ``, 'string') }}",
            "Customer Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Customer_Name', ``, 'string') }}",
            "Payment Status": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Payment_Status', ``, 'string') }}",
            "Delivery Address": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Delivery_Address', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Order id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Order id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Customer Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Customer Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Chat id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Chat id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Delivery Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Delivery Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "  Order info",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "  Order info",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Price",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Total Price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Payment Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Payment Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Order Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Order Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "[YOUR_GOOGLE_SHEET_ID]",
          "cachedResultName": "Order Details Sheet"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "a05b26a5-4495-4419-8ec4-f9202d44083a",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -780,
        -140
      ],
      "parameters": {
        "text": "={{ $json.output }} ",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "deec8df2-d232-43a6-965f-f0373c029480",
      "name": "Check Feedback",
      "type": "@n8n/n8n-nodes-langchain.textClassifier",
      "position": [
        -540,
        140
      ],
      "parameters": {
        "options": {},
        "inputText": "={{ $json.data.text }}",
        "categories": {
          "categories": [
            {
              "category": "approved",
              "description": "admin approves the order"
            },
            {
              "category": "declined",
              "description": "admin declined the order"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b7a2a270-4308-46ed-8019-3590b6230a87",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        -1640
      ],
      "parameters": {
        "color": 6,
        "width": 700,
        "height": 80,
        "content": "# Food Delivery Chatbot Template | Ready to Customize"
      },
      "typeVersion": 1
    },
    {
      "id": "26fb592b-08b8-4b8f-9a91-6f65da7b7950",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -560,
        -20
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "typeVersion": 1
    },
    {
      "id": "db0cf32d-297f-44d9-96bd-159ae6bbe030",
      "name": "Admin Approval Request",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -780,
        140
      ],
      "parameters": {
        "message": "Payment received for order. Approve or decline?",
        "options": {
          "appendAttribution": false
        },
        "operation": "sendAndWait",
        "responseType": "freeText"
      },
      "typeVersion": 1.2
    },
    {
      "id": "d0647205-8b66-4228-a7ab-779bb3e3a45b",
      "name": "Forward Payment Screenshot",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -1060,
        140
      ],
      "parameters": {
        "file": "={{ $json.message.photo[0].file_id }}",
        "operation": "sendPhoto",
        "additionalFields": {
          "caption": "={{ $('Telegram Trigger').item.json.message.caption }}"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1cd62845-ad31-423c-8eb3-a154f1595571",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -600,
        -120
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 220,
        "content": "## AI Tools & Memory"
      },
      "typeVersion": 1
    },
    {
      "id": "d0e6e088-235b-4cfe-b78d-65e75079b6db",
      "name": "Payment Screenshot Check",
      "type": "n8n-nodes-base.if",
      "position": [
        -1300,
        -60
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "02d9bd52-4f62-4f32-b0c3-a4723f913b46",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.message.photo[0] }} {{ $json.message.caption }}",
              "rightValue": ""
            },
            {
              "id": "d50f068a-c563-4a95-a6e6-2e3514028e28",
              "operator": {
                "type": "string",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.message.text }}",
              "rightValue": ""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "6934b6bb-5ac4-48ee-9188-3284a9ee6c0a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1160,
        100
      ],
      "parameters": {
        "width": 1300,
        "height": 180,
        "content": "## Payment Verification Flow"
      },
      "typeVersion": 1
    },
    {
      "id": "b5bd59de-66bc-4e62-8d1d-a04f94403b4c",
      "name": "Payment Declined",
      "type": "n8n-nodes-base.telegram",
      "position": [
        -160,
        140
      ],
      "parameters": {
        "text": "\u274c Sorry, we couldn't verify your payment. Please send a clearer screenshot or try again.",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9978f9af-8fda-43c9-bebe-8db51596f689",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1160,
        -180
      ],
      "parameters": {
        "color": 3,
        "width": 580,
        "height": 280,
        "content": "## AI Assistant Brain"
      },
      "typeVersion": 1
    },
    {
      "id": "f92bcb7a-b5f0-43d0-a647-a2c162a10412",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2480,
        -360
      ],
      "parameters": {
        "width": 760,
        "height": 1200,
        "content": "## \ud83d\ude80 Quick Setup Guide\n\n### Prerequisites\n- n8n instance (cloud or self-hosted)\n- Telegram Bot Token\n- Google Sheets API access\n- Google Gemini API key\n\n### Step 1: Replace Placeholders\nSearch and replace the following placeholders throughout the template:\n\n#### Business Information\n- [YOUR_BUSINESS_NAME] \u2192 Your restaurant/food business name\n- [ASSISTANT_NAME] \u2192 Your bot's name (e.g., \"Alex\", \"Bella\", \"Chef Bot\")\n- [YOUR_CITY] \u2192 Your city\n- [YOUR_COUNTRY] \u2192 Your country\n- [YOUR_ADDRESS] \u2192 Your business address\n- [YOUR_PHONE] \u2192 Your business phone number\n- [YOUR_EMAIL] \u2192 Your business email\n- [YOUR_HOURS] \u2192 Your operating hours (e.g., \"9AM - 11PM daily\")\n\n#### Currency & Localization\n- [YOUR_CURRENCY] \u2192 Your currency name (e.g., \"USD\", \"EUR\", \"GBP\")\n- [CURRENCY_SYMBOL] \u2192 Your currency symbol (e.g., \"$\", \"\u20ac\", \"\u00a3\")\n- [YOUR_TIMEZONE] \u2192 Your timezone (e.g., \"EST\", \"PST\", \"GMT\")\n- [PREFIX] \u2192 Order ID prefix (e.g., \"FB\" for \"Food Business\")\n\n#### Menu Items (Customize Completely)\n- [CATEGORY_1] \u2192 Food category (e.g., \"Burgers\", \"Pizza\", \"Sandwiches\")\n- [ITEM_1] through [ITEM_8] \u2192 Your menu items\n- [PRICE_1] through [DELIVERY_FEE] \u2192 Your prices\n- Add or remove categories and items as needed\n\n#### Payment & Support\n- [YOUR_PAYMENT_DETAILS] \u2192 Your payment information\n- [YOUR_PAYMENT_PROVIDER] \u2192 Your payment method (e.g., \"Venmo\", \"PayPal\", \"Bank Transfer\")\n- [YOUR_SUPPORT_HANDLE] \u2192 Your Telegram support username\n\n### Step 2: Configure Credentials\n1. **Telegram Bot** - Add your bot token to Telegram credentials\n2. **Google Sheets** - Connect your Google account and create/select your orders spreadsheet\n3. **Google Gemini** - Add your Gemini API key\n4. **Sheet ID** - Replace [YOUR_GOOGLE_SHEET_ID] with your actual Google Sheet ID\n\n### Step 3: Customize Menu\nUpdate the menu section in the AI Agent system message with your actual:\n- Food categories\n- Item names and prices\n- Delivery fees\n- Any special offerings or combos\n\n### Step 4: Test & Deploy\n1. Import the template into your n8n instance\n2. Test the conversation flow with a test Telegram account\n3. Verify Google Sheets logging works correctly\n4. Test the payment approval workflow\n5. Activate the workflow\n\n## \ud83d\udcb0 Currency Examples\n\n### USD Version\n\ud83c\udf54 MENU & PRICES (USD)\nBurgers\n- Classic Burger \u2013 $12.99\n- Cheese Burger \u2013 $14.99\n- Deluxe Burger \u2013 $18.99\n\nDelivery Fee \u2013 $3.99\n\n\n### EUR Version\n\ud83c\udf54 MENU & PRICES (EUR)\nBurgers\n- Classic Burger \u2013 \u20ac11.50\n- Cheese Burger \u2013 \u20ac13.50\n- Deluxe Burger \u2013 \u20ac17.50\n\nDelivery Fee \u2013 \u20ac3.50\n\n\n## \ud83d\udcca Google Sheets Structure\nThe template automatically logs orders with these columns:\n- Order ID\n- Customer Name\n- Chat ID\n- Phone Number\n- Delivery Address\n- Order Info\n- Total Price\n- Payment Status\n- Order Status\n- Timestamp\n\n## \ud83d\udd27 Customization Options\n\n### Easy Customizations\n- **Menu Items** - Add/remove/modify any food items\n- **Pricing** - Update to your local pricing structure\n- **Currency** - Change to any currency worldwide\n- **Business Hours** - Modify operating hours\n- **Delivery Areas** - Add location restrictions\n- **Payment Methods** - Update payment information\n\n### Advanced Customizations\n- **Multiple Locations** - Add location selection logic\n- **Inventory Management** - Add stock tracking\n- **Promotional Codes** - Implement discount systems\n- **Multi-language** - Add language detection and responses\n- **SMS Integration** - Add SMS notifications\n- **Email Receipts** - Integrate email confirmation\n\n## \ud83d\udcf1 Customer Experience Flow\n1. Customer starts chat with bot\n2. Bot greets and shows menu\n3. Customer places order\n4. Bot confirms order and total\n5. Customer provides delivery details\n6. Customer sends payment screenshot\n7. Admin approves/declines payment\n8. Customer receives confirmation with delivery time\n9. Order is tracked in Google Sheets\n\n## \ud83d\udee1\ufe0f Security Features\n- Human payment verification\n- Chat ID tracking for user identification\n- Timestamped order logging\n- Payment screenshot archival\n- Admin approval controls\n\n## \ud83c\udfaf Perfect For\n- Restaurants\n- Food trucks\n- Catering services\n- Bakeries\n- Coffee shops\n- Grocery delivery\n- Meal prep services\n- Any food-related business\n\n## \ud83c\udd98 Support Notes\n- This template requires basic n8n knowledge for setup\n- Google Sheets API setup required\n- Telegram Bot creation required\n- Customization may require some technical skills\n\n## \ud83d\udcc8 Scalability\n- Handles multiple concurrent customers\n- Conversation memory per customer\n- Unlimited order volume\n- Easy to add new menu items\n- Expandable with additional features\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "75215d5e-63a8-4bb5-b26e-5fa6a6d6f4f1",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Check Feedback": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Payment Declined",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Payment Screenshot Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Admin Approval Request": {
      "main": [
        [
          {
            "node": "Check Feedback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Check Feedback",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Payment Screenshot Check": {
      "main": [
        [
          {
            "node": "Forward Payment Screenshot",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Forward Payment Screenshot": {
      "main": [
        [
          {
            "node": "Admin Approval Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

A complete, ready-to-deploy Telegram chatbot template for food delivery businesses. This intelligent assistant handles orders, payments, customer service, and order tracking with human-in-the-loop payment verification. ✨ Key Features

Source: https://n8n.io/workflows/5074/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Telegram Trigger receives incoming messages (text, voice, photo, document). Switch routes by message type to appropriate processors: Text → forwarded as-is. Voice → downloaded and sent to Transcribe a

Memory Buffer Window, Telegram Trigger, Telegram +12
AI & RAG

Transform your Telegram messenger into a powerful, multi-modal personal or team assistant. This n8n workflow creates an intelligent agent that can understand text, voice, images, and documents, and ta

Memory Buffer Window, Telegram Trigger, Telegram +10
AI & RAG

> AI-powered nutrition assistant for Telegram — log meals, set goals, and get personalized daily reports with Google Sheets integration.

Telegram, Google Gemini, Google Gemini Chat +7
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11
AI & RAG

Overview

Google Gemini Chat, Agent, Telegram Trigger +6