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

# Einwilligung zur Datenverarbeitung (Cookies)

> Integration des Consent-Layers in zehn Schritten, von der Konfiguration der Dienste über die Klammerung bis zur Liveschaltung, dazu econda und die iOS-App.

Die folgende Integrationsanleitung berücksichtigt das EuGH-Urteil vom 01.10.2019, siehe [Bericht auf eu-info.de](http://www.eu-info.de/dpa-europaticker/299272.html).

Als Shopbetreiber müssen Sie vorgeben, welche Einwilligungen oder Widerrufe zur Datenverarbeitung der Shopbesucher geben muss oder kann. Als Entscheidungshilfe können Sie oder Ihr Datenschutzbeauftragter auch die Dokumente zum Datenschutz im Online-Servicebereich heranziehen.

Diese Seite beschreibt zuerst die Funktionsweise und einige Spezialfälle. Darauf folgt die Integration in zehn Schritten. Zum Abschluss finden Sie Hinweise zur Migration einer bestehenden Integration, eine vereinfachte Variante für econda-Dienste und die Besonderheiten der WEBSALE-App für iOS.

## Funktionsweise

Alle Funktionen, die nach dem EuGH-Urteil zustimmungspflichtig sind und sich direkt in den Shop-Templates befinden, können als Gruppierung oder einzeln angeboten werden, auch beides zusammen ist möglich. Beispiele:

![Einwilligungdatenverarbeitung1](https://mintcdn.com/websaleag-44ee7ea6/skgEiyBpkjLxNR4u/images/einwilligungdatenverarbeitung1.jpg?fit=max\&auto=format\&n=skgEiyBpkjLxNR4u\&q=85\&s=b566853ee457535983b0f3cfae12eff4)

![Einwilligungdatenverarbeitung2 Zoom50](https://mintcdn.com/websaleag-44ee7ea6/skgEiyBpkjLxNR4u/images/einwilligungdatenverarbeitung2_zoom50.png?fit=max\&auto=format\&n=skgEiyBpkjLxNR4u\&q=85\&s=ad5262cae80731bdedda2a901d5e9cf3)

Für jede Funktion oder Funktionsgruppe, der ausdrücklich zugestimmt oder widersprochen wird, wird ein eigenes Cookie gesetzt. Dieses Cookie sorgt dafür, dass im Falle einer Zustimmung ab der nächsten aufgerufenen Seite die zugelassene Funktion stattfindet, beispielsweise ein Tracking. Im Falle eines Widerspruchs wird die entsprechende Funktion ab der nächsten Seite beendet.

Mehr Informationen dazu finden Sie unter Materialien: [Verwendete Cookies](https://dokumentation.websale.de/v8s/referenz/verwendete-cookies.md).

Der Layer für die Zustimmung oder den Widerruf kann frei gestaltet werden. Möglich sind:

* zusammenfassende Buttons oder Checkboxen für alle Dienste
* Checkboxen für Gruppen von Diensten für einen oder mehrere Anbieter
* jeweils eine individuelle Checkbox für jede einzelne Funktion

Die Konfiguration für die Darstellung als Gruppen oder einzelne Funktionen wird in der Shopkonfiguration festgelegt. Hier können auch entsprechende Erklärungstexte hinzugefügt werden.

## Hinweise für Spezialfälle

* Durch das Verhindern der Trackings beim Erstaufruf werden die Trackingdaten um wichtige Informationen beschnitten, beispielsweise um die Herkunft des Shopbesuchers. Das Tracking überträgt also erst im Laufe eines Besuchs oder beim nächsten Besuch korrekte Informationen.
* Wenn der Shopbesucher über seinen Browser oder mittels eines Tools das Cookie der abgegebenen Willenserklärung löscht, erscheint beim nächsten Shopseitenaufruf das Banner erneut, und zwar mit den Einstellungen, die aufgrund der eventuell noch vorhandenen OptIn- und OptOut-Cookies der einzelnen Funktionen aktuell noch gelten.
* Wenn ein Shopbesucher seine Zustimmung zu einem Tracking widerruft, können aus technischen Gründen die vom Drittanbieter gesetzten Cookies nicht durch WEBSALE entfernt werden. Die Verarbeitung dieser Daten wird unterbunden, da die Tracking-Scripts des Anbieters nicht mehr eingebunden werden.
* Von WEBSALE bereits gesetzte Cookies werden bei Widerruf der Einwilligung automatisch per JavaScript gelöscht.
* Bei Einsatz eines Affiliate-Programms werden die erhobenen Daten an WEBSALE übergeben, jedoch erst nach der Zustimmung des Shopbesuchers verarbeitet.
* Wenn ein Cookie gelöscht werden soll, wird der Inhalt des Cookies durch WEBSALE entfernt und das Verfallsdatum des Cookies in die Vergangenheit gesetzt. Ein Löschen des Cookies selbst kann nicht garantiert werden, da dies durch den Browser des Shopkunden erledigt wird.

## Integration

### Schritt 1: Freischaltung

Es ist keine technische Freischaltung seitens WEBSALE notwendig.

### Schritt 2: Dienste konfigurieren

Legen Sie in der Shopkonfiguration `shop.config` einen neuen Abschnitt `<AgreementCookies>` an und konfigurieren Sie die Parameter wie in den Beispielen unten gezeigt.

> [!WARNING]
>
> Wenn Sie im Rahmen der Integration der Einwilligung zur Datenverarbeitung auch datenschutzrelevante Funktionen neu einbinden, beispielsweise Tracking-Dienste, darf in der Shopkonfiguration `shop.config` der Parameter `Allow` für die gesamte Funktion nicht auf `test` stehen. Die Dienste würden sonst sofort und ohne Einwilligung ausgeführt.

Beispiel 1, alle Funktionen einzeln aufgelistet, ohne Gruppierung:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AgreementCookies>
   Allow                       = test

   <+Entry>
      ID                          = cookiebasket
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Warenkorb für nächsten Besuch speichern
      Descr                       =
      +WEBSALEService             = CookieBasket
   </+Entry>

   <+Entry>
      ID                          = welcomecookie
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Persönliche Begrüßung
      Descr                       =
      +WEBSALEService             = WelcomeCookie
   </+Entry>

   <+Entry>
      ID                          = google
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Google Analytics
      Descr                       =
   </+Entry>

   <+Entry>
      ID                          = econda
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Econda
      Descr                       =
   </+Entry>

   ...

</AgreementCookies>
```

Beispiel 2, Funktionen zu thematischen Gruppierungen zusammengefasst. Gegenüber Beispiel 1 kommt in jedem `<+Entry>` der Parameter `ConsentGroupID` hinzu, dazu je Gruppe ein Abschnitt `<+ConsentGroupInfo>`:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AgreementCookies>
   Allow                      = test

   <+Entry>
      ID                          = cookiebasket
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Warenkorb für nächsten Besuch speichern
      Descr                       =
      ConsentGroupID              = comfort
      +WEBSALEService             = CookieBasket
   </+Entry>

   <+Entry>
      ID                          = welcomecookie
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Persönliche Begrüßung
      Descr                       =
      ConsentGroupID              = comfort
      +WEBSALEService             = WelcomeCookie
   </+Entry>

   <+Entry>
      ID                          = google
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Google Analytics
      Descr                       =
      ConsentGroupID              = optimize
   </+Entry>

   <+Entry>
      ID                          = econda
      Type                        = OptIn
      Preselection                = unchecked
      Name                        = Econda
      Descr                       =
      ConsentGroupID              = optimize
   </+Entry>

   ...

   <+ConsentGroupInfo>
      ConsentGroupID             = comfort
      Name                       = Komfortfunktionen
      Descr                      = Wir möchten die Bedienung dieses Shops für Sie möglichst komfortabel gestalten.
   </+ConsentGroupInfo>

   <+ConsentGroupInfo>
      ConsentGroupID             = optimize
      Name                       = Shop-Optimierungen
      Descr                      = Um den Shop zu optimieren, möchten wir Dienste nutzen,
                                   die Daten erheben und aggregieren und uns diese als statistische Übersicht
                                   zur Verfügung stellen.
   </+ConsentGroupInfo>

   ...

</AgreementCookies>
```

Referenz: [Abschnitt AgreementCookies](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md#agreementcookies)

### Schritt 3: JavaScript einbinden

Fügen Sie die aktuelle Version des JavaScripts `ws-module-agreementcookies` in Version 1.8.5 oder neuer über das PageSpeed-Tool oder im `<head>`-Bereich des gewünschten Templates ein:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<script type="text/javascript" src="/$WS/ws_sysdata/js/ws-module-agreementcookies-1.8.5.js"></script>
```

Referenz: [WEBSALE JavaScript-Bibliothek](https://dokumentation.websale.de/v8s/materialien/websale-javascript-bibliothek.md)

### Schritt 4: Dienste und Funktionen klammern

Mit der Klammerung können Inline-Scripte umklammert werden. Benötigt wird dafür die ID aus dem `<+Entry>`-Abschnitt:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{AC-AgreementMadeForID(google)}

   <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXX-X']);
      _gaq.push(['_trackPageview']);

     (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
     })();
   </script>

{/AC-AgreementMadeForID(google)}
```

Aber auch ausgelagerte JavaScript-Dateien können damit umklammert werden:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{AC-AgreementMadeForID(google)}

   <script src="meine-google-datei.js"></script>

{/AC-AgreementMadeForID(google)}
```

Referenz: [AC-AgreementMadeForID()](https://dokumentation.websale.de/v8s/referenz/tags/ac-agreementcookies.md#ac-agreementmadeforid)

Wegweiser: [JavaScript und jQuery](https://dokumentation.websale.de/v8s/templates/javascript-und-jquery.md)

### Schritt 5: Anpassung der Tracking-Schnittstelle

Wenn Funktionen und Dienste über die Tracking-Schnittstelle eingebunden werden, dann muss dies für die Einwilligung über das PageSpeed-Tool integriert werden.

Ist dies nicht der Fall, dann wird mit Aktivierung der Funktion Einwilligung zur Datenverarbeitung die `ws_analyse.js` nicht mehr automatisch eingebunden.

Wenn die Tracking-Schnittstelle über das PageSpeed-Tool integriert worden ist, dann kann wie folgt geklammert werden:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~WS-ExternalStatistics~
{AC-AgreementMadeForID(optimize)}
   ...
   <script type="text/javascript" src="~WS-JSURL(ws_analyse)~"></script>
   ...
{/AC-AgreementMadeForID(optimize)}
```

Oberhalb der Klammerung wird das Tag `WS-ExternalStatistics` benötigt, welches den JavaScript-Block mit den allgemeinen und seitenabhängigen Tracking-Informationen in JavaScript-Variablen enthält. Mit dieser Verfahrensweise werden alle Funktionen und Dienste, die über die `ws_analyse.js` eingebunden werden, mit einem einzigen Klick aktiviert oder deaktiviert.

Möchte man die Funktionen und Dienste einzeln anbieten, dann muss die `ws_analyse.js` aufgelöst werden. Jede Funktion und jeder Dienst muss als einzelne JavaScript-Datei ausgelagert und über das PageSpeed-Tool als einzelne Gruppe angelegt werden:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~WS-ExternalStatisticsData~
{AC-AgreementMadeForID(google)}
   ...
   <script type="text/javascript" src="~WS-JSURL(analyse-gruppe-01)~"></script>
   ...
{/AC-AgreementMadeForID(google)}

{AC-AgreementMadeForID(econda)}
   ...
   <script type="text/javascript" src="~WS-JSURL(analyse-gruppe-02)~"></script>
   ...
{/AC-AgreementMadeForID(econda)}
```

Wegweiser: Integration der Tracking-Schnittstelle, Integration mit PageSpeed-Tool

Wegweiser: Tracking-Schnittstelle, Funktionsweise

Wegweiser: [JavaScript und jQuery](https://dokumentation.websale.de/v8s/templates/javascript-und-jquery.md)

Referenz: [AC-AgreementMadeForID()](https://dokumentation.websale.de/v8s/referenz/tags/ac-agreementcookies.md#ac-agreementmadeforid)

Referenz: [WS-ExternalStatisticsData](https://dokumentation.websale.de/v8s/referenz/tags/ws/merkzettel-vergleich-upload-und-externe-dienste.md#tracking)

### Schritt 6: Consent-Layer mit Checkboxen einblenden

Um eine Detailseite mit Checkboxen zur aktiven Bestätigung der Zustimmung seitens des Shopkunden anzuzeigen, integrieren Sie folgenden Code im gewünschten Template. Die verwendeten Drittanbieter-Dienste müssen gegebenenfalls noch entsprechend ergänzt werden.

Beispiel 1, alle Funktionen einzeln aufgelistet, ohne Gruppierung:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{AC-Entry}
   ...
   {@AC-Entry}
      <label><strong>~AC-Entry_Name~ (ID: ~AC-Entry_ID~)</strong></label><br>
      <input type="checkbox" value="" onclick="ws_agreement_updatecheckboxes();" class="~AC-Entry_CheckboxClass~" ~AC-Entry_CheckboxIsChecked~>
         ~AC-Entry_Descr~
   {/@AC-Entry}
   ...
{/AC-Entry}
```

Beispiel 2, Funktionen zu thematischen Gruppierungen zusammengefasst:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~DC-DynamicLoop1_set($AC-ConsentGroupList$)~
{@DC-DynamicLoop1}
   {AC-ConsentGroup($DC-DynamicLoop1_data$)}
      <input type="checkbox" value="" onclick="ws_agreement_updatecheckboxes();" class="~AC-ConsentGroup_CheckboxClass~" ~AC-ConsentGroup_CheckboxIsChecked~>
      Alle ~AC-ConsentGroup_Name~ erlauben<br>
      ~AC-ConsentGroup_Descr~
      {AC-Entry}
         {@AC-Entry($DC-DynamicLoop1_data$)}
            <input type="checkbox" value="" onclick="ws_agreement_updatecheckboxes();" class="~AC-Entry_CheckboxClass~" ~AC-Entry_CheckboxIsChecked~>
            ~AC-Entry_Name~
         {/@AC-Entry($DC-DynamicLoop1_data$)}
      {/AC-Entry}
   {/AC-ConsentGroup($DC-DynamicLoop1_data$)}
{/@DC-DynamicLoop1}
```

Referenz: [AC-Tags](https://dokumentation.websale.de/v8s/referenz/tags/ac-agreementcookies.md)

Referenz: [AC-Entry](https://dokumentation.websale.de/v8s/referenz/tags/ac-agreementcookies.md#ac-entry)

Referenz: DC-DynamicLoop1…3\_set()

Referenz: DC-DynamicLoop1…3\_data

### Schritt 7: Button mit JavaScript-Funktion einfügen

In der Regel befindet sich die Funktion `ws_agreementcookies_set();` auf dem Speichern-Button des Consent-Layers, um die Cookies zu setzen. Fügen Sie folgenden Code in den Consent-Layer ein.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="button" onclick="ws_agreementcookies_set();">
   Einstellungen speichern
</input>
```

In den Materialien stellen wir Ihnen den kompletten Layer zur Verfügung, der im Mustershop [v8s-demoshop.websale.biz](https://v8s-demoshop.websale.biz) integriert wurde.

Materialien: [Einwilligung zur Datenverarbeitung](https://dokumentation.websale.de/v8s/referenz/verwendete-cookies.md#einwilligung-zur-datenverarbeitung)

### Schritt 8: Laufzeit der AgreementCookies ändern (optional)

Die Laufzeit der AgreementCookies beträgt standardmäßig 10 Jahre. Ab der JavaScript-Modul-Komponente `ws-module-agreementcookies-1.8.6.js` kann die Funktion `ws_agreementcookies_set()` mit einem Parameter `expires_days` ergänzt werden. Tragen Sie die gewünschte Anzahl an Tagen in das Argument der `onclick`-Funktion des Buttons ein.

Beispiele:

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
ws_agreementcookies_set();     // Laufzeit 10 Jahre (Standard)
ws_agreementcookies_set(365);  // Laufzeit 365 Tage, also 1 Jahr
```

Wegweiser: [JavaScript und jQuery](https://dokumentation.websale.de/v8s/templates/javascript-und-jquery.md)

### Schritt 9: Hinweis bei veralteter Browserversion (optional)

In veralteten Browserversionen, beispielsweise Firefox bis Version 52, wird die Funktion Einwilligung zur Datenverarbeitung nicht korrekt ausgeführt. Der Shopbesucher kann mit einem entsprechenden Hinweis darauf aufmerksam gemacht werden. Binden Sie hierfür das Script ein, das im verlinkten Kapitel beschrieben wird.

Wegweiser: [Hinweis auf veraltete Browserversion](https://dokumentation.websale.de/v8s/einstellungen/hinweis-auf-veraltete-browserversion.md)

### Schritt 10: Liveschaltung

Wenn Sie die Funktion für den Livebetrieb aktivieren möchten, setzen Sie den Parameter `Allow` im Abschnitt `<AgreementCookies>` der Shopkonfiguration `shop.config` auf `yes`:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AgreementCookies>
   Allow   = yes
   ...
</AgreementCookies>
```

Referenz: [Abschnitt AgreementCookies](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md#agreementcookies)

Haben Sie alle Schritte durchgeführt, ist das Feature vollständig integriert und aktiv.

## Hinweise zur Migration

Wenn Sie die Funktion Einwilligung zur Datenverarbeitung bereits in Ihrem Shop integriert haben und nun die aktuelle Integration ab November 2019 vornehmen möchten, beachten Sie bitte folgende Hinweise:

* Aktualisieren Sie das JavaScript `ws-module-agreementcookies` auf Version 1.8.5 oder neuer, wie in Schritt 3 gezeigt.
* Weisen Sie den Checkboxen zur Abfrage der Einwilligung folgendes `onclick`-Attribut zu: `onclick="ws_agreement_updatecheckboxes();"`, siehe Schritt 6.

## Vereinfachte Integration für econda-Dienste

Wenn Sie in Ihrem Shop econda Tracking oder econda ARP ohne WEBSALE Tracking-Schnittstelle nutzen, können Sie die Einwilligung zur Datenverarbeitung durch econda direkt über den Consent-Layer steuern, ohne die komplette Datei von econda auszuklammern oder einzuklammern.

econda unterscheidet zwischen folgenden Privacy Modes:

| Privacy Mode | Art | Beschreibung |
| - | - | - |
| 3 | Vollumfängliches Messen | Messen mit Visitor-Cookies und personenbezogenen Daten nach DSGVO, beispielsweise anonymisierte IP-Adresse zur GeoIP-Auflösung oder Bestellnummer. Es werden nur die personenbeziehbaren Daten erfasst, die vom Käufer übermittelt werden. |
| 2 | Anonymisiertes Messen | Messen ohne Visitor-Cookie. Kritische personenbezogene Daten werden bereits im Skript gelöscht oder gehasht. Dies ist die Empfehlung von econda. |
| 1 | Kein Messen | Es werden keine Tracking-Requests ausgeführt. |

Weitere Informationen und aktuelle Codebeispiele finden Sie in der [econda-Dokumentation](https://docs.econda.de/de/index.html). Dafür ist ein Login nötig.

### Voraussetzungen

Die Integration von econda in Ihrem Shop ist ohne WEBSALE Tracking-Schnittstelle vorgenommen worden, also in der Standard-Integration. Zudem ist die Funktion Einwilligung zur Datenverarbeitung, wie oben beschrieben, in Ihrem Shop vorgenommen worden.

Wegweiser: Integration von econda Tracking und econda ARP

### Schritt 1: Freischaltung

Diese Funktion muss nicht von WEBSALE freigeschaltet werden.

### Schritt 2: Einstellung im econda-Backend

Rufen Sie Ihr econda-Backend auf und wählen Sie dort den gewünschten Privacy Mode aus, der standardmäßig genutzt werden soll, also ohne Auswahl durch den Käufer.

### Schritt 3: Bisherige Konfigurationen und Klammerungen bezüglich econda entfernen

Dieser Schritt gilt nur, falls zutreffend. Ist die Einwilligung zur Datenverarbeitung durch econda bereits in Ihrem Shop integriert worden, mittels Klammerung der kompletten Datei von econda wie oben beschrieben, so entfernen Sie zunächst alle betreffenden Klammerungen und Einstellungen in Ihrer Shopkonfiguration `shop.config`.

### Schritt 4: Consent-Layer anpassen

Für econda Tracking fügen Sie auf dem Consent-Layer, siehe Schritt 6 der allgemeinen Integration, folgenden Code ein:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{AC-AgreementMadeForID(econda)}
   <script>localStorage.setItem('emos_privacy','3');</script>
{/AC-AgreementMadeForID(econda)}
{!AC-AgreementMadeForID(econda)}
   <script>localStorage.removeItem('emos_privacy');</script>
{/!AC-AgreementMadeForID(econda)}
...
```

Bei dieser Einstellung wird, wenn econda im Consent-Layer angehakt ist, der Privacy Mode 3 gesetzt. Ist econda nicht angehakt, wird der standardmäßige Privacy Mode gesetzt, den Sie im econda-Backend festgelegt haben.

Wenn Sie statt Privacy Mode 3 einen anderen Privacy Mode auswählen lassen möchten, also 1 oder 2, ersetzen Sie im Codebeispiel einfach die 3 mit der entsprechenden Ziffer, siehe Tabelle oben.

Für econda ARP ergänzen Sie auf dem Consent-Layer folgenden Code:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{AC-AgreementMadeForID(econda_arp)}
<script>
window.econda.ready(() => {
   window.econda.arp.PrivacyProtection.updatePermissions([{
      state: 'ALLOW',
      version: '1.0',
      timestamp: new Date().toISOString()
   }])
})
</script>
{/AC-AgreementMadeForID(econda_arp)}

{!AC-AgreementMadeForID(econda_arp)}
<script>
window.econda.ready(() => {
   window.econda.arp.PrivacyProtection.updatePermissions([{
      state: 'DENY',
      version: '1.0',
      timestamp: new Date().toISOString()
   }])
})
</script>
{/!AC-AgreementMadeForID(econda_arp)}
...
```

Damit econda ARP ausgeführt werden kann, muss vom Käufer der Privacy Mode 3 ausgewählt worden sein.

## WEBSALE-App für iOS (App Tracking Transparency)

Seit der Betriebssystem-Version iOS 14.5 verlangt Apple, dass in Apps, die User-Daten tracken, das AppTrackingTransparency-Framework (ATT) implementiert ist. Durch das Framework wird der Nutzer beim ersten Öffnen der App gefragt, ob er dem Tracking durch die App zustimmt oder nicht. Bei Verwendung der iOS-App wird der WEBSALE-Consent-Layer daher nicht mehr angezeigt.

Das AppTrackingTransparency-Framework sendet im Header den HTTP-Trackingstatus an die WEBSALE-App. Neben den Trackingstatus-Werten von Apple gibt es zusätzlich den Wert `always`:

| Wert | Bedeutung |
| - | - |
| `authorized` | Nutzer erlaubt Tracking. |
| `pre_ios14` | Auf dem Gerät läuft eine ältere Version von iOS als 14, es gibt dort also noch kein ATT. |
| `denied` | Der Nutzer lehnt Tracking ab. |
| `not_determined` | Der Nutzer hat noch keine Angaben gemacht. |
| `restricted` | Der Nutzer hat Tracking global am Gerät deaktiviert. |
| `always` | Der Dienst wird immer aktiviert, unabhängig vom übermittelten Trackingstatus. |

Weitere Informationen finden Sie auch in der [Apple-Dokumentation](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/authorizationstatus).

Diese Trackingstatus-Werte müssen als kommaseparierte Liste in den neuen Parameter eingefügt werden, um den jeweiligen Dienst zu aktivieren, also das Cookie und den zugehörigen `<+Entry>`-Eintrag. Wenn Sie die WEBSALE-App einsetzen, ergänzen Sie im Abschnitt `<AgreementCookies>` der Shopkonfiguration `shop.config` alle einzelnen `<+Entry>`-Einträge mit folgendem Parameter:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AgreementCookies>
   ...
   <+Entry>
      ...
      iOSApp-AcceptViaTrackingFramework-List =        # Kommaseparierte Liste der (Status-)Werte, bei denen der Dienst aktiviert wird.
      ...
   </+Entry>
   ...
</AgreementCookies>
```

Referenz: [Abschnitt AgreementCookies](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/externe-dienste-und-schnittstellen.md#agreementcookies)

Wenn man den Parameter weglässt oder keinen Wert hinter den Parameter setzt, wird der entsprechende Dienst nicht aktiviert und das Cookie nicht gesetzt.

### Beispiele

Fügen Sie folgendes Parameter-Wert-Paar bei allen `<+Entry>`-Abschnitten hinzu, deren Tracking Sie nur nach ausdrücklicher Zustimmung oder auf älteren iOS-Versionen aktivieren möchten:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
iOSApp-AcceptViaTrackingFramework-List = authorized,pre_ios14
```

Fügen Sie dieses Parameter-Wert-Paar bei allen `<+Entry>`-Abschnitten hinzu, deren Aktivierung keine ausdrückliche Zustimmung durch den Kunden bedarf, beispielsweise wenn die Daten nicht an externe Systeme weitergeleitet werden:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
iOSApp-AcceptViaTrackingFramework-List = always
```

Als Shopbetreiber können Sie somit für jeden Dienst, also für jeden einzelnen `<+Entry>`-Eintrag, entscheiden, bei welchem übermittelten Trackingstatus von iOS der jeweilige Dienst aktiviert und ein entsprechendes Cookie gesetzt wird. Mit dem Wert `always` setzen Sie für diesen Dienst eine generelle Zustimmung des Users voraus, unabhängig vom übermittelten Wert.

> [!NOTE]
>
> Alle essenziellen Cookies, die für die Funktionalität des Shops grundsätzlich notwendig sind, sind nicht betroffen und stehen nicht zur Auswahl. Das gilt genauso wie beim WEBSALE-Consent-Layer.


## Related topics

- [Materialien Einwilligung zur Datenverarbeitung](https://dokumentation.websale.de/v8s/materialien/materialien-einwilligung-zur-datenverarbeitung.md)
- [Cookies](https://dokumentation.websale.de/v8s/einstellungen/cookies.md)
- [Tracking einbinden](https://dokumentation.websale.de/v8s/funktionen-zur-shop-optimierung/tracking-einbinden.md)
- [Integration von econda](https://dokumentation.websale.de/v8s/integration-von-econda/integration-von-econda.md)
- [econda Cross Sell](https://dokumentation.websale.de/v8s/integration-von-econda/econda-cross-sell.md)


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