> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squadvault.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Flows

> Discord-Setup, Benachrichtigungen und Roster-Reaktionen mit Trigger, Nur wenn und Dann automatisieren.

Flows laufen, wenn in SquadVault etwas passiert — zum Beispiel ein Team wird erstellt oder ein Spieler tritt einem Roster bei — oder **nach einem Zeitplan**, den du wählst, und führen dann eine Folge von Schritten aus.

Im Builder gilt Alltagssprache: **Trigger** (wann / Zeitplan), **Nur wenn** (optionale Filter), **Dann** (was zu tun ist).

<Info>
  Flows setzen die Flows-Funktion in deinem Tarif voraus. Siehe [Abrechnung](/de/user-guide/billing), falls die Seite gesperrt ist.
</Info>

## Flows öffnen

1. Gehe in der Dashboard-Seitenleiste zu **Flows**.
2. Prüfe zuerst den **Status** (aktive Flows, fehlgeschlagene Runs, Entwürfe).
3. Bearbeite fehlgeschlagene Runs zuerst, priorisiere danach Flows und aktuelle Aktivität.
4. Nutze **Insights** für Empfehlungen (Fehler beheben, Discord verbinden, Vorlage aktivieren).

<Frame caption="Flows-Übersicht">
  <img src="https://mintcdn.com/squad-vault/1QQgC6jM7iMASl-A/images/screenshots/flows-overview.png?fit=max&auto=format&n=1QQgC6jM7iMASl-A&q=85&s=18d15be6fa9b146c43d7559daa09f40d" alt="Flows-Seite mit Automations-Health und Arbeitsliste" width="2340" height="1340" data-path="images/screenshots/flows-overview.png" />
</Frame>

## Flow bauen

1. Starte mit einer **Vorlage** oder erstelle einen leeren Workflow.
2. Setze einen **Trigger** (Ereignis oder Zeitplan mit Presets / erweitertem Cron), optionale **Nur wenn**-Bedingungen und eine oder mehrere **Dann**-Aktionen. Neue Zeitpläne nutzen die [Zeitzone der Organisation](/de/user-guide/organizations#allgemein).
3. Speichere als **Entwurf** oder **speichere und aktiviere**, damit der Flow bei echten Ereignissen oder zum nächsten geplanten Zeitpunkt läuft.

Nur **aktive** Workflows laufen. Entwürfe lösen nie aus.

<Frame caption="Flow-Builder — Trigger, Nur wenn, Dann">
  <img src="https://mintcdn.com/squad-vault/1QQgC6jM7iMASl-A/images/screenshots/flows-builder.png?fit=max&auto=format&n=1QQgC6jM7iMASl-A&q=85&s=50813c5e21706facc722fc83447a9c77" alt="Flow-Builder mit Trigger- und Aktionsblöcken" width="768" height="1325" data-path="images/screenshots/flows-builder.png" />
</Frame>

## Visueller Builder vs. Code

Der Builder hat zwei Modi:

* **Visuell** — Trigger, Filter und Aktionen über Formulare wählen.
* **Code** — Flow-Definition als JSON bearbeiten (`triggerEventType`, `conditions`, `actions`) für schnellere Massenänderungen.

Modi jederzeit wechseln. Ungültiges JSON lässt sich nicht speichern und nicht zurück zum Visuellen wechseln, bis es korrigiert ist.

<h2 id="vorlagen">
  Vorlagen
</h2>

Vorlagen sind fertige Startpunkte. Eine Vorlage zu installieren erzeugt einen Workflow, den du bearbeiten und aktivieren kannst.

Häufige Muster:

* **Neues Team einrichten** — Discord-Rolle, Kategorie und Channels bei Team-Erstellung.
* **Spieler beigetreten / verlassen** — gemappte Discord-Rolle zuweisen oder entfernen und im Team-Channel ankündigen.
* **Availability-Erinnerung** — bei geplantem Training nach Availability fragen (Discord, sofort). Überlappt den Discord-Post von **Termin erstellt**, wenn der schon in den Teamkanal geht.
* **Training-Availability-Follow-up** — 24 Stunden vor dem Training an fehlende Availability erinnern. Überlappt die eingebaute RSVP-Erinnerung (Standard 24h). Die Produkt-Erinnerung kannst du im [Team-Workspace](/de/user-guide/teams-and-players#event-erinnerungen) anpassen.
* **Scrim-Prep-Briefing** — Prep-Checkliste posten, wenn ein Scrim erstellt wird.
* **Scrim beginnt bald** — Roster **eine Stunde** vor dem Scrim pingen. Das Produkt sendet zusätzlich eine „Startet bald“-Erinnerung (Standard **2 Stunden**, In-App, Push, Discord-Teamkanal), die du pro Team ändern kannst.
* **Tryout → Team** — Discord-Rolle zuweisen und angenommene Bewerber begrüßen.
* **Neue Bewerbung** — Discord benachrichtigen, wenn eine Tryout-Bewerbung eingeht.

## Variablen

Aktions-Configs unterstützen `{{path}}`-Platzhalter aus Event-Payload und früheren Schritten.

Beispiele:

* `{{team.name}}`, `{{player.discordUserId}}`
* `{{steps.0.roleId}}` — Ausgabe von Step-Index `0` (erste Aktion)
* `{{steps.1.discordMentions}}` — Roster-Pings von **Team-Spieler abrufen**
* `{{team.name|upper}}`, `{{team.name|lower}}`, `{{team.name|slug}}` — Wert transformieren (`trim` funktioniert ebenfalls)

Im Builder zeigt der Variablen-Helfer, was der aktuelle Trigger und vorherige Schritte bereitstellen. Auf einen Chip klicken kopiert die Variable.

Team-[Event-Erinnerungen](/de/user-guide/teams-and-players#event-erinnerungen) nutzen dasselbe Chip-und-Copy-Muster für `{{eventTitle}}`, `{{when}}`, `{{type}}` und `{{hours}}`.

## Lookups vor Side Effects

Sobald ein Flow ein Team im Kontext hat (Join/Leave, Kalendertermin mit Team, Tryout, Team aktualisiert, …), enthält die Payload Discord-Team-Einstellungen, wenn verknüpft:

* `{{team.discordRoleId}}` / `{{team.discordRoleMention}}`
* `{{team.teamChannelId}}`

Wenn der Trigger kein Team hat (oder du ein anderes Team brauchst), nutze **Team abrufen** (`squadvault.get_team`) mit einer `teamId` — dieselben Felder kommen als Step-Outputs zurück.

Für Roster-Pings und andere Lookups:

| Aktion                   | Nützlich für                                           |
| ------------------------ | ------------------------------------------------------ |
| **Team abrufen**         | `discordRoleId`, `discordRoleMention`, `teamChannelId` |
| **Team-Spieler abrufen** | `discordMentions`, `names`, `count` für Discord-Pings  |
| **Spieler abrufen**      | Aktuelle Spielerfelder inklusive `discordMention`      |
| **Mitglied abrufen**     | Org-Mitglied-Userprofil per User-ID                    |

Beispiel Discord-Nachricht:

```text theme={null}
Scrim in 10 Minuten! {{steps.0.discordMentions}}
```

Spieler ohne verknüpfte Discord-User-ID werden in `discordMentions` übersprungen.

## Aktivität

* **Aktivität** listet aktuelle Läufe und öffnet Step-Logs, Fehler und Outputs an einem Ort.
* Preview/Dry-Run nutzen, wenn Discord-Änderungen sicher getestet werden sollen.

Wenn nach einer Aktion im Produkt nichts erscheint:

1. Prüfen, ob der Workflow **aktiv** ist.
2. Prüfen, ob der Trigger zu dem passt, was du getan hast (zum Beispiel Team-Spieler bearbeiten löst `player.joined_team` / `player.left_team` aus).
3. **Aktivität** auf Fehler prüfen (Discord nicht verbunden, fehlende IDs, ungültige Templates).

## Tipps

* Für Discord-Provisioning Vorlagen bevorzugen, dann Channels und Texte anpassen.
* Lookups früh setzen, damit spätere Discord-Aktionen `{{steps.N.*}}` nutzen können.
* **Bei Fehler fortfahren** bei unkritischen Schritten aktivieren (zum Beispiel Willkommensnachrichten).
* Discord verbunden und Rollen-/Channel-Mappings aktuell halten — siehe [Discord](/de/user-guide/discord).

Die vollständige Liste der Trigger und Aktionen steht in der [Flows-Referenz](/de/user-guide/flows-reference).
