# Kurzdokumentation zur Einrichtung einer Kampagne in easy.AFFILIATE ohne Basket-Tracking - Campaign_ID

Um das Tracking in easy.AFFILIATE zu gewährleisten, sind lediglich zwei Einbauschritte notwendig. 

1. **ID-Aufnahme:** Das System generiert beim Redirect von der Publisher-Seite eine ID, die shopseitig aufgenommen und im Local Storage sowie als Cookie gespeichert wird.
2. **Conversion-Erfassung:** Bei Abschluss einer Bestellung wird diese ID zusammen mit den Bestelldaten an das Trackingsystem zurückgespielt.

---

## 1. Code-Snippet (Einzubauen auf jeder Seite)

Dieser Code nimmt die ID (`emid`) aus der URL auf und speichert sie dauerhaft im Browser des Nutzers.

**Platzierung:** Bauen Sie diesen Code auf **sämtlichen Seiten** Ihres Shops ein (am einfachsten im globalen Footer-Template).

```javascript
(function() {
    // Die Laufzeit des Cookies (im Regelfall 30 Tage)
    var emidCookieExpirationDays = 30;

    // Ab hier bitte nicht verändern!
    var getKey = 'emid';
    var getValue = getParameterByName(getKey);
    var storageKey = 'emid';
    var emidCookieKey = 'emid';
    var emidCookieDomain = window.location.hostname;

    if(getValue) {
        window.localStorage.setItem(storageKey, getValue);
        setEmidCookie(emidCookieKey, getValue, emidCookieExpirationDays,  emidCookieDomain);
    }

    function setEmidCookie(cname, cvalue, exdays, cdomain) {
      var d = new Date();
      d.setTime(d.getTime() + (exdays * 24*60*60*1000));
      var expires = "Expires="+ d.toUTCString();
      document.cookie = cname + "=" + cvalue + ";" + expires + ";Path=/;SameSite=none;Domain=" + cdomain + ";Secure";
    }
    
    function getParameterByName(e,n){n||(n=window.location.href),e=e.replace(/[[]]/g,"\\$&");var r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(n);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null}
})();
```

---

## 2. Conversion-Code (Einzubauen auf der Checkout-Successful-Seite)

Dieser Code übergibt die Bestelldaten an das Trackingsystem. Er muss auf der **Bestellbestätigungsseite** (Danke-Seite) integriert werden.

**Wichtig:** Die Platzhalter im Script müssen dynamisch durch die echten Werte der Bestellung ersetzt werden.

```javascript
(function() { 
    // Bitte fügen Sie Ihre Campaign_id hier ein (vom Account Manager erhalten)
    var campaign_id = 'CAMPAIGN_ID';
    
    // Bitte fügen Sie die eindeutige Bestellnummer hier ein
    var token = 'ORDERTOKEN'; 
    
    // Bitte fügen Sie den Netto-Warenkorbwert hier ein (Punkt als Dezimaltrenner)
    var turnover = 'TURNOVER';
    
    // Bitte fügen Sie die trigger_id ein
    var trigger_id = 'TRIGGER_ID';
    
    // ISO 4217 Währungscode (Standard: EUR)
    var currency = 'EUR';
    
    // Optionale Beschreibung zur Bestellung
    var descr ='DESCRIPTION';
    
    // Ab hier bitte nicht verändern!
    var storageKey = 'emid';
    var trackingDomain = 'pvn.ihreDomain.de';    
    
    var trackingUrl = 'https://'+trackingDomain+'/trck/etrack/?campaign_id='+campaign_id+'&trigger_id='+trigger_id+'&token='+token+'&descr='+descr+'&currency='+currency+'&turnover='+turnover+'&t=js';
    var emid = window.localStorage[storageKey];

    if(emid) {
      trackingUrl += '&emid='+emid;
    }
        
    var req = new XMLHttpRequest;
    req.withCredentials = true;
    req.open("GET", trackingUrl);
    req.send();
    req.onreadystatechange = function () { (req.readyState === 4) ? eval(req.response) : null };
})();
```

### Platzhalter im Conversion-Code

| Platzhalter | Beschreibung | Typ |
| :--- | :--- | :--- |
| `CAMPAIGN_ID` | Fester Wert von Ihrem Account-Manager. | Statisch |
| `ORDERTOKEN` | Die eindeutige Bestellnummer aus Ihrem Shop. | Dynamisch |
| `TURNOVER` | Netto-Umsatz (ohne Steuern & Versandkosten). | Dynamisch |
| `TRIGGER_ID` | Zur Unterscheidung der Conversion-Art (vom Account-Manager). | Statisch/Dynamisch |
| `DESCRIPTION` | Optionale Zusatzinfos zur Bestellung. | Optional |

> **Hinweis:** Der `turnover` versteht sich als Netto-Wert. Bitte stellen Sie sicher, dass dynamische Werte korrekt in das Script ausgegeben werden.