# Erweiterte Regeln

> Wenn die Schalter auf den Einstellungsseiten nicht reichen — mit Regeln legst du selbst fest, was bei welcher Bedingung mit Produkten, Bestellungen und Retouren passieren soll.

Die Einstellungen eines Verkaufskanals decken den Normalfall ab: Ein Schalter gilt für alles, was durch diesen Kanal läuft. Sobald du Ausnahmen brauchst — nur Bestellungen mit einem bestimmten Tag, nur Lieferungen ins Ausland, nur Artikel aus einer bestimmten Kategorie — kommen die **Erweiterten Regeln** ins Spiel.

![Die Karte "Erweiterte Regeln" auf der Einstellungsseite Bestellungen](https://ffn-connect.de/docs-assets/merchants/basics/shop-settings/rules/_images/01-erweiterte-regeln.png)

## Was eine Regel ist

Eine Regel besteht aus zwei Teilen:

- einer **Bedingung** — sie beschreibt, wann die Regel greift,
- einer **Aktion** — sie beschreibt, was dann passiert.

Dazu kommt ein dritter, unsichtbarer Teil: der **Zeitpunkt**. Jede Aktion gehört zu einem festen Moment im Ablauf — beim Produktimport, beim Import einer Bestellung, nach der Übergabe an das Lager oder beim Eintreffen einer Retoure. Diesen Zeitpunkt wählst du nicht separat aus; er ergibt sich aus der Aktion und aus der Einstellungsseite, auf der du die Regel anlegst.

> [!HINWEIS]
> Lässt du die Bedingung leer, gilt: **Wenn keine Bedingung angegeben ist, wird die Aktion immer ausgeführt.** In der Regelliste erscheint dann der Hinweis **Keine Bedingung** — als Erinnerung, dass diese Regel jeden Vorgang trifft.

## Wo du Regeln findest

Regeln stehen auf drei Einstellungsseiten deines Verkaufskanals. Welche Aktionen zur Auswahl stehen, hängt davon ab, auf welcher Seite du bist:

| Seite | Karte | Womit die Regeln arbeiten |
|---|---|---|
| [Produkte](/docs/merchants/basics/shop-settings/products) | **Erweiterte Regeln** — „Erstelle Regeln, die das Verhalten beim Produktimport beeinflussen." | Produkte beim Import |
| [Bestellungen](/docs/merchants/basics/shop-settings/orders) | **Erweiterte Regeln** — „Bestellungen ignorieren, zurückhalten, priorisieren, Attribute hinzufügen uvm." | Bestellungen, einzelne Positionen und Fulfillment-Aufträge |
| Retouren | **Regeln für Retouren** | Retouren beim Anlegen und beim Wareneingang |

Auf jeder dieser Karten legst du eine neue Regel über **Neue Regel** an. Bestehende Regeln öffnest du per Klick auf den Namen; über das Menü rechts kannst du sie **Bearbeiten** oder **Löschen**. Der Griff links erlaubt es, die Reihenfolge per Ziehen zu ändern — die ist wichtig, dazu unten mehr.

## Die Zeitpunkte im Detail

Es gibt fünf Momente, zu denen Regeln laufen:

**Produkt** — läuft beim Produktimport, einmal für jedes Listing und jede Variante, bevor das Produkt in FFN Connect gespeichert wird. Damit kannst du Produkte gar nicht erst aufnehmen oder einzelne Felder korrigieren, während sie hereinkommen. Verfügbar auf der Seite **Produkte**.

**Bestellposition** — läuft beim Import einer Bestellung, einmal pro Position, bevor die Bestellung selbst betrachtet wird. Gedacht für Positionen, die nicht ins Lager sollen, oder für Notizen an einer einzelnen Position. Verfügbar auf der Seite **Bestellungen**.

**Bestellung** — läuft ebenfalls beim Import, aber nachdem die Positionen und Adressen geschrieben sind, also mit Blick auf die vollständige Bestellung. Das ist der Zeitpunkt für Tags, Attribute, Priorität, Zahlungsstatus und für das Zurückhalten ganzer Bestellungen. Verfügbar auf der Seite **Bestellungen**.

**Nach Erstellung eines Fulfillment-Auftrags** — läuft erst, wenn der Auftrag an dein Lager übergeben wurde. Zu diesem Zeitpunkt kennt FFN Connect zusätzlich die Daten des Fulfillment-Auftrags, etwa die endgültige Versandart und die Lieferadresse, wie sie ans Lager gegangen ist. Verfügbar auf der Seite **Bestellungen**.

**Retoure** — läuft, wenn eine Retoure neu entsteht oder wenn sie im Lager eintrifft. Welchen der beiden Momente du meinst, steuerst du über die Bedingung: `{return.event}` hat den Wert **Erstellt** oder **Im Lager eingetroffen**. Verfügbar auf der Seite **Retouren**.

> [!WICHTIG]
> Regeln für Retouren laufen nur dann automatisch, wenn die Retouren-Automatisierung für dein Unternehmen freigeschaltet ist. Ist sie das nicht, kannst du die Regeln zwar anlegen und speichern, sie werden aber nicht von allein ausgelöst. Melde dich bei uns, wenn du sie nutzen möchtest.

## Eine Regel anlegen

![Der Regel-Editor mit Aktion, Optionen und Bedingung](https://ffn-connect.de/docs-assets/merchants/basics/shop-settings/rules/_images/03-regel-editor.png)

1. Klicke auf **Neue Regel**. Der Editor öffnet sich von rechts.
2. Trage eine **Interne Beschreibung (Für bessere Zuordnung)** ein. Sie ist nur für dich und erscheint in der Liste unter dem Namen der Aktion — bei mehreren ähnlichen Regeln ist das Gold wert.
3. Wähle unter **Aktion**, was passieren soll. Direkt darunter erscheint eine kurze Erklärung der Aktion und die Felder, die sie braucht.
4. Baue unter **Bedingungen** zusammen, wann die Regel greifen soll.
5. Der Schalter **Aktiv** unten links legt fest, ob die Regel läuft. Du kannst eine Regel jederzeit inaktiv schalten, ohne sie zu löschen.
6. **Speichern**.

Links im Editor findest du drei Reiter, die beim Schreiben helfen: **Variablen** zeigt dir als aufklappbaren Baum alle Felder, die zum gewählten Zeitpunkt zur Verfügung stehen — ein Klick kopiert den Pfad. **Funktionen** listet Hilfsfunktionen für Werte. **Beispiele** enthält fertige Regeln, die du übernehmen kannst.

> [!ACHTUNG]
> Ein Beispiel zu übernehmen ersetzt, was du bereits eingetragen hast: „Wenn du dieses Beispiel einsetzt, werden deine bisherigen Eingaben überschrieben."

## Bedingungen schreiben

Eine Bedingung ist eine Zeile aus drei Teilen:

1. **Feld** — der Pfad zu einem Wert, in geschweiften Klammern, zum Beispiel `{order.tags}`, `{product.sku}` oder `{return.status}`. Den Pfad holst du dir am einfachsten aus dem Reiter **Variablen**.
2. **Vergleich** — die Auswahlliste in der Mitte. Die Vergleiche sind nach Datentyp gruppiert: `String:` für Text, `Array:` für Listen wie Tags, `Numeric:` für Zahlen, `DateTime:` und `Time:` für Zeitpunkte, `Basic:` für Ja/Nein-Werte. Häufig gebraucht werden `String: Equals`, `String: Contains`, `String: Not Equals`, `Array: Contains`, `Array: In List`, `Numeric: Greater Than` und `String: Is Empty`.
3. **Wert** — der Vergleichswert. Hier darf auch wieder ein Pfad in geschweiften Klammern stehen, wenn du zwei Felder miteinander vergleichen willst.

Bei einigen Feldern — etwa `{return.status}` oder `{return.items[].reason_code}` — kennt FFN Connect die möglichen Werte und bietet sie als Auswahlliste an. Für solche Felder sind nur die Vergleiche `String: Equals` und `String: Not Equals` sinnvoll; der Editor stellt automatisch darauf um.

### Mehrere Bedingungen verknüpfen

Über die Schaltflächen **and** und **or** unter der Bedingung baust du komplexere Fälle:

- **and** fügt eine Bedingung zur selben Gruppe hinzu. Innerhalb einer Gruppe müssen **alle** Bedingungen zutreffen.
- **or** beginnt eine neue Gruppe. Es genügt, wenn **eine** Gruppe vollständig zutrifft, damit die Regel greift.

> [!TIPP]
> Kann eine Bedingung nicht ausgewertet werden — etwa weil der Pfad in dieser Bestellung nicht existiert — gilt sie als nicht erfüllt und die Regel greift nicht. Der Editor weist dich schon beim Tippen darauf hin, wenn ein Pfad nicht auflösbar ist.

## Welche Aktionen es gibt

Die Auswahlliste **Aktion** zeigt dir immer genau die Aktionen, die auf der aktuellen Seite möglich sind. Die folgende Übersicht nennt die wichtigsten; maßgeblich ist die Liste im Editor.

![Die Auswahlliste der Aktionen auf der Seite Bestellungen](https://ffn-connect.de/docs-assets/merchants/basics/shop-settings/rules/_images/02-aktion-waehlen.png)

### Auf der Seite Bestellungen

Für die **Bestellung** als Ganzes:

| Aktion | Wirkung |
|---|---|
| **Bestellung ignorieren** | Für ignorierte Bestellungen wird kein Fulfillment-Auftrag erzeugt. Mit der Option **Ignorierte Bestellungen importieren** landet die Bestellung trotzdem in FFN Connect — sie wird nur nicht ans Lager gegeben. Fertige Rezepte dazu stehen unter [Bestellungen ignorieren](/docs/merchants/basics/shop-settings/ignore-orders). |
| **Tag(s) hinzufügen** | Setzt einen oder mehrere Tags auf die Bestellung, kommagetrennt. |
| **Attribut hinzufügen** | Legt ein eigenes Feld an, das mit dem Fulfillment-Auftrag übertragen wird. |
| **Zahlungsstatus setzen** | Markiert die Bestellung als bezahlt oder als nicht bezahlt. |
| **Notiz in Bestellung setzen** | Schreibt eine Notiz, die auch an das Lager geht. |
| **Priorität setzen** | Eine Stufe von **-5** (niedrigste) bis **5** (höchste), **0** ist mittel — damit wichtige Bestellungen im Lager vorgezogen werden. |
| **PDF-Dokument aus URL anhängen** | Holt eine Rechnung oder einen Lieferschein von einer URL und hängt sie an. |
| **Attribut in Notiz schreiben**, **Notiz schreiben, wenn Attribut vorhanden**, **Schlüssel in Notiz schreiben für Wert**, **Meta-Schlüssel in Notiz schreiben für Wert** | Vier Varianten, um Zusatzdaten aus dem Shop in die Bestellnotiz zu bringen — je nachdem, ob du den Wert, den Schlüssel oder einen festen Text brauchst. |

Für einzelne **Positionen**:

| Aktion | Wirkung |
|---|---|
| **Bestellposition ignorieren** | Ignorierte Bestellpositionen werden nicht zu Fulfillment-Aufträgen hinzugefügt. |
| **Notiz in Bestellposition setzen** | Notiz auf Positionsebene, zum Beispiel für Personalisierungen. |

**Nach** der Übergabe an das Lager:

| Aktion | Wirkung |
|---|---|
| **Auftragsdokument erzeugen und anhängen** | Erzeugt ein Dokument aus einer **Druckvorlage** und überträgt es als Anhang an den Fulfillment-Auftrag — etwa ein Ausfuhrdokument für Lieferungen ins Ausland. |

### Auf der Seite Produkte

| Aktion | Wirkung |
|---|---|
| **Produkt nicht importieren** | Überspringt das Produkt bei der Produktsynchronisation. |
| **Feld überschreiben** | Setzt ein **Produktfeld** (Name, SKU, Beschreibung, EAN, UPC, ISBN, ASIN, UN-Nummer, HS Code, Ursprungsland) auf einen eigenen Wert — auch zusammengesetzt aus anderen Feldern. |
| **Attribut hinzufügen** | Legt ein eigenes Feld am Produkt an. Mit **In Artikeldaten berücksichtigen** wandert es in die Artikelstammdaten, sonst bleibt es nur am Listing sichtbar. |

### Auf der Seite Retouren

| Aktion | Wirkung |
|---|---|
| **Retoure erstatten oder ersetzen** | Löst für die eingetroffenen Artikel eine **Erstattung**, einen **Ersatz** oder einen **Gutschein** aus. Optional zusätzlich **Versandkosten erstatten** und **Artikel wieder einlagern**. |

> [!HINWEIS]
> Welche der drei Möglichkeiten angeboten werden, hängt von deinem Verkaufskanal ab. FFN Connect zeigt nur, was dein System auch tatsächlich unterstützt — deshalb kann die Auswahl von Kanal zu Kanal unterschiedlich aussehen.

## Drei Beispiele

**Eilige Bestellungen vorziehen**

- *Ziel:* Bestellungen, die im Shop den Tag `prio` tragen, sollen im Lager zuerst bearbeitet werden.
- *Bedingung:* `{order.tags}` — `Array: Contains` — `prio`
- *Aktion:* **Priorität setzen** → **Hoch (1)**

**Testbestellungen zurückhalten**

- *Ziel:* Bestellungen mit dem Tag `test` sollen sichtbar bleiben, aber nicht ins Lager gehen.
- *Bedingung:* `{order.tags}` — `Array: Contains` — `test`
- *Aktion:* **Bestellung ignorieren**, Option **Ignorierte Bestellungen importieren** aktiviert

Ohne diese Option wird die Bestellung gar nicht erst importiert — sie taucht dann in FFN Connect nicht auf.

**Retouren automatisch erstatten**

- *Ziel:* Sobald eine Retoure im Lager eingetroffen ist, soll der Kunde sein Geld zurückbekommen.
- *Bedingung:* `{return.status}` — `String: Equals` — **Ware eingetroffen**
- *Aktion:* **Retoure erstatten oder ersetzen** → **Erstattung**

![Eine gespeicherte Regel auf der Karte "Regeln für Retouren"](https://ffn-connect.de/docs-assets/merchants/basics/shop-settings/rules/_images/04-regeln-retouren.png)

Weitere fertige Beispiele findest du im Reiter **Beispiele** im Regel-Editor — unter anderem für Ausfuhrdokumente ab einem bestimmten Lieferland und für Retouren aus dem Retourenportal.

## Zusammenspiel mit den übrigen Einstellungen

Regeln stehen nicht neben den Schaltern auf derselben Seite, sondern greifen an bestimmten Stellen in denselben Ablauf ein. Drei Dinge sind dabei wichtig:

**Die Reihenfolge in der Liste zählt.** Regeln eines Zeitpunkts werden von oben nach unten abgearbeitet, und die Bedingung jeder Regel wird erst unmittelbar vor ihrer Ausführung geprüft. Eine Regel, die weiter oben steht und zum Beispiel einen Tag setzt, kann also darüber entscheiden, ob eine weiter unten stehende Regel überhaupt greift. Mit dem Griff links in der Liste bringst du die Regeln in die Reihenfolge, die du brauchst.

**Die Zeitpunkte laufen nacheinander.** Beim Import einer Bestellung kommen zuerst die Regeln für **Bestellpositionen**, danach die für die **Bestellung**. Die Regeln **nach Erstellung eines Fulfillment-Auftrags** laufen erst später, wenn der Auftrag beim Lager ist.

**Eine allgemeine Vorrangregel gibt es nicht.** Ob ein Schalter oder eine Regel „gewinnt", hängt an der einzelnen Aktion. Diese drei Fälle sind belegt:

- Positionen, die schon durch die Einstellungen ausgeschlossen sind — Gutscheine, Positionen ohne Artikelverknüpfung, Artikel, die du auf ignoriert gesetzt hast — werden **vor** den Positionsregeln aussortiert. Die Aktion **Bestellposition ignorieren** kann zusätzlich ausschließen, aber eine bereits ausgeschlossene Position nicht zurückholen.
- **Feld überschreiben** arbeitet auf den Daten, die gerade aus dem Shop gekommen sind, und zwar bevor das Listing gespeichert wird. Der Wert aus der Regel setzt sich also gegen den Wert aus dem Shop durch.
- **Bestellung ignorieren** wird bei jedem Abruf neu ausgewertet. Trifft die Bedingung später nicht mehr zu — weil du zum Beispiel den Tag im Shop entfernt hast — wird die Bestellung beim nächsten Abruf wieder freigegeben.

Für alles Übrige gilt: Lege die Regel an, lass eine echte Bestellung beziehungsweise ein echtes Produkt durchlaufen und prüfe das Ergebnis, bevor du sie auf den gesamten Kanal loslässt. Ein Kanal, den du in den [Bestelleinstellungen](/docs/merchants/basics/shop-settings/orders) noch nicht auf automatischen Abruf gestellt hast, eignet sich dafür am besten.

## Alte Regeln

In älteren Verkaufskanälen findest du unter den Erweiterten Regeln noch eine zweite Karte: **Alte Regeln für Bestellungen** beziehungsweise **Alte Regeln für Produkte in der Bestellung**, jeweils mit dem Zusatz **LEGACY**. Das ist die Vorgängerversion der Regeln, die es vor dem heutigen Editor gab.

Diese Karten erscheinen nur, wenn in deinem Kanal tatsächlich noch alte Regeln hinterlegt sind. Sie funktionieren weiterhin, werden aber nicht mehr weiterentwickelt.

> [!TIPP]
> Lege neue Regeln immer unter **Erweiterte Regeln** an. Wenn du eine alte Regel ohnehin anfassen musst, ist das ein guter Moment, sie in den neuen Editor zu übertragen — dort hast du mehr Felder, mehr Vergleiche und den Variablen-Baum zur Hand.
