# JSON-Struktur

# JSON-Struktur

Beim Baskettracking wird der Warenkorb als **JSON-Array** im GET-Parameter `json` an den Endpoint übergeben.  
Jedes bestellte Produkt wird dabei als eigenes **Objekt** innerhalb des Arrays übermittelt.

---

## Beispiel-JSON

```json
[
  {
    "campaign_id": "CAMPAIGN_ID",
    "trigger_id": "TRIGGER_ID",
    "token": "TOKEN",
    "action_id": "EMID",
    "amount": "AMOUNT",
    "price": "PRICE",
    "article_number": "ARTICLE_NUMBER",
    "productname": "PRODUCT_NAME",
    "category": "CATEGORY",
    "additional": {
      "vc": "WINTER20",
      "zusatzinfo": "additional_1"
    }
  }
]
```

---
## Variablenbeschreibung Basket-Item

| Variable | Pflichtfeld | Beschreibung |
|---|---|---|
| `campaign_id` | ✅ | Kampagnen-ID |
| `trigger_id` | ✅ | Trigger-ID |
| `token` | ✅ | Bestellnummer / Order ID |
| `action_id` | ✅ | EMID (eindeutige Nutzer-ID, die über den Clicklink übergeben wird) |
| `amount` | ✅ | Anzahl, wie oft das Produkt gekauft wurde |
| `price` | ✅ | Netto-Preis des einzelnen Produkts (Dezimaltrennzeichen = Punkt `.`) |
| `article_number` | ✅ | Produkt-ID |
| `productname` | ✅ | Produktname |
| `category` | ✅ | Produktkategorie |
| `additional` | ❌ | Optionales Key-Value-Array mit weiteren Informationen (z. B. Gutscheincode, Kundentyp, Zusatzinfos) |

---

## Variablenbeschreibung Order-Ebene

| Variable | Pflichtfeld | Beschreibung |
|---|---|---|
| `currency` | ❌ | Übergabe der Währung. Standard: EUR. Bei Bedarf kann CHF, USD, … gesetzt werden. |

---

## Hinweise zur Struktur

* Das JSON ist immer ein **Array von Objekten**.
* Jedes Objekt entspricht einem **bestellten Produkt** (Basket-Item).
* Alle mit ✅ markierten Felder sind **Pflichtfelder**. Ohne diese kann die Transaktion nicht korrekt verarbeitet werden.
* Der Wert **`action_id`** (früher auch als `emid` bezeichnet) ist entscheidend für die **Attribution der Customer Journey**.
* Über **`additional`** lassen sich flexible, kundenspezifische Daten übergeben, z. B.:
    * Gutscheincode
    * Kundentyp (Neu-/Bestandskunde)
    * Affiliate-spezifische Zusatzinfos

---

## Beispiel mit mehreren Artikeln

```json
[
  {
    "campaign_id": "1",
    "trigger_id": "5",
    "token": "12345",
    "action_id": "abc123",
    "amount": "1",
    "price": "49.90",
    "article_number": "SKU-001",
    "productname": "Sneaker XY",
    "category": "Schuhe",
    "additional": {
      "vc": "WINTER20",
      "customerType": "Neukunde"
    }
  },
  {
    "campaign_id": "1",
    "trigger_id": "5",
    "token": "12345",
    "action_id": "abc123",
    "amount": "2",
    "price": "19.90",
    "article_number": "SKU-002",
    "productname": "Socken 2er Pack",
    "category": "Accessoires"
  }
]