Jotform

Avancé

Ceci est uncontenant 18 nœuds.Utilise principalement des nœuds comme Gmail, Switch, Telegram, GoogleSheets, JotFormTrigger. Tri automatisé des commentaires clients avec Gemini, Jotform, Google Sheets et Gmail réponse

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Token Bot Telegram
  • Informations d'identification Google Sheets API
  • Clé API Google Gemini

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": "REDACTED",
  "meta": {
    "instanceId": "REDACTED",
    "templateCredsSetupCompleted": true
  },
  "name": "Jotform",
  "tags": [],
  "nodes": [
    {
      "id": "db688133-4596-47b2-9d63-5e91bc73753f",
      "name": "Déclencheur JotForm",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -224,
        -16
      ],
      "webhookId": "REDACTED",
      "parameters": {
        "form": "REDACTED"
      },
      "credentials": {
        "jotFormApi": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9ebab0dd-5bac-443a-98ab-d30eff4b458a",
      "name": "Commutateur",
      "type": "n8n-nodes-base.switch",
      "position": [
        16,
        -32
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "comments",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8868d5a6-f386-4f9d-bb65-b4373617bbf6",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['Feedback Type'].toLowerCase() }}",
                    "rightValue": "comments"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "questions",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6a821715-e994-4e85-8da3-9ba3b8e98bb5",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['Feedback Type'].toLowerCase() }}",
                    "rightValue": "questions"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "suggestions",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3eca34e9-2a95-424c-bfe7-2e2aa6092492",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['Feedback Type'].toLowerCase() }}",
                    "rightValue": "suggestions"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.3
    },
    {
      "id": "efa026b3-0b2e-4ee7-8074-493902a91265",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        336,
        -176
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "75bd3135-b303-4fed-95e4-50c2f8950f1a",
      "name": "Google Gemini Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        480,
        544
      ],
      "parameters": {
        "options": {
          "temperature": 0.4
        }
      },
      "credentials": {
        "googlePalmApi": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "631e6076-06f9-44c7-b2d3-2b9ed406cc5f",
      "name": "Analyse de Sentiment",
      "type": "@n8n/n8n-nodes-langchain.sentimentAnalysis",
      "position": [
        368,
        -448
      ],
      "parameters": {
        "options": {},
        "inputText": "={{ $json['Describe Your Feedback:'] }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "6b25a8c3-85c3-422b-8128-416afe44b98a",
      "name": "Envoyer au Groupe Support",
      "type": "n8n-nodes-base.telegram",
      "position": [
        912,
        -272
      ],
      "webhookId": "REDACTED",
      "parameters": {
        "text": "=🚨Customer Angry🚨\n\nName: {{ $json.Name.first }} {{ $json.Name.last }}\nEmail: {{ $json['E-mail'] }}\n\nMessage: {{ $json['Describe Your Feedback:'] }}\n\nPlease reach out immediately — your SLA is only 6 hours.\n\n",
        "chatId": "REDACTED",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a0399c2f-8d4a-4ac5-ac55-7c086fd74f7b",
      "name": "Répondre au Client",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1056,
        -32
      ],
      "webhookId": "REDACTED",
      "parameters": {
        "sendTo": "={{ $('Switch').item.json['E-mail'] }}",
        "message": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>AquaPure Smart Bottle Response</title>\n  <style>\n    body {\n      font-family: Arial, Helvetica, sans-serif;\n      background-color: #f6f8fa;\n      color: #333;\n      margin: 0;\n      padding: 0;\n    }\n    .email-container {\n      max-width: 600px;\n      margin: 30px auto;\n      background: #ffffff;\n      padding: 24px;\n      border-radius: 8px;\n      box-shadow: 0 2px 8px rgba(0,0,0,0.05);\n    }\n    p {\n      line-height: 1.6;\n      margin: 0 0 12px;\n    }\n    .question, .answer {\n      background-color: #f1f5f9;\n      padding: 12px;\n      border-radius: 6px;\n      margin-bottom: 16px;\n    }\n    .footer {\n      margin-top: 24px;\n      font-size: 14px;\n      color: #666;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"email-container\">\n    <p>\n      Dear {{ $('Switch').item.json.Name.first }} {{ $('Switch').item.json.Name.last }},\n    </p>\n\n    <p>Thank you for your interest in <strong>AquaPure Smart Bottle</strong>.</p>\n\n    <div class=\"question\">\n      <strong>Question:</strong><br>\n      {{ $('Switch').item.json['Describe Your Feedback:'] }}\n    </div>\n\n    <div class=\"answer\">\n      <strong>Answer:</strong><br>\n      {{ $json.output }}\n    </div>\n\n    <p class=\"footer\">\n      Best regards,<br>\n      <strong>Jotform</strong>\n    </p>\n  </div>\n</body>\n</html>",
        "options": {},
        "subject": "=AquaPure Smart Bottle - {{ $('Switch').item.json['Describe Your Feedback:'] }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "723d81fc-924b-46d2-b146-3544470daaa0",
      "name": "Lire la Base de Données",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        848,
        112
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "REDACTED",
          "cachedResultName": "qna"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "REDACTED"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5607dc4f-d50f-4425-824e-2462bf09ce20",
      "name": "Agent QnA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        624,
        -32
      ],
      "parameters": {
        "text": "=user: {{ $json['Describe Your Feedback:'] }}",
        "options": {
          "systemMessage": "=# Role\n- you're a helpful assistant to answer user question\n- always respond in warm tone\n\n# Context\n- you must read the google sheets for getting the answer\n- paraphrase the result so user can easily understand\n\n# Important restrictions\n- keep polite and use a proper language"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "5162281b-fe6d-454d-88a4-7667b3b8d5c8",
      "name": "Résumer les Suggestions",
      "type": "@n8n/n8n-nodes-langchain.chainSummarization",
      "position": [
        288,
        272
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2.1
    },
    {
      "id": "97913d99-2fe8-4afa-97b6-39627337f11a",
      "name": "Envoyer un SMS",
      "type": "n8n-nodes-base.telegram",
      "position": [
        656,
        320
      ],
      "webhookId": "REDACTED",
      "parameters": {
        "text": "=Suggestions from {{ $('Switch').item.json.Name.first }} {{ $('Switch').item.json.Name.last }}\nEmail: {{ $('Switch').item.json['E-mail'] }}\n\nSummary: {{ $json.output.text }}\n\nFull: {{ $('Switch').item.json['Describe Your Feedback:'] }}",
        "chatId": "REDACTED",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "43158b87-1336-417d-bbd0-6245f6adaa8e",
      "name": "Ajouter au Backlog Suggestions",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        320
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $('Switch').item.json.Name.first }} {{ $('Switch').item.json.Name.last }}",
            "Email": "={{ $('Switch').item.json['E-mail'] }}",
            "Summary": "={{ $('Summarize Suggestions').item.json.output.text }}",
            "Suggestions": "={{ $('Switch').item.json['Describe Your Feedback:'] }}",
            "Created Date": "={{ DateTime.now().format('yyyy-MM-dd') }}"
          },
          "schema": [
            {
              "id": "Created Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Created Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Suggestions",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Suggestions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2139811359,
          "cachedResultUrl": "REDACTED",
          "cachedResultName": "suggestions"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "REDACTED"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "4a67e4c3-13c7-497c-9ed4-bdf81123e0d2",
      "name": "Stocker dans Comments Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1072,
        -448
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $json.Name.first }} {{ $json.Name.last }}",
            "Email": "={{ $json['E-mail'] }}",
            "Comments": "={{ $json['Describe Your Feedback:'] }}",
            "Sentiment": "={{ $json.sentimentAnalysis.category }}",
            "Created Date": "={{ DateTime.now().format('yyyy-MM-dd') }}"
          },
          "schema": [
            {
              "id": "Created Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Created Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Sentiment",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comments",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Comments",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": false
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 903321638,
          "cachedResultUrl": "REDACTED",
          "cachedResultName": "comments"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "REDACTED",
          "cachedResultUrl": "REDACTED",
          "cachedResultName": "database"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "REDACTED",
          "name": "REDACTED"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "ab563cfb-ecef-4221-8496-dc5a2b8698ef",
      "name": "Note Adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -576,
        -560
      ],
      "parameters": {
        "width": 624,
        "height": 368,
        "content": "## Jotform feedback triage & auto-reply system\n\nThis workflow turns Jotform submissions into an automated triage pipeline:\n\nClassifies feedback (comment / question / suggestion) and runs sentiment.\n\n🚨 Urgent/angry messages → instant Telegram alert to support.\n\n❓ Questions → an LLM Q&A agent pulls answers from a Google Sheets knowledge base, then Gmail sends a friendly HTML reply.\n\n💡 Suggestions → auto-summary, Telegram heads-up, and logging into a Suggestions sheet.\n\n🗒️ Comments → appended to a Comments sheet for reporting.\nSetup tips: Rename nodes, keep credentials in node creds (not hard-coded), and store user-config variables in one Set node. Remove any personal IDs before sharing."
      },
      "typeVersion": 1
    },
    {
      "id": "5b8aa98c-defd-400b-925d-9e4fef08d4fc",
      "name": "Note Adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 368,
        "height": 208,
        "content": "## New submission from Jotform\n\nStarts when a new Jotform entry arrives (Name, E-mail, “Describe Your Feedback”). Map these form fields in your trigger node so they’re available to all branches."
      },
      "typeVersion": 1
    },
    {
      "id": "cfcb0f6c-8465-4669-8d87-d8aafd110312",
      "name": "Note Adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 320,
        "content": "## Answer with Q&A agent + email reply\n\nRead Database (Google Sheets Tool) loads your Q&A table (FAQ) for grounding. Point documentId + sheetName to your knowledge base. \n\nQnA Agent (LangChain) generates a paraphrased, user-friendly answer using the sheet as context. \n\nReply Customer (Gmail) sends a styled HTML email with the answer and the original question snippet. Replace the branding/text as needed. "
      },
      "typeVersion": 1
    },
    {
      "id": "7a738f93-72bd-4293-a412-63d55c8f1fa3",
      "name": "Note Adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1024,
        496
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 320,
        "content": "## Summarize + alert + log\n\nSummarize Suggestions condenses the idea into an executive summary. \n\nTelegram heads-up posts the summary + full text to your product/channel chat. \n\nAppend to Suggestions (Google Sheets) writes Summary, Suggestion, Email, Name, Created Date. Update the sheet URL/ID and column mapping if your schema differs. \n"
      },
      "typeVersion": 1
    },
    {
      "id": "64d78b26-1e32-481f-ab8b-7639f296f2a6",
      "name": "Note Adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -704
      ],
      "parameters": {
        "color": 7,
        "width": 512,
        "height": 144,
        "content": "## Log for reporting\n\nAppends general comments to your Comments sheet with Name, Email, Sentiment, and the raw message. Use this for dashboards or periodic reviews."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8fce1e13-e7cb-4e2e-9d50-9e4c0fb8e927",
  "connections": {
    "9ebab0dd-5bac-443a-98ab-d30eff4b458a": {
      "main": [
        [
          {
            "node": "631e6076-06f9-44c7-b2d3-2b9ed406cc5f",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5607dc4f-d50f-4425-824e-2462bf09ce20",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5162281b-fe6d-454d-88a4-7667b3b8d5c8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5607dc4f-d50f-4425-824e-2462bf09ce20": {
      "main": [
        [
          {
            "node": "a0399c2f-8d4a-4ac5-ac55-7c086fd74f7b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "723d81fc-924b-46d2-b146-3544470daaa0": {
      "ai_tool": [
        [
          {
            "node": "5607dc4f-d50f-4425-824e-2462bf09ce20",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "db688133-4596-47b2-9d63-5e91bc73753f": {
      "main": [
        [
          {
            "node": "9ebab0dd-5bac-443a-98ab-d30eff4b458a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "631e6076-06f9-44c7-b2d3-2b9ed406cc5f": {
      "main": [
        [
          {
            "node": "4a67e4c3-13c7-497c-9ed4-bdf81123e0d2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "4a67e4c3-13c7-497c-9ed4-bdf81123e0d2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "6b25a8c3-85c3-422b-8128-416afe44b98a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "97913d99-2fe8-4afa-97b6-39627337f11a": {
      "main": [
        [
          {
            "node": "43158b87-1336-417d-bbd0-6245f6adaa8e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6b25a8c3-85c3-422b-8128-416afe44b98a": {
      "main": [
        [
          {
            "node": "4a67e4c3-13c7-497c-9ed4-bdf81123e0d2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5162281b-fe6d-454d-88a4-7667b3b8d5c8": {
      "main": [
        [
          {
            "node": "97913d99-2fe8-4afa-97b6-39627337f11a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4a67e4c3-13c7-497c-9ed4-bdf81123e0d2": {
      "main": [
        []
      ]
    },
    "efa026b3-0b2e-4ee7-8074-493902a91265": {
      "ai_languageModel": [
        [
          {
            "node": "631e6076-06f9-44c7-b2d3-2b9ed406cc5f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "75bd3135-b303-4fed-95e4-50c2f8950f1a": {
      "ai_languageModel": [
        [
          {
            "node": "5607dc4f-d50f-4425-824e-2462bf09ce20",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "5162281b-fe6d-454d-88a4-7667b3b8d5c8",
            "type": "ai_languageModel",
            "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œuds18
Catégorie-
Types de nœuds11
Description de la difficulté

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

Auteur
Rully Saputra

Rully Saputra

@rullysaputra15

Specializing in software engineering with over 5 years of hands-on experience. In addition to my expertise in web development, I also have experience in creating Hybrid mobile apps.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34