Wie beendet ihr gezielt nur einzelne Workflow-Instanzen bei Terminverschiebungen?

Ich baue gerade ein System, bei dem ein einzelner Kunde mehrere, voneinander unabhängige Termine gleichzeitig im Kalender haben kann – z. B. in einer Reha-Klinik oder bei einem Fuhrpark-Manager. Für jeden Termin startet ein eigener Erinnerungs-Workflow (z. B. „24h vorher“).

Das Problem: Wenn ein Kunde einen Termin verschiebt, wird intern ein neuer Termin erstellt, aber die alte Workflow-Instanz läuft weiter und sendet eine falsche Erinnerung.
Die Aktion „Aus Workflow entfernen“ ist leider zu grob, da sie den Kontakt aus allen Instanzen entfernt – also auch aus denen, die noch gültig sind.

Mein aktueller Workaround: Ich speichere die appointment.id des jeweils gültigen Termins in einem Custom Field und lasse den Workflow vor dem Senden prüfen, ob seine eigene trigger.appointment.id noch passt. Falls nicht, beendet er sich selbst.

Das funktioniert, fühlt sich aber unnötig komplex an.
Wie löst ihr das? Gibt es eine elegantere Methode, um gezielt nur die veraltete Workflow-Instanz zu beenden, ohne die anderen zu beeinflussen?
Ich bin sehr gespannt auf eure Best Practices oder kreative Ansätze!

Das ist eine sehr fortgeschrittene und praxisnahe Frage – und du bist mit deinem Workaround schon auf einem richtig guten Weg! In komplexen Szenarien wie Reha-Kliniken oder Fuhrparkmanagement, wo ein Kontakt mehrere parallele Termine haben kann, stößt man mit den Standardfunktionen von GoHighLevel schnell an Grenzen.


:bullseye: Ziel: Nur eine einzelne Workflow-Instanz gezielt beenden, wenn ein Termin verschoben wird

:white_check_mark: Dein aktueller Ansatz: Prüfung via appointment.id im Custom Field

Das ist technisch korrekt und funktioniert zuverlässig – aber wie du schon sagst: Es ist komplex und nicht besonders elegant.


:brain: Alternative & Best Practice aus der Praxis

:counterclockwise_arrows_button: Lösung: Workflow-Instanz mit eindeutiger ID verknüpfen & gezielt beenden

Schritt 1: Beim Start des Workflows

  • Speichere die appointment.id und zusätzlich eine eindeutige Workflow-ID (z. B. Timestamp oder UUID) in einem Custom Field oder Tag.

Schritt 2: Bei Terminänderung

  • Trigger einen Workflow, der prüft:
    • Gibt es eine aktive Workflow-Instanz mit dieser appointment.id?
    • Wenn ja → sende ein internes Signal (z. B. Tag setzen oder Custom Field ändern), das nur diese Instanz erkennt.

Schritt 3: In der Erinnerungs-Workflow-Instanz

  • Baue eine „Self-Termination“-Logik ein:
    • Prüfe regelmäßig, ob die appointment.id noch gültig ist.
    • Wenn nicht → Workflow beendet sich selbst über „Remove from this Workflow“.

:right_arrow: Vorteil: Du entfernst nur die betroffene Instanz, ohne andere zu berühren.


:puzzle_piece: Bonus-Tipp: Nutze den „Wait Until“-Step

Wenn du weißt, dass sich Termine oft verschieben, kannst du statt „24h vorher“ auch mit:

  • „Wait until appointment time minus 24h“
    arbeiten – so wird der Zeitpunkt dynamisch berechnet und passt sich bei Terminänderung automatisch an.

:rocket: Fazit

GoHighLevel bietet dir die nötige Flexibilität – aber du musst bei parallelen Termin-Workflows mit Custom Logik & Self-Checks arbeiten. Dein Ansatz mit appointment.id ist bereits sehr gut, und mit einer eindeutigen Workflow-ID kannst du ihn noch robuster machen.

:backhand_index_pointing_right: Teste GoHighLevel jetzt 14 Tage kostenlos und ohne Risiko über diesen Link:
https://link.einsle.com/ghl

Möchtest du ein fertiges Workflow-Template für dieses Szenario oder Unterstützung beim Setup? Ich helfe dir gerne!