Zoho Desk, Catalyst und Cliq: Custom Workflows für effizientes Ticket-Management

Zoho Desk optimieren: Vom Standard-Setup zur maßgeschneiderten Service-Maschine
Wenn du in deinem Unternehmen auf Zoho Desk setzt, weißt du die Leistungsfähigkeit dieses Tools zu schätzen. Doch oft liegt der wahre Schlüssel zur Effizienz nicht in den Standardfunktionen, sondern in der passgenauen Anpassung an deine individuellen Arbeitsabläufe. Viele Teams, die von anderen Plattformen wie Salesforce oder Zendesk migrieren, vermissen spezifische Features oder stoßen auf Hürden, bei denen der Standard-Workflow nicht optimal passt. Genau hier beginnt die eigentliche Stärke des Zoho-Ökosystems: die nahezu grenzenlose Anpassbarkeit durch APIs, Widgets und die Skriptsprache Deluge. In diesem Artikel zeigen wir dir anhand von drei konkreten Praxisbeispielen, wie du typische Herausforderungen im Service-Alltag löst und Zoho Desk zu einem Werkzeug machst, das sich deinem Team anpasst – und nicht umgekehrt.
Praxisbeispiel: Der Service-Alltag und seine Tücken
Stell dir ein wachsendes B2B-Unternehmen im FinTech- oder SaaS-Bereich vor. Das Service-Team bearbeitet täglich Dutzende von Anfragen – von einfachen Support-Fragen bis hin zu komplexen Vertragsänderungen. Obwohl der Umstieg auf Zoho Desk reibungslos verlief, identifiziert das Team nach einigen Wochen drei wiederkehrende Effizienzbremsen:
- Kontextverlust bei langen Tickets: Bei Tickets, die über mehrere Tage und mit verschiedenen Ansprechpartnern laufen, müssen Agenten oft mühsam durch den gesamten Verlauf scrollen, um die ursprüngliche Anfrage zu finden. Das kostet bei jeder Bearbeitung wertvolle Sekunden und erhöht das Risiko von Missverständnissen.
- Irrelevante Benachrichtigungen: Die Agenten werden mit Systemmeldungen wie „Ticket wurde neu verknüpft“ überschwemmt. Diese "Benachrichtigungsflut" führt dazu, dass wichtige Alarme in der Masse untergehen und die Aufmerksamkeit für das Wesentliche verloren geht.
- Unerwünschter Besitzerwechsel: Ein Teamleiter geht morgens durch die offenen Tickets, um zu prüfen, ob alles auf Kurs ist. Wenn er dabei veraltete oder erledigte Tickets schließt, wird er automatisch zum Besitzer. Dies verfälscht die Auswertungen und die Nachverfolgbarkeit, wer das Ticket ursprünglich bearbeitet hat.
Diese drei Probleme sind keine Seltenheit und zeigen exemplarisch, wo Standardkonfigurationen an ihre Grenzen stoßen. Doch mit den richtigen Werkzeugen lassen sie sich elegant lösen.
Schritt-für-Schritt zur Lösung: Drei Praxis-Hacks für dein Zoho Desk
1. Lösung: Ursprünglichen Ticket-Inhalt immer im Blick mit einem Custom Widget
Die Anforderung, die erste Nachricht eines Tickets prominent anzuzeigen, lässt sich in Zoho Desk nicht per Standardeinstellung umsetzen. Aber dafür gibt es Extensions und Widgets. Wir bauen ein kleines Widget, das sich die erste Konversation per API holt und sie in einem eigenen Fenster neben dem Ticket anzeigt.
Dein Tech-Stack für diese Lösung:
- Zoho Desk (für das Ticket-Management)
- Zoho Catalyst (als serverless Backend für unsere Funktion)
- Zoho Desk API (um die Ticketdaten abzurufen)
Schritt 1: Erstelle eine Catalyst-Funktion
Die Logik zum Abrufen der Ticket-Daten lagern wir in eine serverseitige Funktion auf Zoho Catalyst aus. Das hält den Code sauber und sicher.
Logge dich in dein Catalyst-Konto ein und erstelle eine neue "Advanced I/O Function" in Java oder Node.js. Diese Funktion benötigt die Ticket-ID als Input und ruft über die Zoho Desk API den ersten Thread des Tickets ab.
Hier ein vereinfachtes Beispiel, wie der API-Aufruf innerhalb der Catalyst-Funktion mit Deluge aussehen würde (im echten Catalyst würdest du das Äquivalent in Node.js/Java nutzen):
// Deluge-Beispiel zur Veranschaulichung der Logik// Diese Funktion wird in Catalyst (z.B. mit Node.js) nachgebaut// Input: ticketId// Output: firstMessageContent (als String)ticketDetails = zoho.desk.getById(ticketId, "threads");if(ticketDetails.containKey("threads")){threadList = ticketDetails.get("threads");// Wir sortieren, um sicherzustellen, dass wir den ältesten Thread bekommensortedThreads = threadList.sort("createdTime");firstThread = sortedThreads.get(0);if(firstThread.containKey("content")){return firstThread.get("content");}}return "Kein Inhalt gefunden.";
Schritt 2: Baue das Widget-Frontend
Das Widget selbst ist eine kleine HTML-Seite mit JavaScript. Du erstellst eine widget.html. Dieses Frontend ruft deine Catalyst-Funktion auf, sobald ein Ticket geladen wird.
<!DOCTYPE html><html><head><title>Original E-Mail</title><script src="https://static.zohocdn.com/desk/v1/sdk/zipclient.min.js"></script></head><body><h4>Ursprüngliche Anfrage</h4><div id="original-content">Lade...</div><script>ZOHODESK.extension.on("onLoad", function() {ZOHODESK.get("ticket.id").then(function(response) {let ticketId = response["ticket.id"];// Hier der Aufruf an deine Zoho Catalyst Funktion// z.B. über fetch('https://deine-catalyst-url.zohocatalyst.com/server/deine-funktion', ...)// Im Response-Body ist dann der Inhalt der ersten Mail// --- Dummy-Implementierung ---let catalystUrl = `https://your-catalyst-app.catalystapps.com/server/fetch_first_thread?ticketId=${ticketId}`;fetch(catalystUrl).then(res => res.text()).then(content => {document.getElementById("original-content").innerHTML = content;}).catch(err => {document.getElementById("original-content").innerText = "Fehler beim Laden.";});});});ZOHODESK.extension.init();</script></body></html>
Schritt 3: Lade die Extension in Zoho Desk hoch
Packe deine widget.html und die zugehörige Konfigurationsdatei plugin-manifest.json in ein ZIP-Archiv und lade es unter Einstellungen > Entwicklerbereich > Extensions hoch. Nun hast du in jedem Ticket eine Box, die dir sofort den Kontext der ursprünglichen Anfrage liefert.
2. Lösung: Benachrichtigungsflut eindämmen mit gezielten Cliq-Nachrichten
Statt alle Benachrichtigungen global zu deaktivieren, verlagern wir wichtige, aber nicht kritische Informationen in einen dedizierten Kanal. Zoho Cliq, das Kollaborationstool von Zoho, ist hierfür ideal.
Dein Tech-Stack für diese Lösung:
- Zoho Desk (Workflow-Regeln)
- Zoho Cliq (als Benachrichtigungskanal)
- Deluge Script (um die Verbindung herzustellen)
Schritt 1: Deaktiviere die Standard-Benachrichtigungen
Gehe in Zoho Desk zu Einstellungen > Automatisierung > Benachrichtigungsregeln. Überprüfe die Regeln und deaktiviere alle Benachrichtigungen, die für deine Agenten nur "Rauschen" darstellen, wie z.B. "Ticket verknüpft" oder "Notiz hinzugefügt".
Schritt 2: Erstelle eine Workflow-Regel für gezielte Infos
Angenommen, du möchtest, dass das Team informiert wird, wenn ein Ticket eines VIP-Kunden eingeht. Erstelle eine neue Workflow-Regel unter Einstellungen > Automatisierung > Workflow-Regeln.
- Modul: Tickets
- Ausführen bei: Erstellung
- Kriterien: Kontakt-Typ ist "VIP-Kunde" (setzt ein entsprechendes Feld voraus)
- Aktion: Benutzerdefinierte Funktion
Schritt 3: Schreibe die Deluge Custom Function
Die benutzerdefinierte Funktion sendet eine formatierte Nachricht an einen bestimmten Cliq-Kanal. Den Kanal-Link findest du in den Cliq-Einstellungen.
// Input-Argument: ticketId// Ticket-Details abrufen, um mehr Kontext zu habenticketDetails = zoho.desk.getById(ticketId);ticketSubject = ticketDetails.get("subject");contactName = ticketDetails.get("contact").get("lastName");ticketUrl = "https://desk.zoho.eu/agent/your-portal/tickets/" + ticketId;// Nachricht für Cliq formatierenmessage = {"text": "🚨 *Neues VIP-Ticket!* 🚨","card": {"title": ticketSubject,"theme": "modern-inline"},"slides": [{"type": "label","data": [{"Kontakt": contactName},{"Betreff": ticketSubject}]},{"type": "button","label": "Ticket in Desk öffnen","action": {"type": "open.url","url": ticketUrl},"button_type": "primary"}]};// Nachricht an den Cliq-Kanal senden// Die Connection 'cliqconnection' musst du vorher einrichtenresponse = zoho.cliq.postToChannel("your_channel_unique_name", message, "cliqconnection");info response;
Ergebnis: Anstatt einer unpersönlichen Benachrichtigung erhalten deine Agenten eine interaktive Karte direkt in Cliq. Das ist informativer und stört den Arbeitsfluss weniger.
3. Lösung: Ticket-Besitzer beim Schließen per Workflow beibehalten
Dieses Problem erfordert einen Eingriff in die Standardlogik von Zoho Desk. Wir nutzen eine Workflow-Regel, die ausgelöst wird, wenn ein Ticket geschlossen wird, und den Besitzer auf den vorherigen Bearbeiter zurücksetzt.
Dein Tech-Stack für diese Lösung:
- Zoho Desk (Workflow-Regeln & Custom Fields)
- Deluge Script
Schritt 1: Erstelle zwei benutzerdefinierte Felder
Gehe zu Einstellungen > Anpassung > Layouts und füge dem Ticket-Layout zwei neue Felder hinzu:
- Letzter Bearbeiter (Feldtyp: Benutzer): Hier speichern wir, wer das Ticket vor der Statusänderung besaß.
- Schließender Mitarbeiter (Feldtyp: Benutzer): Hier protokollieren wir, wer den Schließvorgang ausgelöst hat.
Diese Felder kannst du für die Agenten ausblenden, sie dienen nur der internen Logik.
Schritt 2: Erstelle eine Workflow-Regel zur Erfassung des Besitzers
Dieser Workflow sorgt dafür, dass das Feld "Letzter Bearbeiter" immer aktuell ist.
- Modul: Tickets
- Ausführen bei: Bearbeiten
- Kriterien: Ticket-Besitzer wurde geändert
- Aktion: Feld aktualisieren → Setze "Letzter Bearbeiter" auf den Wert des Feldes "Ticket-Besitzer".
Schritt 3: Erstelle die Haupt-Workflow-Regel für das Schließen
Diese Regel korrigiert den Besitzerwechsel beim Schließen.
- Modul: Tickets
- Ausführen bei: Feldaktualisierung → Status
- Kriterien: Status ist "Geschlossen"
- Aktion: Benutzerdefinierte Funktion
Schritt 4: Die Deluge-Funktion zur Korrektur
Diese Funktion prüft, ob der "Letzte Bearbeiter" existiert und setzt ihn wieder als Besitzer ein.
// Input-Argumente: ticketId, currentOwnerId// 'currentOwnerId' ist die ID des Mitarbeiters, der das Ticket gerade schließt// Ticket-Details inklusive unserer Custom Fields abrufenticketDetails = zoho.desk.getById(ticketId);lastOwnerId = ticketDetails.get("cf_letzter_bearbeiter").get("id"); // Wichtig: Nutze den API-Namen deines Custom Fields// Prüfen, ob ein vorheriger Besitzer gespeichert ist und er nicht der aktuelle Schließer istif(lastOwnerId != null && lastOwnerId != currentOwnerId){// Ticket aktualisieren und den Besitzer zurücksetzenupdateMap = Map();updateMap.put("ownerId", lastOwnerId);updateMap.put("cf_schliessender_mitarbeiter", currentOwnerId); // Optional: Protokollieren, wer geschlossen hatupdateResponse = zoho.desk.update(ticketId, updateMap);info updateResponse;}
Mit dieser Automatisierung bleibt die Datenintegrität gewahrt, und deine Berichte in Zoho Analytics spiegeln wider, wer tatsächlich für die Lösung des Tickets verantwortlich war.
Tipps und Best Practices
- Nutze eine Sandbox: Bevor du solche Workflows und Funktionen im Live-System einsetzt, teste sie ausgiebig in einer Sandbox-Umgebung von Zoho Desk.
- API-Limits im Auge behalten: Jeder API-Aufruf zählt zu deinem täglichen Limit. Gestalte deine Skripte effizient und vermeide unnötige Abfragen in Schleifen.
- Externe Trigger nutzen: Statt Zoho permanent nach Änderungen in externen Systemen (z.B. einem ERP) abfragen zu lassen, nutze Webhooks. Tools wie Zoho Flow, Zapier oder Make.com können auf einen Webhook lauschen und dann gezielt eine Aktion in Zoho auslösen.
- Saubere Dokumentation: Kommentiere deinen Deluge-Code und dokumentiere die Funktion deiner Workflows. Das hilft dir und deinen Kollegen, die Logik auch Monate später noch zu verstehen.
Fazit: Dein Prozess ist der Standard
Die vorgestellten Lösungen zeigen, dass du dich nicht mit den Standardeinstellungen von Zoho Desk zufriedengeben musst. Die wahre Stärke des Zoho-Ökosystems entfaltet sich, wenn du beginnst, die verschiedenen Apps und Technologien miteinander zu verknüpfen. Durch den gezielten Einsatz von Custom Widgets, Workflow-Automatisierung mit Deluge und der intelligenten Integration von Tools wie Zoho Cliq oder Zoho Catalyst baust du dir eine Service-Plattform, die exakt auf die Bedürfnisse deines Teams zugeschnitten ist. Das Ergebnis sind nicht nur effizientere Prozesse und eine höhere Datenqualität, sondern auch zufriedenere Mitarbeiter, deren Werkzeuge sie bei der Arbeit unterstützen, anstatt sie zu behindern.
Verwendete Zoho Apps in diesem Artikel:
- Zoho Analytics (erwähnt für Reporting)
Dein nächstes Zoho-Projekt? Mach es mit uns.
Wir sind keine klassische Agentur – wir bauen digitale Mitarbeiter, intelligente Zoho-Prozesse und echte Automatisierung, die Deinem Team tatsächlich Arbeit abnimmt. Wenn Du bis hier gelesen hast, hast Du einen Use-Case im Kopf. Lass uns 15 Minuten darüber sprechen.