Synchronisation des commandes Jotform-Telegram (soumis)

Avancé

Ceci est uncontenant 32 nœuds.Utilise principalement des nœuds comme If, Set, Code, Wait, Switch. Synchronisation commerciale JotForm : confirmation via Telegram et facturation Zoho

Prérequis
  • Token Bot Telegram
  • Informations d'identification Google Sheets API

Catégorie

-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "zCg4z524oOeWzzH9",
  "meta": {
    "instanceId": "7f1a0694161455be3a7e71f1e0dea04908b0376a1a81e3a0c1e5ac879d48f83a"
  },
  "name": "Jotform-Telegram Order Sync (Submitted)",
  "tags": [],
  "nodes": [
    {
      "id": "5dbd71ce-486c-4abd-9264-8f3d9169d03e",
      "name": "Déclencheur JotForm",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -192,
        -176
      ],
      "webhookId": "7973d518-b1c7-4e87-9b02-242bbbef1fd8",
      "parameters": {
        "form": "{{ $form_id_placeholder }}"
      },
      "typeVersion": 1
    },
    {
      "id": "63b71df6-f37c-407d-a022-19733284d757",
      "name": "Envoyer un message texte",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2560,
        -208
      ],
      "webhookId": "8f5af583-46c4-4493-91d6-068530d5378f",
      "parameters": {
        "text": "=🧴 {{ $template_order_name }} Order Confirmation\nThank you, {{ $('Organize').item.json.customer.name }}! Your order {{ $('Organize').item.json.orderId }} has been received ✅  \nHere’s your summary:\n\n🛍️ Products: \n{{ $('Edit Fields').item.json.Products }}\n\n💰 Total: {{ $('Organize').item.json.total }} {{ $('Organize').item.json.currency }}\n🚚 Delivery: {{ $template_delivery_time }}  \n📍 Address: {{ $('Organize').item.json.customer.address }}\n\nNeed help? Message us here anytime 💬",
        "chatId": "={{ $('Edit Fields').item.json.ChatId }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "babe8a4d-af6b-49c4-859b-4575238b3e7f",
      "name": "Obtenir la/les lignes ChatId",
      "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": "Définir ChatId et Produits",
      "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 => `• ${p.name.replace(/([_*[\\]()~`>#+=|{}.!-])/g, '\\\\$1')} x${p.quantity}`)\n  .join('\\n') \n}}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "654f6d89-8281-4b83-a95f-88d16a40e178",
      "name": "Organiser et générer un ID de commande",
      "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: `🧴 *{{ $template_order_name }} Order Confirmation* \nThank you, ${escapeMarkdown(name)}\\\\! Your order *#${escapeMarkdown(orderId)}* has been received ✅  \n\n🛍️ *Products:* \n${products.map(p => `\\\\- ${escapeMarkdown(p.name)} x${escapeMarkdown(p.quantity)} \\\\(${escapeMarkdown(p.subTotal)} ${escapeMarkdown(p.currency)}\\\\)`).join('\\n')}\n\n💰 *Total:* ${escapeMarkdown(total)} ${escapeMarkdown(currency)}  \n📍 *Address:* ${escapeMarkdown(address || \"N/A\")}  \n📞 *Phone:* ${escapeMarkdown(phone || \"N/A\")}`,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "8428985f-6c14-4918-b19e-ff604da17b66",
      "name": "Si ChatId trouvé",
      "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": "Ajouter/Mettre à jour la feuille CRM",
      "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 }}",
            "الفئة": "={{ $('Organize & Generate Order ID').item.json.customer.email }}",
            "النوع": "={{ $('Organize & Generate Order ID').item.json.customer.name }}",
            "الوصف": "={{ $('Organize & Generate Order ID').item.json.summaryText }}",
            "التاريخ": "={{ $('JotForm Trigger').item.json.createdAt || new Date().toISOString() }}",
            "المقدار": "={{ $('Organize & Generate Order ID').item.json.customer.address }}",
            "اسم الموظف": "={{ $('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": "التاريخ",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "التاريخ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "النوع",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "النوع",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "الفئة",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "الفئة",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "المقدار",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "المقدار",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "currency",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "currency",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "اسم الموظف",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "اسم الموظف",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "الوصف",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "الوصف",
              "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": "Créer une facture Zoho",
      "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": "Déclencheur Telegram (Obtenir ChatId)",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -176,
        -432
      ],
      "webhookId": "ee13da0e-595b-4b4a-8f35-912e44059af6",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "c7810f3b-da2a-4dcb-a63e-f02e2c294e04",
      "name": "Insérer les données de commande",
      "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": "Obtenir les lignes ChatId vides",
      "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": "Mettre à jour 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": "Obtenir la ligne de commande pour vérifier 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": "Marquer comme en attente",
      "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": "Commutateur (Vérification ChatId)",
      "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": "Note autocollante",
      "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": "Note autocollante 1",
      "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": "Note autocollante 2",
      "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": "Note autocollante 3",
      "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": "Note autocollante 4",
      "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": "Note autocollante 5",
      "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": "Note autocollante 6",
      "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": "Note autocollante 7",
      "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": "Attendre 5 minutes",
      "type": "n8n-nodes-base.wait",
      "position": [
        832,
        48
      ],
      "webhookId": "b9883ceb-0655-451f-865d-15702bece4c3",
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "826077be-7a44-48b1-b23d-9061199fc290",
      "name": "Note autocollante 8",
      "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": "Note autocollante 9",
      "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": "Note autocollante 10",
      "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": "Note autocollante 11",
      "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": "Note autocollante 12",
      "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": "Note autocollante 13",
      "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": "Note autocollante 14",
      "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": "Note autocollante 15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -1056
      ],
      "parameters": {
        "width": 1024,
        "height": 736,
        "content": "# JotForm Setup Guide\n\n\n## ⚡ 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## 🔑 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## ⚙️ 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,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "24b0b0d7-3c2d-4fc6-aa45-344c34171922",
  "connections": {
    "3cfda48d-d552-4f64-8305-6fddbbf1d4be": {
      "main": [
        [
          {
            "node": "e9796f5f-1c75-4db1-8b23-07d36a805221",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5f1d726b-3db7-4625-a05f-c87f5000174c": {
      "main": [
        [
          {
            "node": "3cfda48d-d552-4f64-8305-6fddbbf1d4be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8428985f-6c14-4918-b19e-ff604da17b66": {
      "main": [
        [
          {
            "node": "691a0fd1-73f5-45b2-b0f7-25a02474de85",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5dbd71ce-486c-4abd-9264-8f3d9169d03e": {
      "main": [
        [
          {
            "node": "654f6d89-8281-4b83-a95f-88d16a40e178",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "babe8a4d-af6b-49c4-859b-4575238b3e7f": {
      "main": [
        [
          {
            "node": "8428985f-6c14-4918-b19e-ff604da17b66",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c7810f3b-da2a-4dcb-a63e-f02e2c294e04": {
      "main": [
        [
          {
            "node": "e9796f5f-1c75-4db1-8b23-07d36a805221",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "420c37a1-cf4c-4af1-a565-218016fca586": {
      "main": [
        [
          {
            "node": "63b71df6-f37c-407d-a022-19733284d757",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8bca615b-5157-4641-ab95-af3548c27293": {
      "main": [
        [
          {
            "node": "856d1f24-6ea8-419f-b974-88517c06d333",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd53acd6-7699-421a-84cd-18ce3dd9a6be": {
      "main": [
        [
          {
            "node": "babe8a4d-af6b-49c4-859b-4575238b3e7f",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5f1d726b-3db7-4625-a05f-c87f5000174c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "691a0fd1-73f5-45b2-b0f7-25a02474de85": {
      "main": [
        [
          {
            "node": "420c37a1-cf4c-4af1-a565-218016fca586",
            "type": "main",
            "index": 0
          },
          {
            "node": "32633847-dcf7-4307-a613-f1a23e3e05b1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "654f6d89-8281-4b83-a95f-88d16a40e178": {
      "main": [
        [
          {
            "node": "c7810f3b-da2a-4dcb-a63e-f02e2c294e04",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e9796f5f-1c75-4db1-8b23-07d36a805221": {
      "main": [
        [
          {
            "node": "fd53acd6-7699-421a-84cd-18ce3dd9a6be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "919827cc-6c70-4d27-a5f5-c0a0aebc5730": {
      "main": [
        [
          {
            "node": "8bca615b-5157-4641-ab95-af3548c27293",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds32
Catégorie-
Types de nœuds12
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Abdullah Alshiekh

Abdullah Alshiekh

@abdullah01

🚀 Automation pro building AI-powered workflows with n8n. 💼 Special focus on real use cases 🔧 Love clean, flexible, and business-ready automations.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34