> ## 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.

# Materials: E-Marketing-Manager

> The two newsletter templates of the E-Marketing-Manager: incl_newsletter.htm for subscribing, unsubscribing, and managing settings, incl_newsletter_onlineview.htm for the online view.

The E-Marketing-Manager needs two templates in the shop: one for subscribing, unsubscribing, and managing personal settings, and one for the online view of the newsletter. This page contains both as a starting point.

Copy the files under the specified names into your template directory. All labels are sample texts.

Guide: E-Marketing-Manager · Reference: E-NL tags

## The two templates

| File | Purpose |
| - | - |
| `incl_newsletter.htm` | subscribing, unsubscribing, and managing, all in one form |
| `incl_newsletter_onlineview.htm` | displays a sent newsletter in the browser |

## incl\_newsletter.htm

The template contains three areas in a single form. The shop decides which of them appears using the three section tags `E-NL-SEC-subscribe`, `E-NL-SEC-unsubscribe`, and `E-NL-SEC-manage`. The hidden field `logintype` then tells the server which area was submitted.

> [accordion] incl\_newsletter.htm
>
> ```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
> <html>
> <head>
> <title>Inhaltsseite für die An- und Abmeldung zum Newsletter</title>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
> <base href="~URL-Template~">
> </head>
>
> <body>
> {WS-Include}
> {E-NL-SEC-subscribe}<h1>Newsletter-Anmeldung</h1>{/E-NL-SEC-subscribe}
> {E-NL-SEC-unsubscribe}<h1>Newsletter-Abmeldung</h1>{/E-NL-SEC-unsubscribe}
> {E-NL-SEC-manage}<h1>Newsletter-Verwaltung</h1>{/E-NL-SEC-manage}
>
> <form id="WSNL_FORM" action="~FORM-Template(tpl_newsletter.htm)~" method="post" class="newsletter">
>    <input type="hidden" name="NLact" value="Login">
>    <div id="WSNL_ErrorMsg">
>       {E-NL-SEC-ajax}<ws-ajax-WSNL_ErrorMsg>{/E-NL-SEC-ajax}
>          ~E-NL-MSG-Error~
>       {E-NL-SEC-ajax}</ws-ajax-WSNL_ErrorMsg>{/E-NL-SEC-ajax}
>    </div>
>    <div id="WSNL_InfoMsg">
>       {E-NL-SEC-ajax}<ws-ajax-WSNL_InfoMsg>{/E-NL-SEC-ajax}
>          ~E-NL-MSG-Info~
>       {E-NL-SEC-ajax}</ws-ajax-WSNL_InfoMsg>{/E-NL-SEC-ajax}
>    </div>
>    <script type="text/javascript">
>       if($.trim($("#WSNL_ErrorMsg").text()) == "") { $("#WSNL_ErrorMsg").hide(); }
>       if($.trim($("#WSNL_InfoMsg").text()) == "") { $("#WSNL_InfoMsg").hide(); }
>    </script>
>
>    {E-NL-SEC-subscribe}
>       <label>Anrede</label>
>       ~E-NL-INPUT-Salutation(~E-NL-A-Salutation~, class="select_salutation~E-NL-A-Salutation_error~")~
>       <label>Titel</label>
>       <input type="text" name="~E-NL-A-Title_name~" value="~E-NL-A-Title~" class="input~E-NL-A-Title_error~" maxlength="20">
>       ~E-NL-A-Title_hidden~
>       <label>Vorname</label>
>       <input type="text" name="~E-NL-A-FirstName_name~" value="~E-NL-A-FirstName~" class="input~E-NL-A-FirstName_error~" maxlength="50">
>       ~E-NL-A-FirstName_hidden~
>       <label>Nachname</label>
>       <input type="text" name="~E-NL-A-LastName_name~" value="~E-NL-A-LastName~" class="input~E-NL-A-LastName_error~" maxlength="50">
>       ~E-NL-A-LastName_hidden~
>       <label>Ihre E-Mail-Adresse *</label>
>       <input type="text" name="~E-NL-A-E-mail_name~" value="~E-NL-A-e-mail~" class="input~E-NL-A-e-mail_error~">
>       <h2>Bitte wählen Sie Ihre Interessengebiete</h2>
>       <input type="checkbox" value="1" name="~E-NL-Targetgroup_name(1)~" ~E-NL-Targetgroup_checked(1)~>
>       ~E-NL-TargetGroup_hidden(1)~ ~E-NL-TargetGroup(1)~
>       <input type="hidden" name="logintype" value="subscribe">
>       <input type="submit" class="WSNL_button" value="Zum Newsletter anmelden">
>    {/E-NL-SEC-subscribe}
>
>    {E-NL-SEC-unsubscribe}
>       <label>Ihre E-Mail-Adresse *</label>
>       <input type="text" name="~E-NL-A-E-mail_name~" value="~E-NL-A-e-mail~" class="input~E-NL-A-e-mail_error~">
>       <h2>Abmeldung vom Newsletter und allen Newsletter-Listen</h2>
>       <input type="checkbox" value="blacklist" name="~E-NL-BlackList_name~" ~E-NL-BlackList_checked~ id="blackbox_checkbox">
>       ~E-NL-BlackList_hidden~
>       Ja, ich möchte aus allen Versandlisten entfernt werden.
>       <input type="hidden" name="logintype" value="unsubscribe">
>       <input type="submit" class="WSNL_button" value="Vom Newsletter abmelden">
>    {/E-NL-SEC-unsubscribe}
>
>    {E-NL-SEC-manage}
>       <!-- Optionaler Bereich für die Newsletter-Verwaltung durch einen angemeldeten Kunden -->
>       <input type="hidden" name="logintype" value="manage">
>       <div id="WSNL_Manage">
>          {E-NL-SEC-ajax}<ws-ajax-WSNL_Manage>{/E-NL-SEC-ajax}
>          {E-NL-Receiver}
>             <p>Hier können Sie Ihre Daten und Einstellungen zum Newsletterversand verwalten.</p>
>          {/E-NL-Receiver}
>
>          {!E-NL-Receiver}
>             <p>Wir freuen uns, wenn Sie sich für unseren Newsletter interessieren!
>             Wenn Sie sich zum Newsletterversand anmelden möchten, füllen Sie bitte untenstehende Felder aus und wählen Sie Ihr Themengebiet.
>             Sie erhalten dann ab sofort unseren Newsletter zugesandt.</p>
>          {/!E-NL-Receiver}
>
>          <h2>Ihre Daten</h2>
>          <label>Firma</label>
>          <input type="text" name="~E-NL-A-Company_name~" value="~E-NL-A-Company~" maxlength="50" class="input~E-NL-A-Company_error~">
>          ~E-NL-A-Company_hidden~
>          <label>Anrede</label>
>          ~E-NL-INPUT-Salutation(~E-NL-A-Salutation~, class="select_salutation~E-NL-A-Salutation_error~")~
>          <label>Titel</label>
>          <input type="text" name="~E-NL-A-Title_name~" value="~E-NL-A-Title~" class="input~E-NL-A-Title_error~" maxlength="20">
>          ~E-NL-A-Title_hidden~
>          <div class="clear"></div>
>          <label>Vorname</label>
>          <input type="text" name="~E-NL-A-FirstName_name~" value="~E-NL-A-FirstName~" class="input~E-NL-A-FirstName_error~" maxlength="50">
>          ~E-NL-A-FirstName_hidden~
>          <label>Name</label>
>          <input type="text" name="~E-NL-A-LastName_name~" value="~E-NL-A-LastName~" class="input~E-NL-A-LastName_error~" maxlength="50">
>          ~E-NL-A-LastName_hidden~
>          <div class="clear"></div>
>          <label>Straße</label>
>          <input type="text" name="~E-NL-A-Street1_name~" value="~E-NL-A-Street1~" class="input~E-NL-A-Street1_error~" maxlength="80">
>          ~E-NL-A-Street1_hidden~
>          <label>Land</label>
>          ~E-NL-INPUT-Country(~E-NL-A-Country~, class="select_country~E-NL-A-Country_error~")~
>          <label>PLZ</label>
>          <input type="text" name="~E-NL-A-Zip_name~" value="~E-NL-A-Zip~" class="input_zip~E-NL-A-Zip_error~" maxlength="12">
>          ~E-NL-A-Zip_hidden~
>          <label>Ort</label>
>          <input type="text" name="~E-NL-A-City_name~" value="~E-NL-A-City~" class="input_city~E-NL-A-City_error~" maxlength="100">
>          ~E-NL-A-City_hidden~
>          <label>Ihre E-Mail-Adresse</label>
>          <input type="text" name="~E-NL-A-EMail_name~" value="~E-NL-A-EMail~" class="input~E-NL-A-EMail_error~">
>          <h2>Bitte wählen Sie Ihre Interessengebiete</h2>
>          <input type="checkbox" value="1" name="~E-NL-Targetgroup_name(1)~" ~E-NL-Targetgroup_checked(1)~>
>          ~E-NL-TargetGroup_hidden(1)~ ~E-NL-TargetGroup(1)~
>
>          {E-NL-Receiver}
>             <input type="submit" value="Einstellungen speichern" class="button">
>          {/E-NL-Receiver}
>          {!E-NL-Receiver}
>             <input type="submit" value="Newsletter bestellen" class="button">
>          {/!E-NL-Receiver}
>
>          {E-NL-Receiver}
>             <h2>Newsletter abbestellen oder vorübergehend deaktivieren</h2>
>             <p>Hier können Sie sich jederzeit abmelden. Sofort nach dem Absenden tragen wir Sie aus unserer Newsletter-Liste aus
>             und Sie erhalten keine weiteren Nachrichten mehr. Wir bedauern Ihre Entscheidung und bedanken uns für Ihr bisheriges Interesse.</p>
>             <input type="radio" value="~E-NL-StatusActive_value~" name="~E-NL-Status_name~" ~E-NL-StatusActive_checked~>
>             Ich möchte den Newsletter weiterhin erhalten.
>             <input type="radio" value="~E-NL-StatusPaused_value~" name="~E-NL-Status_name~" ~E-NL-StatusPaused_checked~>
>             Ich möchte den Newsletter vorübergehend abbestellen bis:
>             <input type="text" name="~E-NL-Pause_name~" value="~E-NL-Pause~" class="Input~E-NL-PauseTillDate_error~" maxlength="12" id="ws_nl_datepicker">
>             <input type="hidden" value="~E-NL-PauseTypeDate~" name="~E-NL-PauseType_name~">
>             <input type="radio" value="~E-NL-StatusBlackList_value~" name="~E-NL-Status_name~" ~E-NL-StatusBlackList_checked~>
>             Ich möchte mich vom Newsletter abmelden und aus allen Versandlisten entfernt werden.
>             ~E-NL-Status_hidden~
>             <input type="submit" value="Einstellungen speichern">
>          {/E-NL-Receiver}
>
>          {E-NL-SEC-ajax}</ws-ajax-WSNL_Manage>{/E-NL-SEC-ajax}
>       </div>
>    {/E-NL-SEC-manage}
>
> </form>
> {/WS-Include}
>
> </body>
> </html>
> ```

### The hidden fields aren't optional

Every input field has a counterpart with the suffix `_hidden`, for example `~E-NL-A-Title_hidden~` next to the title field. Don't omit any of them. Why they're needed and what happens without them is explained on the reference page about the subscription.

Reference: E-NL, managing the subscription

### The pause date

The input field for "temporarily unsubscribe until" expects the date in the format `JJJJ-MM-TT` (YYYY-MM-DD), for example `2026-12-24`. `~E-NL-Pause~` outputs it in exactly this format.

> [!WARNING]
>
> If you attach a date picker to this field, set it to this format. The server can't read a date in German format. Instead of an error message, it then sets the pause to a point in the past, so it ends immediately.

### Unsubscribing needs more than the checkbox

The unsubscribe area in the example contains only the checkbox for complete blocking. That isn't enough for all cases: if the recipient doesn't check this checkbox, the server expects at least one checked area of interest to unsubscribe from. Without one, it aborts with an error message.

So add the same area-of-interest checkboxes to the unsubscribe area as in the subscribe area, each with its `_hidden` tag. This was added here; the previous documentation doesn't mention it.

## incl\_newsletter\_onlineview\.htm

This template is short. It displays an already sent newsletter in the browser, for recipients whose email client doesn't render it properly.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
   <title>Inhaltsseite für die Online-Ansicht des Newsletters</title>
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <base href="~URL-Template~">
</head>

<body>
{WS-Include}
{E-NL-SEC-ShowOnlineNewsletter}
   <!-- Bereich für die Online-Ansicht des Newsletters -->
   <p>~E-NL-OnlineView~</p>
{/E-NL-SEC-ShowOnlineNewsletter}
{E-NL-SEC-ShowErrorOnlineView}
   <!-- Bereich für eine Hinweismeldung, wenn die Online-Ansicht des Newsletters derzeit nicht möglich ist -->
   <p>Es ist ein Fehler aufgetreten. Der Newsletter konnte nicht korrekt geladen werden!</p>
{/E-NL-SEC-ShowErrorOnlineView}
{/WS-Include}
</body>
</html>
```

> [!NOTE]
>
> `~E-NL-OnlineView~` returns the complete newsletter as HTML. The example wraps it in a `p` element, where block elements don't actually belong. Use a `div` instead, otherwise the browser breaks the element up on its own.

## Two notes on both templates

> [!NOTE]
>
> Both examples use the HTML 4.01 doctype and `charset=ISO-8859-1`. For a new shop, use the doctype and character set of your other templates instead, usually HTML5 and UTF-8. The `E-NL-` tags work with both.

> [!NOTE]
>
> In the examples, the labels are `label` elements without a reference to their field. So that clicking a label focuses the field and screen readers recognize the association, give each input field an `id` and reference it from the `label` with `for`.

## Where the tags are described

This page explains the two sample files. The complete description of all `E-NL-` tags is on the four reference pages, organized by topic.

Reference: E-NL, subscription form · Managing the subscription · Page states and messages · Vouchers

The examples use only some of them. Particularly worthwhile are `E-NL-TargetGroup_definition(n)` for an explanatory text next to the checkbox, `E-NL-A-Street2` for the second street line, and `E-NL-Subshop()` if your subshops offer different areas of interest.

> [!NOTE]
>
> Compared to the previous documentation, six spots in the listings have been corrected: `tye` instead of `type` on the `script` element, the blocking checkbox that was marked up as a hidden field, the missing `value` on the first name field in the subscribe area, the permanently checked area-of-interest checkbox in the subscribe area, the invalid `name` and empty `for` attributes on the labels, and the spelling `Form-Template`.


## Related topics

- [Migration from Newsletter V2 to E-Marketing-Manager](https://dokumentation.websale.de/en/v8s/marketing-funktionen/migration-von-newsletter-v2-zu-e-marketing-manager.md)
- [General online services](https://dokumentation.websale.de/en/v8s/online-servicebereich/allgemeine-online-dienste.md)
- [External services and interfaces](https://dokumentation.websale.de/en/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md)
- [E-NL- (Managing the subscription)](https://dokumentation.websale.de/en/v8s/referenz/tags/e-nl/abonnement-verwalten.md)
- [E-NL- (Sign-up form)](https://dokumentation.websale.de/en/v8s/referenz/tags/e-nl/anmeldeformular.md)


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