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

# E-SUBS- (Abo-Modul)

> Die vier E-Mails des Abo-Moduls gestalten: Ankündigung an den Käufer, Übersicht für den Händler, Fehlermeldung und Meldung über abgeschaltete Abos.

Das Abo-Modul verschickt vier E-Mails: zwei Ankündigungen vor der nächsten Abo-Bestellung und zwei Fehlermeldungen an den Händler. Die Tags mit dem Präfix `E-SUBS_` gelten ausschließlich in den Templates dieser E-Mails.

Alle vier tragen Sie in der Shopkonfiguration `shop.config` im Abschnitt `Subscription` ein, jede in ihrem eigenen Unterabschnitt.

| Unterabschnitt | Geht an | Anlass |
| - | - | - |
| `SubscriberNotificationMail` | den Käufer | die nächste Abo-Bestellung steht an |
| `MerchantNotificationMail` | den Händler | Übersicht der demnächst anstehenden Abo-Bestellungen |
| `OrderErrorMail` | den Händler | eine Abo-Bestellung konnte nicht erzeugt werden |
| `DisabledNotificationMail` | den Händler | auch der zweite Versuch ist gescheitert |

Wegweiser: [Abo-Modul](https://dokumentation.websale.de/v8s/marketing-funktionen/abo-modul.md) · Referenz: Abschnitt Subscription · Materialien: [Materialien Abo-Modul](https://dokumentation.websale.de/v8s/materialien/materialien-abo-modul.md)

Die Abo-Verwaltung im Kundenkonto ist eine andere Baustelle. Sie arbeitet mit den Tags des Präfixes `SUBS-`, nicht mit den `E-SUBS_`Tags dieser Seite.

> [!WARNING]
>
> Der Parameter `Days` in den beiden Ankündigungsmails bestimmt, wie viele Tage vor der Bestellung die E-Mail hinausgeht. Bei einem kurzen Lieferintervall kann eine zu große Vorlaufzeit dazu führen, dass die Ankündigung vor der vorherigen Lieferung eintrifft.

## Die Schleife über die Abos

Zwei Schleifen stehen zur Wahl. Welche passt, hängt davon ab, wer die E-Mail bekommt.

| Tag | Läuft über |
| - | - |
| `E-SUBS_Data` | alle betroffenen Abos einzeln |
| `E-SUBS_DataByProduct` | dieselben Abos, nach Produkt gruppiert |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@E-SUBS_Data}
   <tr>
      <td>~E-SUBS_Data_PR_Name~</td>
      <td>~E-SUBS_Data_PR_Quantity~</td>
      <td>~E-SUBS_Data_PR_Price~ ~E-SUBS_Data_PR_CurrencyCode~</td>
      <td>~E-SUBS_Data_nextorder~</td>
   </tr>
{/@E-SUBS_Data}
```

Die Gruppierung nach Produkt ist für die Händler-Ankündigung gedacht. Der Händler will wissen, wie viel von welchem Artikel demnächst rausgeht, nicht welcher Kunde was bestellt hat. Der Käufer dagegen bekommt seine eigenen Abos einzeln aufgelistet.

> [!WARNING]
>
> Die beiden Schleifen lassen sich nicht ineinander schachteln. Steht `{@E-SUBS_DataByProduct}` innerhalb von `{@E-SUBS_Data}`, bleibt der innere Bereich leer. Entscheiden Sie sich je E-Mail für eine der beiden.

`E-SUBS_DataByProduct` lässt sich zusätzlich klammern. Der Bereich greift, wenn überhaupt gruppierte Abos vorliegen, und hält Tabellenkopf und Überschrift aus einer sonst leeren Mail heraus.

## Die Angaben zum Abo

Alle folgenden Tags stehen innerhalb der Schleife und beziehen sich auf das gerade durchlaufene Abo.

| Tag | Liefert |
| - | - |
| `E-SUBS_Data_Index` | den technischen Index des Abos |
| `E-SUBS_DATA_UserIndex` | den technischen Index des Kundenkontos |
| `E-SUBS_Data_PR_Index` | den Produktindex |
| `E-SUBS_Data_PR_Number` | die Produktnummer |
| `E-SUBS_Data_PR_Name` | den Produktnamen |
| `E-SUBS_Data_PR_Price` | den Preis |
| `E-SUBS_Data_PR_CurrencyCode` | den Währungscode |
| `E-SUBS_Data_PR_Quantity` | die abonnierte Menge |
| `E-SUBS_Data_PR_quantitydecimal` | die Zahl der Nachkommastellen der Menge |

> [!WARNING]
>
> Diese Tags sind **reine Einzel-Tags**. Diese Klammerung greift nicht, das Tag bleibt unaufgelöst in der E-Mail stehen. Prüfen Sie auf leere Werte nicht im Template, sondern verlassen Sie sich darauf, dass die Angaben zu einem bestehenden Abo vorhanden sind.

Produktname und Preis sind der Stand der letzten Bestellung beziehungsweise der letzten Änderung am Abo, nicht der heutige Katalogpreis. In der Ankündigung an den Käufer ist das die ehrlichere Angabe, weil sie zeigt, was zuletzt berechnet wurde. Weisen Sie im Text darauf hin, dass sich der Preis bis zur Lieferung ändern kann.

Das Tag gibt aus, mit wie vielen Nachkommastellen die Menge geführt wird, was bei Gewichts- oder Längenartikeln nötig ist.

## Zeitpunkte

| Tag | Liefert |
| - | - |
| `E-SUBS_Data_Created` | den Zeitpunkt, zu dem das Abo abgeschlossen wurde |
| `E-SUBS_Data_LastChange` | den Zeitpunkt der letzten Änderung |
| `E-SUBS_Data_lastorder` | den Zeitpunkt der letzten Abo-Bestellung |
| `E-SUBS_Data_nextorder` | den Zeitpunkt der nächsten Abo-Bestellung |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@E-SUBS_Data}
   <p>
      Ihr Abo für ~E-SUBS_Data_PR_Name~ läuft seit ~E-SUBS_Data_Created~.
      Die nächste Lieferung ist für ~E-SUBS_Data_nextorder~ vorgesehen.
   </p>
{/@E-SUBS_Data}
```

> [!WARNING]
>
> Bei `E-SUBS_Data_nextorder` ist nur der Datumsanteil aussagekräftig. Die Uhrzeit darin ergibt sich aus dem Sammellauf und sagt nichts über den Zeitpunkt der Lieferung aus. Geben Sie dem Käufer deshalb nur das Datum aus.

Alle vier Zeitpunkte kommen als Zeitstempel. Für eine lesbare Ausgabe formatieren Sie sie im Template, beispielsweise mit den Tags zur Datumsformatierung.

## Der Zustand eines Abos

| Tag | Greift, wenn das Abo |
| - | - |
| `E-SUBS_Data_state_isactive` | aktiv ist |
| `E-SUBS_Data_state_isnew` | neu auf der Liste ist |
| `E-SUBS_Data_state_ispaused` | pausiert ist |
| `E-SUBS_Data_state_istriggered` | neu ist und die Bestellung bereits angestoßen wurde |
| `E-SUBS_Data_state_code` | (Einzel-Tag) den Zustand als Zahl |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@E-SUBS_Data}
   ~E-SUBS_Data_PR_Name~

   {E-SUBS_Data_state_ispaused}
      <span class="hinweis">pausiert, es wird nichts geliefert</span>
   {/E-SUBS_Data_state_ispaused}

   {E-SUBS_Data_state_isnew}
      <span class="hinweis">neu abgeschlossen</span>
   {/E-SUBS_Data_state_isnew}

   {E-SUBS_Data_state_isactive}
      nächste Lieferung am ~E-SUBS_Data_nextorder~
   {/E-SUBS_Data_state_isactive}
{/@E-SUBS_Data}
```

> [!WARNING]
>
> Die vier Zustände schließen einander aus. Ein Abo ist entweder aktiv oder neu oder pausiert oder angestoßen, nie zweierlei zugleich. Eine Kette aus positiven Klammerungen deckt deshalb alle Fälle ab, eine Verschachtelung ist nicht nötig.
>
> Die Werte 0 für "nicht betroffen", 1 für "geändert", 2 für "pausiert" und 3 für "fortgesetzt" gehören nicht zu diesem Tag, sondern beschreiben die Änderungsarten der Abo-Verwaltung. Der Zahlenwert hier entspricht den vier oben genannten Zuständen. Verwenden Sie die vier `state_is…`-Klammerungen, die sind eindeutig, und greifen Sie nicht auf den Zahlenwert zurück.

## Prüfen, ob ein Produkt abonniert ist

| Tag | Greift, wenn |
| - | - |
| `E-SUBS_ProdIndexOnSubscription()` | ein Abo auf das Produkt mit diesem Produktindex läuft |
| `E-SUBS_ProdNumberOnSubscription()` | ein Abo auf das Produkt mit dieser Produktnummer läuft |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-SUBS_ProdNumberOnSubscription(12345)}
   <p>Für diesen Artikel haben wir ein Abo für Sie hinterlegt.</p>
{/E-SUBS_ProdNumberOnSubscription(12345)}
```

Beide Tags prüfen die gesamte Abo-Liste, nicht nur das gerade durchlaufene Abo. Sie stehen deshalb außerhalb der Schleife und eignen sich, um in einer E-Mail gezielt auf ein bestimmtes Produkt einzugehen.

## Die beiden Fehler-E-Mails

| Tag | Liefert |
| - | - |
| `E-SUBS_ErrorMsg` | die Fehlermeldung des XML-Bestellgenerators |
| `E-SUBS_ErrorCode` | den zugehörigen Fehlercode |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-SUBS_ErrorMsg}
   <p>Fehler: ~E-SUBS_ErrorMsg~ (Code ~E-SUBS_ErrorCode~)</p>
{/E-SUBS_ErrorMsg}

<table>
   {@E-SUBS_Data}
      <tr>
         <td>~E-SUBS_DATA_UserIndex~</td>
         <td>~E-SUBS_Data_PR_Number~</td>
         <td>~E-SUBS_Data_PR_Name~</td>
      </tr>
   {/@E-SUBS_Data}
</table>
```

`E-SUBS_ErrorCode` gilt nur im Template für `OrderErrorMail`. `E-SUBS_ErrorMsg` steht in allen Abo-Templates zur Verfügung.

> [!WARNING]
>
> Beide Fehler-E-Mails gehen an den Händler und nennen Kundenkonto und Produkt. Schicken Sie sie an eine interne Adresse und nicht an ein Postfach, das Dritte einsehen können.
>
> Die Meldung über endgültig abgeschaltete Abos wird nur verschickt, wenn für den Shop ein Secret für Deeplink-Mails konfiguriert ist. Fehlt es, unterbleibt der Versand und es erscheint lediglich ein Eintrag im Protokoll. Dasselbe gilt, wenn Empfängeradresse, Absenderadresse, Betreff oder Template fehlen oder das Template leer ist.

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `E-SUBS_Data` | – | – | – | ja |
| `E-SUBS_DataByProduct` | – | ja | ja | ja |
| `E-SUBS_Data_Index` | ja | – | – | – |
| `E-SUBS_DATA_UserIndex` | ja | – | – | – |
| `E-SUBS_Data_PR_Index` | ja | – | – | – |
| `E-SUBS_Data_PR_Number` | ja | – | – | – |
| `E-SUBS_Data_PR_Name` | ja | – | – | – |
| `E-SUBS_Data_PR_Price` | ja | – | – | – |
| `E-SUBS_Data_PR_CurrencyCode` | ja | – | – | – |
| `E-SUBS_Data_PR_Quantity` | ja | – | – | – |
| `E-SUBS_Data_PR_quantitydecimal` | ja | – | – | – |
| `E-SUBS_Data_Created` | ja | – | – | – |
| `E-SUBS_Data_LastChange` | ja | – | – | – |
| `E-SUBS_Data_lastorder` | ja | – | – | – |
| `E-SUBS_Data_nextorder` | ja | – | – | – |
| `E-SUBS_Data_state_code` | ja | – | – | – |
| `E-SUBS_Data_state_isactive` | – | ja | ja | – |
| `E-SUBS_Data_state_isnew` | – | ja | ja | – |
| `E-SUBS_Data_state_ispaused` | – | ja | ja | – |
| `E-SUBS_Data_state_istriggered` | – | ja | ja | – |
| `E-SUBS_ProdIndexOnSubscription()` | – | ja | ja | – |
| `E-SUBS_ProdNumberOnSubscription()` | – | ja | ja | – |
| `E-SUBS_ErrorMsg` | ja | ja | ja | – |
| `E-SUBS_ErrorCode` | ja | ja | ja | – |

Zulässig sind alle Tags dieser Seite in den vier E-Mail-Templates des Abo-Moduls. Die `Data_`Tags jeweils innerhalb einer der beiden Schleifen, `E-SUBS_ErrorCode` nur im Template für `OrderErrorMail`.

## Verwandte Themen

* Wegweiser: [Abo-Modul](https://dokumentation.websale.de/v8s/marketing-funktionen/abo-modul.md)
* Referenz: [Abschnitt Subscription](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md#subscription)
* Referenz: [SUBS- (Abo-Verwaltung im Kundenkonto)](https://dokumentation.websale.de/v8s/referenz/tags/subs/abos-verwalten.md)
* Materialien: [Materialien Abo-Modul](https://dokumentation.websale.de/v8s/materialien/materialien-abo-modul.md)


## Related topics

- [SUBS- (Abo abschließen)](https://dokumentation.websale.de/v8s/referenz/tags/subs/abo-abschliessen.md)
- [SUBS- (Abos verwalten)](https://dokumentation.websale.de/v8s/referenz/tags/subs/abos-verwalten.md)
- [Abo-Modul](https://dokumentation.websale.de/v8s/marketing-funktionen/abo-modul.md)
- [Materialien Abo-Modul](https://dokumentation.websale.de/v8s/materialien/materialien-abo-modul.md)
- [Warenkorb und Bestellprozess](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.