AutomationFlowsSlack & Telegram › Jotform Automated Commerce Sync: Telegram Confirmation & Zoho Invoice

Jotform Automated Commerce Sync: Telegram Confirmation & Zoho Invoice

ByAbdullah Alshiekh @abdullah01 on n8n.io

This workflow is designed to automate your e-commerce order processing by instantly syncing new Jotform submissions with your internal systems and immediately notifying the customer on Telegram.

Event trigger★★★★★ complexity32 nodesJot Form TriggerTelegramData TableGoogle SheetsZoho CrmTelegram Trigger
Slack & Telegram Trigger: Event Nodes: 32 Complexity: ★★★★★ Added:

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

This workflow follows the Google Sheets → Telegram 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": "zCg4z524oOeWzzH9",
  "name": "Jotform-Telegram Order Sync (Submitted)",
  "tags": [],
  "nodes": [
    {
      "id": "5dbd71ce-486c-4abd-9264-8f3d9169d03e",
      "name": "JotForm Trigger",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -192,
        -176
      ],
      "parameters": {
        "form": "{{ $form_id_placeholder }}"
      },
      "typeVersion": 1
    },
    {
      "id": "63b71df6-f37c-407d-a022-19733284d757",
      "name": "Send a text message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2560,
        -208
      ],
      "parameters": {
        "text": "=\ud83e\uddf4 {{ $template_order_name }} Order Confirmation\nThank you, {{ $('Organize').item.json.customer.name }}! Your order {{ $('Organize').item.json.orderId }} has been received \u2705  \nHere\u2019s your summary:\n\n\ud83d\udecd\ufe0f Products: \n{{ $('Edit Fields').item.json.Products }}\n\n\ud83d\udcb0 Total: {{ $('Organize').item.json.total }} {{ $('Organize').item.json.currency }}\n\ud83d\ude9a Delivery: {{ $template_delivery_time }}  \n\ud83d\udccd Address: {{ $('Organize').item.json.customer.address }}\n\nNeed help? Message us here anytime \ud83d\udcac",
        "chatId": "={{ $('Edit Fields').item.json.ChatId }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "babe8a4d-af6b-49c4-859b-4575238b3e7f",
      "name": "Get ChatId Row(s)",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1392,
        -192
      ],
      "parameters": {
        "operation": "get",
        "returnAll": true,
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $datatable_id }}",
          "cachedResultUrl": "/projects/{{ $project_id_placeholder }}/datatables/{{ $datatable_id }}",
          "cachedResultName": "JotformTelegram (Placeholder)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "691a0fd1-73f5-45b2-b0f7-25a02474de85",
      "name": "Set ChatId and Products",
      "type": "n8n-nodes-base.set",
      "position": [
        1984,
        -208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5b508d30-5a49-4ed0-a664-bdb08e86edaf",
              "name": "ChatId",
              "type": "string",
              "value": "={{ $('Get ChatId Row(s)').item.json.MessageChatId }}"
            },
            {
              "id": "27d0c17c-fe7f-4dfa-8ee2-ed8b930a4e6d",
              "name": "Products",
              "type": "string",
              "value": "={{ \n  $('Organize').item.json.products\n  .map(p => `\u2022 ${p.name.replace(/([_*[\\]()~`>#+=|{}.!-])/g, '\\\\$1')} x${p.quantity}`)\n  .join('\\n') \n}}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "654f6d89-8281-4b83-a95f-88d16a40e178",
      "name": "Organize & Generate Order ID",
      "type": "n8n-nodes-base.code",
      "position": [
        16,
        -176
      ],
      "parameters": {
        "jsCode": "// Parse incoming Jotform data\nconst data = items[0].json;\n\n// Extract main fields\nconst name = `${data[\"Full Name\"].first} ${data[\"Full Name\"].last}`.trim();\nconst email = data[\"E-mail\"];\nconst phone = data[\"Contact Number\"]?.full || \"\";\nconst billing = data[\"Billing Address\"];\nconst address = [billing.addr_line1, billing.addr_line2, billing.city, billing.state, billing.postal, billing.country]\n  .filter(Boolean)\n  .join(\", \");\n\n// Extract product details\nconst products = (data[\"My Products\"].products || []).map(p => ({\n  name: p.productName,\n  quantity: p.quantity,\n  unitPrice: p.unitPrice,\n  subTotal: p.subTotal,\n  currency: p.currency,\n  options: p.productOptions.join(\", \"),\n}));\n\n// Extract total\nconst totalInfo = data[\"My Products\"].totalInfo || {};\nconst total = totalInfo.totalSum || 0;\nconst currency = totalInfo.currency || \"USD\";\n\n// Generate order ID - use placeholder prefix\nconst orderId = `{{ $order_id_prefix }}-${Math.floor(Date.now() / 1000)}`;\n\n// Escape MarkdownV2 special chars for Telegram\nconst escapeMarkdown = (text) => {\n  return text\n    ?.toString()\n    .replace(/([_*[\\]()~`>#+=|{}.!-])/g, '\\\\$1');\n};\n\n// Prepare final object\nreturn [\n  {\n    json: {\n      orderId,\n      customer: {\n        name,\n        email,\n        phone,\n        address,\n      },\n      products,\n      total,\n      currency,\n      // Pre-generate summary text for other nodes (like Google Sheets)\n      summaryText: `\ud83e\uddf4 *{{ $template_order_name }} Order Confirmation* \nThank you, ${escapeMarkdown(name)}\\\\! Your order *#${escapeMarkdown(orderId)}* has been received \u2705  \n\n\ud83d\udecd\ufe0f *Products:* \n${products.map(p => `\\\\- ${escapeMarkdown(p.name)} x${escapeMarkdown(p.quantity)} \\\\(${escapeMarkdown(p.subTotal)} ${escapeMarkdown(p.currency)}\\\\)`).join('\\n')}\n\n\ud83d\udcb0 *Total:* ${escapeMarkdown(total)} ${escapeMarkdown(currency)}  \n\ud83d\udccd *Address:* ${escapeMarkdown(address || \"N/A\")}  \n\ud83d\udcde *Phone:* ${escapeMarkdown(phone || \"N/A\")}`,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "8428985f-6c14-4918-b19e-ff604da17b66",
      "name": "If ChatId Found",
      "type": "n8n-nodes-base.if",
      "position": [
        1632,
        -192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "00d797b0-9a4d-498b-a57c-65e3114e5d63",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $('Get ChatId Row(s)').item.json.id }}",
              "rightValue": "={{ Math.max(...$items(\"Get ChatId Row(s)\").map(i => i.json.id)) }}"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "32633847-dcf7-4307-a613-f1a23e3e05b1",
      "name": "Append/Update CRM Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2000,
        -464
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "={{ $('Organize & Generate Order ID').item.json.orderId }}",
            "currency": "={{ $('Organize & Generate Order ID').item.json.currency }}",
            "\u0627\u0644\u0641\u0626\u0629": "={{ $('Organize & Generate Order ID').item.json.customer.email }}",
            "\u0627\u0644\u0646\u0648\u0639": "={{ $('Organize & Generate Order ID').item.json.customer.name }}",
            "\u0627\u0644\u0648\u0635\u0641": "={{ $('Organize & Generate Order ID').item.json.summaryText }}",
            "\u0627\u0644\u062a\u0627\u0631\u064a\u062e": "={{ $('JotForm Trigger').item.json.createdAt || new Date().toISOString() }}",
            "\u0627\u0644\u0645\u0642\u062f\u0627\u0631": "={{ $('Organize & Generate Order ID').item.json.customer.address }}",
            "\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0638\u0641": "={{ $('Organize & Generate Order ID').item.json.total }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u0627\u0644\u062a\u0627\u0631\u064a\u062e",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "\u0627\u0644\u062a\u0627\u0631\u064a\u062e",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u0627\u0644\u0646\u0648\u0639",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "\u0627\u0644\u0646\u0648\u0639",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u0627\u0644\u0641\u0626\u0629",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "\u0627\u0644\u0641\u0626\u0629",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u0627\u0644\u0645\u0642\u062f\u0627\u0631",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "\u0627\u0644\u0645\u0642\u062f\u0627\u0631",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "currency",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "currency",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0638\u0641",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0638\u0641",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "\u0627\u0644\u0648\u0635\u0641",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "\u0627\u0644\u0648\u0635\u0641",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "update_id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "update_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "created_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "created_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $google_sheet_gid }}",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{ $google_sheet_document_id }}/edit#gid={{ $google_sheet_gid }}",
          "cachedResultName": "Sheet1 (Placeholder)"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $google_sheet_document_id }}",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{ $google_sheet_document_id }}/edit?usp=drivesdk",
          "cachedResultName": "CRM (Placeholder)"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "420c37a1-cf4c-4af1-a565-218016fca586",
      "name": "Create Zoho Invoice",
      "type": "n8n-nodes-base.zohoCrm",
      "position": [
        2288,
        -208
      ],
      "parameters": {
        "subject": "Form Sale",
        "resource": "invoice",
        "Product_Details": [
          {
            "id": "{{ $zoho_product_id_1 }}",
            "total": "={{ $('Organize & Generate Order ID').item.json.products[0].subTotal }}",
            "quantity": "={{ $('Organize & Generate Order ID').item.json.products[0].quantity }}",
            "unit_price": "={{ $('Organize & Generate Order ID').item.json.products[0].unitPrice }}",
            "product_description": "={{ $('Organize & Generate Order ID').item.json.products[0].options }}"
          }
        ],
        "additionalFields": {
          "Grand_Total": "={{ $('Organize & Generate Order ID').item.json.total }}"
        }
      },
      "executeOnce": false,
      "typeVersion": 1
    },
    {
      "id": "919827cc-6c70-4d27-a5f5-c0a0aebc5730",
      "name": "Telegram Trigger (Get ChatId)",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -176,
        -432
      ],
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "c7810f3b-da2a-4dcb-a63e-f02e2c294e04",
      "name": "Insert Order Data",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        224,
        -176
      ],
      "parameters": {
        "columns": {
          "value": {
            "name": "={{ $json.customer.name }}",
            "email": "={{ $json.customer.email }}",
            "phone": "={{ $json.customer.phone }}",
            "address": "={{ $json.customer.address }}",
            "orderId": "={{ $json.orderId }}",
            "TelegramDate": 0,
            "MessageChatId": ""
          },
          "schema": [
            {
              "id": "MessageChatId",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "MessageChatId",
              "defaultMatch": false
            },
            {
              "id": "TelegramDate",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "TelegramDate",
              "defaultMatch": false
            },
            {
              "id": "orderId",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "orderId",
              "defaultMatch": false
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "name",
              "defaultMatch": false
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "email",
              "defaultMatch": false
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "address",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $datatable_id }}",
          "cachedResultUrl": "/projects/{{ $project_id_placeholder }}/datatables/{{ $datatable_id }}",
          "cachedResultName": "JotformTelegram (Placeholder)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8bca615b-5157-4641-ab95-af3548c27293",
      "name": "Get Empty ChatId Rows",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        32,
        -432
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "MessageChatId",
              "condition": "isEmpty"
            }
          ]
        },
        "matchType": "allConditions",
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $datatable_id }}",
          "cachedResultUrl": "/projects/{{ $project_id_placeholder }}/datatables/{{ $datatable_id }}",
          "cachedResultName": "JotformTelegram (Placeholder)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "856d1f24-6ea8-419f-b974-88517c06d333",
      "name": "Update ChatId",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        288,
        -432
      ],
      "parameters": {
        "columns": {
          "value": {
            "MessageChatId": "={{ $('Telegram Trigger (Get ChatId)').item.json.message.chat.id }}"
          },
          "schema": [
            {
              "id": "MessageChatId",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "MessageChatId",
              "defaultMatch": false
            },
            {
              "id": "orderId",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "orderId",
              "defaultMatch": false
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "name",
              "defaultMatch": false
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "email",
              "defaultMatch": false
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "address",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "MessageChatId"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "filters": {
          "conditions": [
            {
              "keyName": "MessageChatId",
              "condition": "isEmpty"
            }
          ]
        },
        "matchType": "allConditions",
        "operation": "update",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $datatable_id }}",
          "cachedResultUrl": "/projects/{{ $project_id_placeholder }}/datatables/{{ $datatable_id }}",
          "cachedResultName": "JotformTelegram (Placeholder)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e9796f5f-1c75-4db1-8b23-07d36a805221",
      "name": "Get Order Row to Check ChatId",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        624,
        -176
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "orderId",
              "keyValue": "={{ $('Insert Order Data').item.json.orderId }}",
              "condition": "equal"
            }
          ]
        },
        "matchType": "allConditions",
        "operation": "get",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $datatable_id }}",
          "cachedResultUrl": "/projects/{{ $project_id_placeholder }}/datatables/{{ $datatable_id }}",
          "cachedResultName": "JotformTelegram (Placeholder)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3cfda48d-d552-4f64-8305-6fddbbf1d4be",
      "name": "Mark as Waited",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1120,
        48
      ],
      "parameters": {
        "columns": {
          "value": {
            "waitedOnce": "true"
          },
          "schema": [
            {
              "id": "MessageChatId",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "MessageChatId",
              "defaultMatch": false
            },
            {
              "id": "orderId",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "orderId",
              "defaultMatch": false
            },
            {
              "id": "waitedOnce",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "waitedOnce",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "filters": {
          "conditions": [
            {
              "keyName": "orderId",
              "keyValue": "={{ $json.orderId }}",
              "condition": "equal"
            }
          ]
        },
        "operation": "update",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "{{ $datatable_id }}",
          "cachedResultUrl": "/projects/{{ $project_id_placeholder }}/datatables/{{ $datatable_id }}",
          "cachedResultName": "JotformTelegram (Placeholder)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fd53acd6-7699-421a-84cd-18ce3dd9a6be",
      "name": "Switch (ChatId Check)",
      "type": "n8n-nodes-base.switch",
      "position": [
        1104,
        -176
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "e308b538-960e-4a09-b23f-8d252174df38",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.waitedOnce }}",
                    "rightValue": ""
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "409a337d-b3af-4bcf-b316-92de32911dc5",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.MessageChatId }}",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "3306d51c-b1c8-4f36-8648-6701a69b78b9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -256
      ],
      "parameters": {
        "color": 3,
        "content": "Starts the workflow when a new order form is submitted on JotForm."
      },
      "typeVersion": 1
    },
    {
      "id": "259d41a0-48a4-4a37-99a0-352e2ca08ad3",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -256
      ],
      "parameters": {
        "color": 4,
        "width": 192,
        "content": "Parses the form data, structures it, and creates a unique order ID."
      },
      "typeVersion": 1
    },
    {
      "id": "d2312f79-9ca4-4c73-8f6c-4df71acec6d6",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -256
      ],
      "parameters": {
        "color": 5,
        "width": 192,
        "content": "Saves the order details into an n8n Data Table to track its status and Chat ID."
      },
      "typeVersion": 1
    },
    {
      "id": "138ef5db-e274-43a6-8665-327c3a2cd047",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        -496
      ],
      "parameters": {
        "color": 3,
        "width": 256,
        "content": "An independent trigger waiting for any message from a customer to the bot to capture their Chat ID."
      },
      "typeVersion": 1
    },
    {
      "id": "dbb6be07-f740-402a-bd36-2f9187d107ea",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -496
      ],
      "parameters": {
        "color": 5,
        "width": 208,
        "content": "Finds orders in the Data Table that are waiting for a customer's Chat ID."
      },
      "typeVersion": 1
    },
    {
      "id": "5b18035f-c415-4000-9e5c-c2f0d9397745",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -496
      ],
      "parameters": {
        "color": 4,
        "content": "Uses the Chat ID from the new Telegram message to update the corresponding pending order row."
      },
      "typeVersion": 1
    },
    {
      "id": "41d16d68-1e62-47ef-b6aa-8f0697e87672",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        -256
      ],
      "parameters": {
        "color": 4,
        "width": 272,
        "content": " Checks the Data Table immediately after insertion to see if the customer's Chat ID is already available."
      },
      "typeVersion": 1
    },
    {
      "id": "e1c89c28-44b8-4357-8c8f-fda555564cfc",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        -256
      ],
      "parameters": {
        "color": 2,
        "width": 256,
        "height": 176,
        "content": " Directs the flow to proceed if the Chat ID is found or to wait if it is still missing."
      },
      "typeVersion": 1
    },
    {
      "id": "5f1d726b-3db7-4625-a05f-c87f5000174c",
      "name": "Wait 5 Minutes",
      "type": "n8n-nodes-base.wait",
      "position": [
        832,
        48
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "826077be-7a44-48b1-b23d-9061199fc290",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 288,
        "content": ".\n\n\n\n\nPauses the workflow briefly to allow a customer time to message the Telegram bot."
      },
      "typeVersion": 1
    },
    {
      "id": "cb339e04-fdbd-458b-841a-f295c7802f9a",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1024,
        96
      ],
      "parameters": {
        "color": 6,
        "content": "\n.\n\n\n\n\nUpdates the Data Table record to prevent the workflow from entering a perpetual wait loop."
      },
      "typeVersion": 1
    },
    {
      "id": "d8c50d9c-f33b-4490-b25f-b7862d65dd4c",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -256
      ],
      "parameters": {
        "color": 5,
        "height": 176,
        "content": "Fetches the final, complete order data row, including the confirmed Chat ID."
      },
      "typeVersion": 1
    },
    {
      "id": "bd70e237-75a9-4bdc-80ef-760a1c027c47",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1936,
        -272
      ],
      "parameters": {
        "color": 4,
        "height": 176,
        "content": "Formats the Chat ID and product list into an easy-to-use structure for the final message."
      },
      "typeVersion": 1
    },
    {
      "id": "5fb92642-5c3d-48c0-8ab8-deb3fef8c264",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1936,
        -544
      ],
      "parameters": {
        "color": 5,
        "content": "Logs the complete order information into a designated Google Sheet (CRM)."
      },
      "typeVersion": 1
    },
    {
      "id": "36ff95d6-b3b4-4388-90f3-95e87e3cb629",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2208,
        -272
      ],
      "parameters": {
        "color": 5,
        "height": 176,
        "content": "Automatically generates an invoice for the new order within Zoho CRM.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3362d046-225e-4efa-8ea9-3227d35c82f6",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2480,
        -272
      ],
      "parameters": {
        "color": 4,
        "content": "Sends the final, templated order confirmation message to the customer via Telegram."
      },
      "typeVersion": 1
    },
    {
      "id": "0a61c4b5-13fa-476f-a00d-ca693ec60760",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -1056
      ],
      "parameters": {
        "width": 1024,
        "height": 736,
        "content": "# JotForm Setup Guide\n\n\n## \u26a1 Step 1: Link with the Webhook\n\n\n* **1. Log in to your JotForm account, select your Form, and navigate to Settings.**\n\n* **2. Go to Integrations and search for Webhooks.**\n\n* **3. Paste the JotForm Trigger Webhook URL provided by your n8n workflow into the field.**\n\n* **4. Save and activate! Your form is now live!**\n\n## \ud83d\udd11 Step 2: Unlock File Access (API Key)\n\n* **1.Generate a JotForm API Key in your JotForm account settings.**\n\n* **2.CRITICAL: Set the key permission level to \"Full Access\" (required for file downloads).**\n\n* **3.Go to your n8n workflow and insert this key into:**\n    * **I.The JotForm Trigger node's credential.**\n    * **II.The Fetch All Receipts node's query parameters.**\n\n## \u2699\ufe0f Step 3: Configure Your n8n Nodes\n\n* **In the JotForm Trigger node replace the placeholder with your actual JotForm ID.**"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "24b0b0d7-3c2d-4fc6-aa45-344c34171922",
  "connections": {
    "Mark as Waited": {
      "main": [
        [
          {
            "node": "Get Order Row to Check ChatId",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 5 Minutes": {
      "main": [
        [
          {
            "node": "Mark as Waited",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If ChatId Found": {
      "main": [
        [
          {
            "node": "Set ChatId and Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JotForm Trigger": {
      "main": [
        [
          {
            "node": "Organize & Generate Order ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get ChatId Row(s)": {
      "main": [
        [
          {
            "node": "If ChatId Found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert Order Data": {
      "main": [
        [
          {
            "node": "Get Order Row to Check ChatId",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Zoho Invoice": {
      "main": [
        [
          {
            "node": "Send a text message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Empty ChatId Rows": {
      "main": [
        [
          {
            "node": "Update ChatId",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch (ChatId Check)": {
      "main": [
        [
          {
            "node": "Get ChatId Row(s)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 5 Minutes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set ChatId and Products": {
      "main": [
        [
          {
            "node": "Create Zoho Invoice",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append/Update CRM Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Organize & Generate Order ID": {
      "main": [
        [
          {
            "node": "Insert Order Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Order Row to Check ChatId": {
      "main": [
        [
          {
            "node": "Switch (ChatId Check)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger (Get ChatId)": {
      "main": [
        [
          {
            "node": "Get Empty ChatId Rows",
            "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

This workflow is designed to automate your e-commerce order processing by instantly syncing new Jotform submissions with your internal systems and immediately notifying the customer on Telegram.

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

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

N8N Complete Final. Uses telegramTrigger, dataTable, telegram, mqtt. Event-driven trigger; 58 nodes.

Telegram Trigger, Data Table, Telegram +3
Slack & Telegram

TextMain. Uses telegramTrigger, stopAndError, telegram, httpRequest. Event-driven trigger; 56 nodes.

Telegram Trigger, Stop And Error, Telegram +2
Slack & Telegram

This workflow provides a complete solution for handling Telegram Stars payments, invoicing and refunds using n8n. It automates the process of sending invoices, managing pre-checkout approvals, recordi

HTTP Request, Execute Workflow Trigger, Google Sheets +2
Slack & Telegram

clients kept booking meetings during my prayer times. i'd either miss a prayer or scramble to reschedule. the problem wasn't the clients — it was that my calendar had no blocked windows for salah. i n

Telegram Trigger, HTTP Request, Google Calendar +3
Slack & Telegram

This workflow is a powerful reputation management tool designed to proactively filter customer reviews. It helps you encourage positive reviews on Google while capturing negative feedback privately be

Telegram Trigger, Google Sheets, Telegram