# Workflows

> Automatisierungen per Auslöser. Wenn etwas passiert (jemand tritt bei, kauft, schließt einen Kurs ab oder war N Tage nicht angemeldet), geht jede Person einen Weg aus Wartezeiten, Bedingungen, E-Mails aus der Bibliothek, Nachrichten, Kommentaren, Reaktionen, Tags, Gruppen und Slack-Posts, in ihrem eigenen Tempo. Editor als Canvas, Variablen zwischen den Blöcken, Ende mit Erfolg oder Fehler, Erfolgsquote, durch das Kontingent verschobener Versand, Simulation, Verlauf, Grenzen, wer signiert und die 9 Vorlagen. Außerdem Webhook aufrufen mit Variablen und Schlüssel, die Plattformaktionen, Workflow aufrufen und mit welcher Rolle die Schritte handeln. Außerdem die KI-Blöcke Claude und ChatGPT mit dem eigenen API-Schlüssel der Community, die KI-Limits und die Aktionen für Beitrag, Zertifikat, Anerkennung, Chat, 1:1 und Entwicklungsplan.

Ein **Workflow** ist eine Automatisierung per Auslöser: Wenn mit einer Person etwas passiert (sie tritt der Community bei, kauft, schließt einen Kurs ab, war 30 Tage nicht angemeldet), betritt sie einen Weg, den du entwirfst, mit Wartezeiten, Bedingungen und Aktionen, und geht diesen Weg in ihrem eigenen Tempo. Das ist die Willkommensserie, die Erinnerung an alle, die verschwunden sind, der Glückwunsch zum Kurs, ohne dass jemand aus dem Team etwas drücken muss.

Memberfy hilft HR, alle engagiert zu halten: Dieselben Workflows erinnern an eine offene Beurteilung, an ein nicht erfasstes 1:1 oder an ein Ziel ohne Check-in.

**Wo es liegt:** **Verwaltung › Workflows**. Eigentümer und Administrator erstellen, bearbeiten, aktivieren und pausieren; Moderator und Finanzen sehen, simulieren und verfolgen den Verlauf; das Mitglied sieht den Bereich nicht.

## So funktioniert es

### Der Auslöser

Jeder Workflow beginnt mit **nur einem Auslöser**, einem Block des Entwurfs, gezogen aus der Kategorie **Auslöser**. Jede Familie hat ihren Block (**Mitglieder**, **Käufe**, **Abos**, **Events**, **Kurse**, **Zertifikate**, **Badges**, **Level und Punkte**, **Formulare**, **Umfragen**, **Call for Papers**, **Beiträge und Kommentare**, **Abstimmungen**, **Downloads**, **Bereiche**, **Nachrichten**, die HR-Blöcke, **Zeit**, **Manuell** und **Webhook**), sortiert nach Häufigkeit der Nutzung, und das Ereignis wird im Bereich des Blocks unter **Startet, wenn** gewählt; das Ereignis zu wechseln wechselt nicht den Block. Die Suche nach einem Ereignis (*„Abo gekündigt“*) findet seinen Block und legt den Block gleich mit diesem Ereignis an. Im Entwurf zeigt der Block oben die Familie und darunter das Ereignis. Mit einem Auslöser im Entwurf verschwindet die Kategorie **Auslöser** aus der Auswahl; für eine andere Art von Auslöser tauschst du den Block.

**Wenn etwas passiert**, zum Beispiel:

| Thema | Auslöser |
|---|---|
| Mitglieder | **Neues Community-Mitglied** (Registrierung, angenommene Einladung, Kauf, Team, Unternehmen oder Import, mit der **Herkunft**; keine Anmeldung), jemand verlässt die Community, wechselt die Rolle, bekommt oder verliert ein Tag, tritt einer Gruppe bei oder verlässt sie, ändert ein Profilfeld; **Jemand kommt nach N Tagen Abwesenheit zurück** (mit **Mindestens abwesend** 7 Tage oder mehr; es zählt der Zugriff über die App oder über den Assistenten) |
| Käufe und Abos | Ein Kauf wird abgeschlossen (mit dem Filter **Nur der erste Kauf**: der erste Kauf der Person, egal welches Produkt, kostenlose eingeschlossen) oder erstattet; jemand beginnt einen Kauf, bricht den Warenkorb ab, oder ein Warenkorb wird zurückgewonnen; ein Abo beginnt, wird verlängert, wechselt den Plan, gerät in Verzug, sein Gratistest endet bald, es wird gekündigt oder endet |
| Inhalte und Bereiche | Jemand veröffentlicht, kommentiert oder reagiert; besucht einen Bereich zum ersten Mal; erhält Zugang zu einem Bereich; der Lebenszyklus von Beiträgen, Bereichen und Downloads (siehe [Ereignisse des Lebenszyklus](#ereignisse-des-lebenszyklus)) |
| Kurse und Events | Einschreibung, Lektion oder Kurs abgeschlossen, Quiz bestanden oder nicht, Zertifikat ausgestellt; Anmeldung, Ticket erhalten, Anmeldung storniert, Platz von der Warteliste, Check-in gemacht oder rückgängig gemacht |
| Level und Punkte | **Level aufgestiegen**, **Level abgestiegen** (mit dem **Grund**) und **N Punkte erreicht**. Siehe [Level und Punkte](#level-und-punkte) |
| Weitere Module | Formular, Umfrage und Vorschlag beantwortet oder entschieden, Abstimmungsthema, Datei heruntergeladen, Ein- und Ausstempeln in der Zeiterfassung, Buchungen, Anerkennung und Feedback erhalten, und die [empfangene DM](#dm-empfangen). Das Ereignis für eine erhaltene Anerkennung liefert die Art (`type`: `APPRECIATION`, `WELCOME`…). |
| Personal (HR) | Ein Beurteilungszyklus beginnt, jemand reicht eine Beurteilung ein, ein Ergebnis wird freigegeben; ein 1:1 wird erfasst; ein Key Result erhält einen Check-in oder ist gefährdet; ein Entwicklungsplan wird genehmigt; eine Umfragerunde beginnt |

Die **Herkunft** von **Neues Community-Mitglied** umfasst **Über Freigabe**, für Personen, die über die [Registrierung mit Freigabe](/membros/cadastro-e-entrada#registrierung-mit-freigabe) hereingekommen sind (`member.joined` mit `source: approval`). Das ist die „freigegebene Registrierung“: Ein Willkommens-Workflow mit diesem Filter startet, wenn das Team die Anfrage freigibt, nicht wenn die Person anfragt. Die Anfrage selbst und die Ablehnung starten weder Workflow noch Webhook.

Jeder Auslöser hat seinen Filter: das Produkt, den Kurs, die Veranstaltung, den Bereich, die Gruppe, das Tag, das Feld, den Zyklus oder die Umfrage (leer: beliebig). Der Bereich des Auslösers (**Eintritt in den Workflow**) bündelt den Filter, [wie oft eine Person eintritt](#wie-oft-eine-person-eintritt), die **Häufigkeitsgrenze** und die Beschreibung.

**Zeit (täglich, nach Datum)**: ein Durchlauf pro Tag, ab 9:00 in der Zeitzone der Community, für alle, die an diesem Tag die Regel erfüllen: *Jemand war N Tage nicht angemeldet*, *Jeden Tag, für alle*, *Beurteilung seit N Tagen offen*, *Beurteilung fällig in N Tagen*, *1:1 in N Tagen*, *1:1 seit N Tagen nicht erfasst*, *1:1-Vereinbarung seit N Tagen überfällig*, *Key Result seit N Tagen ohne Check-in*, *Zielzyklus endet in N Tagen*, *Maßnahme des Entwicklungsplans seit N Tagen überfällig* und *Umfrage seit N Tagen unbeantwortet*. Jede Person tritt für dasselbe Ereignis einmal ein. Beim Auslöser *Jemand war N Tage nicht angemeldet* nimmt **Auch wer schon seit über N Tagen nicht mehr da war** beim ersten Aktivieren des Workflows auch alle auf, die diesen Punkt schon überschritten haben: Das Fenster zeigt, wie viele Personen es sind, und bittet um die Bestätigung, und sie kommen je einmal dazu, im Tempo des Tageslimits.

**Manuell (ausgewählte Personen):** Das Team startet den Workflow für die Personen seiner Wahl. Bei aktivem Workflow fragt **Jetzt ausführen** nach den **Personen** oder einer **Zielgruppe** (wie bei den Kampagnen), zeigt vorher, wie viele hineinkommen, wer ausgenommen ist (abgemeldet, mit ungültiger E-Mail oder mit Beschwerde) und über wie viele Tage die E-Mails wegen des Tageslimits verschickt werden, und bittet um die Bestätigung (*„Mir ist klar, dass N Personen jetzt die Schritte dieses Workflows erhalten.“*). Zweimal bestätigen startet nicht zweimal. Bis zu 20.000 Personen auf einmal, in Gruppen.

**Geplant:** täglich, wöchentlich (an den **Wochentagen**) oder monatlich (am **Tag im Monat**, 1 bis 28), zur gewählten **Uhrzeit** in der Zeitzone der Community, **Für wen** du festlegst. Das Aktivieren verlangt dieselbe Bestätigung wie die Auslöser nach Datum, und ein Tag, an dem der Versand der Community [ausgesetzt](/notificacoes/reputacao-de-envio) ist, wird übersprungen.

**Webhook empfangen:** Ein anderes System ruft die Adresse des Auslösers auf und startet den Workflow für die Person aus dem Inhalt des Aufrufs. Siehe [Eingehender Webhook](/integracoes/webhook-de-entrada).

**Von einem anderen Workflow aufgerufen:** Der Workflow startet, wenn ein anderer ihn über den Schritt **Workflow aufrufen** aufruft, für dieselbe Person. Siehe [Plattformaktionen und andere Workflows](#plattformaktionen-und-andere-workflows).

### Die Schritte

| Schritt | Was er tut |
|---|---|
| **Warten** | Von 5 Minuten bis 365 Tage |
| **Bedingung (wenn / sonst)** | Teilt den Weg in **Ja** und **Nein** nach Regeln, gelesen im Moment des Schritts: Tags (mehrere auf einmal, mit *hat einen der Tags*, *hat alle Tags* oder *hat keinen der Tags*), Gruppe, Profilfeld, letzter Zugriff, Kurs abgeschlossen oder in Bearbeitung, Produkt gekauft, abgebrochener Warenkorb, Zugang zu und Besuch eines Bereichs, Anmeldung zu und Teilnahme an einem Event, Level und Punkte (Gruppe **Engagement**) und die Regel [Variable](#bedingung-variable). **Alle Regeln gelten** oder **Mindestens eine Regel gilt**. Die Regeln erscheinen als Sätze, etwa *„Wenn die Person das Tag VIP hat und seit über 30 Tagen nicht mehr da war“* |
| **E-Mail senden** | Eine E-Mail aus der [Bibliothek](/notificacoes/campanhas-de-email#e-mails-und-versande); jede Person erhält die Version in ihrer Sprache, sonst die Hauptversion |
| **Nachricht senden (DM)** | Eine Nachricht im [Chat](/membros/mensagens) im Namen eines Teammitglieds (siehe [In wessen Namen](#in-wessen-namen)) |
| **Element kommentieren** und **Auf Element reagieren** | Im Namen eines Teammitglieds, zum Element des Auslösers: der Beitrag, der Kommentar, die Reaktion oder die Anmeldung der Person |
| **Tag hinzufügen oder entfernen** und **Zu einer Gruppe hinzufügen** | Ordnet die Person ein |
| **In Slack posten** | Eine Nachricht im Kanal der [Slack](/integracoes/slack)-Installation der Community |
| **SMS senden** und **WhatsApp senden** | Ein Hinweis aufs Handy der Person, in der Kategorie **Nachrichten**: per SMS ein Text bis 300 Zeichen; per WhatsApp eine freigegebene Vorlage mit ausgefüllten Feldern (siehe [SMS senden und WhatsApp senden](#sms-senden-und-whatsapp-senden)) |
| **Webhook aufrufen** | Ein HTTPS-Aufruf an ein anderes System (ein CRM, eine Tabelle, n8n), mit den in **Variablen und Schlüssel** gespeicherten Schlüsseln (siehe [Webhook aufrufen](#webhook-aufrufen)) |
| **Claude** und **ChatGPT** | Bitten die KI um einen Text oder ein JSON, mit dem eigenen API-Schlüssel der Community, in der Kategorie **KI** (siehe [KI-Blöcke](#ki-blocke-claude-und-chatgpt)) |
| **Plattformaktionen** | Rolle ändern, Punkte anpassen, Badge vergeben oder entfernen, Beitrag veröffentlichen, Zertifikat ausstellen, anerkennen, im Chat blockieren, 1:1 planen, Aktion zum Entwicklungsplan hinzufügen, für ein Event anmelden, in einen Kurs einschreiben, kostenlosen Zugang geben, einen Hinweis in der App senden; jede Aktion ist ein eigener Block, unter **Personen**, **Inhalte** oder **Nachrichten** (siehe [Plattformaktionen und andere Workflows](#plattformaktionen-und-andere-workflows)) |
| **Workflow aufrufen** | Führt einen anderen Workflow für dieselbe Person aus und wartet, bis er endet, unter **Ablauf** |
| **Solange (wiederholen)** | Wiederholt einen Abschnitt, solange die Regeln gelten, bis zu höchstens 1 bis 10 Mal (Standard 3). Jeder Weg im Abschnitt braucht eine Wartezeit von mindestens 1 Tag |
| **Log schreiben** | Notiert eine Zeile im Durchlauf (siehe [Log schreiben](#log-schreiben)) |
| **Ende: Erfolg** und **Ende: Fehler** | Wo jeder Weg endet (siehe [Wie ein Workflow endet](#wie-ein-workflow-endet)) |

Jeder Block hat einen **Namen des Blocks**, damit du ihn im Entwurf erkennst und seine Variablen unter **Variable einfügen** findest. Die Texte akzeptieren die [Variablen](#variablen) des Auslösers und der vorherigen Schritte. Was ein Workflow tut, löst nie einen anderen Workflow aus. Der einzige Weg, wie ein Workflow einen anderen startet, ist der Schritt **Workflow aufrufen**.

### Der Editor

Der **Entwurf** nimmt die ganze Höhe des Bildschirms ein:

- **Die Symbolleiste** links öffnet die Blöcke nach Kategorie (**Auslöser**, **Ablauf**, **Nachrichten**, **Personen**, **Inhalte**, **Integrationen**, **KI** und **Ende**), mit Suche (**Block suchen…**, Tastenkürzel `/`); jede Kategorie hat ihre Farbe. Die Kategorien öffnen und schließen sich wie ein Akkordeon (Klick, `Enter` oder Leertaste), zeigen geschlossen, wie viele Blöcke sie haben, und der Browser merkt sich, welche du geschlossen hast; eine Suche öffnet die mit Treffern. Zieh einen Block in den Entwurf oder klicke, um ihn nach dem ausgewählten Block einzufügen.
- **Verschiebbare Seitenleisten:** Zieh am Rand der Blockleiste oder des Bereichs des Blocks, um die Breite zu ändern, und ein Doppelklick stellt den Standard wieder her. Die Breite wird im Browser gespeichert.
- **Das „+“ auf beiden Seiten jedes Blocks** ist der Verbindungspunkt. **Klicken** öffnet die Blockauswahl (nach dem Ausgang oder vor dem Eingang); **Ziehen** zieht eine Verbindung; einen Block aus dem Entwurf, einen Block aus der Leiste oder das Ende einer Verbindung auf einem **+** **loslassen** verbindet. Das **+** in der Mitte einer Verbindung fügt einen Schritt dazwischen ein.
- **Eine abgelehnte Verbindung sagt, warum**, mit einem Hinweis im Entwurf: *„Der Auslöser nimmt keine Verbindungen an: Er ist immer der Anfang.“*, *„Ein Block kann nicht zu sich selbst führen.“* und *„Das würde eine Schleife erzeugen. Um Schritte zu wiederholen, nutze den Block „Solange (wiederholen)“.“*
- **Ein Klick auf einen Block** öffnet seinen Bereich, mit dem **Namen des Blocks**, den Feldern und der echten Auswahl der Community (E-Mails, Tags, Gruppen, Kurse, Produkte, Bereiche und Events, mit Suche). Ein Schritt außerhalb jedes Wegs wird als **Lose** markiert, ein Schritt mit Fehler rot.
- **Kontextmenü** (Rechtsklick): **Öffnen**, **Duplizieren**, **Löschen**, **Block danach hinzufügen**, **Trennen**, **Einfügen**.
- **Werkzeugleiste und Minikarte:** **Vergrößern**, **Verkleinern**, **Alles zeigen**, **Aufräumen**, **Rückgängig**, **Wiederholen** und eine Minikarte des ganzen Entwurfs.
- **Tastenkürzel:** die Auswahl löschen, rückgängig machen und wiederholen, Blöcke kopieren, einfügen und duplizieren, alles auswählen, `Esc` zum Schließen des Bereichs, speichern, `Shift` + Klick für die Mehrfachauswahl, auf dem Hintergrund ziehen für die Auswahl per Rahmen und `Strg/⌘` + Scrollen für den Zoom. **Tastenkürzel** zeigt die Liste.

Einen aktiven Workflow zu speichern erzeugt eine neue Version: Sie gilt für alle, die ab jetzt eintreten, und wer schon unterwegs ist, beendet die Version, mit der er begonnen hat.

### Simulieren, testen und schätzen

- **Mit einer Person simulieren** geht den Entwurf mit den aktuellen Daten dieser Person durch (auch das noch nicht Gespeicherte) und hebt den Weg hervor: *Würde „Ja“ folgen*, *Würde 3 Tage warten*, *Würde „…“ senden*. Es wird nichts verschickt.
- **Test an mich senden**, in einem E-Mail-Schritt, schickt die E-Mail nur an die angemeldete Person.
- **Simulieren und mir die E-Mails senden** macht dieselbe Simulation und schickt die E-Mails, die die Person bekäme, mit demselben Text und denselben Variablen, **nur an dich**, mit *[Test]* im Betreff. Sie zählen nicht als Versand (weder bei den Grenzen noch beim Versandruf noch im Verlauf) und enthalten nicht die Abmeldelinks der Person. Bis zu 10 E-Mails pro Simulation (bei einem Pfad mit mehr gehen die ersten 10 raus) und 10 Simulationen mit Versand pro Stunde. Die Schaltfläche erscheint, wenn der Entwurf einen Schritt **E-Mail senden** hat, für alle, die simulieren dürfen, auch Moderator und Finanzen.
- **Beim Aktivieren** zeigt das Fenster, wie viele Personen den Auslöser am letzten Tag, in 7 und in 30 Tagen ausgelöst haben, als Vorstellung vom Volumen; bei einem Auslöser nach Datum, wie viele heute eintreten würden. Nur die nächsten Auslöser treten ein: Wer den Auslöser vorher hatte, tritt nicht ein.

Die Simulation zeigt den fertigen Text jedes Schritts, mit den Variablen aus dem letzten Mal, als der Auslöser für diese Person in den letzten 30 Tagen eingetreten ist (*„Texte mit dem Ereignis dieser Person vom 20.10. gefüllt.“*), oder mit den Beispieldaten, und sagt, wie der Weg endet: *Würde erfolgreich enden* oder *Würde mit einem Fehler enden*.

In einem KI-Block zeigt die Simulation den ausgefüllten Prompt und *„Würde das Modell … fragen (die Simulation ruft die KI nicht auf)“*: Sie verbraucht keine Tokens.

### Verlauf

Der Tab **Verlauf** hat links die Liste der Ausführungen und rechts das Detail der gewählten (*"Wählen Sie links eine Ausführung, um die Schritte zu sehen."*). Über der Liste die Filterleiste: die Suche nach Person (nach Name oder E-Mail), der Button **Zeitraum** (**7 Tage**, **30 Tage** oder **Alle**) und das Ergebnis als Pills (**Alle**, **Erfolg**, **Fehler** …), in einer einzigen Zeile. Die Filter stehen in der Adresse der Seite.

Das Detail zeigt **Beginn**, **Ende** und **Dauer**, die **Daten des Auslösers** und bei jedem Schritt die **Eingaben** und **Ausgaben** aus dem Moment, in dem er lief: den in der DM, im Kommentar oder in Slack gesendeten Text; Betreff und Zustellung der E-Mail; bei einer Bedingung, was die Person hatte (*"Hat: VIP"*, *"Letzter Zugriff: …"*); bei einem Webhook-Aufruf Status, Dauer, Größe, Versuche, die verwendeten Schlüssel (nur der Name) und woher der Aufruf kam (**Feste IP** oder **Wechselnde IP**). Jede Ausführung zeigt den Entwurf der Version, mit der sie lief, und ein Schritt, der nicht mehr im Entwurf ist, erscheint als *"Schritt nicht mehr im Entwurf"*. **ID kopieren** kopiert den Code der Ausführung, **Im Entwurf zeigen** zeigt, wo die Person ist, und **Ausführung stoppen** (oder **Durchlauf beenden**) nimmt die Person aus dem Workflow. Im Profil jedes Mitglieds listet **Automatisierungen** die Workflows, die es durchlaufen hat.

Bei einem KI-Schritt zeigt das Detail das **Modell**, die **Tokens** (Eingabe und Ausgabe) und die Dauer; nie den Schlüssel, den Prompt oder die Antwort.

Jeder Durchlauf erscheint als **Erfolg**, **Fehler**, **Abgebrochen**, **Übersprungen** oder **Läuft**, mit dem Endblock und dem Grund, und der Filter **Ergebnis** trennt sie. Die Schritte können als **Fehler** und **Wartet auf Kontingent** erscheinen (*„Wartet auf Kontingent: verschoben bis 27.10., 9:00 wegen tägliches Versandlimit der Community“*). Die Karte **Wie die Läufe enden** steht oben: siehe [Erfolgsquote und Fehlerwarnung](#erfolgsquote-und-fehlerwarnung).

**Ausführung löschen und Verlauf leeren.** Eigentümer und Administrator nehmen beendete Ausführungen aus dem Verlauf: **Ausführung löschen** im Menü **Weitere Aktionen** der Ausführung (deaktiviert, solange sie läuft: *"Stoppen Sie zuerst die Ausführung."*), oder **Verlauf leeren**, mit **Alle beendeten Ausführungen** oder **Die vor einem Datum begonnenen**. Das Fenster zeigt vorher, wie viele es sind, und fragt nach der Bestätigung; laufende bleiben. Sie verschwinden aus der Liste, den Zahlen und der Erfolgsquote, zählen aber weiter für [wie oft eine Person eintritt](#wie-oft-eine-person-eintritt) (wer einen Workflow mit **Nur einmal** schon durchlaufen hat, tritt nicht erneut ein) und für die Grenzen. Der Eintrag bleibt in den [Logs](/membros/registros-de-atividades). Über den Assistenten: `delete_workflow_run` und `clear_workflow_runs`.

## Die Workflow-Liste

Über der Liste stehen der Button **Zeitraum** (**7 Tage**, **30 Tage** oder **Gesamt**) und der Status als Pills: **Alle**, **Aktiv**, **Pausiert** und **Entwurf**. Jede Zeile zeigt den Status und den Auslöser des Workflows und die Zahlen des gewählten Zeitraums:

![Verwaltung › Workflows](/screens/workflows.png "Der Button Zeitraum, der Status als Pills und jeder Workflow mit den Zahlen des Zeitraums (Oberfläche auf Portugiesisch).")

| Zahl | Was sie zählt |
|---|---|
| **Gestartet** | Durchläufe, die im Zeitraum begonnen haben |
| **Laufend** | Personen, die gerade auf dem Weg sind (zählen immer, egal welcher Zeitraum) |
| **Beendet** | Durchläufe, die das Ende erreicht haben |
| **Fehler** | Durchläufe, die mit einem Fehler geendet haben |
| **Erfolg** | Erfolg ÷ (Erfolg + Fehler), in Prozent, mit der Farbe des Bereichs; daneben das Datum des letzten Durchlaufs |

Die Aktionen stehen direkt in der Zeile (Symbole am Computer, ein Optionsblatt auf dem Handy):

- **Aktivieren** (oder **Fortsetzen** bei einem pausierten Workflow): verlangt die Zustimmung, wenn der Auslöser nach Datum oder geplant ist; fehlt etwas im Entwurf, sagt die Liste, was, und öffnet den Workflow, um es zu beheben.
- **Pausieren**: Niemand Neues tritt ein, und jede Person **friert** bei ihrem Schritt **ein**, auch in einer Wartezeit; **Fortsetzen** macht dort weiter.
- **Stoppen**: Niemand Neues tritt ein, und die laufenden Durchläufe werden **abgebrochen** (*„Niemand Neues steigt ein und 12 laufende Läufe werden abgebrochen.“*). Der Workflow bleibt pausiert und kann wieder aktiviert werden; wer abgebrochen wurde, kommt nicht zurück.
- **Läufe**: öffnet den Verlauf des Workflows, mit jeder Person, dem Status und wo sie steht oder anhielt.

**Pausieren oder Stoppen?** Pausiere, um etwas zu korrigieren und mit denselben Personen weiterzumachen; stoppe, wenn das, was auf dem Weg ist, nicht mehr rausgehen soll.

**Aktive Workflows pro Plan.** Über der Liste steht *„3 von 10 Workflows aktiv“* (oder *„3 Workflows aktiv“*, wenn der Plan kein Limit hat). Der Plan legt fest, wie viele Workflows gleichzeitig aktiv sind: **3** im Starter, **10** im Growth, **30** im Business und **ohne Limit** im Scale (siehe [Plan und Erweiterungen](/configuracoes/plano#aktive-workflows)). Ist das Limit voll, zeigt das Aktivieren oder Fortsetzen eines weiteren *„Dein Tarif erlaubt 10 gleichzeitig aktive Workflows, und 10 sind schon aktiv. Pausiere oder stoppe einen anderen oder wechsle den Tarif.“*, mit **Tarife ansehen**. Einen zu pausieren oder zu stoppen gibt den Platz frei. Der SuperAdmin kann einer Community eine Ausnahme geben, und das neue Limit gilt sofort.

## Wie oft eine Person eintritt

Das Feld **Wie oft eine Person eintritt** hat **Nur einmal**, **Erneut nach einigen Tagen** und **Jedes Mal, wenn der Auslöser eintritt**, und erscheint nur, wenn der Auslöser für dieselbe Person erneut passieren kann. Jeder Auslöser hat seine Art:

| Der Auslöser passiert… | Beispiele | Das Feld |
|---|---|---|
| **Einmal pro Beitritt zur Community** | *Neues Community-Mitglied*; *Ein Kauf wird abgeschlossen* mit **Nur der erste Kauf** | Verschwindet. Der Bildschirm sagt *„Dieser Auslöser passiert einmal pro Beitritt zur Community. Wer austritt und zurückkommt, steigt erneut ein.“* (oder *„Nur der erste Kauf: Dieser Auslöser passiert einmal pro Person.“*) |
| **Einmal pro Person und Element** | Einschreibung und Abschluss eines Kurses, abgeschlossene Lektion, bestandenes Quiz, ausgestelltes Zertifikat, erster Besuch und Zugang zu einem Bereich, beantwortete Umfrage, Beurteilungsergebnis, genehmigter Entwicklungsplan, veröffentlichtes oder gelöschtes Element | Verschwindet, wenn der Filter **ein** Element wählt (einen Kurs, einen Bereich, eine Umfrage, einen Zyklus): *„Dieser Auslöser passiert einmal pro Person für das gewählte Element.“* Bei **beliebigem** Element erscheint es |
| **Kann sich wiederholen** | Kauf, Abo, Anmeldung und Check-in bei Events, Kommentar, Reaktion, Beitrag, Tag, Gruppe, Profilfeld, Warenkorb, empfangene DM, *Jemand kommt nach N Tagen Abwesenheit zurück* | Erscheint |
| **Nach Zeit oder Ausführung** | Die Auslöser nach Datum, **Geplant**, **Manuell** und **Webhook empfangen** | Erscheint |

Wenn das Feld verschwindet, gilt **Nur einmal** innerhalb desselben Beitritts zur Community: Wer die Community verlässt und zurückkommt, tritt erneut ein.

**Nie zwei Durchläufe gleichzeitig** gilt weiter für jeden Auslöser: Ein Ereignis, das eintrifft, während die Person mitten in einem Durchlauf ist, öffnet keinen weiteren und erscheint im Verlauf als **Übersprungen**, mit dem Grund *„lief bereits“*.

## Wie ein Workflow endet

Jeder Workflow hat **einen Eingang und ein ausdrückliches Ende**, damit du weißt, ob jeder Durchlauf geklappt hat und was zu tun ist, wenn nicht.

- **Nur ein Auslöser.** Der Entwurf nimmt einen Auslöser an; die API lehnt einen zweiten ab.
- **Ende: Erfolg** und **Ende: Fehler**, in der Kategorie **Ende** der Blöcke. Jeder Weg endet in einem davon: Ein Weg ohne Ende wird markiert (*„Dieser Pfad muss mit Ende: Erfolg oder Ende: Fehler enden.“*), und der Workflow wird nicht gespeichert. Ein Ende kommt nur dorthin, wo nichts mehr folgt. Ein alter Workflow öffnet mit **Ende: Erfolg** an den offenen Enden und läuft genauso weiter.
- **Ausgänge „ok“ und „Fehler“ an jeder Aktion** (E-Mail senden, Nachricht senden, kommentieren, reagieren, Tag, Gruppe und Slack). Der Ausgang „ok“ führt den Weg fort; **Fehlerausgang verbinden** leitet den Fehler zu einem anderen Block, etwa einer DM an das Team oder zu **Ende: Fehler**. Ist der Fehlerausgang nicht verbunden, beendet ein Fehler den Durchlauf mit Fehler und dem Grund. **Warten**, **Bedingung**, **Solange** und **Log schreiben** haben keinen Fehlerausgang.
- **Zusammenfassung und Warnung:** siehe [Erfolgsquote und Fehlerwarnung](#erfolgsquote-und-fehlerwarnung).

**Was ein Fehler ist.** Nur, was im Moment des Schritts wirklich scheitert: die E-Mail, die aus der Bibliothek gelöscht wurde oder nicht in die Versandwarteschlange kam, das Element des Auslösers oder die Gruppe, die es nicht mehr gibt, die Nachricht, die nicht erstellt werden konnte, Slack nicht installiert, ohne Kanal oder nicht erreichbar, und das Warten auf das Kontingent, das die Grenze überschritten hat (siehe [Wenn der Versand verschoben wird](#wenn-der-versand-verschoben-wird)). Bei der E-Mail zählt nur der Fehler beim Einreihen in die Warteschlange: Ein Bounce oder ein Fehler des Anbieters danach ändert den Weg nicht.

**Was kein Fehler ist.** Ein Schritt, der durch eine Regel **übersprungen** wird, die sich mit der Zeit nicht ändert (Abmeldung, Bounce, ausgeschaltete Nachrichten, Blockierung), und ein durch das Kontingent **verschobener** Schritt gehen über den Ausgang „ok“ weiter. Beide erscheinen im Verlauf, zählen aber nie als Fehler.

Jeder Schritt hinterlässt sein Ergebnis für die folgenden: `{{steps.<block>.result}}` (`done`, `skipped` oder `failed`), `{{steps.<block>.reason}}` und, nur auf dem Fehlerweg dieses Schritts, `{{steps.<block>.error}}`, den Grund des Fehlers. Siehe [Variablen](#variablen).

### Erfolgsquote und Fehlerwarnung

Im **Verlauf** zeigt die Karte **Wie die Läufe enden**:

- **Erfolg in 7 Tagen** und **Erfolg in 30 Tagen**, in Prozent (*„18 von 20 Läufen“*); Erfolg und Fehler zählen nach dem Endblock;
- **Übersprungene Schritte (7 Tage)**, **Fehlerlogs (7 Tage)**, **Wartet auf Kontingent** (jetzt) und **Lief bereits** (Ereignisse in 30 Tagen);
- **Letzte Fehler**: die 10 letzten Durchläufe, die mit einem Fehler geendet haben, mit dem Block und dem Grund.

Übersprungene und verschobene Schritte und Logs zählen nicht als Fehler. Moderator und Finanzen sehen die Karte nur lesend.

**Warnung bei Fehlerquote.** Wenn mehr als 20% der Durchläufe der letzten 24 Stunden mit einem Fehler enden (bei mindestens 20 Durchläufen im Zeitraum), erhalten der Eigentümer und die Administratoren eine Warnung in der Glocke und per E-Mail (*„Der Workflow „Willkommen“ hat in den letzten 24 h 35% Fehler (7 von 20 Läufen). Sieh dir an, was fehlgeschlagen ist.“*), höchstens eine pro Tag und Workflow.

## Variablen

Jeder Auslöser gibt die Daten dessen, was passiert ist, an die folgenden Blöcke weiter: den Namen des Kurses im Glückwunsch, das Produkt und den Betrag im Dank für den Kauf, das Datum in der Erinnerung an das Event. Die Variablen haben englische Namen mit Punkt, wie `{{course.name}}` und `{{purchase.product}}`, und gelten in den Texten von **Nachricht (DM)**, **Kommentar**, **Slack**, **Log schreiben** und in der **E-Mail** (Betreff und Inhalt).

**Variable einfügen.** Die Schaltfläche steht an jedem Textfeld. Das Menü gruppiert die Variablen nach dem Block, der sie erzeugt hat, mit dem Namen, den du dem Block gegeben hast, und seinem Symbol (*„Auslöser · Kurse“*, *„Person“*, *„Community“*), in der Reihenfolge des Ablaufs, und zeigt nur die Blöcke, die **vor** dem bearbeiteten Block kommen. Jede Variable bringt den lesbaren Namen, den Code und ein Beispiel: *„Kurs · `{{course.name}}` · z. B. Führungskurs“*. Die Suche (*„Variable oder Block suchen“*) findet nach dem Namen der Variable oder des Blocks. Darum lohnt es sich, jedem Schritt einen **Namen des Blocks** zu geben.

**In der E-Mail.** **E-Mail bearbeiten** im Schritt **E-Mail senden** öffnet die E-Mail aus der Bibliothek mit **Variable einfügen** für diesen Punkt des Ablaufs.

**So sieht es die Person.** Unter jedem Text mit Variable zeigt die Vorschau den Text mit Beispieldaten gefüllt (Maria Souza, maria@memberfy.net). Die Simulation zeigt die Texte mit den echten Daten der Person (siehe [Simulieren, testen und schätzen](#simulieren-testen-und-schatzen)).

**Ersatzwert.** Für alle, die den Wert nicht haben, schreib einen Text nach dem senkrechten Strich: `{{purchase.discount|ohne Rabatt}}`. Eine Variable ohne Wert bleibt leer, oder erhält den Ersatzwert, und der Versand scheitert nicht.

**Die Variablen:**

| Woher | Variablen |
| KI-Blöcke | `steps.<block>.output` (der Text oder das JSON), `steps.<block>.output.<feld>` (jedes JSON-Feld), `steps.<block>.tokens` und `steps.<block>.model` |
|---|---|
| **Person** (jeder Workflow) | `member.first_name`, `member.name`, `member.email`, `member.phone`, `member.role`, `member.language`, `member.member_since`, `member.last_seen_at`, `member.tags`, `member.groups` und `member.field.<schlüssel>` (die Profilfelder) |
| **Community** (jeder Workflow) | `community.name`, `community.language` |
| Käufe | `purchase.product`, `purchase.product_type`, `purchase.amount`, `purchase.discount`, `purchase.payment_method`, `purchase.installments`, `purchase.free`, `purchase.first`, `purchase.tickets`, `purchase.ticket_type`, `purchase.batch`; bei der Erstattung `refund.product`, `refund.amount`, `refund.partial`; beim Warenkorb `cart.product` |
| Abos | `subscription.product`, `subscription.plan`, `subscription.interval`, `subscription.amount`, `subscription.period_end`, `subscription.ends_at`, `subscription.canceled_by`, `subscription.previous_plan`, `subscription.trial_ends_at` (je nach Auslöser) |
| Events | `event.title`, `event.date`, `event.time`, `event.type`, `event.ticket_type`, `event.check_in_method`, `event.previous_date` (beim verlegten Event) |
| Kurse | `course.name`, `course.completed_at`, `lesson.title`; `certificate.title`, `certificate.source` |
| Bereiche, Beiträge und Kommentare | `space.name`, `target.type` (wo der Kommentar oder die Reaktion war), `target.reaction` |
| Tags, Gruppen und Felder | `tag.name`, `group.name`, `field.name` |
| Downloads | `download.title`, `download.folder` (die Kategorie), `download.previous_folder`, `download.file_name`, `download.file_type`, `download.size`, `download.version` |
| Formulare, Umfragen und Calls | `form.name`, `survey.title`, `call.name`, `proposal.status` |
| Level und Punkte | `level.name` (der Name des Levels), `level.previous_name`, `level.number`, `level.direction` (**Aufgestiegen** oder **Abgestiegen**), `level.cause` (**Punkte** oder **Wochenaktivität**), `points.total`, `points.previous` |
| Buchungen | `booking.resource`, `booking.starts_at`, `booking.ends_at` |
| Beurteilungen (HR) | `cycle.name`, `cycle.due_at` |
| Zugriff | `absence.days` (Tage ohne Zugriff), bei *Jemand kommt nach N Tagen Abwesenheit zurück* und *Jemand war N Tage nicht angemeldet* |
| Wer gehandelt hat | `actor.name`, bei den [Ereignissen des Lebenszyklus](#ereignisse-des-lebenszyklus) |
| DM empfangen | `dm.from.name`, `dm.from.email`, `dm.to.name`, `dm.conversation_url` und, mit eigener Regel, `dm.text` (siehe [DM empfangen](#dm-empfangen)) |
| Webhook empfangen | `trigger.<name>`, die Werte, die du im Auslöser festgelegt hast |
| Vorherige Schritte | `steps.<block>.result`, `steps.<block>.skipped`, `steps.<block>.reason` und, auf dem Fehlerweg, `steps.<block>.error` |

**Die Formate.** Geldbeträge erscheinen in der Währung und Sprache der Person (*R$ 197,00*); Daten in der Zeitzone der Community und in der Sprache der Person. `member.language` und `community.language` erscheinen als Sprachcode (`de-DE`).

**Regeln:**

- Die Daten des Auslösers werden beim Eintritt der Person gespeichert: Eine Wartezeit von 3 Tagen ändert weder das Produkt noch den Betrag, auch wenn das Produkt zwischendurch umbenannt wird.
- Eine Variable, die den Block nicht erreicht (aus einem späteren Schritt oder einem anderen Auslöser), verhindert das Speichern, und der Block wird mit ihrem Namen markiert.
- Die Werte kommen als Text hinein: HTML wird in der E-Mail und im Kommentar maskiert, ohne `<>` in der DM und ohne Erwähnung oder Link in Slack; im Betreff ohne Zeilenumbruch. Keine Variable kommt in die Adresse eines Links, und `trigger.*` kommt nicht in den Betreff.
- Die Antwort eines KI-Blocks und die eines **Webhook aufrufen** kommen von außen: Sie werden dort, wo sie landen, maskiert und kommen nie in den Betreff einer E-Mail.
- Keine Variable enthält, was ein Mitglied geschrieben hat (Beitrag, Kommentar, Antwort, Titel einer Abstimmung oder einer Anzeige), Gebühren, Dokumente oder Inhalte einer HR-Beurteilung außer Name und Frist des Zyklus. E-Mail und Telefon der Person dürfen in den Slack-Post.
- Die alten Namen funktionieren weiter (`{{nome}}`, `{{comunidade}}`, `{{campo_<schlüssel>}}`, `{{gatilho_<schlüssel>}}`), erscheinen aber nicht unter **Variable einfügen**.

**In den Kampagnen.** Eine E-Mail aus der Bibliothek, die Workflow-Variablen nutzt, zeigt *„Nutzt Workflow-Variablen“*. In einer [Kampagne](/notificacoes/campanhas-de-email) bleiben diese Variablen leer, und **Neuer Versand** warnt: *„Diese E-Mail nutzt Workflow-Variablen (…). In einer Kampagne bleiben sie leer: Ersetze sie durch Variablen der Person oder der Community oder nutze Ersatzwerte.“*

## Bedingung „Variable“

Die Regel **Variable**, in der Gruppe **Variablen des Ablaufs** der **Bedingung**, vergleicht einen Wert des Ablaufs: Wähle die Variable (im selben Menü wie **Variable einfügen**) und den Operator, der vom Typ abhängt:

| Typ | Operatoren |
|---|---|
| Text | ist gleich, ist nicht gleich, enthält, enthält nicht, beginnt mit, endet mit, ist leer, ist nicht leer. Unterscheidet weder Groß- und Kleinschreibung noch Akzente (*„fortgeschritten“* passt auf *„Fortgeschritten“*) |
| Zahl und Geld | ist gleich (=), ist ungleich (≠), ist größer als (>), ist mindestens (≥), ist kleiner als (<), ist höchstens (≤), ist leer. Geld in der Währung der Community, in ihrem Format |
| Datum | ist vor dem, ist nach dem, liegt zwischen, ist mehr als N Tage her, ist weniger als N Tage her, ist in den nächsten N Tagen |
| Liste (Tags, Gruppen, Mehrfachauswahl-Feld) | enthält, enthält nicht, enthält eines von, enthält alle von |
| Ja/Nein | ist wahr, ist falsch |

Beispiele: *„Betrag ist mindestens 100,00“*, *„Format ist gleich Präsenz“*, *„Kurs enthält Fortgeschritten“*, *„Datum ist in den nächsten 7 Tagen“*.

Die anderen Regeln nutzen dieselben Operatoren: **Hat das Tag** und **Ist in der Gruppe** mit enthält, enthält nicht, eines von und alle von (und mehrere Gruppen auf einmal); **Profilfeld** mit den Operatoren des Feldtyps (bei einem Feld mit [Mehrfachauswahl](/membros/campos-customizados#mehrfachauswahl) *enthält eines von*, *enthält alle von* und *enthält nicht*, mit den Optionen; die Variable `{{member.field.<Schlüssel>}}` trägt die gewählten Optionen), immer mit dem aktuellen Wert des Feldes. Die Regel wird im Moment des Schritts gelesen.

## Log schreiben

Der Block **Log schreiben** notiert eine Zeile im Durchlauf: Wähle die **Stufe** (**Info**, **Warnung** oder **Fehler**) und schreib die Nachricht, die Variablen akzeptiert (*„{{member.first_name}} hat das Ende der Begrüßung erreicht“*).

- Nur Text: HTML erscheint als Text, und die Nachricht wird nach dem Füllen auf 1.000 Zeichen gekürzt.
- Bis zu **20 Logs pro Durchlauf**; der 21. wird verworfen (*„Loglimit des Laufs“*).
- Der Ausgang ist immer „ok“. Ein Log der Stufe **Fehler** ändert weder das Ergebnis des Durchlaufs noch zählt er für die Warnung bei Fehlerquote; die Zusammenfassung zeigt, wie viele es gab.
- Das Log erscheint im Verlauf des Durchlaufs und unter **Verwaltung › Logs**, Typ **Workflows**, mit Filter nach Workflow und Stufe. Siehe [Logs](/membros/registros-de-atividades#workflows).
- **Die Nachricht sehen nur Eigentümer und Administrator**, weil sie jede Variable enthalten kann. Moderator und Finanzen sehen im Verlauf, dass es ein Log gab, mit *"Nachricht nur für Owner und Admin sichtbar."* anstelle des Texts.

## Webhook aufrufen

Der Block **Webhook aufrufen** unter **Integrationen** sendet mitten im Ablauf einen HTTPS-Aufruf an ein anderes System: dem CRM einen Kauf melden, eine Zeile in eine Tabelle schreiben, einen n8n-Flow aufrufen.

- **Methode** und **Adresse (URL)**: nur `https://`, Port 443 und ein fester Host. Variablen dürfen in den Pfad, nie in den Host, und Schlüssel aus dem Tresor nie in die Adresse.
- **Header** und **Inhalt (JSON)**: akzeptieren Variablen und Schlüssel aus dem Tresor (`{{env.CRM_TOKEN}}`), nur an die Adressen des Schlüssels, wenn er welche hat. Der Inhalt geht mit `memberfy.memberLanguage` und `memberfy.communityLanguage` ergänzt raus.
- **Maximale Antwortzeit**: 2 bis 15 Sekunden (Standard 10).
- **Was die nächsten Blöcke nutzen können:** `{{steps.<block>.status}}`, `{{steps.<block>.duration}}` (ms), `{{steps.<block>.size}}` (Bytes) und die Felder der JSON-Antwort, bis 16 KB (`{{steps.<block>.body.<feld>}}`). Werte von außen kommen nie in den Betreff einer E-Mail.

| Antwort | Was passiert |
|---|---|
| 2xx | Weiter über den Weg „ok“ |
| 3xx (Weiterleitungen werden nicht verfolgt), 4xx, gesperrte Adresse, Antwort über 64 KB, ungültiger Inhalt, Schlüssel außerhalb seiner Adressen | Sofort über den Fehlerweg |
| 5xx, länger als die maximale Zeit oder Netzwerkfehler | Neuer Versuch nach 1, 5 und 15 Minuten; ohne Erfolg über den Fehlerweg |

**Grenzen:** 60 Aufrufe pro Minute und 2.000 pro Tag je Workflow; 300 pro Minute und 20.000 pro Tag in der Community. Was darüber liegt, wartet, statt zu scheitern. Ein Ziel, das mehrmals hintereinander scheitert, pausiert einige Minuten.

### Feste IPs

In den Plänen **Business** und **Scale** gehen die Aufrufe von **festen IPs** aus, denselben wie bei den Webhook-Zustellungen (siehe [Feste IPs](/api/ips-fixos)), damit du sie in der Firewall des Ziels freigeben kannst. Das Panel des Blocks zeigt die IPs, mit **IPs kopieren**, und wie viele Aufrufe des Monats schon über sie gingen.

- Die Grenze liegt bei **10.000 Aufrufen über feste IP pro Monat**. Darüber hinaus gehen die übrigen bis zum Monatswechsel von wechselnden IPs aus, und der Eigentümer bekommt einen Hinweis in der Glocke, der die Automationen öffnet. Der Monat ist der Kalendermonat in der Zeitzone der Community: Die Zählung beginnt am 1. um Mitternacht neu und wird im Jahresplan nicht übertragen.
- In den anderen Plänen gehen die Aufrufe von wechselnden IPs aus.
- Der Verlauf zeigt bei jedem Aufruf, woher er kam: **Feste IP**, **Wechselnde IP** oder *"Wechselnde IP (Monatslimit für feste IP erreicht)"*.

## Variablen und Schlüssel

**Variablen und Schlüssel**, oben in **Verwaltung › Workflows**, ist der Tresor der Community: die Tokens und Schlüssel, die **Webhook aufrufen** in Headern und Inhalt nutzt. Nur Eigentümer und Administrator sehen und ändern ihn.

1. Lies vor dem ersten Schlüssel den Hinweis **Bevor Sie beginnen: ein Hinweis zu personenbezogenen Daten** und klicke auf **Gelesen und akzeptiert**: Die per Webhook gesendeten Daten der Personen verlassen Memberfy in Richtung des Systems, das du angibst, und die Community ist für diese Daten verantwortlich. Das gilt einmal für die ganze Community; danach zeigt die Seite, wann der Hinweis akzeptiert wurde.
2. **Neuer Schlüssel** öffnet ein Fenster mit drei Feldern:
   - **Name**: wie du den Schlüssel im Workflow ansprichst. Er passt sich beim Tippen an (Großbuchstaben, Ziffern und `_`; Leerzeichen und Akzente werden zu `_`), und direkt darunter steht, wie du ihn im Block schreibst: *„Im Block „Webhook aufrufen“ schreiben Sie“* `{{env.CRM_TOKEN}}`.
   - **Wert**: füge den Token oder das Passwort ein. Das Augen-Symbol zeigt oder verbirgt das Eingefügte (**Wert anzeigen** / **Wert verbergen**), nur solange das Fenster offen ist.
   - **Darf nur gesendet werden an** (optional): die Adressen, an die der Schlüssel gehen darf, etwa `api.deincrm.de` (Enter oder **Hinzufügen**; fügst du eine ganze URL ein, bleibt nur die Domain). **Leer kann der Schlüssel mit jeder Adresse genutzt werden**; mit Adressen geht er nur an diese. Für einen Schlüssel, der zu genau einem System gehört, wie ein CRM-Token, fülle das Feld aus: das ist sicherer.
3. Im Block nutzt du `{{env.CRM_TOKEN}}`.

- **Der Wert kommt nie zurück auf den Bildschirm.** Er wird verschlüsselt gespeichert, und die Liste zeigt nur das Ende (*"…a1b2"*), wohin er gehen darf (oder *„Jede Adresse“*) und wann er genutzt wurde. Zum Wechseln: **Ersetzen**.
- **Löschen** entfernt den Wert sofort; Workflows, die den Schlüssel nutzen, gehen dann über den Fehlerweg.
- Der Verlauf zeigt die Namen der in einem Aufruf genutzten Schlüssel, nie den Wert.

### KI-Limits

Die Karte **KI-Limits** unter **Variablen und Schlüssel** begrenzt die Kosten der [Blöcke Claude und ChatGPT](#ki-blocke-claude-und-chatgpt), die die Community trägt. Nur der Eigentümer und der Administrator sehen und ändern sie, und jede Änderung wird protokolliert.

**Was ein Token ist.** Die KI liest und schreibt Text in Tokens, Wortstücken: 1.000 Tokens sind etwa 750 Wörter. Es zählen die Eingabe (die Anweisungen und der Prompt) und die Ausgabe (die Antwort). Nichts davon nutzt das KI-Kontingent von Memberfy.

| Obergrenze | Standard | Wenn sie überschritten wird |
|---|---|---|
| **Pro Aufruf** | 4.000 Tokens | Das Höchste, was das Modell in einer Antwort schreibt: Ein Block, der mehr verlangt, bekommt diese Zahl |
| **Pro Ausführung** | 20.000 Tokens | Die Summe für eine Person, die den Workflow durchläuft. Darüber nimmt der Block den Fehlerausgang (*„KI-Token-Obergrenze pro Ausführung erreicht.“*) |
| **Pro Tag** | 200.000 Tokens | Die Summe der Community am Tag, in der Zeitzone der Community. Darüber warten die Blöcke auf den nächsten Tag und laufen, wenn er beginnt |

Pro Aufruf muss kleiner oder gleich pro Ausführung sein, und pro Ausführung kleiner oder gleich pro Tag. Die Karte zeigt, wie viel heute verbraucht wurde (*„Heute: 12.400 von 200.000 Tokens verbraucht.“*); **Limits speichern** speichert und **Auf Standard zurücksetzen** stellt die Zahlen der Tabelle wieder her.

## KI-Blöcke (Claude und ChatGPT)

Die Blöcke **Claude** und **ChatGPT** in der Kategorie **KI** bitten die KI mitten im Pfad um einen Text oder ein JSON: eine persönliche Begrüßung schreiben, ein Support-Ticket einordnen, eine Formularantwort zusammenfassen. Der Aufruf nutzt **den eigenen API-Schlüssel der Community**, angelegt bei Anthropic (Claude) oder OpenAI (ChatGPT): Die Nutzung bezahlt die Community, direkt beim Anbieter.

**Vor dem ersten Block:**

1. Akzeptiere unter [Variablen und Schlüssel](#variablen-und-schlussel) den Hinweis zu personenbezogenen Daten und lege einen Schlüssel mit dem API-Schlüssel des Anbieters an. Trage unter **Darf nur gesendet werden an** `api.anthropic.com` (Claude) oder `api.openai.com` (ChatGPT) ein. Ein Schlüssel ohne Adresse erscheint auch im Block, aber eine Einschränkung ist sicherer; ein Schlüssel mit anderen Adressen erscheint nicht.
2. Prüfe die [KI-Limits](#ki-limits).

**Das Panel des Blocks:**

| Feld | Was es ist |
|---|---|
| **Modell** | Die Modellfamilie, nach Einsatz beschrieben: *das leistungsstärkste, für schwierige Aufgaben* (langsamer und teurer), *ausgewogen bei Qualität, Tempo und Kosten* oder *das schnellste und günstigste, für einfache Aufgaben*. Die Liste folgt den aktuellen Modellen jedes Anbieters |
| **API-Schlüssel** | Nur die Schlüssel aus Variablen und Schlüssel, die zum Anbieter dürfen; **Schlüssel unter Variablen und Schlüssel anlegen** führt zum Tresor. Der Schlüssel kommt nie in den Prompt oder den Verlauf |
| **Systemanweisungen** (optional) | Wie sich das Modell bei jedem Aufruf verhält: Rolle, Ton, Regeln |
| **Prompt** | Die Anfrage, mit [Variablen](#variablen) (*„Schreibe eine Willkommensnachricht für {{member.first_name}}, die gerade der Community beigetreten ist.“*). Die Schlüssel des Tresors (`{{env.*}}`) sind nicht erlaubt |
| **Antwortformat** | **Text** oder **JSON**. Mit JSON ein optionales **JSON-Schema**, und jedes Feld der Antwort wird zu einer Variablen |
| **Max. Tokens** | Die maximale Länge der Antwort, von 16 bis 8.000 Tokens (Standard 1.024); die Obergrenze pro Aufruf der Community kann sie senken |
| **Wartezeit** | Wie lange auf die Antwort gewartet wird, von 5 bis 60 Sekunden (Standard 30) |

Variablen kommen als Daten in den Prompt, nie als Anweisung an das Modell, zusammen mit der Sprache der Person und der der Community. Schreibe in den Prompt nur, was die Aufgabe braucht.

**Was die nächsten Blöcke nutzen können:** `{{steps.<block>.output}}` (der Text oder das JSON), `{{steps.<block>.output.<feld>}}` (jedes JSON-Feld, auch in einer [Bedingung „Variable“](#bedingung-variable)), `{{steps.<block>.tokens}}` und `{{steps.<block>.model}}`, über **Variable einfügen**. Die Antwort wird bis 16 KB gespeichert. Sie ist ein Wert von außen, wie die eines Webhooks: Sie wird dort, wo sie landet, maskiert und **kommt nie in den Betreff einer E-Mail**.

**Wie sich der Block verhält:**

| Antwort | Was passiert |
|---|---|
| Antwort erhalten | Geht den „ok“-Pfad, mit der Antwort in den Variablen |
| Schlüssel oder Anfrage abgelehnt, das Modell verweigert, leere oder durch Max. Tokens abgeschnittene Antwort, JSON nicht gültig für das Schema | Geht sofort den Fehlerpfad |
| Zeitüberschreitung, Anbieter nicht erreichbar oder Anbieterlimit | Versucht es nach 1, 5 und 15 Minuten erneut; ohne Erfolg geht er den Fehlerpfad |
| Obergrenze pro Ausführung der KI-Limits | Geht den Fehlerpfad |
| Tägliche Obergrenze der KI-Limits | Der Schritt wartet auf den nächsten Tag, in der Zeitzone der Community |

Die Simulation zeigt den ausgefüllten Prompt, ohne die KI aufzurufen, und der Verlauf zeigt Modell, Tokens und Dauer jedes Aufrufs, nie den Schlüssel, den Prompt oder die Antwort (siehe [Verlauf](#verlauf)).

## SMS senden und WhatsApp senden

Die Blöcke **SMS senden** und **WhatsApp senden**, in der Kategorie **Nachrichten**, senden einen Service-Hinweis an das Handy der Person der Ausführung, nach den Regeln von [Hinweise per SMS und WhatsApp](/notificacoes/avisos-por-sms-e-whatsapp): der Kanal eingeschaltet unter **E-Mails und Benachrichtigungen**, ein bestätigtes Handy (oder ein vom Team bei der Erklärung der Einwilligung angegebenes), die Service-Einwilligung für diesen Kanal und die Kategorie **Automatisierungen** eingeschaltet unter **Mein Konto › Hinweise**.

- **Text (SMS):** bis 300 Zeichen, mit [Variablen](#variablen) (*„Hallo {{member.first_name}}, dein Event beginnt in 1 Stunde.“*). Variablen kommen als reiner Text hinein. Beim Senden setzt Memberfy den Namen der Community davor (*„[Laufclub] …“*) und, bei SMS, den Abmeldelink ans Ende.
- **Teile (SMS):** Das Panel zählt die Teile des Textes allein und **so, wie er rausgeht** (mit *[Community]* davor und dem Abmeldelink). Ein Teil fasst 160 Zeichen, oder 153, wenn die Nachricht geteilt wird; ein Akzent wie ã, õ oder ç oder ein Emoji lässt jeden Teil nur 70 fassen (67 beim Teilen). Variablen zählen wie getippt.
- **Vorlage (WhatsApp):** WhatsApp akzeptiert keinen freien Text. Wähle die **Vorlage** (*Ticket bestätigt*, *Zahlung abgelehnt*, *Community-Hinweis*…), fülle die **Felder der Vorlage** aus (je bis 300 Zeichen, mit Variablen; Vornamen und Community-Namen füllt Memberfy aus) und auf Wunsch die **Seite, die der Button öffnet** (ein Pfad der Community, wie `/eventos`; leer: die Startseite). Für eine Nachricht ohne eigene Vorlage nimm **Community-Hinweis**, dessen Feld dein Text ist. **So kommt es an** zeigt die fertige Nachricht. Eine Marketing-Vorlage kommt nur bei Personen an, die Neuigkeiten per WhatsApp zugestimmt haben. Wiederhole in einem Workflow keine [Nachricht, die die Plattform schon sendet](/notificacoes/avisos-por-sms-e-whatsapp#nachrichten-der-plattform-per-whatsapp), etwa die Zahlungsbestätigung oder die Veranstaltungserinnerung.
- **Vorlagen, die ein Workflow nutzen kann (WhatsApp):** *Community-Hinweis* (auch in der *Service*-Version), *Ticket bestätigt*, *Zahlung bestätigt*, *Zahlung abgelehnt*, *Kauf nicht abgeschlossen*, *Event morgen* und *Event beginnt gleich* (mit den Vor-Ort-Versionen, die die Karte mitbringen), *Event live*, *Antwort auf einen Post*, *Erwähnung*, *Direktnachricht*, *Neuer Inhalt*, *Vorschlag entschieden*, *1:1*, *Feedback erhalten* (auch in der *Service*-Version), *HR-Aufgabe*, *Buchungserinnerung*, *Abo verlängert sich*, *Rückerstattung*, *Platz auf der Warteliste* und *Zertifikat ausgestellt*. Nicht dabei sind die, die kein Auslöser füllen kann (*Besuch am Empfang*, *Paket eingegangen*, *Karte läuft ab*, *Antwort auf das Support-Ticket* und *Registrierung bestätigt*): Sie gehen nur als [Nachricht der Plattform](/notificacoes/avisos-por-sms-e-whatsapp#nachrichten-der-plattform-per-whatsapp) raus.
- **Marketing-Vorlagen (WhatsApp):** WhatsApp stuft *Community-Hinweis* und *Feedback erhalten* (je beide Versionen), *Kauf nicht abgeschlossen*, *Erwähnung* und *Neuer Inhalt* als Marketing ein. Wer Neuigkeiten per WhatsApp nicht zugestimmt hat, bekommt sie nicht: Der Schritt wird **übersprungen** (*„keine Zustimmung für WhatsApp“*) und läuft über den Pfad „ok“ weiter. Damit alle die Nachricht bekommen, setz nach dem Block eine [Bedingung „Variable“](#bedingung-variable) mit `{{steps.<block>.result}}` gleich `skipped`, die zu einem **E-Mail senden** führt. Siehe [Marketing-Vorlagen](/notificacoes/avisos-por-sms-e-whatsapp#marketing-vorlagen).

**So verhält sich der Block:**

| Situation | Was passiert |
|---|---|
| Gesendet | Geht über „ok“ weiter. Der Verlauf zeigt den Text und, bei SMS, die **SMS-Teile** |
| Die Person kann nicht empfangen: Kanal in der Community aus, hat die Community verlassen, kein Handy, Handy nicht bestätigt (und nicht vom Team bei der Erklärung der Einwilligung angegeben), Land nicht bedient, keine Einwilligung, hat die Hinweise dieser Community gestoppt oder STOP geantwortet, hat die Kategorie **Automatisierungen** ausgeschaltet, leerer Text. Bei WhatsApp auch eine noch nicht freigegebene Vorlage und eine Marketing-Vorlage für Personen ohne Zustimmung zu Neuigkeiten | **Übersprungen**, mit dem Grund, und geht über „ok“ weiter |
| Ruhezeit (21 bis 8 Uhr, Zeitzone der empfangenden Person), Tageslimit der Community oder Monatskontingent | **Wartet auf das Kontingent** und geht raus, sobald es frei wird, wie unter [Wenn der Versand verschoben wird](#wenn-der-versand-verschoben-wird) |
| Die Person hat das **Limit pro Person** des Tages schon erreicht (standardmäßig 5, auf der SMS-Karte) | Geht am nächsten Tag um 8 Uhr raus |
| Der Versand wurde abgelehnt | Geht über den Fehlerpfad, mit dem **Code der Ablehnung** im Verlauf |
| Vorübergehender Fehler | Neuer Versuch nach 1, 5 und 15 Minuten |

Ist der Versand der Community gesperrt, warten beide Blöcke, wie die anderen Nachrichten. Weder Übersprungenes noch Verschobenes zählt als Fehler.

### Erinnerungen, die auch per SMS gehen

Mit eingeschalteter SMS in der Community gehen drei Erinnerungen der Plattform auch per SMS raus, ohne Workflow, an alle, die empfangen können: die **Veranstaltungserinnerung**, 1 Stunde vorher; die **Erinnerungen des PDI-Zyklus** (PDI einreichen und freigeben); und die **1:1-Erinnerung**. Der Bildschirm jeder Erinnerung sagt das (*„Die Erinnerung 1 Stunde vorher geht auch per SMS an alle, die eingewilligt haben.“*). Eine Erinnerung, die Ruhezeit oder Tageslimit verspäten würden, wird per SMS übersprungen; die E-Mail geht wie immer raus. Mit ausgeschalteter SMS ändert sich nichts.

## Plattformaktionen und andere Workflows

Jede **Plattformaktion** ist ein eigener Block in der Leiste, mit dem Namen der Aktion, in der Kategorie dessen, was sie betrifft (**Personen**, **Inhalte** oder **Nachrichten**). Sie tut für die Person der Ausführung dasselbe, was das Team auf dem Bildschirm tut; das Panel des Blocks fragt die Felder der Aktion ab (Kurs, Event, Plan oder Produkt und Gruppe per Suche, das **Profilfeld**, die **Neue Rolle**, die **Punkte** und den **Grund**, Daten und Texte, mit Variablen) und sagt, welche Rolle sie verlangt:

| Aktion | Was sie tut | Mindestrolle dessen, der einschaltet |
|---|---|---|
| **Rolle ändern** | Ändert die Rolle der Person, auch zum Administrator (nie zum Owner, nie die Rolle eines Owners oder die eigene) | Administrator |
| **Aus der Gruppe entfernen** und **Profilfeld ausfüllen** | Nimmt die Person aus einer Gruppe; schreibt einen Wert in ein Profilfeld | Administrator |
| **Punkte anpassen** | Fügt Punkte im [Ranking](/membros/gamificacao) hinzu oder zieht sie ab, mit dem Grund im Verlauf | Administrator |
| **Badge vergeben** und **Badge entfernen** | Vergibt ein [Badge](/membros/engajamento#badges) aus dem Katalog, mit optionalem **Grund** (wer es schon hat, wird übersprungen), mit dem Hinweis in der Glocke und der E-Mail **Erfolge**; oder nimmt es zurück, ohne Hinweis (wer es nicht hat, wird übersprungen) | Administrator |
| **Kostenlosen Zugang geben** und **Kostenlosen Zugang beenden** | Gibt einen Plan kostenlos bis zu einem Enddatum oder beendet den kostenlosen Zugang (ein bezahltes Abo wird nie angetastet) | Administrator |
| **Freikarte geben** | Eine Freikarte für das Event | Administrator |
| **1:1 planen** | Legt ein wiederkehrendes [1:1](/espacos/1-1) zwischen der Person und ihrer direkten Führungskraft an, mit **Häufigkeit** (wöchentlich, alle zwei Wochen oder monatlich), **Wochentag**, **Uhrzeit** und **Dauer (Minuten)**. Ohne direkte Führungskraft oder mit einem schon geplanten wiederkehrenden 1:1 wird der Schritt übersprungen | Administrator |
| **Aktion zum Entwicklungsplan hinzufügen** | Fügt dem aktiven [Entwicklungsplan](/espacos/pdi) der Person eine Aktion mit **Frist (Tage)** hinzu; ohne aktiven Plan legt sie einen Entwurf damit an. Im Plan zeigt die Aktion *„Vom Workflow … erstellt“* | Administrator |
| **Beitrag veröffentlichen** | Veröffentlicht einen Beitrag (in Markdown, mit Variablen) in einem Feed- oder Inhaltsbereich, im Namen dessen, der den Workflow eingeschaltet hat, mit der Regel des Bereichs, wer erstellen darf, und ohne E-Mail-Hinweis | Moderator |
| **Zertifikat ausstellen** | Stellt der Person ein [Zertifikat](/espacos/certificados) aus einer aktiven Vorlage aus, mit der Hinweis-E-Mail, wenn **Zertifikat per E-Mail senden** markiert ist; wer es schon hat, wird übersprungen | Moderator |
| **Anerkennen** | Wer den Workflow eingeschaltet hat, veröffentlicht eine [Anerkennung](/espacos/reconhecimento) für die Person, mit der Nachricht und, wenn gewünscht, einem Wert der Community | Moderator |
| **Im Chat blockieren** | Wer den Workflow eingeschaltet hat, blockiert die Person im [Chat](/membros/mensagens), ohne Hinweis an irgendwen; die Aktion hat keine Felder | Moderator |
| **Für Event anmelden** und **In Kurs einschreiben** | Nur kostenlose Events und Kurse | Moderator |
| **Hinweis in der App senden** | Ein Hinweis in der Glocke der Person, mit Titel und Text. Der Hinweis kommt auch als [Benachrichtigung im Browser und auf dem Handy](/conceitos/notificacoes-no-navegador), in der Kategorie **Hinweise des Teams**; ein Tippen öffnet die Glocke | Moderator |

Was Geld bewegt oder endgültig löscht, läuft nie in einem Workflow.

**Workflow aufrufen** führt für dieselbe Person einen Workflow aus, der mit **Von einem anderen Workflow aufgerufen** beginnt. Im Auslöser dieses Workflows legt **Werte, die dieser Workflow erhält** fest, was er erwartet (Namen aus Kleinbuchstaben, Ziffern und `_`), in den Blöcken als `{{trigger.<name>}}` genutzt; in **Ende: Erfolg** sagt **Zurückgegebene Werte**, was an den Aufrufer zurückgeht. Im Block **Workflow aufrufen** wählst du den **Aufgerufenen Workflow**, füllst die **Gesendeten Werte** aus und siehst **Was er zurückgibt**, das die nächsten Blöcke als `{{steps.<block>.output.<name>}}` nutzen. Der aufrufende Workflow wartet, bis der andere endet, und geht über „ok“ oder über den Fehler weiter. Ein Workflow ruft weder sich selbst noch seinen Aufrufer auf, und eine Kette reicht bis zu 3 Workflows. So lebt eine gemeinsame Begrüßung in einem einzigen Workflow, den viele aufrufen.

### Mit welcher Rolle die Schritte handeln

Ein Workflow tut nie mehr als die Person, die ihn in Gang gesetzt hat:

- Die Schritte handeln mit der Rolle dessen, der den Workflow **gespeichert, eingeschaltet, fortgesetzt oder ausgeführt** hat. Eine Aktion über der Rolle dessen, der bearbeitet, wird im Panel markiert (*"Diese Aktion erfordert Eigentümer: Sie können den Workflow damit nicht speichern."*), und der Workflow wird nicht gespeichert.
- Die Rolle wird bei jedem Schritt neu gelesen: Hat die Person die Rolle verloren, wird die Aktion übersprungen; hat sie die Community verlassen, scheitert der Schritt.
- **Der Administrator handelt wie der Eigentümer.** Er speichert, schaltet ein und führt Workflows mit jeder Plattformaktion aus, auch jemanden zum Administrator machen. Nur eine als Eigentümer-exklusiv markierte Aktion stünde über ihm (der Workflow öffnete sich nur zum Lesen: *„Dieser Workflow hat Aktionen, die nur Eigentümer ändern kann.“*), und heute ist keine so: Die Inhaberschaft der Community und der Plan sind keine Workflow-Aktionen.
- **Moderator und Finanzen haben Grenzen:** Sie sehen, simulieren und verfolgen den Verlauf, speichern, schalten ein oder führen aber keine Workflows aus, und ein Workflow gibt ihnen nie ein Recht, das sie nicht haben.
- Ein von einem anderen aufgerufener Workflow handelt mit der schwächsten Rolle der Kette.

## Ereignisse des Lebenszyklus

29 Auslöser mit dem Lebenszyklus jedes Moduls, jeder im Block seiner Familie und auch in den [Webhooks](/api/eventos-de-webhook).

| Familie | Auslöser |
|---|---|
| Downloads | Eine Datei wird veröffentlicht, bearbeitet, wechselt die Kategorie oder wird gelöscht; ein Anhang wird hinzugefügt, durch eine neue Version ersetzt oder entfernt; eine Download-Kategorie wird erstellt |
| Beiträge und Kommentare | Ein Beitrag wird bearbeitet, wechselt den Bereich oder wird gelöscht; ein Kommentar wird gelöscht; jemand nimmt eine Reaktion zurück |
| Events | Ein Event wird erstellt, bearbeitet, verlegt oder gelöscht; die Übertragung beginnt; die Aufzeichnung wird veröffentlicht |
| Kurse | Ein Kurs wird veröffentlicht oder bearbeitet; eine Lektion wird veröffentlicht; jemand verlässt einen Kurs |
| Bereiche | Ein Bereich wird erstellt, bearbeitet oder gelöscht |
| Formulare | Ein Formular wird veröffentlicht, geschlossen oder wieder geöffnet |

- **Nur veröffentlichte Elemente lösen aus:** Ein bearbeiteter oder gelöschter Entwurf startet nichts.
- **Ein Event zu löschen ist heute die Art, ein Event abzusagen**, und der Auslöser sagt das: *„Ein Event wird gelöscht (so wird es abgesagt)“*.
- Die Person des Durchlaufs ist **wer gehandelt hat** (`{{actor.name}}`). Wenn das Team etwas veröffentlicht (ein Event, eine Lektion), dient der Auslöser dazu, in Slack Bescheid zu geben oder die Person zu würdigen; um alle Mitglieder über neue Inhalte zu informieren, nutze die [E-Mail-Hinweise](/notificacoes/emails-desta-comunidade) oder einen Workflow **Geplant** oder **Manuell** mit Zielgruppe.

## Level und Punkte

Der Auslöser-Block **Level und Punkte** (*„Eine Person steigt im Level auf oder ab oder erreicht eine Punktzahl“*) folgt den [Leveln](/membros/gamificacao#level) der Community:

| Auslöser | Wann er auslöst | Filter |
|---|---|---|
| **Level aufgestiegen** | In dem Moment, in dem die Person ein höheres Level erreicht, durch Punkte (Aktion, Anpassung durch das Team oder einen Workflow) oder weil sie die fehlende Anforderung der Woche erfüllt. Zwei Level auf einmal lösen einmal aus | **Level**: das erreichte Level (**Jedes Level**, leer) |
| **Level abgestiegen** | Am Montag um 00:00, in der Zeitzone der Community, für alle, die die Anforderungen der Vorwoche nicht erfüllt haben, und in dem Moment, in dem eine negative Anpassung die Person unter das Minimum des Levels bringt | **Level** (das Level, auf dem die Person landet) und **Grund**: *„Wochenaktivität nicht erfüllt (am Montag)“* und *„Punkte verloren (Anpassung durch das Team oder einen Workflow)“*, standardmäßig beide markiert (*„Mindestens ein Grund bleibt markiert.“*) |
| **N Punkte erreicht** | *„Löst aus, wenn die Summe diese Zahl nach oben überschreitet. Wer absteigt und sie erneut überschreitet, löst wieder aus.“* | **Punkte** (Pflicht) |

Keiner der drei löst bei einer Neuberechnung der Punkte, einem Import, einer Änderung der Level durch die Community oder bei ausgeschalteter Gamification aus.

**Bedingungen.** In der **Bedingung** hat die Gruppe **Engagement** die Regeln **Level** (*„ist auf Level Kernel oder höher“* oder *„ist unter Level Kernel“*) und **Punkte** (*„hat mindestens 500 Punkte“* oder *„hat weniger als 500 Punkte“*), gelesen im Moment des Schritts.

**Beispiele:** *„Zu Kernel aufgestiegen → Badge Kernel vergeben“*; *„Von Kernel abgestiegen, Grund Wochenaktivität → aus der Gruppe Kernel entfernen“*; *„1.000 Punkte erreicht → eine Glückwunsch-DM schicken“*.

## DM empfangen

Der Auslöser-Block **Nachrichten** hat den Auslöser **Ein Mitglied schreibt dem Team eine DM**: Er löst aus, wenn ein Mitglied jemandem aus dem Team eine [Nachricht](/membros/mensagens) schickt. Die Person des Durchlaufs ist, wer die DM geschickt hat. Eine DM zwischen Mitgliedern oder von jemandem aus dem Team löst nichts aus.

**Filter:**

- **Wer sie erhält**: eine oder mehrere Personen aus dem Team (Pflicht).
- **Absender hat den Tag** und **Absender ist in der Gruppe** (leer: beliebiges Mitglied).
- **Nur die erste Nachricht einer neuen Unterhaltung**. Nicht angehakt, löst jede Nachricht aus, mit der Regel von [Wie oft eine Person eintritt](#wie-oft-eine-person-eintritt).

**Variablen:** `{{dm.from.name}}` und `{{dm.from.email}}` (wer geschrieben hat), `{{dm.to.name}}` (wer sie erhalten hat) und `{{dm.conversation_url}}` (der Link zur Unterhaltung).

**Der Text der DM (`{{dm.text}}`)** folgt der Regel der Nachrichten: Das Team liest keine fremden Unterhaltungen. Darum ist er nur verfügbar, wenn der Workflow **der Person gehört, die die Nachricht erhalten hat**:

- Der Filter **Wer sie erhält** enthält genau diese Person, und nur sie speichert und aktiviert den Workflow;
- Der Text darf nur in eine DM, die diese Person signiert, in den Inhalt einer E-Mail oder in eine Bedingung. An jeder anderen Stelle (Betreff, Slack, Kommentar, Log, DM im Namen einer anderen Person) oder in einem Workflow, den jemand anderes speichert oder aktiviert, wird der Block im Entwurf als Fehler markiert und der Workflow nicht gespeichert.

Das Ereignis kommt auch bei den [Webhooks](/api/eventos-de-webhook) als `message.received` an, **ohne den Text** der Nachricht.

## Grenzen

- **Häufigkeitsgrenze**, optional, in jedem Workflow: höchstens N E-Mails alle so viele Stunden oder Tage an dieselbe Person; was darüber liegt, [wartet auf das Kontingent](#wenn-der-versand-verschoben-wird).
- **Tageslimit der Community**: die Workflow-E-Mails pro Tag des Plans (40 im Starter, 80 im Growth, 200 im Business und 350 im Scale; siehe [Plan und Erweiterungen](/configuracoes/plano#die-kontingente-des-plans)); was darüber liegt, wartet auf den nächsten Tag. Transaktionale E-Mails zählen nie zu diesem Limit.
- **SMS und WhatsApp pro Person**: standardmäßig höchstens 5 Workflow-Nachrichten pro Person und Tag in jedem Kanal (1 bis 20, auf der SMS-Karte); was darüber liegt, geht am nächsten Tag um 8 Uhr raus.
- **Nachrichten:** höchstens 1 Workflow-Nachricht pro Person und Tag; wer Nachrichten ausgeschaltet oder die signierende Person blockiert hat, erhält sie nicht.
- **Webhook empfangen:** höchstens 5 Durchläufe pro Person und Tag in jedem Workflow.
- Wer sich von **Automatisierungen** abgemeldet hat, die Adressen mit Bounce oder Spam-Beschwerde und die [Versandreputation](/notificacoes/reputacao-de-envio) der Community halten die E-Mails ebenfalls zurück.
- **Webhook aufrufen:** siehe die [Grenzen der Aufrufe](#webhook-aufrufen).
- Ist der Versand der Community ausgesetzt, starten **Jetzt ausführen** und **Geplant** niemanden, und die Nachrichten, Kommentare, Reaktionen und Slack-Posts für alle, die schon unterwegs sind, warten, bis die Aussetzung endet (Tags und Gruppen laufen weiter).

### Wenn der Versand verschoben wird

Wenn eine Grenze, die sich mit der Zeit wieder öffnet, den Schritt aufhält, **wartet er auf das Kontingent** und geht raus, sobald es frei wird, statt übersprungen zu werden:

| Grenze | Wie lange gewartet wird |
|---|---|
| **Häufigkeitsgrenze** des Workflows | Bis zum Ende des Zeitfensters der Grenze (das Fenster reicht bis 90 Tage) |
| **Tageslimit der Community** | Bis zu 7 Tage |
| **Versandreputation** mit Warnung oder pausiert | Bis zu 7 Tage |
| **Versand der Community ausgesetzt** | Bis zu 48 Stunden |
| **1 Workflow-Nachricht pro Person und Tag** | Bis zu 7 Tage |

- Der Verlauf zeigt *„Wartet auf Kontingent: verschoben bis 28.10., 9:00 wegen Häufigkeitsgrenze des Workflows“*.
- Wenn das Kontingent frei wird, gehen die Schritte über eine Stunde verteilt raus; nach einer Aussetzung in kontrolliertem Tempo, nicht alle auf einmal.
- Danach geht der Schritt über den Ausgang „ok“ weiter. Ist die Höchstdauer überschritten, geht der Durchlauf über den Ausgang „Fehler“ weiter, mit dem Grund *„hat länger als erlaubt auf das Kontingent gewartet“*.
- **Pausieren** des Workflows friert das Warten ein; **Fortsetzen** startet die Zählung neu; **Durchlauf beenden** oder **Stoppen** bricht ab, und nichts wird verschickt.
- Ein neues Ereignis derselben Person während des Wartens öffnet keinen weiteren Durchlauf (*„lief bereits“*).

**Ein dauerhaftes Hindernis zählt als übersprungen.** Abmeldung von **Automatisierungen**, E-Mail mit Bounce oder Beschwerde, Person ohne E-Mail, ausgeschaltete Nachrichten, Blockierung der signierenden Person und eine signierende Person außerhalb der erlaubten Personen öffnen sich nicht mit der Zeit: Der Schritt wird **übersprungen**, mit dem Grund, und der Weg geht über den Ausgang „ok“ weiter (`{{steps.<block>.result}}` ist `skipped`).

**Weder verschoben noch übersprungen zählt als Fehler**: Beides ändert weder das Ergebnis des Durchlaufs noch die Warnung bei Fehlerquote.

## Zustimmung und wer signiert

**Auslöser nach Datum und Geplant:** Beim Aktivieren bittet das Fenster einmal um die Bestätigung, dass diese Personen, die schon in der Community sind, diese E-Mails erhalten dürfen.

### In wessen Namen

Wer die Nachrichten der Workflows signieren darf, ist eine Entscheidung der Community:

- Unter **Verwaltung › Einstellungen › E-Mails und Benachrichtigungen** legt die Karte **Workflow-Nachrichten im Namen von** (dieselbe steht oben unter **Verwaltung › Workflows**) fest, in wessen Namen Workflows DMs senden, kommentieren und reagieren dürfen: **Das ganze Team** (der Standard: Eigentümer, Administratoren, Moderatoren und Finanzen) oder **Nur der Owner**. Nur Eigentümer und Administrator sehen und ändern sie.
- Das Feld **Im Namen von** in jedem DM-, Kommentar- und Reaktionsblock listet die Personen, die die Einstellung erlaubt. Niemand muss zustimmen oder Texte freigeben.
- Mit **Nur der Owner** werden die schon entworfenen Schritte im Namen einer anderen Person **übersprungen**, mit dem Grund *„die signierende Person gehört nicht zu den erlaubten Personen“*, und der Editor markiert diese Blöcke (*„Diese Person darf nicht mehr signieren: Mit „Nur der Owner“ wird dieser Schritt übersprungen, bis du änderst, wer signiert.“*).
- **Es bleibt ein Nachweis:** Jede Version speichert, wer sie aktiviert oder veröffentlicht hat, und die Texte, die im Namen jeder Person rausgehen. Wenn jemand anderes aus dem Team einen Workflow aktiviert, der in deinem Namen spricht, bekommst du einen Hinweis in der Glocke, der den Workflow öffnet (*„Ana hat den Workflow „Willkommen“ aktiviert, der in deinem Namen spricht. Sieh dir die Texte an.“*).

## Vorlagen

**Vorlagen** legt einen Entwurf aus einer der 9 Vorlagen an, mit den E-Mails schon in der Bibliothek, in der Sprache der Community. Nichts wird verschickt, bis du ihn aktivierst.

| Familie | Vorlage | Was sie tut |
|---|---|---|
| Engagement | **Willkommensserie** | Drei E-Mails in der ersten Woche nach dem Beitritt |
| Engagement | **Start-Anstoß** | Beigetreten und in 3 Tagen keinen Kurs begonnen: ein kleiner Anstoß |
| Engagement | **Rückgewinnung** | Seit 30 Tagen kein Zugriff: eine Einladung zurückzukommen |
| Engagement | **Glückwunsch zum Kurs** | Eine E-Mail, wenn die Person einen Kurs abschließt |
| Engagement | **Erste Event-Anmeldung** | Ein Willkommen bei der ersten Anmeldung zu einer Veranstaltung |
| Engagement | **Danke fürs Kommen** | Einen Tag nach dem Check-in ein Dankeschön |
| Personal (HR) | **Erinnerung an offene Beurteilung** | Beurteilung seit 3 Tagen im offenen Zyklus nicht abgegeben |
| Personal (HR) | **1:1 nicht erfasst** | Das 1:1 ist vorbei und noch nicht erfasst |
| Personal (HR) | **Ziele ohne Check-in** | Key Result seit 14 Tagen ohne Check-in |

Wer eine Vorlage öffnet, sieht vor dem Verwenden die Schritte und die Betreffzeilen der E-Mails (*„Erstellt N E-Mails in der Bibliothek“*).

## E-Mails und Abmeldung

Die E-Mails der Workflows gehen in der Kategorie **Automatisierungen** von [E-Mails dieser Community](/notificacoes/emails-desta-comunidade) raus, standardmäßig an, mit dem Link zum Ausschalten in der Fußzeile.

## Schritt für Schritt

Ein Beispiel: ein Glückwunsch mit dem Namen des Kurses.

1. Klicke unter **Verwaltung › Workflows** auf **Neuer Workflow** (oder auf **Vorlagen**, um mit einer Vorlage zu beginnen).
2. Zieh den Block **Kurse** aus der Kategorie **Auslöser** und wähle unter **Startet, wenn** *Jemand schließt einen Kurs ab*. Wähle den Kurs: Das Feld **Wie oft eine Person eintritt** verschwindet, weil jede Person diesen Kurs einmal abschließt.
3. Klicke auf das **+** nach dem Auslöser und wähle **E-Mail senden**. Gib als **Name des Blocks** *Glückwunsch* ein und wähle die E-Mail. Setze unter **E-Mail bearbeiten** mit **Variable einfügen** › **Auslöser · Kurse** › **Kurs** `{{course.name}}` in den Betreff.
4. Verbinde den Ausgang „ok“ mit **Ende: Erfolg**. Wenn du willst, verbinde den Ausgang „Fehler“ mit **Nachricht senden (DM)** an dich, mit `{{steps.<block>.error}}` im Text, und danach mit **Ende: Fehler**.
5. **Speichern** und **Mit einer Person simulieren**, mit einer Teilnehmerin, die den Kurs abgeschlossen hat: Die Simulation zeigt den Betreff mit dem Namen des Kurses und *Würde erfolgreich enden*. In einem E-Mail-Schritt schickt **Test an mich senden** die E-Mail nur an dich. **Simulieren und mir die E-Mails senden** schickt dir die E-Mail so, wie die Teilnehmerin sie bekäme.
6. **Aktivieren** und bestätigen. Verfolge in der Liste **Gestartet**, **Beendet** und **Erfolg**.

## Über den Assistenten (MCP)

Eigentümer und Administrator erstellen, bearbeiten, aktivieren, pausieren und setzen Workflows über den Assistenten fort, auch aus den Vorlagen; Aktivieren und Fortsetzen zeigen vorher den Auslöser, die E-Mails und die Schätzung. Das Team liest, simuliert und verfolgt den Verlauf. Ebenfalls über den Assistenten: `run_workflow` (jetzt ausführen), `stop_workflow` (stoppen, mit der Zahl der abgebrochenen Durchläufe vor der Bestätigung), `get_workflow_summary` (die Erfolgsquote und die letzten Fehler), `list_workflow_variables` und `preview_workflow_text` (die Variablen eines Blocks und der gefüllte Text), `get_workflow_settings` und `update_workflow_settings` (in wessen Namen) und die Adresse des [eingehenden Webhooks](/integracoes/webhook-de-entrada). Siehe die [Rezepte](/mcp/receitas#93-stoppe-einen-workflow-oder-pausiere-ihn-nur) und [Werkzeuge · Community und Struktur](/mcp/ferramentas-comunidade#workflows).

Der Assistent lernt auch zu automatisieren: der **Workflow-Leitfaden** (`get_workflow_guide` und das Rezept **Eine Regel mit einem Workflow automatisieren**) erklärt Auslöser, Blöcke, Regeln und Variablen und bringt fertige Rezepte mit; `suggest_workflow` macht aus einer Regel in Worten (*„wer den Kurs kauft, bekommt 7 Tage Zugang zum Mentoring“*) einen Entwurf, ohne etwas zu speichern; und nach dem Versand einer Kampagne, dem Ausstellen von Zertifikaten oder dem Einladen von Personen schlägt der Assistent den passenden Workflow vor. Ebenfalls über den Assistenten: die Schlüssel des Tresors (`list_env`, `set_env`, `delete_env`, ohne je den Wert zu zeigen), die Blöcke der Plattformaktionen und **Workflow aufrufen**, und Ausführungen aus dem Verlauf nehmen (`delete_workflow_run`, `clear_workflow_runs`, mit Bestätigung).

Für die KI und die neuen Aktionen: Der Leitfaden enthält den Block `ai` (mit den Modellen und Grenzen des Blocks) und 48 Rezepte, darunter *Von KI geschriebene Willkommens-DM*, *Support-Tickets mit KI einordnen*, *Zusammenfassung einer Formularantwort mit KI*, *Zertifikat beim Check-in* und *Wiederkehrendes 1:1 für neue Teammitglieder*. `get_ai_limits` und `update_ai_limits` lesen und ändern die [KI-Limits](#ki-limits), `adjust_member_points` passt die Punkte einer Person ohne Workflow an, und `simulate_workflow` mit `send_emails_to_me` schickt die E-Mails der Simulation nur an dich. Keines der vier fragt nach Bestätigung.

Für SMS und WhatsApp: Der Leitfaden beschreibt die Blöcke `sendSms` und `sendWhatsapp` (das Limit, die 24-Stunden-Regel und die Gründe für Überspringen und Warten, gelesen aus `list_workflow_triggers`), und die Rezepte steigen auf 56, mit *Willkommen per SMS*, *Veranstaltungsanmeldung per SMS bestätigt*, *Veranstaltung verschoben per SMS*, *Zahlung überfällig per SMS*, *1:1 morgen per SMS*, *Veranstaltungsanmeldung per WhatsApp bestätigt*, *Zahlung überfällig per WhatsApp* und *Platz von der Warteliste per WhatsApp*. Siehe [Hinweise per SMS und WhatsApp](/notificacoes/avisos-por-sms-e-whatsapp#uber-den-assistenten-mcp). Bei WhatsApp baut der Leitfaden den Block mit Vorlage, Feldern und Seite des Buttons, nie mit freiem Text, und die Rezepte nutzen *Ticket bestätigt*, *Zahlung abgelehnt* und *Community-Hinweis*.

Für Mehrfachauswahl-Felder und Badges steigen die Rezepte auf 61: *Willkommen nach Interesse* und *Tag nach Interesse* (mit *enthält eines von* in der Bedingung **Profilfeld**), *Badge bei Kursabschluss*, *Gruppe für Badge-Inhaber* und *Badge beim Event-Check-in*.

Für die Level: Der Leitfaden beschreibt die Auslöser **Level aufgestiegen**, **Level abgestiegen** und **N Punkte erreicht** und die Regeln `levelAtLeast` und `pointsAtLeast`, mit drei neuen Rezepten: *Stufe aufgestiegen, bekommt ein Abzeichen*, *Stufe abgestiegen, verlässt eine Gruppe* und *N Punkte erreicht, bekommt ein Abzeichen*. Die Level selbst stehen in `get_ranking_levels` und `update_ranking_levels`.

## In der API

Die Routen liegen unter `/api/workflows`: Auslöser, Liste, Erstellen, Bearbeiten, Löschen, Aktivieren, Pausieren, Fortsetzen, Stoppen, Schätzung, Simulation, Test, Durchläufe, Verlauf pro Mitglied, Vorlagen und Jetzt ausführen (`POST /api/workflows/{id}/run`). Siehe die [API-Referenz](/api/referencia). Außerdem `POST /api/workflows/{id}/stop`, `GET /api/workflows/{id}/summary`, `GET /api/workflows/{id}/variables` und `POST /api/workflows/variables` (die Variablen eines noch nicht gespeicherten Entwurfs), `GET` und `PUT /api/workflows/settings` (in wessen Namen), `occurs` und `variables` in jedem Auslöser von `GET /api/workflows/triggers`, `activeCount` und `maxActive` in der Liste und der Typ `workflows` in `GET /api/logs`. Ein abgelehnter Entwurf kommt mit 422 und dem Block zurück: `singleTriggerOnly`, `pathWithoutEnd`, `variableUnavailable`. Außerdem `actionAboveRole` und `subWorkflowAboveRole` (eine Aktion über der Rolle dessen, der speichert), `subWorkflowCycle`, `httpTimeoutInvalid`, `externalInSubject`; Jetzt ausführen oder die Webhook-Adresse eines Workflows mit Aktionen über deiner Rolle: 403 `workflows.actionsAboveRole`. Und `DELETE /api/workflows/runs/{runId}`, `POST /api/workflows/{id}/runs/clear`, die Blöcke `http`, `platformAction` und `runWorkflow`, der Auslöser `workflow.called`, `platformActions` und `subWorkflow` in `GET /api/workflows/triggers`, und der Tresor unter `/api/vault` (der Wert eines Schlüssels kommt nie zurück).

Die KI-Blöcke sind der Block `ai` (`provider` `anthropic` oder `openai`, `model`, `keyEnv`, `system`, `prompt`, `outputFormat` `text` oder `json`, `jsonSchema`, `maxOutputTokens`, `timeoutSeconds`, `next` und `error`), mit den Modellen und den Grenzen des Blocks in `aiProviders` und `aiNode` von `GET /api/workflows/triggers`; die Obergrenzen liegen in `GET` und `PUT /api/vault/ai-limits` (Eigentümer und Administrator). Die neuen Aktionen stehen in `platformActions` (`content.post.create`, `certificate.issue`, `recognition.give`, `chat.block`, `oneOnOne.schedule`, `developmentPlan.action.add`), mit dem optionalen Feld `ownerOnly`, und `POST /api/gamification/points` passt Punkte außerhalb eines Workflows an. `POST /api/workflows/{id}/simulate` nimmt `sendEmailsToMe: true` an und liefert `emailsToMe`; mehr als 10 Simulationen mit Versand pro Stunde: `429`; ein Konto ohne E-Mail: `422`.

Die SMS- und WhatsApp-Blöcke sind `sendSms` (`text`, bis 300 Zeichen, `next` und `error`) und `sendWhatsapp` (`template`, `variables`, je bis 300 Zeichen, `link`, `next` und `error`; die Vorlagen und ihre Felder kommen in `whatsappNode.templates`), beschrieben in `smsNode` und `whatsappNode` von `GET /api/workflows/triggers`. Die Gründe stehen am Schritt: übersprungen (`smsNoPhone`, `smsPhoneUnverified`, `smsNoConsent`, `smsOptedOut`, `smsOptedOutAll`, `smsCategoryOff`, `smsCountryUnsupported`, `smsChannelDisabled`, `smsMemberGone`, `smsTextEmpty` und die entsprechenden `whatsapp*`, dazu `whatsappNotOnPlan`, `whatsappTemplateNotApproved`, `whatsappNoConsent`), verschoben (`smsQuietHours`, `smsDailyCapReached`, `smsMonthlyQuotaReached`, `smsPersonDailyCapReached` und die von WhatsApp) und Fehler (`smsSendFailed`, `whatsappSendFailed`). Der Teilezähler ist `POST /api/sms/segments`.

Die Badge-Aktionen sind `badge.award` (mit `badgeId` und `reason`, das Variablen akzeptiert) und `badge.revoke`, in `platformActions`; die Auslöser sind `badge.awarded` (Filter `badgeId` und `sources`) und `badge.revoked`, mit der Variable `{{badge.name}}`. Die Auslöser für Level und Punkte sind `member.level_changed` (Filter `direction`, standardmäßig `up` oder `down`, `levelId` und, beim Abstieg, `causes`: `points` und `activity`) und `member.points_changed` (Filter `points`, Pflicht: löst aus, wenn `from < N <= to`); die Regeln sind `levelAtLeast` (`levelId`) und `pointsAtLeast` (`points`), mit `not`. Bei einem Mehrfachauswahl-Feld akzeptiert die Regel `fieldEquals` `op` `containsAny`, `containsAll`, `notContains` und `contains`, mit `values`.

## Verwandte Artikel

- [E-Mail-Kampagnen](/notificacoes/campanhas-de-email)
- [Versandreputation](/notificacoes/reputacao-de-envio)
- [Nachrichten](/membros/mensagens)
- [Logs](/membros/registros-de-atividades)
- [Slack](/integracoes/slack)
- [Feste IPs](/api/ips-fixos)
