# Warenkörbe API

> Die Warenkörbe Ihrer Käufer senden, damit Emailit abgebrochene Warenkörbe erkennt.

Basis-URL: `https://api.emailit.com/v2`. Authentifizieren Sie sich mit `Authorization: Bearer <API key>`.

## Warenkorb erstellen oder aktualisieren — POST /carts

> Senden Sie den aktuellen Warenkorb des Käufers aus Ihrem Shop. Unveränderte Warenkörbe bekannter Kontakte gelten als abgebrochen und lösen cart.abandoned aus. Alpha: nur für das Emailit-Team zugänglich.

# Warenkorb erstellen oder aktualisieren

Senden Sie den aktuellen Warenkorb des Käufers bei jeder Änderung. Der Warenkorb wird über seine `id` in Ihrem Shop identifiziert: Senden Sie dieselbe `id` erneut, wird der gespeicherte Warenkorb aktualisiert. Jeder Aufruf ersetzt `items` und `total` des Warenkorbs. E-Mail-Adresse, Kontakt, Währung und Checkout-URL bleiben erhalten, wenn Sie sie weglassen. Erfordert einen API-Schlüssel mit dem Scope `full` oder `events`. Bei einem Schlüssel mit dem Scope `events` enthält die Antwort nur `object`, `id` und `external_id`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

Alternativ kann das [Tracking-Skript](/de/docs/commerce/connect-your-shop/#the-tracking-script) Warenkörbe aus dem Browser senden.

Ein neuer Warenkorb oder eine Änderung an den Artikeln, dem Gesamtbetrag, dem Status oder dem Kontakt eines Warenkorbs löst [`cart.updated`](/de/docs/webhooks/events/cart/updated/) aus. Wird derselbe Warenkorb erneut gesendet, wird nichts ausgelöst.

So wechselt ein Warenkorb zwischen den Status:

- **Abgebrochen.** Ein Warenkorb, der zu einem Kontakt gehört, mindestens einen Artikel enthält und während der `cart_abandon_minutes` der [Commerce-Einstellungen](/de/docs/api-reference/commerce/get-settings/) (standardmäßig 60) nicht aktualisiert wird, wird `abandoned`, und Emailit löst [`cart.abandoned`](/de/docs/webhooks/events/cart/abandoned/) aus. Warenkörbe ohne Kontakt bleiben `active`.
- **Wieder aktiv.** Wenn Sie einen abgebrochenen Warenkorb aktualisieren, wird er `active` und `abandoned_at` wird geleert.
- **Konvertiert.** Eine [Bestellung](/de/docs/api-reference/orders/create/) mit derselben `cart_id` konvertiert den Warenkorb. Eine neue Bestellung desselben Kontakts konvertiert außerdem die Warenkörbe dieses Kontakts, die zuletzt vor der Bestellung aktualisiert wurden. Ein konvertierter Warenkorb bleibt konvertiert, wenn Sie ihn aktualisieren.

`POST /carts`

## Anfrage-Body

- `id` (string | number, erforderlich): Die Warenkorb- oder Checkout-ID in Ihrem Shop, bis zu 255 Zeichen. Wird als `external_id` gespeichert. Senden Sie denselben Wert als `cart_id` mit der Bestellung. Sie können ihn auch als `external_id` oder `cart_id` senden.

- `email` (string): Die E-Mail-Adresse des Käufers. Verknüpft den Warenkorb mit dem Kontakt mit dieser Adresse. Warenkörbe erstellen nie Kontakte: Ein Warenkorb ohne passenden Kontakt kann nicht abgebrochen werden. `customer.email` wird ebenfalls akzeptiert.

- `contact_id` (string): Der Kontakt des Käufers (`con_...`). Wenn kein Kontakt diese ID hat, sucht Emailit den Kontakt über `email`.

- `anonymous_id` (string): Die Besucher-ID des Tracking-Skripts, bis zu 255 Zeichen. Wenn dieser Besucher später identifiziert wird, werden Warenkörbe mit dieser ID und ohne Kontakt mit dem Kontakt verknüpft.

- `currency` (string): Dreistelliger Code nach ISO 4217. Standardmäßig gilt die Währung des Workspaces aus den [Commerce-Einstellungen](/de/docs/api-reference/commerce/get-settings/).

- `items` (object[]): Bis zu 250 Positionen im selben Format wie `items` bei [Bestellung erstellen oder aktualisieren](/de/docs/api-reference/orders/create/). Artikel ohne `title`, `url` oder `image_url` übernehmen diese aus dem [Katalog](/de/docs/api-reference/products/create/). `line_items` wird ebenfalls akzeptiert.

- `total` (number | string): Warenkorbwert. Standardwert: die Summe der Positionsbeträge.

- `checkout_url` (string): Ein `http`- oder `https`-Link, der den Käufer zu diesem Warenkorb zurückbringt, bis zu 2.048 Zeichen. E-Mails können mit dem [Warenkorb-Block](/de/docs/campaigns/products-and-coupons/#the-cart) darauf verlinken.

- `status` (string): `active` (Standardwert) oder `converted`. Senden Sie `converted`, um einen Warenkorb selbst abzuschließen.

## Rückgabe

`201 Created` mit dem [Warenkorb-Objekt](/de/docs/api-reference/carts/get/), wenn der Warenkorb neu ist, oder `200 OK`, wenn ein bestehender Warenkorb aktualisiert wurde. Gibt `422` zurück, wenn ein Feld ungültig ist.
**Anfrage** `POST /carts`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/carts \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "c-58f1a2",
    "email": "ada@example.com",
    "currency": "USD",
    "checkout_url": "https://shop.example.com/cart/recover/c-58f1a2",
    "items": [
      { "product_id": "8123456789", "variant_id": "42-blue", "sku": "TRS-BLU-42", "quantity": 1, "price": 89 }
    ]
  }'
```

**201**

```json
{
  "object": "cart",
  "id": "crt_3Rx784H7VYWRTViadjbp5oKHRud",
  "external_id": "c-58f1a2",
  "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
  "email": "ada@example.com",
  "status": "active",
  "currency": "USD",
  "total": 89,
  "items": [
    {
      "product_id": "8123456789",
      "variant_id": "42-blue",
      "sku": "TRS-BLU-42",
      "title": "Trail running shoe",
      "quantity": 1,
      "unit_price": 89,
      "total": 89,
      "url": "https://shop.example.com/products/trail-running-shoe",
      "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
    }
  ],
  "checkout_url": "https://shop.example.com/cart/recover/c-58f1a2",
  "source": "api",
  "abandoned_at": null,
  "converted_at": null,
  "converted_order_id": null,
  "created_at": "2026-10-08T12:12:47.630Z",
  "updated_at": "2026-10-08T12:12:47.630Z"
}
```

**422**

```json
{
  "message": "Validation failed. checkout_url: must be an http(s) URL",
  "errors": {
    "checkout_url": [
      "must be an http(s) URL"
    ]
  }
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/carts/upsert/

## Warenkorb abrufen — GET /carts/{id}

> Rufen Sie einen Warenkorb über seine Emailit-ID oder über die Warenkorb- oder Checkout-ID in Ihrem Shop ab. Alpha: nur für das Emailit-Team zugänglich.

# Warenkorb abrufen

Ruft einen Warenkorb über seine Emailit-ID oder über die Warenkorb- oder Checkout-ID in Ihrem Shop ab. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`GET /carts/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die Warenkorb-ID (`crt_...`) oder die Warenkorb- oder Checkout-ID in Ihrem Shop (`external_id`). Shop-IDs mit Sonderzeichen müssen Sie URL-kodieren.

## Das Warenkorb-Objekt

- `object` (string): Immer `cart`.

- `id` (string): Emailit-Warenkorb-ID (`crt_...`).

- `external_id` (string): Die Warenkorb- oder Checkout-ID in Ihrem Shop: die `id`, die Sie gesendet haben. Warenkörbe aus dem Tracking-Skript ohne eigene ID verwenden `web:` plus die anonyme ID des Besuchers.

- `contact_id` (string | null): Der Kontakt, zu dem der Warenkorb gehört (`con_...`), oder `null`, solange der Käufer unbekannt ist.

- `email` (string | null): Die E-Mail-Adresse des Käufers.

- `status` (string): - `active`: Der Käufer kauft noch ein. - `abandoned`: Der Warenkorb gehört zu einem Kontakt, enthält Artikel und hat sich während der `cart_abandon_minutes` der [Commerce-Einstellungen](/de/docs/api-reference/commerce/get-settings/) nicht geändert. - `converted`: Für ihn wurde eine Bestellung aufgegeben, oder Sie haben ihn mit `status` auf `converted` gesendet.

- `currency` (string | null): Dreistelliger Code nach ISO 4217 für die Beträge.

- `total` (number): Warenkorbwert.

- `items` (object[]): Positionen. Jede hat `product_id` (die Produkt-ID in Ihrem Shop), `variant_id`, `sku`, `title`, `quantity`, `unit_price`, `total`, `url` und `image_url`.

- `checkout_url` (string | null): Link, der den Käufer zu diesem Warenkorb zurückbringt.

- `source` (string): `api` oder `js` für Warenkörbe aus dem Tracking-Skript.

- `abandoned_at` (string | null): Zeitpunkt, zu dem der Warenkorb als abgebrochen markiert wurde. Wird geleert, wenn der Warenkorb erneut aktualisiert wird.

- `converted_at` (string | null): Zeitpunkt, zu dem der Warenkorb konvertiert wurde.

- `converted_order_id` (string | null): Die Bestellung (`ord_...`), die den Warenkorb konvertiert hat.

- `created_at, updated_at` (string): Zeitpunkt der ersten Speicherung und der letzten Änderung des Warenkorbs, im Format ISO 8601 in UTC.

**Anfrage** `GET /carts/{id}`

**cURL**

```bash
curl https://api.emailit.com/v2/carts/crt_3Rx784H7VYWRTViadjbp5oKHRud \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "object": "cart",
  "id": "crt_3Rx784H7VYWRTViadjbp5oKHRud",
  "external_id": "c-58f1a2",
  "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
  "email": "ada@example.com",
  "status": "abandoned",
  "currency": "USD",
  "total": 107,
  "items": [
    {
      "product_id": "8123456789",
      "variant_id": "42-blue",
      "sku": "TRS-BLU-42",
      "title": "Trail running shoe",
      "quantity": 1,
      "unit_price": 89,
      "total": 89,
      "url": "https://shop.example.com/products/trail-running-shoe",
      "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
    },
    {
      "product_id": "8123456790",
      "variant_id": null,
      "sku": null,
      "title": "Merino running socks",
      "quantity": 2,
      "unit_price": 9,
      "total": 18,
      "url": "https://shop.example.com/products/merino-running-socks",
      "image_url": "https://shop.example.com/images/merino-running-socks.jpg"
    }
  ],
  "checkout_url": "https://shop.example.com/cart/recover/c-58f1a2",
  "source": "api",
  "abandoned_at": "2026-10-08T13:31:04.118Z",
  "converted_at": null,
  "converted_order_id": null,
  "created_at": "2026-10-08T12:12:47.630Z",
  "updated_at": "2026-10-08T12:28:51.902Z"
}
```

**404**

```json
{
  "error": "Cart not found",
  "message": "Cart not found."
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/carts/get/

## Warenkörbe auflisten — GET /carts

> Listen Sie Warenkörbe auf, zuletzt aktualisierte zuerst, gefiltert nach Status oder Kontakt. Alpha: nur für das Emailit-Team zugänglich.

# Warenkörbe auflisten

Listet Warenkörbe auf, zuletzt aktualisierte zuerst. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`GET /carts`

## Query-Parameter

- `page` (integer): Seitennummer für die Paginierung (Minimum: 1, Standardwert: 1).

- `limit` (integer): Anzahl der zurückgegebenen Warenkörbe (Minimum: 1, Maximum: 100, Standardwert: 25).

- `status` (string): Nur Warenkörbe mit diesem Status: `active`, `abandoned` oder `converted`.

- `contact_id` (string): Nur Warenkörbe dieses Kontakts (`con_...`).

- `match`, `order`, `direction`: siehe [Filtern und Sortieren](https://emailit.com/de/docs/api-reference/filtering/).

## Filter und Sortierung

Filter- und Sortierschlüssel: siehe [Filtern und Sortieren](https://emailit.com/de/docs/api-reference/filtering/).

## Rückgabe

Eine Seite mit [Warenkorb-Objekten](/de/docs/api-reference/carts/get/) in `data`, dazu `total_records`, `next_page_url` und `previous_page_url`. Die Seiten-URLs enthalten nur `page` und `limit`; fügen Sie Ihre Filter daher erneut hinzu, wenn Sie ihnen folgen.
**Anfrage** `GET /carts`

**cURL**

```bash
curl "https://api.emailit.com/v2/carts?status=abandoned&order=abandoned_at&direction=desc" \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "data": [
    {
      "object": "cart",
      "id": "crt_3Rx784H7VYWRTViadjbp5oKHRud",
      "external_id": "c-58f1a2",
      "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
      "email": "ada@example.com",
      "status": "abandoned",
      "currency": "USD",
      "total": 89,
      "items": [
        {
          "product_id": "8123456789",
          "variant_id": "42-blue",
          "sku": "TRS-BLU-42",
          "title": "Trail running shoe",
          "quantity": 1,
          "unit_price": 89,
          "total": 89,
          "url": "https://shop.example.com/products/trail-running-shoe",
          "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
        }
      ],
      "checkout_url": "https://shop.example.com/cart/recover/c-58f1a2",
      "source": "api",
      "abandoned_at": "2026-10-08T13:31:04.118Z",
      "converted_at": null,
      "converted_order_id": null,
      "created_at": "2026-10-08T12:12:47.630Z",
      "updated_at": "2026-10-08T12:28:51.902Z"
    }
  ],
  "total_records": 1,
  "next_page_url": null,
  "previous_page_url": null
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/carts/list/

## Warenkorb löschen — DELETE /carts/{id}

> Löschen Sie einen Warenkorb. Alpha: nur für das Emailit-Team zugänglich.

# Warenkorb löschen

Löscht einen Warenkorb. Bestellungen, die ihn konvertiert haben, sind nicht betroffen. Wenn Sie einen Warenkorb mit derselben `id` erneut senden, wird er als neuer Warenkorb gespeichert. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`DELETE /carts/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die Warenkorb-ID (`crt_...`) oder die Warenkorb- oder Checkout-ID in Ihrem Shop.

**Anfrage** `DELETE /carts/{id}`

**cURL**

```bash
curl -X DELETE https://api.emailit.com/v2/carts/crt_3Rx784H7VYWRTViadjbp5oKHRud \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "object": "cart",
  "id": "crt_3Rx784H7VYWRTViadjbp5oKHRud",
  "deleted": true
}
```

**404**

```json
{
  "error": "Cart not found",
  "message": "Cart not found."
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/carts/delete/
