{
  "name": "Reklamation ueber Formular erfassen, bewerten und eskalieren",
  "meta": {
    "beschreibung": "Nimmt Reklamationen ueber ein n8n-Formular auf (Bestellnummer, Problembeschreibung, Foto-Upload), prueft die Angaben auf Plausibilitaet und Gewaehrleistungsfrist und laesst die KI Schweregrad und Sachgebiet bestimmen. Daraus entstehen Ticket, Prioritaet und eine realistische Bearbeitungszeit in Werktagen; kritische Faelle - Sicherheits-, Gesundheits- oder Rechtsrisiko - gehen sofort an die Teamleitung statt in die Standard-Queue. Der Kunde bekommt eine Eingangsbestaetigung mit der Ticketnummer und einer belastbaren Frist. DSGVO-Hinweis: Das Formular erhebt personenbezogene Daten und Fotos - AV-Vertrag mit dem KI-Anbieter schliessen oder lokales Modell (Ollama) nutzen, Loeschfristen im Ticketsystem hinterlegen und im Formular auf die Datenschutzerklaerung verlinken. Die KI bewertet nur, entschieden wird die Eskalation ueber feste Regeln.",
    "kategorie": "Kundenservice",
    "schwierigkeit": "mittel",
    "benoetigt": ["n8n-Formular (formTrigger)", "OpenAI-API (oder Ollama)", "Ticketsystem mit API (z. B. Zammad, Freshdesk, Jira Service Management)", "SMTP-Versand"],
    "quelle": "https://die-ki-agentur.de/n8n-agentur/"
  },
  "nodes": [
    {
      "parameters": {
        "content": "## Reklamationen aufnehmen und richtig priorisieren\n\n**Ablauf:** Formular → Angaben pruefen (Bestellnummer, Gewaehrleistungsfrist, Foto) → KI bestimmt Schweregrad und Sachgebiet → feste Eskalationsregeln → Ticket anlegen → kritisch: sofort an die Teamleitung / sonst Standard-Queue → Eingangsbestaetigung mit realistischer Frist.\n\n**Warum feste Regeln zusaetzlich zur KI:** Bei Verletzungsgefahr, Rauch, Lebensmitteln oder eingeschaltetem Anwalt entscheidet nicht das Modell, sondern eine Wortliste. Ein uebersehener kritischer Fall kostet mehr als ein falscher Alarm.\n\n**Vor dem Start:**\n1. Formular-Pfad und Titel anpassen, Link zur Datenschutzerklaerung ergaenzen\n2. In `Ticket anlegen` die API-URL setzen (HIER_TICKET_API_URL)\n3. Postfaecher eintragen: Teamleitung, Service, Absender\n4. Bearbeitungszeiten in `Eskalationsregeln anwenden` an die eigene Besetzung anpassen - versprochen wird nur, was gehalten wird\n5. Bei Fotos und Kundendaten: AV-Vertrag mit dem KI-Anbieter oder lokales Modell\n\n**Betreuung:** https://die-ki-agentur.de/n8n-agentur/",
        "height": 620,
        "width": 480
      },
      "id": "note-doku",
      "name": "Kurzanleitung",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-160, -60]
    },
    {
      "parameters": {
        "path": "reklamation",
        "formTitle": "Reklamation melden",
        "formDescription": "Bitte beschreiben Sie das Problem moeglichst genau. Mit Bestellnummer und Foto koennen wir den Fall deutlich schneller klaeren. Ihre Angaben verwenden wir ausschliesslich zur Bearbeitung dieser Reklamation.",
        "formFields": {"values": [
          {"fieldLabel": "Bestellnummer", "placeholder": "z. B. AB-123456", "requiredField": true},
          {"fieldLabel": "Bestelldatum", "fieldType": "date", "requiredField": true},
          {"fieldLabel": "Ihr Name", "requiredField": true},
          {"fieldLabel": "E-Mail-Adresse", "fieldType": "email", "requiredField": true},
          {"fieldLabel": "Sachgebiet", "fieldType": "dropdown", "requiredField": true, "fieldOptions": {"values": [
            {"option": "Ware beschaedigt"},
            {"option": "Falsche oder fehlende Ware"},
            {"option": "Ware funktioniert nicht"},
            {"option": "Lieferung verspaetet"},
            {"option": "Rechnung oder Zahlung"},
            {"option": "Sonstiges"}
          ]}},
          {"fieldLabel": "Was ist passiert?", "fieldType": "textarea", "placeholder": "Was genau ist das Problem, seit wann besteht es, was haben Sie schon versucht?", "requiredField": true},
          {"fieldLabel": "Fotos zum Problem", "fieldType": "file", "multipleFiles": true, "acceptFileTypes": ".jpg,.jpeg,.png,.pdf", "requiredField": false},
          {"fieldLabel": "Ihre Wunschloesung", "fieldType": "dropdown", "requiredField": true, "fieldOptions": {"values": [
            {"option": "Ersatzlieferung"},
            {"option": "Reparatur"},
            {"option": "Erstattung"},
            {"option": "Beratung, noch offen"}
          ]}}
        ]},
        "options": {"appendAttribution": false}
      },
      "id": "trigger-formular",
      "name": "Reklamationsformular",
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.2,
      "position": [380, 300],
      "webhookId": "c7e93b21-4f6a-4d05-8b2c-91ad63f0e7b8"
    },
    {
      "parameters": {
        "jsCode": "// Erst pruefen, dann bewerten. Was hier auffaellt, kostet spaeter im Ticket\n// mehrere Rueckfragen: unplausible Bestellnummern, ein Bestelldatum in der\n// Zukunft oder eine Beschreibung, die aus zwei Woertern besteht.\n// Die Gewaehrleistungsfrist wird gleich mitgerechnet - sie entscheidet spaeter\n// darueber, ob der Fall Anspruch oder Kulanz ist, und gehoert nicht in den\n// Ermessensspielraum eines Sprachmodells.\nconst GEWAEHRLEISTUNG_MONATE = 24;\nconst MIN_BESCHREIBUNG = 20;\n\nconst e = $input.first().json;\nconst binaerdaten = $input.first().binary ?? {};\n\nconst bestellnummer = String(e['Bestellnummer'] ?? '').trim().toUpperCase();\nconst beschreibung = String(e['Was ist passiert?'] ?? '').trim();\nconst bestelldatum = new Date(e['Bestelldatum'] ?? '');\nconst heute = new Date();\n\nconst maengel = [];\n// Zwei bis drei Buchstaben, optionaler Bindestrich, fuenf bis acht Ziffern -\n// bei abweichendem Nummernkreis hier anpassen.\nif (!/^[A-Z]{0,3}-?\\d{5,8}$/.test(bestellnummer)) maengel.push('Die Bestellnummer sieht nicht wie eine unserer Nummern aus (Beispiel: AB-123456).');\nif (isNaN(bestelldatum.getTime())) maengel.push('Das Bestelldatum konnte nicht gelesen werden.');\nelse if (bestelldatum > heute) maengel.push('Das Bestelldatum liegt in der Zukunft.');\nif (beschreibung.length < MIN_BESCHREIBUNG) maengel.push('Die Beschreibung ist zu knapp, um den Fall einzuschaetzen.');\n\nconst tageSeitKauf = isNaN(bestelldatum.getTime()) ? null : Math.floor((heute - bestelldatum) / 86400000);\nconst fristEnde = new Date(bestelldatum);\nfristEnde.setMonth(fristEnde.getMonth() + GEWAEHRLEISTUNG_MONATE);\n\nreturn [{\n  json: {\n    bestellnummer,\n    bestelldatum_de: isNaN(bestelldatum.getTime()) ? '' : bestelldatum.toLocaleDateString('de-DE'),\n    tage_seit_kauf: tageSeitKauf,\n    in_gewaehrleistung: !isNaN(bestelldatum.getTime()) && heute <= fristEnde,\n    gewaehrleistung_bis_de: isNaN(fristEnde.getTime()) ? '' : fristEnde.toLocaleDateString('de-DE'),\n    kunde: String(e['Ihr Name'] ?? '').trim(),\n    email: String(e['E-Mail-Adresse'] ?? '').trim(),\n    sachgebiet_kunde: e['Sachgebiet'] ?? 'Sonstiges',\n    wunschloesung: e['Ihre Wunschloesung'] ?? 'Beratung, noch offen',\n    beschreibung,\n    anzahl_fotos: Object.keys(binaerdaten).length,\n    hat_foto: Object.keys(binaerdaten).length > 0,\n    eingang_iso: new Date().toISOString(),\n    eingang_de: heute.toLocaleString('de-DE', { timeZone: 'Europe/Berlin' }),\n    maengel,\n    vollstaendig: maengel.length === 0\n  }\n}];"
      },
      "id": "pruefe-angaben",
      "name": "Angaben pruefen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [600, 300]
    },
    {
      "parameters": {
        "conditions": {
          "options": {"caseSensitive": true, "version": 2},
          "conditions": [
            {"id": "vollstaendig", "leftValue": "={{ $json.vollstaendig }}", "rightValue": true, "operator": {"type": "boolean", "operation": "true", "singleValue": true}}
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "if-vollstaendig",
      "name": "Angaben vollstaendig?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [820, 300]
    },
    {
      "parameters": {
        "fromEmail": "HIER_ABSENDER_EINTRAGEN",
        "toEmail": "={{ $json.email }}",
        "subject": "Ihre Reklamation - wir brauchen noch eine Angabe",
        "emailFormat": "text",
        "text": "=Guten Tag {{ $json.kunde }},\n\nvielen Dank fuer Ihre Meldung. Bevor wir den Fall aufnehmen koennen, fehlt uns noch etwas:\n\n- {{ $json.maengel.join('\\n- ') }}\n\nIhre bisherigen Angaben:\nBestellnummer: {{ $json.bestellnummer || 'keine' }}\nBestelldatum: {{ $json.bestelldatum_de || 'unklar' }}\nProblem: {{ $json.beschreibung }}\n\nBitte antworten Sie einfach auf diese Mail oder fuellen Sie das Formular erneut aus. Sobald die Angaben vollstaendig sind, legen wir das Ticket an.\n\nFreundliche Gruesse\nIhr Kundenservice",
        "options": {}
      },
      "id": "mail-rueckfrage",
      "name": "Rueckfrage an Kunden",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [1040, 580]
    },
    {
      "parameters": {
        "modelId": {"__rl": true, "value": "gpt-4.1-mini", "mode": "list"},
        "messages": {"values": [
          {"role": "system", "content": "Du bewertest eingehende Reklamationen eines deutschen Handels- und Produktionsbetriebs. Antworte AUSSCHLIESSLICH mit einem JSON-Objekt, keine Erklaerung. Felder: schweregrad (genau einer der Werte: kritisch, hoch, mittel, niedrig), sachgebiet (genau einer der Werte: Produktmangel, Transportschaden, Falschlieferung, Lieferverzug, Rechnung, Bedienfehler, Sonstiges), kurzfassung (ein Satz, sachlich, fuer die Ticketuebersicht), kundenstimmung (veraergert, sachlich, verunsichert), erwartete_kosten (gering, mittel, hoch, unklar), rueckfragen (Array von Strings: was der Bearbeiter zusaetzlich wissen muss), konfidenz (Zahl zwischen 0 und 1). Einstufung: 'kritisch' nur bei Gefahr fuer Personen, Gesundheit, Betriebssicherheit oder bei angekuendigten rechtlichen Schritten. 'hoch' bei Produktionsstillstand, Totalausfall oder wiederholtem Fehler. 'mittel' bei normalen Maengeln mit Ersatz- oder Reparaturbedarf. 'niedrig' bei Schoenheitsfehlern, Fragen und Bedienthemen. Bewerte nur, was dasteht - nichts hineininterpretieren."},
          {"role": "user", "content": "=Sachgebiet laut Kunde: {{ $json.sachgebiet_kunde }}\nWunschloesung: {{ $json.wunschloesung }}\nBestellung vom {{ $json.bestelldatum_de }} ({{ $json.tage_seit_kauf }} Tage her, in Gewaehrleistung: {{ $json.in_gewaehrleistung }})\nFotos beigefuegt: {{ $json.anzahl_fotos }}\n\nSchilderung des Kunden:\n{{ $json.beschreibung }}"}
        ]},
        "jsonOutput": true,
        "options": {"temperature": 0}
      },
      "id": "ki-bewertung",
      "name": "Schweregrad und Sachgebiet bestimmen",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [1040, 220]
    },
    {
      "parameters": {
        "jsCode": "// Die KI schlaegt einen Schweregrad vor, entschieden wird er hier. Bei Gefahr\n// fuer Personen oder eingeschaltetem Anwalt darf die Einstufung nicht von einer\n// Modellversion abhaengen - eine Wortliste ist in diesen Faellen das robustere\n// Werkzeug. Sie kann nur nach oben korrigieren, nie nach unten.\nconst GEFAHR = /(verletz|verbrannt|verbrennung|brand|rauch|feuer|stromschlag|kurzschluss|explo|gesundheit|arzt|krankenhaus|schimmel|verdorben|allergisch|scharfe kante|umgekippt|abgebrochen und)/i;\nconst RECHTLICH = /(anwalt|rechtsanwalt|klage|verbraucherzentrale|presse|bewertung|widerruf|frist setze|letzte mahnung|gericht)/i;\nconst STILLSTAND = /(stillstand|produktion steht|ausfall|komplett defekt|geht gar nicht|totalausfall|baustelle steht)/i;\n\n// Bearbeitungszeiten in Werktagen. Bewusst konservativ: eine gehaltene Frist\n// beruhigt mehr als eine ehrgeizige, die reisst.\nconst FRISTEN = {\n  kritisch: {werktage: 0, zusage: 'noch heute, spaetestens innerhalb von 4 Stunden', queue: 'Eskalation Teamleitung'},\n  hoch:     {werktage: 1, zusage: 'innerhalb eines Werktags',                        queue: 'Prioritaet'},\n  mittel:   {werktage: 2, zusage: 'innerhalb von zwei Werktagen',                    queue: 'Standard'},\n  niedrig:  {werktage: 5, zusage: 'innerhalb von fuenf Werktagen',                   queue: 'Standard'}\n};\n\n// Samstag und Sonntag ueberspringen - sonst verspricht die Bestaetigung eine\n// Rueckmeldung am Sonntag und der Kunde wartet umsonst.\nfunction werktageAddieren(start, tage) {\n  const d = new Date(start);\n  let offen = tage;\n  while (offen > 0) {\n    d.setDate(d.getDate() + 1);\n    if (d.getDay() !== 0 && d.getDay() !== 6) offen--;\n  }\n  return d;\n}\n\nconst fall = $('Angaben pruefen').first().json;\nconst k = $input.first().json.message?.content ?? $input.first().json;\nconst text = `${fall.beschreibung} ${fall.sachgebiet_kunde}`;\n\nlet schweregrad = FRISTEN[k.schweregrad] ? k.schweregrad : 'mittel';\nconst eskalationsgruende = [];\n\nif (GEFAHR.test(text)) { schweregrad = 'kritisch'; eskalationsgruende.push('Hinweis auf Gefahr fuer Personen oder Gesundheit'); }\nif (RECHTLICH.test(text)) { schweregrad = 'kritisch'; eskalationsgruende.push('Rechtliche Schritte oder Oeffentlichkeit angekuendigt'); }\nif (schweregrad !== 'kritisch' && STILLSTAND.test(text)) { schweregrad = 'hoch'; eskalationsgruende.push('Ausfall oder Stillstand beim Kunden'); }\nif (Number(k.konfidenz ?? 0) < 0.6 && schweregrad === 'niedrig') { schweregrad = 'mittel'; eskalationsgruende.push('KI unsicher - Einstufung vorsichtshalber angehoben'); }\n\nconst frist = FRISTEN[schweregrad];\nconst faellig = schweregrad === 'kritisch'\n  ? new Date(Date.now() + 4 * 60 * 60 * 1000)\n  : werktageAddieren(new Date(), frist.werktage);\n\nreturn [{\n  json: {\n    ...fall,\n    schweregrad,\n    kritisch: schweregrad === 'kritisch',\n    sachgebiet: k.sachgebiet ?? 'Sonstiges',\n    kurzfassung: k.kurzfassung ?? fall.beschreibung.slice(0, 120),\n    kundenstimmung: k.kundenstimmung ?? 'sachlich',\n    erwartete_kosten: k.erwartete_kosten ?? 'unklar',\n    rueckfragen: Array.isArray(k.rueckfragen) ? k.rueckfragen : [],\n    ki_konfidenz: Number(k.konfidenz ?? 0),\n    ki_vorschlag: k.schweregrad ?? 'unbekannt',\n    eskalationsgruende,\n    regel_hat_korrigiert: eskalationsgruende.length > 0,\n    queue: frist.queue,\n    bearbeitungszeit_zusage: frist.zusage,\n    faellig_de: faellig.toLocaleString('de-DE', { timeZone: 'Europe/Berlin' }),\n    // Anspruch oder Kulanz - das entscheidet ueber die Formulierung im Ticket.\n    anspruchsgrundlage: fall.in_gewaehrleistung ? 'Gewaehrleistung' : 'Kulanzpruefung noetig'\n  }\n}];"
      },
      "id": "eskalationsregeln",
      "name": "Eskalationsregeln anwenden",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [1260, 220]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "HIER_TICKET_API_URL",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ titel: 'Reklamation ' + $json.bestellnummer + ' - ' + $json.sachgebiet, beschreibung: $json.beschreibung, kurzfassung: $json.kurzfassung, kunde: { name: $json.kunde, email: $json.email }, bestellnummer: $json.bestellnummer, bestelldatum: $json.bestelldatum_de, prioritaet: $json.schweregrad, queue: $json.queue, sachgebiet: $json.sachgebiet, wunschloesung: $json.wunschloesung, anspruchsgrundlage: $json.anspruchsgrundlage, faellig_bis: $json.faellig_de, anzahl_fotos: $json.anzahl_fotos, eskalationsgruende: $json.eskalationsgruende }) }}",
        "options": {"response": {"response": {"neverError": true}}, "timeout": 15000}
      },
      "id": "http-ticket",
      "name": "Ticket anlegen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [1480, 220]
    },
    {
      "parameters": {
        "jsCode": "// Die Ticket-API antwortet nur mit ihrer eigenen Struktur - hier wird sie mit\n// dem Fall zusammengefuehrt. Antwortet sie gar nicht oder ohne Nummer, laeuft\n// der Vorgang trotzdem weiter: Der Kunde bekommt eine Ersatzkennung statt gar\n// keiner Bestaetigung, und der Fehler steht im Ticket-Hinweis fuer das Team.\nconst fall = $('Eskalationsregeln anwenden').first().json;\nconst antwort = $input.first().json ?? {};\n\nconst nummer = antwort.ticket_id ?? antwort.id ?? antwort.number ?? antwort.ticketnummer ?? null;\nconst ersatz = 'VORL-' + fall.bestellnummer + '-' + new Date().toISOString().slice(0, 10).split('-').reverse().join('');\n\nreturn [{\n  json: {\n    ...fall,\n    ticketnummer: nummer ?? ersatz,\n    ticket_angelegt: Boolean(nummer),\n    ticket_hinweis: nummer ? '' : 'Ticketsystem hat keine Nummer geliefert - Fall bitte von Hand im System anlegen.'\n  }\n}];"
      },
      "id": "ticketnummer",
      "name": "Ticketnummer uebernehmen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [1700, 220]
    },
    {
      "parameters": {
        "conditions": {
          "options": {"caseSensitive": true, "version": 2},
          "conditions": [
            {"id": "kritisch", "leftValue": "={{ $json.kritisch }}", "rightValue": true, "operator": {"type": "boolean", "operation": "true", "singleValue": true}}
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "if-kritisch",
      "name": "Kritischer Fall?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [1920, 220]
    },
    {
      "parameters": {
        "fromEmail": "HIER_ABSENDER_EINTRAGEN",
        "toEmail": "teamleitung@HIER_DOMAIN_EINTRAGEN",
        "subject": "=SOFORT PRUEFEN: kritische Reklamation {{ $json.ticketnummer }} ({{ $json.sachgebiet }})",
        "emailFormat": "text",
        "text": "=Diese Reklamation wurde als kritisch eingestuft und geht NICHT in die Standard-Queue.\n\nTicket: {{ $json.ticketnummer }}\nEingang: {{ $json.eingang_de }}\nRueckmeldung zugesagt bis: {{ $json.faellig_de }}\n\nKunde: {{ $json.kunde }} <{{ $json.email }}>\nBestellung: {{ $json.bestellnummer }} vom {{ $json.bestelldatum_de }} ({{ $json.anspruchsgrundlage }})\nSachgebiet: {{ $json.sachgebiet }} | Stimmung: {{ $json.kundenstimmung }} | Kosten: {{ $json.erwartete_kosten }}\nFotos: {{ $json.anzahl_fotos }}\n\nGruende fuer die Eskalation:\n- {{ ($json.eskalationsgruende.length ? $json.eskalationsgruende : ['Einstufung durch KI']).join('\\n- ') }}\n(KI-Vorschlag war: {{ $json.ki_vorschlag }}, Konfidenz {{ $json.ki_konfidenz }})\n\nKurzfassung: {{ $json.kurzfassung }}\n\nSchilderung des Kunden:\n{{ $json.beschreibung }}\n\nOffene Punkte:\n- {{ ($json.rueckfragen.length ? $json.rueckfragen : ['keine']).join('\\n- ') }}\n\n{{ $json.ticket_hinweis }}",
        "options": {}
      },
      "id": "mail-eskalation",
      "name": "Teamleitung sofort eskalieren",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [2140, 100]
    },
    {
      "parameters": {
        "assignments": {"assignments": [
          {"id": "queue", "name": "einsortiert_in", "value": "={{ $json.queue }}-Queue", "type": "string"},
          {"id": "hinweis", "name": "hinweis", "value": "=Regulaere Bearbeitung, Rueckmeldung {{ $json.bearbeitungszeit_zusage }} (bis {{ $json.faellig_de }}).", "type": "string"}
        ]},
        "includeOtherFields": true,
        "options": {}
      },
      "id": "set-standard",
      "name": "In Standard-Queue einreihen",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [2140, 360]
    },
    {
      "parameters": {
        "fromEmail": "HIER_ABSENDER_EINTRAGEN",
        "toEmail": "={{ $('Ticketnummer uebernehmen').item.json.email }}",
        "subject": "=Ihre Reklamation ist angekommen - Ticket {{ $('Ticketnummer uebernehmen').item.json.ticketnummer }}",
        "emailFormat": "text",
        "text": "=Guten Tag {{ $('Ticketnummer uebernehmen').item.json.kunde }},\n\nvielen Dank fuer Ihre Meldung. Wir haben Ihre Reklamation aufgenommen.\n\nTicketnummer: {{ $('Ticketnummer uebernehmen').item.json.ticketnummer }}\nBestellung: {{ $('Ticketnummer uebernehmen').item.json.bestellnummer }} vom {{ $('Ticketnummer uebernehmen').item.json.bestelldatum_de }}\nIhr Anliegen: {{ $('Ticketnummer uebernehmen').item.json.kurzfassung }}\nFotos erhalten: {{ $('Ticketnummer uebernehmen').item.json.anzahl_fotos }}\n\nWir melden uns {{ $('Ticketnummer uebernehmen').item.json.bearbeitungszeit_zusage }}, das heisst spaetestens am {{ $('Ticketnummer uebernehmen').item.json.faellig_de }} Uhr.\n\n{{ $('Ticketnummer uebernehmen').item.json.kritisch ? 'Da Ihre Schilderung auf ein dringendes Problem hindeutet, hat unsere Teamleitung den Fall direkt uebernommen. Bitte verwenden Sie das betroffene Produkt bis zu unserer Rueckmeldung nicht weiter.' : 'Sie muessen nichts weiter tun. Bitte heben Sie die Ware und die Verpackung bis zur Klaerung auf.' }}\n\nWenn Sie etwas ergaenzen moechten, antworten Sie einfach auf diese Mail und lassen Sie die Ticketnummer im Betreff stehen.\n\nFreundliche Gruesse\nIhr Kundenservice",
        "options": {}
      },
      "id": "mail-bestaetigung",
      "name": "Eingangsbestaetigung an Kunden",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [2380, 220]
    }
  ],
  "connections": {
    "Reklamationsformular": {"main": [[{"node": "Angaben pruefen", "type": "main", "index": 0}]]},
    "Angaben pruefen": {"main": [[{"node": "Angaben vollstaendig?", "type": "main", "index": 0}]]},
    "Angaben vollstaendig?": {"main": [[{"node": "Schweregrad und Sachgebiet bestimmen", "type": "main", "index": 0}], [{"node": "Rueckfrage an Kunden", "type": "main", "index": 0}]]},
    "Schweregrad und Sachgebiet bestimmen": {"main": [[{"node": "Eskalationsregeln anwenden", "type": "main", "index": 0}]]},
    "Eskalationsregeln anwenden": {"main": [[{"node": "Ticket anlegen", "type": "main", "index": 0}]]},
    "Ticket anlegen": {"main": [[{"node": "Ticketnummer uebernehmen", "type": "main", "index": 0}]]},
    "Ticketnummer uebernehmen": {"main": [[{"node": "Kritischer Fall?", "type": "main", "index": 0}]]},
    "Kritischer Fall?": {"main": [[{"node": "Teamleitung sofort eskalieren", "type": "main", "index": 0}], [{"node": "In Standard-Queue einreihen", "type": "main", "index": 0}]]},
    "Teamleitung sofort eskalieren": {"main": [[{"node": "Eingangsbestaetigung an Kunden", "type": "main", "index": 0}]]},
    "In Standard-Queue einreihen": {"main": [[{"node": "Eingangsbestaetigung an Kunden", "type": "main", "index": 0}]]}
  },
  "settings": {"executionOrder": "v1"},
  "pinData": {}
}
