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

# general - Allgemeine Shopeinstellungen

> Der general-Knoten enthält allgemeine WEBSALE-Shopeinstellungen: Sprachen, Länder, Subshops, Kundenkonto, Sicherheit, Testmodus und Consent-Management.

export const confTestmodus = "Einstellungen → Shop-Konfiguration → Gruppe „Testmodus\"";

export const confAllgemein = "Einstellungen → Shop-Konfiguration → Gruppe „Allgemein\"";

export const confKundenkonto = "Einstellungen → Shop-Konfiguration → Gruppe „Kundenkonto\"";

export const confSprache = "Einstellungen → Shop-Konfiguration → Gruppe Sprache";

export const confZahlenformatierung = "Einstellungen → Shop-Konfiguration → Gruppe „Zahlenformatierung\"";

export const confSubshops = "Einstellungen → Shop-Konfiguration → Gruppe „Subshops\"";

export const confGarbageCollection = "Einstellungen → Shop-Konfiguration → Gruppe Garbage Collection";

export const confSicherheit = "Einstellungen → Shop-Konfiguration → Gruppe „Sicherheit\"";

export const confSonstige = "Einstellungen → Shop-Konfiguration → Gruppe „Sonstige Module\"";

export const confAdminInterface = "Einstellungen → Shop-Konfiguration → Gruppe „Admin Interface\"";

export const confAdressdaten = "Einstellungen → Shop-Konfiguration → Gruppe „Adressdaten\"";

export const KonfigDeeplink = ({node}) => <>
    Die Einstellung kann über folgenden Link direkt im Admin-Interface geöffnet werden:{" "}
    <code>{`https://<shop-domain>/admin/config/${node}`}</code>{" "}
    (<a href="/konfiguration/konfigurations-deeplinks">Deeplink-Übersicht</a>)
  </>;

export const TextbausteinHinweis = () => <>
    Dieser Text wird über einen Textbaustein realisiert.<br />
    Alles zu Textbausteinen in Konfigurationen finden Sie{" "}
    <a href="https://dokumentation.websale.de/konfiguration#verwendung-von-textbausteinen-in-konfigurationen">hier</a>.
  </>;

Der Knoten `general` bündelt sämtliche allgemeinen und systemweiten Grundeinstellungen des Onlineshops. Er ist einer der zentralsten und zugleich umfangreichsten Konfigurationsbereiche und enthält Parameter, die zahlreiche Module, Funktionen und Darstellungen des Shops beeinflussen.

Im Admin Interface sind die hier zusammengeführten Einstellungen nicht unter einem einzigen Menüpunkt zu finden. Sie betreffen unterschiedliche Funktionsbereiche (z. B. Sprachen, Länder, Subshops, Consent-Management) und sind dort entsprechend thematisch gruppiert.\
Die jeweilige Zuordnung im Admin Interface wird in der Dokumentation des jeweiligen Abschnitts angegeben.

Über diesen Knoten lassen sich u. a. folgende Aspekte steuern:

* Aktivierungsstatus, Zeitzone und Basisparameter des Shops
* Definition der verfügbaren Länder, Sprachen, Titel und Anreden
* Subshop-spezifische Einstellungen (z. B. Sprache, Währung, Theme)
* Cookie- und Tracking-Consent-Gruppen inkl. einzelner Dienste
* Formatierungen für Preise, Mengen und Gewichte
* Postleitzahl-Prüfungen pro Land
* Einstellungen für Testmodus, Kundenkontolöschung und Session-Gültigkeit

Der Knoten bildet somit die zentrale Konfigurationsbasis des gesamten Systems und stellt grundlegende Abhängigkeiten für viele weitere Knoten wie basket, finance, content oder customer her.

## `general*` - Grundstruktur

Nachfolgend der Grundaufbau des Knotens `general`:

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "general": {
    "addressListElements": { },
    "adminAccountSettings": { },
    "asse": { },
    "consentCookieGroup": { },
    "consentCookieService": { },
    "country": { },
    "customerAccountSettings": { },
    "deviceTypes": { },
    "garbageCollection": { },
    "general": { },
    "language": { },
    "numberFormat": { },
    "order": { },
    "orderSortOption": { },
    "productRating": { },
    "salutation": { },
    "sitemap": { },
    "subshop": { },
    "subshopView": { },
    "testMode": { },
    "title": { },
    "zipCodes": { }
  }
}
```

#### Parameterbeschreibung:

| **Parameter**             | **Beschreibung**                                                                                                                                    |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `addressListElements`     | Definiert auswählbare Listen (Dropdowns/Radio-Listen) für Adressformulare.                                                                          |
| `adminAccountSettings`    | Anmelderichtlinien für das Admin Interface (max. Fehlversuche, Sperrzeit).                                                                          |
| `asse`                    | Konfiguration der asynchronen Server-Side-Event-Schnittstelle (ASSE) für Webhooks/Integrationen.                                                    |
| `consentCookieGroup`      | Gruppen (Kategorien) im Consent Layer, die mehrere Services zusammenfassen.                                                                         |
| `consentCookieService`    | Einzeldefinition der zustimmungspflichtigen Cookie-/Tracking-Dienste im Consent Layer.                                                              |
| `country`                 | Definiert die im Shop auswählbaren Länder inkl. ISO-Codes und Steuerzuordnung.                                                                      |
| `customerAccountSettings` | Verhalten bei Löschung von Kundenkonten (Soft Delete, WaWi-Abgleich).                                                                               |
| `deviceTypes`             | Definition der erkannten Gerätetypen (Desktop, Tablet, Smartphone).                                                                                 |
| `garbageCollection`       | Gültigkeitsdauer von Sessions und automatische Bereinigung abgelaufener Sitzungen.                                                                  |
| `general`                 | Allgemeine Basisparameter (Status, Zeitzone, URL-/Referer-Parameter).                                                                               |
| `language`                | Definiert die im System verfügbaren Sprachen.                                                                                                       |
| `numberFormat`            | Formatierung von Preisen, Mengen und Gewichten (Trennzeichen, Nachkommastellen).                                                                    |
| `order`                   | Definiert optionale Bestellstatus (z. B. „in Bearbeitung", „versendet").  <br />Konfiguration im Admin Interface direkt im Service "*Bestellungen"* |
| `orderSortOption`         | Individuelle Sortieroptionen für die Bestellübersicht (Feld + Richtung).                                                                            |
| `productRating`           | Konfiguration des Bewertungs­system für Produkte im Shop.  <br />Konfiguration im Admin Interface unter *Marketing → Kundenbewertungen*.            |
| `salutation`              | Definiert die verfügbaren Anreden (z. B. Herr, Frau).                                                                                               |
| `sitemap`                 | Aktiviert bzw. konfiguriert die Generierung einer Sitemap.  <br />Konfiguration im Admin Interface unter *SEO*.                                     |
| `subshop`                 | Definiert die einzelnen Subshops (ID, Sprachzuordnung, Speicherreferenz).                                                                           |
| `subshopView`             | Basis-Einstellungen je Subshop (Sprache, Währung, Länder, Theme).                                                                                   |
| `testMode`                | Aktiviert und steuert den passwortgeschützten Testmodus des Shops.                                                                                  |
| `title`                   | Definiert die verfügbaren Titel für die Anrede (z. B. Dr., Prof.).                                                                                  |
| `zipCodes`                | Syntaktische Postleitzahl-Prüfung je Land per Regex.                                                                                                |

## `general.addressListElements` - Adresslisten

Der Knoten `general.addressListElements` definiert auswählbare Listen (Dropdowns/Radio-Listen) für Adressformulare.

Jedes Listenelement besitzt eine eindeutige ID, einen technischen Namen, optional einen Anwendungsbereich (Rechnungs-/Lieferadresse) sowie die auswählbaren Werte.

<KonfigDeeplink node="general.addressListElements" />

#### Beispielkonfiguration (`general.addressListElements.billAddressType`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "addressType": "both",
  "dataId": "billAddressType",
  "defaultValue": "1",
  "name": "Adresstyp Rechnungsadresse",
  "values": [
    {
      "name": "Privat",
      "value": "1"
    },
    {
      "name": "Firma",
      "value": "2"
    }
  ]
}
```

#### Parameterübersicht

| **Parameter**  | **Typ**       | **Beschreibung**                                                                                                                                                                                                                            |
| -------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `addressType`  | enum          | Optionaler Geltungsbereich der Liste.  <br />Zulässige Werte: <br />`"bill"` (nur Rechnungsadresse), `"delivery"` (nur Lieferadresse), `"both"` (beide). <br />Standard: wenn weggelassen, gilt die Liste überall, wo sie eingebunden wird. |
| `defaultValue` | string        | Optionaler Standardwert (String). <br />Wenn gesetzt, wird dieser Wert initial vorausgewählt. <br />Muss einem `values[].value` entsprechen.                                                                                                |
| `dataId`       | string        | Eindeutige ID der Liste (String). <br />Muss innerhalb aller Adresslisten einzigartig sein; dient der technischen Identifikation.                                                                                                           |
| `name`         | string        | Technischer Name der Liste (String). In der Regel analog zu `dataId`.                                                                                                                                                                       |
| `values`       | list (object) | Array der auswählbaren Einträge. Reihenfolge = Anzeige-Reihenfolge.                                                                                                                                                                         |
| `name`         | string        | Sichtbarer Anzeigename in der UI (z. B. „Privat", „Firma").                                                                                                                                                                                 |
| `value`        | string        | Technischer Wert (String), der gespeichert/übertragen wird.                                                                                                                                                                                 |

## `general.adminAccountSettings` - Anmelderichtlinien für das Admin Interface

Der Knoten `general.adminAccountSettings` definiert sicherheitsrelevante Vorgaben für das Admin Interface des Shops.

Hier wird festgelegt, wie viele fehlgeschlagene Anmeldeversuche erlaubt sind und wie lange ein Benutzer nach Erreichen dieses Limits gesperrt bleibt, bevor ein erneuter Loginversuch möglich ist.\
Die Einstellungen dienen dem Schutz vor unbefugtem Zugriff und Brute-Force-Angriffen.

<KonfigDeeplink node="general.adminAccountSettings" />

#### Beispielkonfiguration (`general.adminAccountSettings`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "maxLoginAttempts": 3,
  "minutesToWait": 10
}
```

#### Parameterübersicht

| **Parameter**      | **Typ** | **Beschreibung**                                                                                                                                                                           |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `maxLoginAttempts` | int     | Maximale Anzahl an erlaubten Fehlversuchen bei der Anmeldung im Admin Interface. <br />Nach Überschreiten dieses Werts wird der Benutzerzugang temporär gesperrt.     <br />Default: **3** |
| `minutesToWait`    | int     | Dauer der Sperrzeit (in Minuten), bevor ein weiterer Anmeldeversuch möglich ist.      <br />Default: **10**                                                                                |

**Hinweis:** Diese Sperrung betrifft ausschließlich den Zugang zum Admin Interface und hat keine Auswirkungen auf Benutzerkonten im Frontend oder im Kundenbereich des Shops.

## `general.asse` - Schnittstelle für Asynchronous Server-Side Events (ASSE)

Der Knoten `general.asse` definiert die Konfiguration der asynchronen Server-Side-Event-Schnittstelle (ASSE).

Über diese Schnittstelle können serverseitige Ereignisse (Events) automatisiert an externe Systeme übermittelt werden, z. B. für Webhooks, Benachrichtigungen oder Integrationen mit Drittsystemen.

<KonfigDeeplink node="general.asse" />

#### Beispielkonfiguration (`general.asse.subscribeNewsletter2Go`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "additionalHTTPHeaders": [
    { "key": "Authorization", "value": "Bearer <API_KEY>" },
    { "key": "Accept", "value": "application/json" }
  ],
  "contentType": "json",
  "id": "sendOrderToERP",
  "numberRetries": 5,
  "requestMethod": "post",
  "retryDelay": 30,
  "successConditions": [
    { "httpStatus": 201 },
    {
      "type": "responseJsonData",
      "jsonPath": "/status",
      "conditionType": "equal",
      "value": {
        "string": "created"
      }
    }
  ],
  "timeout": 15,
  "url": "https://erp.example.com/api/v2/orders"
}
```

#### Parameterübersicht

| **Parameter**           | **Typ**       | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `additionalHTTPHeaders` | list (object) | Liste zusätzlicher HTTP-Header, die beim Request an die Ziel-URL mitgesendet werden sollen. <br />Jeder Eintrag wird als Key-Value-Paar definiert.  <br />Falls das externe System eine Authentifizierung oder einen API-Schlüssel erwartet, kann dieser ebenfalls über `additionalHTTPHeaders` ergänzt werden, z. B.:  `{ "key": "Authorization", "value": "Bearer <API_KEY>" }` |
| `contentType`           | enum          | Datenformat des Request-Bodys. <br />Zulässige Werte: `"json"` (Standard), `"xml"` oder `"txt"`.                                                                                                                                                                                                                                                                                  |
| `id`                    | string        | Eindeutige Kennung der ASSE-Konfiguration, z.B. für den Prozess Newsletter-Anmeldung.                                                                                                                                                                                                                                                                                             |
| `numberRetries`         | int           | Anzahl der Wiederholungsversuche, falls die Übertragung fehlschlägt.     <br /> Default: **3**                                                                                                                                                                                                                                                                                    |
| `payloadParameterName`  | string        | Optionaler Parametername, unter dem die eigentlichen Nutzdaten (Payload) übertragen werden. <br />Wenn leer, wird der Payload direkt im Request-Body gesendet.                                                                                                                                                                                                                    |
| `requestMethod`         | enum          | HTTP-Methode für die Übertragung. <br />Typischerweise `"post"`, alternativ `"put"` ,`"patch", "get"` oder `"delete"` möglich.                                                                                                                                                                                                                                                    |
| `retryDelay`            | int           | Zeitintervall (in Sekunden) zwischen Wiederholungsversuchen bei Fehlschlägen.  <br />Default: **10**                                                                                                                                                                                                                                                                              |
| `successConditions`     | list (object) | Liste von Bedingungen, die eine erfolgreiche Übertragung kennzeichnen (z. B. erwartete HTTP-Statuscodes oder Response-Keywords).                                                                                                                                                                                                                                                  |
| `timeout`               | int           | Maximale Wartezeit (in Sekunden) für die Serverantwort, bevor der Request abgebrochen und ggf. wiederholt wird.  <br />Default: **10**                                                                                                                                                                                                                                            |
| `url`                   | string        | Ziel-URL, an die das Event gesendet wird. Muss erreichbar und für POST-/PUT-Anfragen vorbereitet sein.                                                                                                                                                                                                                                                                            |

## `general.consentCookie*` - Consent Layer

Es werden alle Einstellungen definiert, die den Einwilligungsdialog für Cookies, Tracking- und Analysedienste betreffen.

Dieser Layer wird beim ersten Besuch des Shops angezeigt und ist gemäß DSGVO (Datenschutz-Grundverordnung) und ePrivacy-Richtlinie verpflichtend, sobald der Shop Daten des Besuchers erhebt oder externe Dienste (z. B. Tracking, Captcha, Medien-Einbindungen) nutzt.

Zu den hier konfigurierten Consent-Einstellungen können ergänzend Fehlermeldungen oder Benachrichtigungstexte im Abschnitt [actions.consentChange](/konfiguration/actions-fehlertexte-e-mails/actions-sicherheit-datenschutz) definiert werden.

### `general.consentCookieGroup` - Gruppierung zustimmungspflichtiger Cookies/Trackings

Der Knoten `general.consentCookieGroup` definiert die Gruppen, die im Consent Layer (Cookie-Banner) des Shops angezeigt werden, also die bekannten Kategorien wie z.B. Notwendige Cookies, Statistik oder Marketing.

Jede Gruppe fasst einen oder mehrere Services zusammen. Diese Services werden separat unter `general.consentCookieService` (Punkt 5.2) angelegt und hier per Referenz zugewiesen.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter *Einstellungen* → *Shop-Konfiguration* und der Gruppe *Sicherheit*.

**Wie hängen Gruppen und Services zusammen?**\
Eine Gruppe ist die Kategorie, die der Besucher im Consent Layer (Cookie-Banner) sieht und per Checkbox akzeptieren oder ablehnen kann, z.B. "Marketing".

Ein Service ist ein konkretes Tracking- oder Cookie-Tool, das dieser Gruppe zugeordnet ist, z.B. "Google Ads" oder "Meta Pixel".

Einer Gruppe können beliebig viele Services zugeordnet werden. Der Besucher stimmt immer der gesamten Gruppe zu, nicht einzelnen Services.

**Woher kommen die Service-Bezeichnungen?**\
Die Bezeichnungen unter `services` (z.B. `general.consentCookieService.googleads`) setzen sich immer aus dem Präfix `general.consentCookieService` und dem technischen Namen des jeweiligen Service zusammen. Es gibt folgende Arten von Services:

* Mitgelieferte Standardservices - diese sind bereits im System vordefiniert und können direkt referenziert werden. Eine Liste der verfügbaren Standardservices befindet sich in Abschnitt 5.2.
* Selbst angelegte Services - eigene Services können unter `general.consentCookieService` frei angelegt werden (z.B. für ein eigenes Tracking-Tool). Der dort vergebene `name` ergibt dann den Referenzpfad.

<KonfigDeeplink node="general.consentCookieGroup" />

#### Beispielkonfiguration für die Gruppe "Marketing" (`general.consentCookieGroup.marketing`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "description": "<Textbaustein>",
  "label": "<Textbaustein>",
  "name": "marketing",
  "services": [
    "general.consentCookieService.awin",
    "general.consentCookieService.googleads",
    "general.consentCookieService.metapixel"
  ]
}
```

Mehrere Services werden als Liste unter `services` eingetragen. Jeder Eintrag referenziert einen Service-Knoten, der unter `general.consentCookieService` angelegt wurde.

#### Beispielkonfiguration für die Gruppe "Statistik" (`general.consentCookieGroup.statistics`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "description": "<Textbaustein>",
  "label": "<Textbaustein>",
  "name": "statistics",
  "services": [
    "general.consentCookieService.googleanalytics",
    "general.consentCookieService.econda"
  ]
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ**    | **Beschreibung**                                                                                                                                                                                                             |
| ------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `description` | string     | Erklärtext zur Gruppe, der im Consent Layer für den Besucher angezeigt wird. <br />Hier empfiehlt sich ein datenschutzrechtlich korrekter Hinweistext, z. B. mit Bezug auf Art. 6 DSGVO. <br /><br /><TextbausteinHinweis /> |
| `label`       | string     | Anzeigename der Gruppe im Consent Layer, z. B. „Marketing" oder „Statistik". <br /><br /><TextbausteinHinweis />                                                                                                             |
| `name`        | string     | Technischer Bezeichner der Gruppe. <br />Wird intern für die Zuordnung und in der Template Engine verwendet. <br />Nur Kleinbuchstaben, keine Sonderzeichen.                                                                 |
| `services`    | multiAssoc | Liste der zugeordneten Services. <br />Jeder Eintrag ist ein vollständiger Referenzpfad auf einen Knoten unter `general.consentCookieService`. <br />Mehrere Services werden als Array eingetragen.                          |

### `general.consentCookieService` -Einzeldefinition zustimmungspflichtiger Cookies/Trackings

Der Knoten `general.consentCookieService` enthält die Definitionen der einzelnen Dienste, die im Consent Layer (Cookie-Banner) angezeigt werden. Jeder Service steht für ein konkretes Tracking-, Analyse- oder Einbindungs-Tool, dem der Besucher explizit zustimmen oder widersprechen kann, z.B. Google Ads, Meta Pixel oder ein Captcha-Dienst.

Jeder Service-Knoten beschreibt genau einen Dienst. Für jeden weiteren Dienst wird ein eigener Knoten angelegt. Die Services werden anschließend in Gruppen eingebunden. Wie das funktioniert, ist in Abschnitt 5.1 beschrieben.

Die Einstellungen zu diesem Abschnitt befinden sich im Admin Interface unter *Einstellungen* → *Shop-Konfiguration* und der Gruppe *Sicherheit*.

<KonfigDeeplink node="general.consentCookieService" />

#### Beispielkonfiguration "Google Ads" (`general.consentCookieService.googleads`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "description": "<Textbaustein>",
  "label": "<Textbaustein>",
  "name": "googleads",
  "service": {
    "externalService": {},
    "shopService": null
  }
}
```

#### Beispielkonfiguration "Meta Pixel" (`general.consentCookieService.metapixel`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "description": "<Textbaustein>",
  "label": "<Textbaustein>",
  "name": "metapixel",
  "service": {
    "externalService": {},
    "shopService": null
  }
}
```

#### Beispielkonfiguration "Cookie-Warenkorb" (`general.consentCookieService.cookiebasket`)

Für interne Shop-Funktionen, wie in diesem Beispiel, wird `shopService` gesetzt und `externalService` wird auf `null` gestellt.

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "description": "<Textbaustein>",
  "label": "<Textbaustein>",
  "name": "cookiebasket",
  "service": {
    "externalService": null,
    "shopService": "CookieBasket"
  }
}
```

#### Parameterbeschreibung

| **Parameter**     | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                   |
| ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `description`     | string  | Erklärungstext zum Dienst, der im Consent Layer für den Besucher angezeigt wird. <br />Sollte verständlich beschreiben, wozu der Dienst genutzt wird. <br /><br /><TextbausteinHinweis />                                                                                                                                                                                          |
| `label`           | string  | Anzeigename des Dienstes im Consent Layer, z. B. „Google Ads" oder „Meta Pixel". <br /><br /><TextbausteinHinweis />                                                                                                                                                                                                                                                               |
| `name`            | string  | Technischer Bezeichner des Dienstes. <br />Wird zur Zuordnung in Gruppen verwendet (als Teil des Referenzpfads `general.consentCookieService.<name>`). <br />Nur Kleinbuchstaben, keine Sonderzeichen.                                                                                                                                                                             |
| `service`         | oneOf   | Legt die Art des Dienstes fest. Genau einer der beiden Unterparameter wird gesetzt, der andere erhält `null`.  <br />Konfiguration für einen externen Dienst (Drittanbieter-Tools wie z.B. Google Ads):  `"externalService": {},  "shopService": null`<br />Konfiguration für einen internen Dienst (`"CookieBasket"`):  `"externalService": null,  "shopService": "CookieBasket"` |
| `externalService` | object  | Für alle externen Drittanbieter-Dienste. <br />Wird als leeres Objekt `{}` angegeben – keine weitere Konfiguration erforderlich.                                                                                                                                                                                                                                                   |
| `shopService`     | enum    | Für interne Shop-Funktionen.   <br />Verfügbarer Wert:<br />`"CookieBasket"` (Cookie-Warenkorb).   <br />Für externe Dienste: `null`.                                                                                                                                                                                                                                              |

## `general.country` - Länderdefinitionen

Der Unterknoten `general.country` definiert alle Länder, die im Onlineshop zur Auswahl stehen - beispielsweise bei Rechnungsadresse, Lieferadresse oder in Formularen (z. B. Kontakt- oder Anfrageformularen).

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Adressdaten".*

<KonfigDeeplink node="general.country" />

#### Beispielkonfiguration für Land "Deutschland" (`general.country.de`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "active": true,
  "defaultTaxRate": "finance.taxRates.de",
  "isoAlpha2": "DE",
  "isoAlpha3": "DEU",
  "isoNum": "276",
  "name": "<Textbaustein>",
  "usedTaxes": "finance.taxRates.de"
}
```

#### Beispielkonfiguration für Land "Polen" (`general.country.pl`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "active": true,
  "defaultTaxRate": "finance.taxRates.pl",
  "isoAlpha2": "PL",
  "isoAlpha3": "POL",
  "isoNum": "616",
  "name": "<Textbaustein>",
  "usedTaxes": "finance.taxRates.pl"
}
```

#### Parameterbeschreibung

| **Parameter**    | **Typ**     | **Beschreibung**                                                                                                                                                                                                                                                                               |
| ---------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `active`         | bool        | Aktiviert (`true`) oder deaktiviert (`false`) das Land für die Auswahl in Adressformularen und Checkout-Prozessen.                                                                                                                                                                             |
| `isoAlpha2`      | string      | Zweistelliger ISO-Ländercode (nach ISO 3166-1 alpha-2), z. B. „DE" für Deutschland.                                                                                                                                                                                                            |
| `isoAlpha3`      | string      | Dreistelliger ISO-Ländercode (nach ISO 3166-1 alpha-3), z. B. „DEU" für Deutschland.                                                                                                                                                                                                           |
| `isoNum`         | string      | Numerischer ISO-Code (nach ISO 3166-1 numeric), z. B. „276" für Deutschland.                                                                                                                                                                                                                   |
| `name`           | string      | Vollständiger Name des Landes, wie er im Shop bei der Länderauswahl angezeigt werden soll. <br /><br /><TextbausteinHinweis />                                                                                                                                                                 |
| `defaultTaxRate` | singleAssoc | Verknüpft das Land mit einem Standard-Steuersatz aus `finance.taxRates`. <br />Dieser Steuersatz wird primär für die Steuerberechnung in diesem Lieferland verwendet.                                                                                                                          |
| `usedTaxes`      | singleAssoc | Angabe der zulässigen Steuersatz-Gruppe.  <br />Der Eintrag verweist auf Konfigurationen in `finance.taxRates` bzw. `finance.taxRatesAddition`.  <br />Wenn `defaultTaxRate` und `usedTaxes` nicht gesetzt sind, verwendet der Shop automatisch die globale Konfiguration aus `finance.taxes`. |

<Info>
  Die offiziellen ISO-3166-1-Codes (alpha-2, alpha-3 und numerisch) finden sich auf der Website der International Organization for Standardization (ISO): [https://www.iso.org/iso-3166-country-codes.html](https://www.iso.org/iso-3166-country-codes.html)
</Info>

<Info>
  Um Länder ausschließen zu können, wird GeoIP von [IPLocate.io](http://IPLocate.io) eingesetzt.
</Info>

## `general.customerAccountSettings` - Verhalten bei Löschung von Kundenkonten

Der Unterknoten `general.customerAccountSettings` legt fest, wie das System mit Kundenkonten umgeht, wenn diese gelöscht werden sollen. Die Einstellung ist insbesondere relevant, wenn der Shop an eine Warenwirtschaft (WaWi) angebunden ist.

Ist das Soft Delete aktiviert, wird ein vom Kunden gelöschtes Konto nicht sofort vollständig entfernt, sondern zunächst nur als „gelöscht" markiert.

Der eigentliche Löschvorgang erfolgt erst, nachdem die WaWi den Kunden ebenfalls gelöscht hat. Auf diese Weise bleibt die Datenkonsistenz zwischen Shop und Warenwirtschaft gewährleistet.

Wenn das Soft Delete deaktiviert ist (`softDelete = false`), erfolgt die Löschung sofort im Shop, bevor die WaWi darüber informiert wurde. Dadurch kann es zu Inkonsistenzen oder fehlenden Synchronisationen kommen.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Kundenkonto"*.

<KonfigDeeplink node="general.customerAccountSettings" />

#### Beispielkonfiguration für alle Subshops (`general.customerAccountSettings`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "softDelete": false
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ** | **Beschreibung**                                                                                                                                                                                   |
| ------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `softDelete`  | bool    | Legt fest, ob Kundenkonten beim Löschen lediglich deaktiviert (`true`) oder vollständig entfernt (`false`) werden. <br />Diese Einstellung ist relevant, wenn eine Warenwirtschaft im Einsatz ist. |

## `general.deviceTypes` - Gerätetypen

Der Knoten `general.deviceTypes` ist für die Definition und Verwaltung von Gerätetypen vorgesehen, die im Shop-System unterschieden oder gezielt angesprochen werden können (z. B. Desktop, Tablet, Smartphone).

<KonfigDeeplink node="general.deviceTypes" />

#### Beispielkonfiguration (`general.deviceTypes`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "deviceTypes": [
    {
      "name": "mobile",
      "keywords": [
        "iPhone",
        "Android Mobile",
        "Mobile",
        "Windows Phone",
        "Opera Mini"
      ]
    },
    {
      "name": "tablet",
      "keywords": [
        "iPad",
        "Android Tablet",
        "Tablet",
        "Kindle",
        "Silk"
      ]
    },
    {
      "name": "desktop",
      "keywords": [
        "Windows NT",
        "Mac OS X",
        "X11",
        "Linux x86_64",
        "Chrome Desktop"
      ]
    }
  ]
}
```

#### Parameterübersicht

| **Parameter** | **Typ**       | **Beschreibung**                                                                                                               |
| ------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `deviceTypes` | list (object) | Liste der Geräteklassen, die erkannt werden sollen. <br />Jede Geräteklasse hat einen Namen und zugehörige Erkennungsmerkmale. |
| `name`        | enum          | Bezeichnung der Geräteklassen:   <br />`mobile, tablet` oder `desktop`                                                         |
| `keywords`    | list (string) | Frei wählbare Schlüsselwörter zur Erkennung der Geräteklassen. (optional)                                                      |

## `general.garbageCollection` - Sitzungsverwaltung und automatische Aufräumprozesse

Der Unterknoten `general.garbageCollection` definiert die Gültigkeitsdauer von Benutzersitzungen (Sessions) und legt fest, wann abgelaufene oder unvollständige Sessions automatisch gelöscht werden.\
Damit wird sichergestellt, dass veraltete Sitzungsdaten regelmäßig bereinigt werden und die Systemleistung stabil bleibt.

Über diese Parameter lässt sich außerdem steuern, wie lange aktive und ausstehende (pending) Sessions bestehen bleiben dürfen, bevor sie aus dem System entfernt werden.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Garbage Collection"*.

<KonfigDeeplink node="general.garbageCollection" />

#### Beispielkonfiguration für alle Subshop (`general.garbageCollection`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "pendingSessionAgeInHours": 72,
  "sessionAgeInMinutes": 120
}
```

#### Parameterbeschreibung

| **Parameter**              | **Typ** | **Beschreibung**                                                                                                                                                                                                       |
| -------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sessionAgeInMinutes`      | int     | Maximale Gültigkeitsdauer einer aktiven Session in Minuten. <br />Nach Ablauf dieser Zeit wird die Sitzung automatisch beendet.  <br />Default: **120**                                                                |
| `pendingSessionAgeInHours` | int     | Maximale Lebensdauer einer unbestätigten oder inaktiven Session in Stunden (z. B. bei abgebrochenen Bestellvorgängen). Danach wird die Session beendet und es wird eine neue Session gestartet.  <br />Default: **72** |

## `general.general` - Allgemeine Basiseinstellungen

Der Unterknoten `general.general` enthält zentrale Basisparameter, die das allgemeine Verhalten des Onlineshops steuern. Hier werden grundlegende technische Einstellungen wie der Aktivierungsstatus, erlaubte Parametergrenzen, die Zeitzone oder URL-Parameter zur Referer- und Subreferer-Erkennung festgelegt.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Allgemein"*.

<KonfigDeeplink node="general.general" />

#### Beispielkonfiguration für alle Subshop (`general.general`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "maxParamCount": 1000,
  "maxParamLength": 10000,
  "refererUrlParameter": "ref",
  "setRefererByUrl": true,
  "setSubrefererByUrl": true,
  "status": "active",
  "subrefererUrlParameter": "subref",
  "timeZone": ""
}
```

#### Parameterbeschreibung

| **Parameter**            | **Typ** | **Beschreibung**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `maxParamCount`          | uint    | Legt die maximale Anzahl an URL-Parametern fest, die der Shop in einer Anfrage verarbeitet. <br />Diese Begrenzung dient dazu, die Systemlast zu kontrollieren und eine Überlastung durch sehr umfangreiche Anfragen zu vermeiden.  <br />Default: **1000**                                                                                                                                                                                                                                                                                                      |
| `maxParamLength`         | uint    | Maximale Zeichenlänge einzelner URL-Parameter.  <br />Default: **10000**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `refererUrlParameter`    | string  | Definiert den URL-Parameter, über den ein Referer (z. B. Partner-Link) erkannt wird.  <br />Default: `ref`.                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `setRefererByUrl`        | bool    | Aktiviert (`true`) oder deaktiviert (`false`) die automatische Erkennung des Referers anhand des Parameters `refererUrlParameter`.  <br />Default: `true`                                                                                                                                                                                                                                                                                                                                                                                                        |
| `setSubrefererByUrl`     | bool    | Aktiviert (`true`) oder deaktiviert (`false`) die Erkennung des Subreferers über den Parameter `subrefererUrlParameter`.  <br />Default: `true`                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `status`                 | enum    | Betriebsstatus des Shops. <br />Steuert, ob und für wen ein Subshop öffentlich erreichbar ist. <br />Die Konfiguration kann ebenfalls über Admin → Konfiguration → Subshops erfolgen.<br /><br />Mögliche Werte: <br />- `active`  (Shop ist live und für alle Besucher erreichbar)<br />- `testmode` (Shop ist nur über den [Testmodus-Login](/konfiguration/general-allgemeine-shopeinstellungen#general-testmode-testmodus) erreichbar; als "Test" markierte Produkte werden sichtbar)<br />- `inactive` (Jede Anfrage wird auf die Inaktiv-Seite umgeleitet) |
| `subrefererUrlParameter` | bool    | Definiert den URL-Parameter, über den ein Subreferer erkannt wird.  <br />Default: `subref`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `timeZone`               | string  | Definiert die Zeitzone des Shops (z. B. `Europe/Berlin`).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

<Info>
  Beim setzen von `status` direkt über die Konfiguration (Admin-Interface oder API) findet keine Bereitschaftsprüfung statt. Der Wechsel auf `active`  wird auch dann übernommen, wenn aktive Online-Zahlungsarten noch im Sandbox-Modus laufen.\
  \
  Für ein abgesichertes Live-Schalten verwenden Sie den Workflow unter *Admin → Konfiguration → Subshops* (Aktion "Live schalten") oder rufen Sie vorab den Endpoint `GET /shopStatus/goLive/{subshopId}`  auf. Details siehe [hier](/frontend/funktionsubersicht/inaktiv-seite).
</Info>

## `general.language` - Sprachdefinitionen

Der Unterknoten `general.language` definiert alle Sprachen, die im System verfügbar sind.

Diese Sprachen können anschließend in Subshops, Textbausteinen und sprachabhängigen Inhalten verwendet werden.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Sprache"*.

<KonfigDeeplink node="general.language" />

#### Beispielkonfiguration für die Sprache "Deutsch" (`general.language.de`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "isoCode": "DE",
  "name": "Deutsch"
}
```

#### Beispielkonfiguration für die Sprache "Englisch" (`general.language.en`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "isoCode": "EN",
  "name": "English"
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ** | **Beschreibung**                                                                              |
| ------------- | ------- | --------------------------------------------------------------------------------------------- |
| `isoCode`     | string  | ISO-639-1-Code der Sprache (z. B. „DE" für Deutsch, „EN" für Englisch).                       |
| `name`        | string  | Anzeigename der Sprache im Shop. <br />Wird in Auswahllisten und Sprachumschaltern verwendet. |

## `general.numberFormat` - Zahlen- und Preisformatierung

Der Unterknoten `general.numberFormat` definiert die Formatierung numerischer Werte im gesamten Shop. Über diese Einstellungen wird festgelegt, wie Preise, Gewichte, Mengen oder Bewertungen im Frontend dargestellt werden – z. B. mit welchem Dezimaltrennzeichen, wie viele Nachkommastellen angezeigt werden oder ob Tausendertrennzeichen genutzt werden.

Diese Formatierungen wirken sich auf alle Ausgaben aus, die über die Template-Sprache *prepared format* erzeugt werden.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Zahlenformatierung"*.

<KonfigDeeplink node="general.numberFormat" />

#### Beispielkonfiguration für die Sprache "Deutsch" (`general.numberFormat.price`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "decimalPlaces": 2,
  "decimalSeparator": ",",
  "name": "price",
  "prefix": null,
  "suffix": null,
  "thousandsSeparator": null
}
```

#### Beispielkonfiguration für die Sprache "Deutsch" (`general.numberFormat.weight`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "decimalPlaces": 2,
  "decimalSeparator": ",",
  "name": "weight",
  "prefix": null,
  "suffix": null,
  "thousandsSeparator": null
}
```

#### Parameterbeschreibung

| **Parameter**        | **Typ** | **Beschreibung**                                                                                                                                                                                                  |
| -------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `decimalPlaces`      | uint    | Anzahl der Nachkommastellen, die angezeigt werden sollen.  <br />Default: **2**                                                                                                                                   |
| `decimalSeparator`   | string  | Zeichen, das als Dezimaltrennzeichen verwendet wird (z. B. `,` oder `.`).  <br />Default: `"."`                                                                                                                   |
| `name`               | string  | Interner Name des Formats (z. B. `price`, `amount`, `weight`). Dient der systemweiten Zuordnung.                                                                                                                  |
| `prefix`             | string  | Zeichen oder Text, der vor dem Zahlenwert angezeigt wird (z. B. Währungssymbol, weil es bei manchen Währungen gängiger ist, das Währungssymbol vor dem Betrag zu setzen - Beispiel: £12 vs. 12€). <br />Optional. |
| `suffix`             | string  | Zeichen oder Text, der hinter dem Zahlenwert angezeigt wird (z. B. „kg" oder „€"). <br />Optional.                                                                                                                |
| `thousandsSeparator` | string  | Zeichen für die Trennung von Tausenderstellen (z. B. `.` oder `,`). Kann `null` sein, wenn keine Trennung gewünscht ist. <br />Optional.                                                                          |

## `general.order` - Anzeige der Bestellhistorie

Der Unterknoten `general.order` steuert die Darstellung und Sortierung der Bestellhistorie im Kundenkonto des Onlineshops. Hier wird festgelegt, wie Bestellungen gelistet, sortiert und paginiert werden, sowie welche Statuswerte dem Kunden angezeigt werden.

So lassen sich Standard-Sortierungen, die Anzahl der Bestellungen pro Seite und die Anzeigeart der Bestellhistorie (z. B. subshopbezogen oder global) konfigurieren. Zudem können eigene Statusdefinitionen mit Symbolen und Beschriftungen für die Anzeige in der Storefront hinterlegt werden.

<KonfigDeeplink node="general.order" />

#### Beispielkonfiguration für Status der Bestellungen (`general.order`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "defaultResultsPerPage": 20,
  "defaultSortOption": "general.orderSortOption.dateDesc",
  "maxResults": 1000,
  "orderHistoryDisplay": "currentSubShop",
  "resultsPerPageOptions": [
    5,
    10,
    20,
    25,
    30
  ],
  "sortOptions": [
    "general.orderSortOption.dateDesc",
    "general.orderSortOption.dateAsc"
  ],
  "states": [
    { "id": 1, "caption": "In Bearbeitung", "icon": "clock", "action": "process" },
    { "id": 2, "caption": "Versendet",       "icon": "truck", "action": "ship" },
    { "id": 3, "caption": "Storniert",       "icon": "ban",   "action": "cancel" }
  ]
}
```

#### Parameterbeschreibung

| **Parameter**           | **Typ**       | **Beschreibung**                                                                                                                               |
| ----------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `defaultResultsPerPage` | int           | Legt fest, wie viele Bestellungen standardmäßig pro Seite angezeigt werden.  <br />Default: **20**                                             |
| `defaultSortOption`     | singleAssoc   | Bestimmt die voreingestellte Sortierung der Bestellliste (z. B. nach Datum absteigend). <br />Optional.                                        |
| `maxResults`            | int           | Definiert die maximale Anzahl von Bestellungen, die gleichzeitig abgerufen oder angezeigt werden dürfen.  <br />Default: **1000**              |
| `orderHistoryDisplay`   | enum          | Legt fest, ob der Bestellverlauf für alle Subshops oder nur für den aktuell aktiven Subshop angezeigt wird (`allSubShops` / `currentSubShop`). |
| `resultsPerPageOptions` | list (uint)   | Enthält die auswählbaren Werte für die Anzahl der anzuzeigenden Bestellungen pro Seite.  <br />Default: `[20, 50, 100, 200]`                   |
| `sortOptions`           | multiAssoc    | Liste der verfügbaren Sortieroptionen (z. B. nach Datum auf- oder absteigend). <br />Verweise auf `general.orderSortOption.*`. <br />Optional. |
| `states`                | list (object) | Liste der verfügbaren Bestellstatus (Array von Objekten).                                                                                      |
| `id`                    | uint          | Eindeutige numerische ID des Status (Unsigned Integer). Dient der technischen Referenz in Prozessen/Integrationen.                             |
| `caption`               | text          | Anzeige- bzw. Klartextbezeichnung des Status (z. B. „Versendet").                                                                              |
| `icon`                  | text          | Symbolname für die UI-Darstellung (z. B. `truck`, `clock`). Konkrete Icon-Bibliothek abhängig vom Frontend.                                    |
| `action`                | text          | Technisches Aktionskürzel, das z. B. Workflows oder Buttons triggert (z. B. `ship`, `cancel`).                                                 |

## `general.orderSortOption` - Sortierung der Bestellhistorie

Legt individuelle Sortieroptionen für die Bestellübersicht fest. Etwa nach Datum, Gesamtbetrag oder Status. Jede Option erhält einen frei wählbaren, eindeutigen Namen und verweist auf ein in der Bestellliste verfügbares Feld.

<KonfigDeeplink node="general.orderSortOption" />

#### Beispielkonfiguration

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "name": "date_desc",
  "fieldName": "dateCreated",
  "direction": "desc"
}
```

#### Parameterübersicht

| **Parameter** | **Typ**         | **Beschreibung**                                                                                                                                  |
| ------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | string (unique) | Eindeutige Benamung der Sortieroption. <br />Kann frei gewählt werden.                                                                            |
| `fieldName`   | string          | Datenfeld, nach dem sortiert wird. (z.B. `dateCreated`, `totalPrice`, `status`). <br />Muss ein in der Bestellliste verfügbares Sortierfeld sein. |
| `direction`   | enum            | Gibt die Sortierrichtung vor. <br />`asc` = aufsteigend, `desc` = absteigend.                                                                     |

## `general.productRating` - Produktbewertung

Der Knoten `general.productRating` steuert das Bewertungs­system für Produkte im Shop.\
Hier werden die Rahmenbedingungen für Produktbewertungen (Bewertungsskala, Pflichtfelder, Textlängen, Mehrfachbewertungen) sowie die Einstellungen für automatische Bewertungs-Erinnerungen per E-Mail definiert.

<KonfigDeeplink node="general.productRating" />

#### Beispielkonfiguration (`general.productRating`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "maximumRating": 5,
  "minimumRating": 1,
  "allowRatingAfterEachOrder": false,
  "ratingFields": {
    "descriptionMaxLength": 1000,
    "descriptionRequired": true,
    "pointsRequired": true,
    "subjectMaxLength": 100,
    "subjectRequired": true
  },
  "reminderEmail": {
    "active": true,
    "consentRequired": true,
    "consentService": "ratereminder",
    "intervalInDays": 1,
    "templateEmail": {
      "senderAddress": "noreply@websale.de",
      "subject": "Bewerten Sie die von Ihnen bestellten Produkte!",
      "template": "rateReminder.htm"
    }
  }
}
```

#### Parameterübersicht

| **Parameter**               | **Typ** | **Beschreibung**                                                                                                                                         |
| --------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `maximumRating`             | int     | Höchstwert der Bewertungsskala (z. B. 5 für ein 5-Sterne-System).  <br />Default: **5**                                                                  |
| `minimumRating`             | int     | Niedrigster Bewertungswert.  <br />Default: **1**                                                                                                        |
| `allowRatingAfterEachOrder` | bool    | Erlaubt Mehrfachbewertungen desselben Produkts durch denselben Benutzer<br /> (`true` = Mehrfachbewertungen erlaubt, `false` = nicht erlaubt / default). |
| `ratingFields`              | object  | Objekt mit Vorgaben für die Eingabefelder im Bewertungsformular.                                                                                         |
| `descriptionMaxLength`      | int     | Maximale Zeichenanzahl für den Freitext der Bewertung.  <br />Default: **1000**                                                                          |
| `descriptionRequired`       | bool    | Gibt an, ob das Beschreibungsfeld ein Pflichtfeld ist (`true`/`false`).  <br />Default: `true`                                                           |
| `pointsRequired`            | bool    | Legt fest, ob die Angabe einer Punktebewertung verpflichtend ist (`true`/`false`).  <br />Default: `true`                                                |
| `subjectMaxLength`          | int     | Maximale Zeichenanzahl für den Betreff/Titel einer Bewertung.  <br />Default: **100**                                                                    |
| `subjectRequired`           | bool    | Gibt an, ob der Betreff/Titel verpflichtend ist (`true`/`false`).  <br />Default: `true`                                                                 |
| `reminderEmail`             | object  | Objekt mit Einstellungen für die automatische Bewertungs-Erinnerungs-E-Mail.                                                                             |
| `active`                    | bool    | Aktiviert (`true`) oder deaktiviert (`false`) den automatischen Versand von Bewertungs-Erinnerungen.  <br />Default: `false`                             |
| `consentRequired`           | bool    | Legt fest, ob eine Einwilligung des Kunden für die Bewertungs-Erinnerung erforderlich ist.                                                               |
| `consentService`            | string  | Name des zugehörigen Consent-Dienstes, über den die Zustimmung verwaltet wird (z. B. `ratereminder`).                                                    |
| `intervalInDays`            | int     | Zeitabstand (in Tagen) zwischen Bestellung und Versand der Bewertungs-Erinnerung.  <br />Default: **14**                                                 |
| `templateEmail`             | object  | E-Mail-Template für den Versand der Bewertungs-Erinnerung.                                                                                               |
| `senderAddress`             | string  | Absender-E-Mailadresse der Bewertungs-Erinnerung.                                                                                                        |
| `subject`                   | string  | Betreffzeile der E-Mail.                                                                                                                                 |
| `template`                  | string  | Dateiname des verwendeten E-Mail-Templates (z. B. `rateReminder.htm`).                                                                                   |

## `general.salutation` - Anreden

Der Unterknoten `general.salutation` definiert alle verfügbaren Anreden, die im Shop angezeigt werden – etwa in Adressformularen, Registrierungen oder Kontaktformularen.

Jede Anrede besteht aus einem technischen Code und einem anzuzeigenden Text.\
Die Reihenfolge der Einträge entspricht der Anzeige im Frontend.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Adressdaten"*.

<KonfigDeeplink node="general.salutation" />

#### Beispielkonfiguration (`general.salutation`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "codeList": [
    {
      "code": "1",
      "text": "Herr"
    },
    {
      "code": "2",
      "text": "Frau"
    },
    {
      "code": "3",
      "text": "Familie"
    },
    {
      "code": "4",
      "text": "Firma"
    }
  ]
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ**       | **Beschreibung**                                                                                              |
| ------------- | ------------- | ------------------------------------------------------------------------------------------------------------- |
| `codeList`    | list (object) | Liste aller verfügbaren Anreden. <br />Jeder Eintrag enthält einen technischen Code und den angezeigten Text. |
| `code`        | string        | Technischer Code der Anrede. <br />Wird systemintern zur Identifikation verwendet.                            |
| `text`        | string        | Anzeigetext der Anrede im Frontend (z. B. „Herr", „Frau").                                                    |

## `general.sitemap` - Aktivierung von Sitemap

Der Unterknoten `general.sitemap` steuert den Basispfad der Sitemap.

Über diesen Parameter kann konfiguriert werden, wo sich der Basispfad bzw. der Oberknoten befindet, unterhalb dessen die Sitemaps abgelegt werden.

Die Konfiguration erfolgt im Admin-Interface unter SEO.

<KonfigDeeplink node="general.sitemap" />

#### Beispielkonfiguration (`general.sitemap`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "baseDirectory": "sitemap"
}
```

#### Parameterbeschreibung

| **Parameter**   | **Typ** | **Beschreibung**                                                                                              |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------- |
| `baseDirectory` | string  | Legt fest, wo sich der Basispfad bzw. der Oberknoten befindet, unterhalb dessen die Sitemaps abgelegt werden. |

## `general.subshop` - Subshop-Definitionen

Der Unterknoten `general.subshop` definiert die einzelnen Subshops innerhalb der Plattform.

Jeder Subshop-Eintrag enthält eine eindeutige ID, eine optionale Sprachzuordnung und eine technische Speicherreferenz.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Subshops"*.

<KonfigDeeplink node="general.subshop" />

#### Beispielkonfiguration für den Subshop "deutsch" (`general.subshop.deutsch`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "dataSubshop": null,
  "language": "general.language.de",
  "storageId": ""
}
```

#### Beispielkonfiguration für den Subshop "english" (`general.subshop.englisch`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "dataSubshop": null,
  "language": "general.language.en",
  "storageId": ""
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ**                     | **Beschreibung**                                                                                                                                                            |
| ------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | string (`unique, readonly`) | Systemname des Subshops. <br />Wird automatisch vergeben und kann nicht verändert werden.                                                                                   |
| `dataSubshop` | singleAssoc                 | Referenz auf den zugehörigen Daten-Subshop (z.B. DE-Shop). <br />Bestimmt, aus welchem Subshop-Kontext Daten gelesen / geschrieben werden.  <br />target: `general.subshop` |
| `language`    | singleAssoc                 | Verknüpft den Subshop mit einer Sprache (z.B. `general.language.en`).  <br />target: `general.language`                                                                     |
| `storageId`   | string                      | Interne Speicher-ID, unter der die Daten des Subshops abgelegt werden. <br />Wird systemseitig für Datentrennung und Indexierung genutzt.                                   |

## `general.subshopView` - Subshop-Konfigurationen

Der Unterknoten `general.subshopView` definiert die Basis-Einstellungen für jeden einzelnen Subshop.

Hier werden unter anderem Sprache, Währung, Länderzuordnung, das verwendete Theme und der Standard-Produkttyp des jeweiligen Subshops festgelegt.

Diese Konfiguration bestimmt, wie der Subshop im Frontend angezeigt wird und welche Rahmenbedingungen (z. B. gültige Länder, Sprache, Preisformatierung) gelten. Sie baut auf den Subshop-Definitionen aus `general.subshop` auf.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Subshops"*.

<KonfigDeeplink node="general.subshopView" />

#### Beispielkonfiguration für den Subshop "deutsch" (`general.subshopView.deutsch`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "countries": [
    "general.country.de",
    "general.country.at",
    "general.country.ch",
    "general.country.be",
    "general.country.it",
    "general.country.pl",
    "general.country.nl"
  ],
  "currency": "finance.currency.euro",
  "defaultProductType": "content.productType.standard",
  "language": "general.language.de",
  "theme": "default"
}
```

#### Beispielkonfiguration für den Subshop "englisch" (`general.subshopView.english`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "countries": [
    "general.country.us",
    "general.country.gb",
    "general.country.au",
    "general.country.ca"
  ],
  "currency": "finance.currency.dollar",
  "defaultProductType": "content.productType.standard",
  "language": "general.language.en",
  "theme": "default"
}
```

#### Parameterbeschreibung

| **Parameter**        |             | **Beschreibung**                                                                                                                                                |
| -------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `countries`          | multiAssoc  | Liste der Länder, die im jeweiligen Subshop zur Auswahl stehen (z. B. für Liefer- und Rechnungsadressen).  <br />Verweist auf Einträge unter `general.country`. |
| `currency`           | singleAssoc | Verknüpfte Währung des Subshops.  <br />Verweist auf Einträge unter `finance.currency.[name]`.                                                                  |
| `defaultProductType` | singleAssoc | Standard-Produkttyp, der für die Darstellung und Verarbeitung von Artikeln verwendet wird (z. B. `content.productType.standard`).                               |
| `language`           | singleAssoc | Definiert die Sprache des Subshops.  <br />Verweist auf Einträge unter `general.language.[name]`.                                                               |
| `theme`              | string      | Bezeichnet den im Subshop verwendeten Templatesatz.  <br />Default: `default`                                                                                   |

## `general.testMode` - Testmodus

Der Unterknoten `general.testMode` aktiviert und steuert den Testmodus des Shops.

Der Testmodus wird über eine spezielle Shop-URL mit Parametern aufgerufen. Beim Aufruf erscheint eine Eingabemaske, über die ein vordefiniertes Passwort eingegeben werden muss, um den Zugang freizuschalten. Erst nach erfolgreicher Authentifizierung ist der Shop über die URL nutzbar.

Diese Funktion dient dazu, Änderungen, neue Inhalte oder Layout-Anpassungen zu prüfen, ohne dass reguläre Besucher Zugriff haben.

<Note>
  Der Testmodus (inklusive `basicAuthActive` / `basicAuthUsers`) schützt ausschließlich die **Testumgebung** vor regulären Besuchern. Um einen **Live-Shop** auf angemeldete Kunden zu beschränken (z. B. geschlossener B2B-Shop), verwenden Sie stattdessen die [B2B-Zutrittsbeschränkung](/konfiguration/b2b-business-to-business-b2b).
</Note>

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Testmodus"*.

<KonfigDeeplink node="general.testMode" />

#### Beispielkonfiguration für alle Subshops (`general.testMode`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "allowedUserAgents": null,
  "basicAuthActive": false,
  "basicAuthUsers": null,
  "password": "test",
  "template": "testMode.htm",
  "userAgentBypassActive": false
}
```

#### Parameterbeschreibung

| **Parameter**           | **Typ**       | **Beschreibung**                                                                                                                                       |
| ----------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `allowedUserAgents`     | list (string) | Liste von User-Agents (z. B. Browser, Testsysteme), die den Testmodus ohne Passworteingabe betreten dürfen.                                            |
| `basicAuthActive`       | bool          | Aktiviert (`true`) oder deaktiviert (`false`) eine zusätzliche HTTP-Basic-Authentifizierung.                                                           |
| `basicAuthUsers`        | list (object) | Liste der Benutzer mit Berechtigung für den Zugang per HTTP-Basic-Auth. <br />Nur relevant, wenn `basicAuthActive = true`.                             |
| `username`              | string        | Benutzername des HTTP-Basic-Auth Users.                                                                                                                |
| `password`              | string        | Passwort des HTTP-Basic-Auth Users.                                                                                                                    |
| `password`              | string        | Passwort, das beim Aufruf der Testmodus-URL eingegeben werden muss, um den Shop freizuschalten.                                                        |
| `template`              | string        | Template-Datei für die Passwortabfrage (z. B. `testMode.htm`).                                                                                         |
| `userAgentBypassActive` | bool          | Aktiviert (`true`) oder deaktiviert (`false`), ob bestimmte User-Agents den Testmodus ohne Passwort umgehen dürfen (abhängig von `allowedUserAgents`). |

## `general.title` - Titel für die Anrede

Der Unterknoten `general.title` definiert alle verfügbaren **Titel**, die im Shop zur Auswahl stehen – beispielsweise in Adressformularen, Registrierungen oder Kontaktformularen.

Jeder Eintrag besteht aus einem technischen Code und dem anzuzeigenden Titeltext (z. B. *Dr.*, *Prof.*). Diese Werte werden im Frontend in der Titel-Auswahlliste angezeigt und können bei Bedarf erweitert oder angepasst werden.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Adressdaten"*.

<KonfigDeeplink node="general.title" />

#### Beispielkonfiguration für alle Subshops (`general.title`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "codeList": [
    {
      "code": "1",
      "text": ""
    },
    {
      "code": "2",
      "text": "Dr."
    },
    {
      "code": "3",
      "text": "Prof."
    }
  ]
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ**       | **Beschreibung**                                                                                            |
| ------------- | ------------- | ----------------------------------------------------------------------------------------------------------- |
| `codeList`    | list (object) | Liste aller verfügbaren Titel. Jeder Eintrag besteht aus einem technischen Code und dem dazugehörigen Text. |
| `code`        | string        | Technischer Code des Titels. Wird systemintern zur Identifikation verwendet.                                |
| `text`        | string        | Anzeigetext des Titels im Frontend (z. B. „Dr." oder „Prof.").                                              |

## `general.zipCodes` - Postleitzahl-Prüfungen

Der Unterknoten `general.zipCodes` definiert die **syntaktische Prüfung von Postleitzahlen** für einzelne Länder.

Für jedes Land kann ein regulärer Ausdruck (Regex) hinterlegt werden, mit dem überprüft wird, ob eine eingegebene Postleitzahl dem landesspezifischen Format entspricht. Diese Validierung erfolgt beispielsweise in Formularen oder im Checkout-Prozess, um fehlerhafte Eingaben zu vermeiden.

Konfiguration im Admin Interface unter *Einstellungen → Shop-Konfiguration → Gruppe „Adressdaten"*.

<KonfigDeeplink node="general.zipCodes" />

#### Beispielkonfiguration für alle Subshops (`general.zipCodes`)

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "zipCodes": [
    {
      "country": "general.country.de",
      "zipRegex": "^[0-9]{5}$"
    },
    {
      "country": "general.country.at",
      "zipRegex": "^[0-9]{4}$"
    },
    {
      "country": "general.country.ch",
      "zipRegex": "^[0-9]{4}$"
    }
  ]
}
```

#### Parameterbeschreibung

| **Parameter** | **Typ**       | **Beschreibung**                                                                                                              |
| ------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `zipCodes`    | list (object) | Liste aller Postleitzahlregeln. Jeder Eintrag definiert ein Land und den zugehörigen Prüf-Regex.                              |
| `country`     | singleAssoc   | Verweis auf das Land, für das die Regel gilt (z. B. `general.country.de`).                                                    |
| `zipRegex`    | string        | Regulärer Ausdruck, der das gültige Postleitzahlformat des jeweiligen Landes beschreibt (z. B. `^[0-9]{5}$` für Deutschland). |


## Related topics

- [Konfigurations-Deeplinks](/admin-interface/konfigurations-deeplinks.md)
- [$wsSubshop - Subshop](/frontend/referenz/module/wssubshop.md)
- [Storefront API Kundenbewertungen](/schnittstellen/storefront-api/storefront-api-kundenbewertungen.md)
- [content - Katalog (Kategorien & Produkte)](/konfiguration/content-katalog-kategorien-produkte.md)
- [$wsOrderHistory - Bestellhistorie](/frontend/referenz/module/wsorderhistory.md)
