# Trackingcontainer / EATMS.js

# Übersicht

# Übersicht

Der **eatms-Container** dient zur **Identifizierung und Wiedererkennung von Nutzern** sowie zur **Einbindung dynamischen Codes**.  
Er ersetzt den klassischen Tracking-Tag-Script-Code – wenn der eatms-Container eingebunden wird, **muss der Tracking-Tag nicht zusätzlich eingebaut werden**.

### Vorteile durch den Einsatz als Tag-Manager
Der Einsatz des eatms-Containers als zentrales Verwaltungswerkzeug bietet folgende Vorteile:
* **Zentrale Verwaltung:** Alle Tracking-Tags, Pixel und Drittanbieter-Skripte können an einer einzigen Stelle verwaltet werden, ohne dass jedes Mal der Quellcode der Website angefasst werden muss.
* **Flexibilität und Geschwindigkeit:** Neue Marketing- und Analyse-Tools lassen sich deutlich schneller implementieren oder anpassen, da Änderungen direkt über den Container gesteuert werden. Dies verringert die Abhängigkeit von der IT-Entwicklung.

## Attributions-Tracking
* **Automatische EMID-Erfassung:** Wenn ein Nutzer die Website über einen Trackinglink erreicht, wird die EMID für die Attribution automatisch erfasst und in einem Cookie gespeichert. Dadurch bleibt die Zuordnung auch bei nachfolgenden Seitenaufrufen erhalten.

### Wichtige Hinweise
- Das **`eatms.js` Script** sollte aus Performance- und Funktionsgründen **am Ende des `<body>`-Elements** eingebunden werden.  
- **Nicht** innerhalb des `<head>`-Elements platzieren.  
- Soll der Container zusätzlich zur Ausspielung von Tags genutzt werden, muss er mit den entsprechenden Zusatzinformationen (Parametern) angereichert werden.

# Implementierung

# Grundsätzlicher Einbau

### Grundsätzlicher Einbau
```html
<script src="//SUB-DOMAIN/trck/etms/eatms.js"></script>
```

- `SUB-DOMAIN` ist ein Platzhalter und muss durch die **korrekte Domain des Partnerprogramms** ersetzt werden.  

---

# Parameter

Der eatms-Container kann durch URL-Parameter mit zusätzlichen Informationen angereichert werden:  

| Parameter       | Bedeutung                                       | Beispiel                         |
|-----------------|------------------------------------------------|----------------------------------|
| `campaign_id`   | Kampagnen-ID                                    | `&campaign_id=123`               |
| `product`       | Produktkennung                                  | `&product=product123`            |
| `pagetype`      | Seitentyp (z. B. Landingpage, Checkout, etc.)  | `&pagetype=landingpage`          |
| `category`      | Kategorie, in der sich der Nutzer befindet      | `&category=shoes`                |
| `disable_tags`  | Verhindert das Nachladen von Tags               | `&disable_tags=true`             |

# Beispiele

### Minimaler Einbau
```html
<script src="//SUB-DOMAIN/trck/etms/eatms.js"></script>
```

### Mit Parametern (z. B. für Kampagnen, Produkte und Consent-Steuerung)
```html
<script src="//SUB-DOMAIN/trck/etms/eatms.js?campaign_id=1&product=product123&pagetype=landingpage&disable_tags=true"></script>
```

# Consent-Übergabe

Damit der **eatms-Container** DSGVO-konform eingesetzt werden kann, muss sichergestellt werden, dass keine Cookies oder Tags ohne die ausdrückliche Zustimmung des Nutzers geladen werden. Der Container bietet hierfür verschiedene Mechanismen an, um den Consent-Status zu verarbeiten.

Es gibt grundsätzlich drei Wege, dies umzusetzen:

---

## 1. Übermittlung via GDPR-Parameter (TCF-Standard)

Der eatms-Container kann die Industriestandards `GDPR` und `GDPR_CONSENT` (TCF-String) interpretieren. 

* **Funktionsweise:** Der Container reagiert auf das vorliegende Signal und handelt entsprechend der hinterlegten Einstellungen.
* **Vendor-ID:** In den Systemeinstellungen des Programms muss die entsprechende **Vendor_id** hinterlegt werden. Falls keine spezifische ID definiert wurde, greift der Container automatisch auf die Vendor_id der *easy Marketing GmbH* zurück.
* **Beispiel für den Script-Aufruf:**
    ```text
    &gdpr=1&gdpr_consent=COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw
    ```

---

## 2. Steuerung über spezifische Parameter

Falls kein TCF-String verwendet wird, kann der Consent über einfache URL-Parameter im Script-Aufruf gesteuert werden.

### A. Allgemeine Consent-Flags
Je nach Implementierung können individuelle Parameter übergeben werden. Der genaue Schlüssel (z. B. `consent`, `gdpr`, `cmp=true`) wird in Absprache mit der **Datenschutz- und Technik-Abteilung** festgelegt.

### B. Gezielte Deaktivierung via `disable_tags`
Um das Nachladen von Tags (z. B. aus dem Tag-Manager) explizit zu verhindern, wenn keine Einwilligung vorliegt, kann die Variable `disable_tags` genutzt werden.
* **`disable_tags=true`**: Es werden keine Tags ausgeführt.
* **`disable_tags=false`** (oder Parameter entfernen): Die Ausführung der Tags wird ermöglicht, sofern der Consent vorliegt.

---

## 3. Bedingter Aufruf (Conditional Loading)

Alternativ zur Parameter-Steuerung kann die Ladegrenze direkt auf die Website-Logik verlagert werden.

* **Konzept:** Der eatms-Container wird **erst dann aufgerufen**, wenn der Benutzer seine Einwilligung gegeben hat.
* **Logik:** Das Script-Tag wird erst durch das Consent-Management-Tool (CMP) in das DOM injiziert, sobald beispielsweise die Zustimmung für "Marketing" vorliegt. Liegt kein Consent vor, wird der Container gar nicht erst geladen.

---

## Zusammenfassung der Parameter

| Parameter | Mögliche Werte | Beschreibung |
| :--- | :--- | :--- |
| `gdpr` | `0` oder `1` | Aktiviert den DSGVO-Modus. |
| `gdpr_consent` | [TCF-String] | Übergibt den detaillierten Consent-String (IAB-Standard). |
| `disable_tags` | `true` / `false` | Verhindert bei `true` das Laden jeglicher Tags innerhalb des Containers. |
| `consent` | `true` / `false` | Individueller Flag (nach Absprache). |

> **Hinweis:** Die Wahl der Methode und die Benennung der Parameter sollten zwingend zwischen der **Technik** und der **Datenschutz-Abteilung** abgestimmt werden, um die rechtliche Konformität sicherzustellen.

# Bedingungen einrichten

Der eatms wird neben seiner Funktion zum setzen von Cookies dazu genutzt, um externen Code auf der Seite zu platzieren, auf der der Container eingebunden wurde.

Damit nicht jeder Code auf jeder Seite ausgegeben wird, auf der der eatms Container eingebunden ist, können Bedingungen hinterlegt werden, die für die Ausspielung des eatms Containers zuständig sind.

Folgende Bedingungen stehen zur Verfügung: 

[![image-20200722-133257.png](https://docs.easy-m.de/uploads/images/gallery/2026-04/scaled-1680-/image-20200722-133257.png)](https://docs.easy-m.de/uploads/images/gallery/2026-04/image-20200722-133257.png)

# eatms.js auf Singlepage nachladen

Wenn der eatms-Container auf einer Website nicht beim Seitenwechsel neu geladen wird, weil die Seite an sich nicht neu geladen wird, gibt es die Möglichkeit, dies über eine Funktion zu tun:

Function:

`text eaTms.reRun(); `

Eine andere Möglichkeit ist die Umsetzung über jQuery:

jQuery Funktion:

`text $.getScript('//DOMAIN.DE/trck/etms/eatms.js?campaign_id=CAMPAIGN_ID');`

# Tagmanagement mit GET-Parametern diversieren

Über den Tagmanager ist es möglich, externe Skripte (eng.: scripts), wie bspw. Targetingpixel, auf Seiten auszugeben. Voraussetzung dafür ist, dass der Tagmanager auf der jeweiligen Seite integriert ist. Da aber nicht alle Skripte auf allen Seiten ausgegeben werden sollen, empfiehlt es sich, den Tagmanager mit weiteren Informationen anzureichern. Diese Informationen können dazu genutzt werden, um sie als Bedingung für die Ausspielung von Skripten zu nutzen. Dadurch wird gewährleistet, dass nur die notwendigen Skripte ausgespielt werden.

Daher empfehlen wir folgendes Vorgehen:

An den Tagmanager werden die Informationen über die Seite, auf welcher der User sich gerade befindet, mit einem GET-Parameter\* angehangen. Wir empfehlen, diese Anreicherung auf so vielen Seiten wie möglich vorzunehmen. Mit der Voraussetzung, dass auf der Seite auch die dementsprechenden Informationen vorliegen.

Darüber hinaus empfehlen wir, so viele Informationen über die Keys aufzunehmen, wie auf der aktuellen Seite vorliegen. Hierbei können unterschiedliche Informationen auf den verschiedenen Seiten aufgenommen werden. Das könnten bspw. der Produktpreis auf Produktseiten oder die Anzahl der Artikel im Warenkorb auf der Warenkorbseite sein.

Eine kleine Auswahl von Keys haben wir hier aufgelistet:

- pagetype=
    
    
    - category
    - product
    - landingpage
    - homepage
    - search
    - …
- product=
    
    
    - F20383044 (EAN)
    - iPhone 13 Pro Max (Produktname)
    - 232859258 (Artikelnummer)
    - …
- category=
    
    
    - shirts
    - beauty
    - tv
    - …
- price=
    
    
    - bruttopreis
    - nettopreis
- amount=
    
    
    - 5

> \*GET-Parameter oder auch URL-Parameter genannt sind Informationen, welche an eine URL angehangen werden. Diese bestehen immer aus einem Key (Schlüssel) und einem Value (Wert). Ein Beispiel wäre: https://easy-m.de?key=value&amp;key2=value2