# Schritte von Automatisierungen

> Referenz aller Schritte von Automatisierungen, von E-Mail senden, Warten und Bedingungen bis zu Schritten für Kontaktlisten, Kontakte und Sperrungen, dazu Zweige und fehlgeschlagene Schritte.

Schritte legen fest, was ein Durchlauf tut, nachdem sein Trigger ausgelöst hat. Diese Seite listet alle Schritte nach Kontext mit ihren Einstellungen und Regeln auf, erklärt, wie Schritte zu Zweigen verbunden werden, und zeigt, was passiert, wenn ein Schritt fehlschlägt.

## Schritte hinzufügen und konfigurieren

Im Tab **Editor** der Automatisierung (verfügbar, solange die Automatisierung ein Entwurf oder pausiert ist):

- **Schritt hinzufügen:** Wählen Sie die Plus-Schaltfläche unter dem letzten Schritt oder unter **Yes** oder **No** einer Bedingung. Durchsuchen Sie die Auswahl oder wählen Sie unter **Actions**.
- **Schritt konfigurieren:** Wählen Sie ihn auf der Arbeitsfläche aus. Seine Einstellungen öffnen sich in einem Seitenpanel. Sobald der Schritt gelaufen ist, erscheint neben **Configure** ein Tab **Stats**.
- **Schritt entfernen:** Wählen Sie ihn aus und wählen Sie im Seitenpanel **Delete step**.
- **Speichern:** Wählen Sie **Save**. Schritte mit Problemen werden mit der Anzahl ihrer Fehler hervorgehoben.

## Schritte nach Kontext

| Schritt | API-Kennung | Contact | Email | Event (API) |
| --- | --- | --- | --- | --- |
| [Send email](#send-email) | `send_email` | Ja | Ja | Ja |
| [Wait / Delay](#wait--delay) | `wait` | Ja | Ja | Ja |
| [Condition (If/Else)](#condition-ifelse) | `condition` | Ja | Ja | Ja |
| [Add to audience](#add-to-audience) | `add_to_audience` | Ja | | |
| [Remove from audience](#remove-from-audience) | `remove_from_audience` | Ja | | |
| [Edit contact](#edit-contact) | `edit_contact` | Ja | | |
| [Forward email](#forward-email) | `forward_email` | | Ja | Ja |
| [Add to suppressions](#add-to-suppressions) | `add_to_suppressions` | | Ja | Ja |
| [Remove from suppressions](#remove-from-suppressions) | `remove_from_suppressions` | | Ja | Ja |
| [Create contact](#create-contact) | `create_contact` | | Ja | Ja |
| [Schritte nur per API](#api-only-steps) | `call_webhook`, `run_automation`, `experiment`, `end` | API | API | API |

Schritteinstellungen können Platzhalter wie `{{contact.first_name}}` oder `{{payload.object.to}}` enthalten, die für jeden Durchlauf ausgefüllt werden. Siehe [Für Schritte verfügbare Daten](/de/docs/automations/triggers/#data-available-to-steps).

## Send email

Sendet eine E-Mail, die aus einer Ihrer [Vorlagen](/de/docs/templates/) erstellt wird.

| Einstellung | Erforderlich | Hinweise |
| --- | --- | --- |
| **Email template** | Ja | Die zu sendende Vorlage. Per API nimmt `template_id` eine `tem_`-ID oder einen Alias an; ein Alias verwendet die veröffentlichte Version. |
| **To (recipient)** | In den Kontexten Email und Event | Die Empfängeradresse. Contact-Automatisierungen senden immer an den Kontakt des Durchlaufs. |
| **Subject** | Nein | Überschreibt den Betreff der Vorlage. |
| **From** | Nein | Überschreibt den Absender der Vorlage, zum Beispiel `"Acme" <hello@acme.com>`. |
| **Reply to** | Nein | Überschreibt die Reply-To-Adresse der Vorlage. |

Regeln:

- **Die Vorlage wird mit [Temple](/de/docs/templates/temple/) gerendert.** In Contact-Automatisierungen sind die Felder des Kontakts direkt verfügbar, daher funktionieren `{{first_name}}`, `{{email}}` und `{{custom_fields.plan}}`. Jeder Kontext bietet außerdem `{{contact.*}}`, `{{payload.*}}` und `{{meta.*}}`. Kampagnen-Platzhalter wie `{{cf.plan}}` und `{{unsubscribe_url}}` werden nicht ausgefüllt.
- **Der Absender muss eine verifizierte Domain verwenden.** Die Überschreibung in **From** oder der Absender der Vorlage muss eine im Workspace verifizierte Domain verwenden. **Save** prüft Überschreibungen, und der Schritt schlägt zur Laufzeit fehl, wenn die Domain nicht verifiziert ist.
- **Betreff und Inhalt sind erforderlich**, aus der Vorlage oder aus den Überschreibungen.
- **Jede E-Mail kostet 1 Credit**, zusätzlich zu den 3 Credits für den Durchlauf.
- **Abonnements werden nicht geprüft.** Die E-Mail wird auch gesendet, wenn sich der Kontakt von Ihren Kontaktlisten abgemeldet hat. Gesperrte Adressen werden bei der Zustellung trotzdem blockiert, und Workspaces in der Sandbox können nur an die Kontoadressen der Mitglieder senden.
- **Kein Abmeldelink, kein Tracking von Ladevorgängen und Klicks.** E-Mails aus Automatisierungen erhalten keine `List-Unsubscribe`-Header, und Ladevorgänge und Klicks werden nicht getrackt.

Die **Stats** des Schritts verfolgen jede gesendete E-Mail über **Accepted** und **Delivered** und zählen Bounces, Fehlschläge und Beschwerden.

## Wait / Delay

Pausiert den Durchlauf vor dem nächsten Schritt.

| Einstellung | Hinweise |
| --- | --- |
| **Duration** und **Unit** | **Minutes**, **Hours** oder **Days**. Die längste Wartezeit beträgt 30 Tage. Per API setzen Sie `seconds`, bis `2592000`. |

Während ein Durchlauf wartet, bleibt er im Status **Running**, und der Warteschritt wird als wartend angezeigt. Das Pausieren der Automatisierung unterbricht wartende Durchläufe nicht.

## Condition (If/Else)

Leitet den Durchlauf in den Zweig **Yes**, wenn die Regeln zutreffen, oder in den Zweig **No**, wenn nicht.

- **Regeln:** ein Feld, ein Operator und ein Wert, verknüpft mit **All rules match** oder **Any rule matches**. Die Operatoren sind dieselben wie bei [Trigger-Filtern](/de/docs/automations/triggers/#filters).
- **Felder:** in Contact-Automatisierungen **Email**, **First name**, **Last name** und Ihre eigenen Felder, in Email-Automatisierungen die Felder des Events, das den Trigger ausgelöst hat. Per API kann `field` ein beliebiger Pfad sein, mit den Präfixen `contact.`, `email.`, `payload.` und `meta.`.
- **Zweige:** Fügen Sie den nächsten Schritt unter **Yes**, **No** oder beiden hinzu. Ein Zweig ohne Schritt beendet den Durchlauf an dieser Stelle.

## Add to audience

Kontext Contact. Meldet den Kontakt des Durchlaufs bei der gewählten **Audience** an. Hatte sich der Kontakt dort abgemeldet, wird er erneut angemeldet. Der Schritt schlägt fehl, wenn die Kontaktliste ihr [Abonnentenlimit](/de/docs/audiences/#limits) erreicht hat. Er startet keine Automatisierungen mit dem Trigger **Added to audience**.

## Remove from audience

Kontext Contact. Deaktiviert das Abonnement des Kontakts für die **Audience**. Der Kontakt bleibt als abgemeldeter Abonnent in der Kontaktliste, anders als bei **Remove from audience** in der Weboberfläche, das die Mitgliedschaft löscht.

## Edit contact

Kontext Contact. Setzt ein oder mehrere Felder beim Kontakt des Durchlaufs. Fügen Sie pro Feld eine Zeile mit **Field name** und **Value** hinzu:

| Feldname | Wirkung |
| --- | --- |
| `first_name`, `last_name`, `email` | Aktualisiert dieses Feld. |
| `unsubscribed` | Setzt den Marketing-Status des Kontakts. Mit `true` melden Sie den Kontakt von allen Kampagnen ab. Jeder nicht leere Wert zählt als `true`. |
| Jeder andere Name | Speichert den Wert im eigenen Feld mit diesem Schlüssel; die anderen eigenen Felder bleiben erhalten. |

Werte können Platzhalter enthalten, zum Beispiel `{{payload.object.audience.name}}`. Die Änderung sendet kein Event `contact.updated` und startet daher keine Automatisierungen mit dem Trigger **Contact updated** und keine Webhooks.

## Forward email

Kontexte Email und Event. Sendet eine Kopie der E-Mail des Durchlaufs mit ihrem ursprünglichen Inhalt und ihren Anhängen an die Adresse in **Forward to**. Der Betreff lautet „Fwd: “ plus der ursprüngliche Betreff. Die E-Mail muss von einer verifizierten Versanddomain im Workspace kommen, und jede Weiterleitung kostet 1 Credit. Siehe [Mit Automatisierungen weiterleiten](/de/docs/inbound/forward-with-automations/).

## Add to suppressions

Kontexte Email und Event. Setzt eine Adresse auf Ihre [Sperrliste](/de/docs/suppressions/), mit dem Typ `recipient`, der jeden Versand an sie blockiert, und dem eingegebenen **Reason** (Standardwert `automation`). In Email-Automatisierungen ist die Adresse der Empfänger der E-Mail. In Event-Automatisierungen setzen Sie `email` per API, zum Beispiel `{{payload.email}}`. Der Schritt sendet das Event `suppression.created`.

## Remove from suppressions

Kontexte Email und Event. Entfernt die Adresse von der Sperrliste: in Email-Automatisierungen den Empfänger der E-Mail, in Event-Automatisierungen die per API gesetzte `email`.

## Create contact

Kontexte Email und Event. Erstellt einen Kontakt und meldet ihn dort an, wenn Sie eine **Audience (optional)** wählen.

- In Email-Automatisierungen ist der Kontakt die Empfängeradresse der E-Mail. Bei empfangenen E-Mails ist das die Adresse, an die die E-Mail gesendet wurde. Um stattdessen einen Kontakt für den Absender zu erstellen, setzen Sie `email` per API auf `{{email.mail_from}}`.
- In Event-Automatisierungen setzen Sie `email` und optional `first_name` per API.
- Existiert der Kontakt bereits, bleibt er unverändert und wird nur bei der Kontaktliste angemeldet.
- Der Schritt startet keine Automatisierungen mit dem Trigger **Added to audience**.

## Schritte nur per API

Diese Schritte lassen sich per API hinzufügen, aber noch nicht im Editor der Weboberfläche. Sie funktionieren in jedem Kontext.

| Schritt | API-Kennung | Konfiguration | Was er tut |
| --- | --- | --- | --- |
| Call webhook | `call_webhook` | `url` (erforderlich), `method` (Standardwert `POST`), `headers`, `body` | Sendet eine HTTP-Anfrage mit JSON-Content-Type und speichert die Antwort. Eine Antwort außerhalb von 2xx oder ein Timeout wird als Ergebnis des Schritts erfasst (`2xx`, `4xx`, `5xx`, `timeout` oder `network_error`) und lässt den Durchlauf nicht fehlschlagen. |
| Run automation | `run_automation` | `automation_id` (erforderlich) | Startet einen Durchlauf einer anderen laufenden Automatisierung mit demselben Payload und macht dann weiter. Der andere Durchlauf kostet seine eigenen 3 Credits. Wird übersprungen, wenn diese Automatisierung nicht läuft. |
| Random split | `experiment` | `variants`: Liste von `{ "key", "weight" }`, optional `control` | Schickt jeden Durchlauf zufällig in einen Zweig, im Verhältnis der Gewichte. Der Zweig jeder Variante ist nach ihrem `key` benannt. Endet der Zweig einer Variante, macht der Durchlauf im Zweig `default` des Schritts weiter. |
| End | `end` | Keine | Markiert das Ende eines Zweigs. |

```json
{
  "key": "notify-crm",
  "type": "action",
  "action": "call_webhook",
  "config": {
    "url": "https://crm.acme.com/hooks/new-subscriber",
    "method": "POST",
    "headers": { "Authorization": "Bearer crm_token" },
    "body": { "email": "{{contact.email}}", "source": "emailit" }
  }
}
```

## Zweige und Verbindungen

Per API ist eine Automatisierung eine Liste von `steps`, jeder mit einem eindeutigen `key`, und eine Liste von `connections` von einem Schrittschlüssel zum nächsten:

```json
{
  "steps": [
    { "key": "trigger-1", "type": "trigger", "trigger": "contact.added_to_audience", "config": {} },
    { "key": "is-pro", "type": "action", "action": "condition", "config": {
      "filter": { "match": "all", "rules": [{ "field": "custom_fields.plan", "operator": "equals", "value": "pro" }] }
    } },
    { "key": "send-pro", "type": "action", "action": "send_email", "config": { "type": "template", "template_id": "welcome-pro" } },
    { "key": "send-free", "type": "action", "action": "send_email", "config": { "type": "template", "template_id": "welcome-free" } }
  ],
  "connections": [
    { "from": "trigger-1", "to": "is-pro", "branch": "default" },
    { "from": "is-pro", "to": "send-pro", "branch": "yes" },
    { "from": "is-pro", "to": "send-free", "branch": "no" }
  ]
}
```

- **`branch`** ist `default` für einen normalen nächsten Schritt, `yes` oder `no` nach einer Bedingung und ein Variantenschlüssel nach einem Random Split.
- **Eine Bedingung folgt nur dem Zweig, den sie gewählt hat.** Einer Verbindung `default`, die von einer Bedingung ausgeht, wird nie gefolgt.
- **Ein Schritt mit mehreren ausgehenden Verbindungen im selben Zweig** startet alle, und die Zweige laufen parallel.
- **Jeder Schritt muss von einem Trigger aus erreichbar sein.** In Contact- und Email-Automatisierungen mit mehreren Triggern müssen alle Trigger mit demselben ersten Schritt verbunden sein.
- **Senden Sie `steps` und `connections` zusammen**, wenn Sie eine Automatisierung aktualisieren. Schritte, deren Schlüssel sich nicht ändern, behalten ihren Verlauf und ihre Statistiken.

## Wenn ein Schritt fehlschlägt

Standardmäßig lässt ein fehlgeschlagener Schritt den ganzen Durchlauf fehlschlagen, und die übrigen Schritte laufen nicht. Der Fehler wird beim Schritt gespeichert, und Sie können ihn in den Details des Durchlaufs im Tab **Runs** lesen. Setzen Sie per API `on_step_failure` in den `settings` der Automatisierung auf `skip`, damit Durchläufe stattdessen nach fehlgeschlagenen Schritten weiterlaufen.

| Fehler | Ursache |
| --- | --- |
| `send_email: Template '…' not found or not published` | Die Vorlage wurde gelöscht, oder der Alias hat keine veröffentlichte Version. |
| `send_email: Sending domain is not verified or not found` | Die Domain des Absenders ist im Workspace nicht verifiziert. |
| `send_email: Unable to determine recipient address` | **To (recipient)** ist leer, oder der Kontakt existiert nicht mehr. |
| `send_email: Insufficient credits (…)` | Dem Workspace sind die Credits ausgegangen. |
| `Pro includes 50,000 subscribers per audience.` (oder das Limit Ihres Tarifs) | Ein Schritt **Add to audience** oder **Create contact** ist auf eine volle Kontaktliste gestoßen. |
| `forward_email: Source email has no raw content to forward` | Der Inhalt der E-Mail wurde aufgrund Ihrer Einstellungen zur [Datenaufbewahrung](/de/docs/data-retention/) bereits entfernt. |

Wie Sie fehlgeschlagene Durchläufe finden und beheben, erfahren Sie unter [Durchläufe und Statistiken](/de/docs/automations/runs/#debug-a-failed-run).

## Siehe auch

  - [Trigger](/de/docs/automations/triggers/): Was einen Durchlauf startet.
  - [Rezepte](/de/docs/automations/recipes/): Fertige Automatisierungen als Ausgangspunkt.

---
Quelle: https://emailit.com/de/docs/automations/steps/
