← Alle Themen · Tickets
In diesem Artikel 8 Kapitel
CRM → Ticket-Automationen
Automationen führen automatisch Aktionen aus, wenn bestimmte Ereignisse (Trigger) passieren und alle Bedingungen erfüllt sind. Konfiguriert unter CRM → Ticket-Einstellungen → Reiter „Automationen".
Aufbau einer Automation
Jede Automation besteht aus drei Teilen:
- Trigger, wann wird sie ausgeführt?
- Bedingungen, welche Kriterien müssen erfüllt sein?
- Aktionen, was soll passieren?
Zusätzlich: Reihenfolge (Sortierung) und Stop-Processing-Flag (wenn eine Regel greift, werden nachfolgende Automationen übersprungen).
Trigger
| Trigger | Auslöser |
|---|---|
| Neues Ticket | Ein Ticket wird durch eingehende E-Mail oder manuell erstellt. Feuert bei eingehenden Tickets zusätzlich auch „Neue Kundennachricht"; bei manuell erstellten Tickets zusätzlich „Neue Agent-Nachricht". |
| Neue Kundennachricht | Eine eingehende Mail vom Kunden (type=email_in), sowohl die erste eines neuen Tickets als auch Folge-Antworten. |
| Neue Agent-Nachricht | Eine ausgehende Mail vom Agent (type=email_out), manuelle Antworten, Erstmails bei manueller Ticket-Erstellung. Auto-Responder feuern diesen Trigger NICHT. |
| Status geändert | Ticketstatus wurde geändert (z.B. auf „Geschlossen"), wird auch bei Statuswechseln aus anderen Automationen, Makros, Bulk-Aktionen und manuellen Änderungen gefeuert. Im Context steht oldStatusId. |
| Sprache erkannt/geändert | Die Ticket-Sprache wurde per KI erkannt ODER manuell geändert und hat einen neuen, nicht-leeren Wert. Feuert NICHT bei unknown. Context enthält oldLanguage. |
| Zeit-gesteuert | Regel läuft zu festen Zeiten via Cronjob (stündlich geprüft), Feld „Zeitplan (Cron)" wird dann aktiv |
Kaskaden & Loop-Schutz
Wenn eine Automation einen Status ändert, wird der „Status geändert"-Trigger automatisch nachgezogen, Folge-Automationen laufen also sauber in einer Kette. Beispiel-Flow:
- Neues Ticket → Automation A setzt Status
Neu→In Prüfung - → feuert Status geändert → Automation B (Bedingung Status=
In Prüfung) setzt Status aufWartet auf Kunde - → feuert Status geändert erneut → Automation C (Bedingung Status=
Wartet auf Kunde) → setzt Priorität, schreibt Notiz etc.
Das funktioniert direkt so, mehrstufige Status-Flows sind explizit unterstützt.
Schutz vor Endlos-Loops:
- Jede einzelne Automation darf pro Kaskade nur einmal laufen. Würde Automation A sich selbst retriggern (z.B. weil B wieder auf den Ausgangsstatus zurücksetzt), wird der zweite A-Lauf übersprungen und geloggt.
- Maximale Kaskaden-Tiefe: 10 Ebenen, danach harter Abbruch mit Warning-Log.
- Mit der „Weitere Regeln stoppen"-Option in einer Automation kannst du verhindern, dass weitere Regeln zum selben Trigger laufen.
Cron-Expression (nur bei Zeit-gesteuert)
Standard Cron-Syntax mit 5 Feldern: Minute Stunde Tag-des-Monats Monat Wochentag
| Ausdruck | Bedeutung |
|---|---|
0 9 * * * | Täglich 9:00 Uhr |
0 9 * * 1-5 | Mo–Fr 9:00 Uhr |
0 */4 * * * | Alle 4 Stunden |
0 18 * * 5 | Jeden Freitag 18:00 |
Der stündliche Cronjob tickets:run-scheduled-automations prüft welche Automationen fällig sind und wendet ihre Aktionen auf alle offenen Tickets an, die die konfigurierten Bedingungen erfüllen. Maximal 500 Tickets pro Lauf.
Beispiele für Zeit-Trigger
- Mo-Fr 10 Uhr „Nachfrage nach 3 Tagen offen": Condition „statusId = Wartet auf Kunde" + „lastMessageAt älter als 3 Tage" + Action „Auto-Antwort senden"
- Sonntag 20 Uhr „Wochen-Reminder für alle offenen hochprioritären Tickets": Condition „priorityId = Hoch" + Action „Tag Wochen-Reminder setzen"
Bedingungen
Beliebig viele Bedingungen kombinierbar. Alle müssen erfüllt sein, damit die Automation greift (AND-Verknüpfung).
Felder
| Feld | Werte |
|---|---|
| Absender E-Mail | Pattern/Teil (z.B. @amazon.*) |
| Absender Name | String |
| Betreff | String |
| Nachrichten-Inhalt | String |
| Postfach | Postfach-ID |
| Status | Status-ID |
| Priorität | Priorität-ID |
| Zugewiesen | Benutzer-ID (0 = niemand) |
| Nachrichten-Anzahl | Zahl (z.B. „= 1" für erste Nachricht) |
| Ticket-Sprache | ISO-Code (z.B. de, en, fr), siehe KI-Funktionen → Sprach-Erkennung |
Operatoren
equals, not equals, contains, not contains, matches (Regex), >, <, >=, <=
Aktionen
| Aktion | Ergebnis |
|---|---|
| Status setzen | Ticket wechselt auf gewählten Status |
| Priorität setzen | Priorität ändern |
| Zuweisen an | Ticket einem Benutzer zuweisen |
| Tag hinzufügen | Tag an das Ticket hängen |
| Auto-Antwort (Textbaustein) | automatische Antwort-E-Mail mit ausgewähltem Textbaustein versenden |
| KI: Sprache erkennen | Sprache der ersten Eingangsnachricht per ChatGPT erkennen und am Ticket speichern (siehe KI-Funktionen) |
| KI: Letzte Nachricht übersetzen | Letzte Eingangsnachricht per ChatGPT in die angegebene Zielsprache übersetzen und als interne Notiz ablegen, Wert leer lassen für Standardsprache aus den KI-Einstellungen |
| KI: Thread zusammenfassen | Kompletten Ticket-Verlauf per ChatGPT zusammenfassen und als interne Notiz ans Ticket hängen (siehe KI-Funktionen) |
Beispiele
Beispiel 1 → Amazon-Retouren automatisch taggen
- Trigger: Neues Ticket
- Bedingung: Absender E-Mail
contains@amazon. - Bedingung: Betreff
containsRücksendung - Aktionen: Tag „Amazon-Retoure" + Zuweisen an Retourenteam
Beispiel 2 → Auto-Antwort bei Erstkontakt außerhalb der Öffnungszeiten
Aktuell nicht direkt per Automation realisierbar (keine Zeit-Bedingung), aber im Textbaustein via Twig:
{% if hour < 8 or hour >= 18 %}
Vielen Dank für Ihre Nachricht. Wir sind werktags zwischen 8:00 und 18:00 Uhr erreichbar ...
{% else %}
Vielen Dank für Ihre Nachricht. Wir antworten in der Regel innerhalb von 2 Stunden.
{% endif %}
→ Automation mit Trigger „Neues Ticket" + Bedingung „Nachrichten-Anzahl = 1" + Aktion „Auto-Antwort" mit diesem Textbaustein.
Beispiel 3 → Hochpriorisierung bei Beschwerden
- Trigger: Neues Ticket
- Bedingung: Nachrichten-Inhalt
containsBeschwerdeODERReklamation
(aktuell AND-Verknüpfung → zwei Automationen nötig, eine pro Wort, oder matches-Regex (Beschwerde|Reklamation))
- Aktion: Priorität auf „Hoch" + Zuweisen an Senior-Support
Beispiel 4 → Auto-Tagging per Regex
- Trigger: Neues Ticket
- Bedingung: Betreff
matchesPattern[A-Z]{2}\d{10}(Regex für Bestellnummer) - Aktion: Tag
Bestellfragehinzufügen
Operator matches nimmt eine reguläre PHP-Expression (ohne Slashes) und prüft case-insensitive. Damit kannst du beliebig komplexe Mustererkennung aus Betreff oder Body bauen, z.B. für:
- Tracking-Nummern (
\d{12,20}) - IBAN (
DE\d{20}) - Produkt-Kategorien (
(Schuh|Shirt|Hose))
Reihenfolge & Stop-Processing
Automationen werden in der Reihenfolge (Sortierung aufsteigend) abgearbeitet. Wenn eine Automation mit gesetztem Stop-Processing greift, werden folgende Automationen übersprungen.
Beispiel: Erst eine spezifische Automation (z.B. VIP-Kunde → hochpriorisieren + Stop), dann allgemeine Defaults.
Aktiv/Inaktiv
Jede Automation hat einen Toggle. Inaktiv gesetzte Automationen werden beim Trigger ignoriert, nützlich zum Testen oder vorübergehenden Deaktivieren.