Produkte
Den Katalog Ihres Shops in Emailit pflegen, für Produktraster, Empfehlungen und Bestellpositionen.
Produkt erstellen oder aktualisieren
Fügt Ihrem Katalog ein Produkt hinzu oder aktualisiert es, wenn bereits ein Produkt mit derselben id existiert. Die id ist die Produkt-ID in Ihrem Shop, Sie können dasselbe Produkt also bei jeder Änderung erneut senden. 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.
id ist immer erforderlich, title bei einem neuen Produkt. Felder werden nur geschrieben, wenn Sie sie senden: Ein Produkt, das Sie nur mit einem neuen Preis erneut senden, behält Titel, Kategorien, Bild und alles andere. Um viele Produkte auf einmal zu senden, verwenden Sie Produkte gesammelt erstellen oder aktualisieren.
Produktraster, Empfehlungen und Bestellpositionen in E-Mails lesen aus dem Katalog. Siehe Produkte, Gutscheine und der Warenkorb.
/productsAnfrage-Body
idstring | numberErforderlichDie Produkt-ID in Ihrem Shop, bis zu 255 Zeichen. Zahlen werden als Strings gespeichert. Wird als external_id gespeichert. Sie können sie auch als external_id senden.
titlestringProduktname, bis zu 500 Zeichen. Sie können ihn auch als name senden. Erforderlich bei einem neuen Produkt.
skustringArtikelnummer (SKU), bis zu 255 Zeichen.
descriptionstringProduktbeschreibung, bis zu 10.000 Zeichen.
urlstringProduktseite in Ihrem Shop. Eine http- oder https-URL, bis zu 2.048 Zeichen.
image_urlstringProduktbild. Eine http- oder https-URL, bis zu 2.048 Zeichen.
pricenumber | stringAktueller Preis, als Zahl oder numerischer String wie "89.00". Kann nicht negativ sein. Wird mit bis zu 4 Nachkommastellen gespeichert.
compare_at_pricenumber | stringPreis vor einem Rabatt, im selben Format wie price. Wenn er höher als price ist, gilt das Produkt als reduziert.
currencystringDreistelliger Code nach ISO 4217, etwa USD oder EUR. Kleinbuchstaben werden akzeptiert. E-Mails formatieren die Preise des Produkts in dieser Währung oder in USD, wenn sie nicht gesetzt ist.
categoriesstring[]Bis zu 50 Kategorienamen mit jeweils bis zu 191 Zeichen. Duplikate werden entfernt.
brandstringMarkenname, bis zu 191 Zeichen.
inventory_quantityinteger | nullVorrätige Stückzahl. null bedeutet, dass Sie den Lagerbestand nicht erfassen. Produktraster in E-Mails lassen Produkte mit 0 aus.
statusstringactive oder archived. Neue Produkte sind active. Archivierte Produkte werden in Produkte auflisten standardmäßig ausgeblendet und in Produktrastern ausgelassen.
metadataobjectIhre eigenen Schlüssel-Wert-Daten, bis zu 16 KB als JSON. Wenn Sie metadata senden, wird das gespeicherte Objekt ersetzt.
Rückgabe
201 Created mit dem Produkt-Objekt, wenn das Produkt neu ist, oder 200 OK, wenn ein bestehendes Produkt aktualisiert wurde. Gibt 422 zurück, wenn ein Feld ungültig ist.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": null,
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 89,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 34,
"status": "active",
"metadata": {},
"created_at": "2026-10-08T14:21:07.512Z",
"updated_at": "2026-10-08T14:21:07.512Z"
}{
"message": "Validation failed. price: must not be negative",
"errors": {
"price": [
"must not be negative"
]
}
}Produkt abrufen
Ruft ein Produkt über seine Emailit-ID oder über die Produkt-ID in Ihrem Shop ab. Erfordert einen API-Schlüssel mit dem Scope full.
/products/{id}Pfadparameter
idstringErforderlichDie Produkt-ID (prd_...) oder die Produkt-ID in Ihrem Shop (external_id). Shop-IDs mit Sonderzeichen müssen Sie URL-kodieren.
Das Produkt-Objekt
objectstringImmer product.
idstringEmailit-Produkt-ID (prd_...).
external_idstringDie Produkt-ID in Ihrem Shop: die id, die Sie gesendet haben. Artikel in Bestellungen und Warenkörben verweisen über diese ID auf Produkte.
skustring | nullArtikelnummer (SKU).
titlestringProduktname.
descriptionstring | nullProduktbeschreibung.
urlstring | nullProduktseite in Ihrem Shop.
image_urlstring | nullProduktbild.
pricenumber | nullAktueller Preis.
compare_at_pricenumber | nullPreis vor einem Rabatt. Ein Produkt ist reduziert, wenn compare_at_price höher als price ist.
currencystring | nullDreistelliger Code nach ISO 4217 für die Preise.
categoriesstring[]Kategorienamen.
brandstring | nullMarkenname.
inventory_quantityinteger | nullVorrätige Stückzahl. null bedeutet, dass der Lagerbestand nicht erfasst wird. Produktraster in E-Mails lassen Produkte mit 0 aus.
statusstringactive oder archived. Produktraster in E-Mails lassen archivierte Produkte aus.
metadataobjectIhre eigenen Schlüssel-Wert-Daten.
created_atstringZeitpunkt, zu dem das Produkt hinzugefügt wurde, im Format ISO 8601 in UTC.
updated_atstringZeitpunkt der letzten Änderung des Produkts, im Format ISO 8601 in UTC.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": "Lightweight shoe with a grippy sole for wet trails.",
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 89,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 34,
"status": "active",
"metadata": {
"color": "blue"
},
"created_at": "2026-10-02T08:15:22.418Z",
"updated_at": "2026-10-08T14:21:07.512Z"
}{
"error": "Product not found",
"message": "Product not found."
}Produkt aktualisieren
Aktualisiert ein Produkt, das bereits in Ihrem Katalog ist. Nur die Felder, die Sie senden, ändern sich. Die Produkt-ID in Ihrem Shop kann sich nicht ändern: Eine id im Body wird ignoriert. 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.
Um Produkte mit demselben Aufruf zu erstellen und zu aktualisieren, verwenden Sie Produkt erstellen oder aktualisieren.
/products/{id}Pfadparameter
idstringErforderlichDie Produkt-ID (prd_...) oder die Produkt-ID in Ihrem Shop.
Anfrage-Body
Beliebige Felder von Produkt erstellen oder aktualisieren außer id: title, sku, description, url, image_url, price, compare_at_price, currency, categories, brand, inventory_quantity, status und metadata. Es gelten dieselben Regeln. categories und metadata werden vollständig ersetzt.
Rückgabe
200 OK mit dem aktualisierten Produkt-Objekt. Gibt 404 zurück, wenn kein Produkt zu id passt, und 422, wenn ein Feld ungültig ist.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": "Lightweight shoe with a grippy sole for wet trails.",
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 79,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 20,
"status": "active",
"metadata": {
"color": "blue"
},
"created_at": "2026-10-02T08:15:22.418Z",
"updated_at": "2026-10-09T10:02:41.205Z"
}{
"error": "Product not found",
"message": "Product not found."
}{
"message": "Validation failed. image_url: must be an http(s) URL",
"errors": {
"image_url": [
"must be an http(s) URL"
]
}
}Produkte auflisten
Listet die Produkte in Ihrem Katalog auf, neueste zuerst. Ohne status werden nur aktive Produkte aufgelistet. Erfordert einen API-Schlüssel mit dem Scope full.
/productsQuery-Parameter
pageintegerSeitennummer für die Paginierung (Minimum: 1, Standardwert: 1).
limitintegerAnzahl der zurückgegebenen Produkte (Minimum: 1, Maximum: 100, Standardwert: 25).
searchstringAbgleich mit dem Titel, der Produkt-ID in Ihrem Shop (external_id) oder der SKU, ohne Beachtung der Groß-/Kleinschreibung.
categorystringNur Produkte in dieser Kategorie. Der Name muss exakt übereinstimmen, einschließlich der Groß-/Kleinschreibung.
statusstringactive (Standardwert), archived oder all. Verwenden Sie all, wenn Sie mit dem Schlüssel status unten filtern, denn der Standardwert beschränkt die Liste bereits auf aktive Produkte.
idsstringKommagetrennte Liste mit bis zu 100 Produkt-IDs. Jede kann die Emailit-ID (prd_...) oder die Produkt-ID in Ihrem Shop sein.
matchstringall (Standardwert) verlangt, dass jeder Filter key.condition zutrifft. Bei or genügt einer davon. Siehe Filtern und Sortieren.
sortstringSortierschlüssel: created_at (Standardwert), updated_at, title oder price.
orderstringSortierrichtung: asc oder desc (Standardwert).
Filter
Listenfilter sind Query-Parameter der Form key.condition=value auf einer einzigen Ebene. match, order, direction und die Bedingungen pro Typ finden Sie unter Filtern und Sortieren.
Filterschlüssel
| Schlüssel | Typ | Bedingungen | Hinweise |
|---|---|---|---|
title | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
external_id | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
sku | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
brand | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
currency | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
price | number | exact, not_exact, gt, gte, lt, lte, empty, not_empty | |
inventory_quantity | number | exact, not_exact, gt, gte, lt, lte, empty, not_empty | |
status | enum | exact, not_exact | Werte: active, archived |
created_at | date | exact, before, after, empty, not_empty | |
updated_at | date | exact, before, after, empty, not_empty |
Sortierschlüssel
Dieser Endpunkt sortiert mit sort, gesetzt auf einen dieser Schlüssel, und order, gesetzt auf asc oder desc (order=<key> gibt hier 400 zurück): created_at, updated_at, title, price
Bei diesem Endpunkt akzeptiert order nur asc oder desc. Übergeben Sie den Sortierschlüssel in sort, zum Beispiel sort=price&order=asc.
Rückgabe
Eine Seite mit Produkt-Objekten in data, dazu total_records, next_page_url und previous_page_url. Die Seiten-URLs enthalten nur page und limit; fügen Sie Ihre Suche und Filter daher erneut hinzu, wenn Sie ihnen folgen.
{
"data": [
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"external_id": "8123456789",
"sku": "TRS-BLU-42",
"title": "Trail running shoe",
"description": "Lightweight shoe with a grippy sole for wet trails.",
"url": "https://shop.example.com/products/trail-running-shoe",
"image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
"price": 89,
"compare_at_price": 119,
"currency": "USD",
"categories": [
"Shoes",
"Running"
],
"brand": "Acme Outdoors",
"inventory_quantity": 34,
"status": "active",
"metadata": {
"color": "blue"
},
"created_at": "2026-10-02T08:15:22.418Z",
"updated_at": "2026-10-08T14:21:07.512Z"
}
],
"total_records": 1,
"next_page_url": null,
"previous_page_url": null
}Produkte gesammelt erstellen oder aktualisieren
Senden Sie bis zu 1.000 Produkte in einer Anfrage, zum Beispiel um Ihren Katalog zu importieren oder ihn regelmäßig zu synchronisieren. Jedes Produkt folgt den Regeln von Produkt erstellen oder aktualisieren: Es wird über seine id erstellt oder aktualisiert, ein neues Produkt braucht einen title, und Felder werden nur geschrieben, wenn Sie sie senden. 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.
Ungültige Produkte werden übersprungen und in rejected aufgeführt; die übrigen werden gespeichert. Die Anfrage gibt trotzdem 200 zurück.
/products/batchAnfrage-Body
productsobject[]Erforderlich1 bis 1.000 Produkte, jeweils mit den Feldern von Produkt erstellen oder aktualisieren.
Rückgabe
createdintegerAnzahl der neuen Produkte.
updatedintegerAnzahl der bestehenden Produkte, die aktualisiert wurden.
rejectedobject[]Produkte, die nicht gespeichert wurden. Jeder Eintrag hat den index des Produkts in Ihrem Array products und errors mit Feldpfaden wie products.3.price als Schlüsseln.
Gibt 422 zurück, wenn products leer ist oder mehr als 1.000 Einträge hat.
{
"created": 1,
"updated": 1,
"rejected": [
{
"index": 2,
"errors": {
"products.2.title": [
"is required"
]
}
}
]
}{
"message": "Validation failed. products: Send 1 to 1000 products.",
"errors": {
"products": [
"Send 1 to 1000 products."
]
}
}Produktkategorien auflisten
Listet die Kategorien auf, die aktive Produkte verwenden, in alphabetischer Reihenfolge, mit der Anzahl der aktiven Produkte in jeder Kategorie. Archivierte Produkte werden nicht gezählt. Gibt bis zu 1.000 Kategorien zurück und ist nicht paginiert. Erfordert einen API-Schlüssel mit dem Scope full.
Die Kategorien stammen aus categories der einzelnen Produkte. Verwenden Sie einen Kategorienamen mit dem Parameter category von Produkte auflisten.
/products/categories{
"data": [
{
"name": "Accessories",
"products": 18
},
{
"name": "Running",
"products": 12
},
{
"name": "Shoes",
"products": 27
}
]
}Produkt löschen
Entfernt ein Produkt aus Ihrem Katalog. Bestellungen, die es enthalten, behalten ihre Artikel, die ihren eigenen Titel, Preis und ihre Produkt-ID speichern. Um ein Produkt auszublenden, ohne es zu löschen, setzen Sie stattdessen seinen status auf archived. Erfordert einen API-Schlüssel mit dem Scope full.
Meldet das Tracking-Skript einen Aufruf eines gelöschten Produkts mit seinem Titel, wird das Produkt aus den Seitendaten erneut zum Katalog hinzugefügt.
/products/{id}Pfadparameter
idstringErforderlichDie Produkt-ID (prd_...) oder die Produkt-ID in Ihrem Shop.
{
"object": "product",
"id": "prd_3r6HHUGUSl8yjYDscEA6aYA8wrA",
"deleted": true
}{
"error": "Product not found",
"message": "Product not found."
}