Paniers
Envoyez les paniers de vos acheteurs pour qu’Emailit détecte les paniers abandonnés.
Créer ou mettre à jour un panier
Envoyez le panier actuel de l’acheteur chaque fois qu’il change. Le panier est identifié par son id dans votre boutique : si vous renvoyez le même id, le panier enregistré est mis à jour. Chaque appel remplace les items et le total du panier. L’adresse e-mail, le contact, la devise et l’URL de paiement sont conservés quand vous les omettez. Nécessite une clé API avec la portée full ou events. Avec une clé events, la réponse ne contient que object, id et external_id.
Le script de suivi peut envoyer les paniers depuis le navigateur à la place.
Un nouveau panier, ou une modification des articles, du total, du statut ou du contact d’un panier, émet cart.updated. Renvoyer le même panier n’émet rien.
Comment un panier passe d’un statut à l’autre :
- Abandonné. Un panier qui appartient à un contact, contient au moins un article et n’est pas mis à jour pendant la durée
cart_abandon_minutesdes paramètres Commerce (60 minutes par défaut) passe àabandoned, et Emailit émetcart.abandoned. Les paniers sans contact restentactive. - De nouveau actif. Mettre à jour un panier abandonné le repasse à
activeet effaceabandoned_at. - Converti. Une commande avec le même
cart_idconvertit le panier. Une nouvelle commande du même contact convertit aussi les paniers de ce contact mis à jour pour la dernière fois avant la commande. Un panier converti reste converti quand vous le mettez à jour.
/cartsCorps de la requête
idstring | numberObligatoireL’ID du panier ou du paiement (checkout) dans votre boutique, 255 caractères au maximum. Enregistré dans external_id. Envoyez la même valeur dans le cart_id de la commande. Vous pouvez aussi l’envoyer sous le nom external_id ou cart_id.
emailstringL’adresse e-mail de l’acheteur. Rattache le panier au contact qui a cette adresse. Les paniers ne créent jamais de contact : un panier sans contact correspondant ne peut pas devenir abandonné. customer.email est aussi accepté.
contact_idstringLe contact de l’acheteur (con_...). Si aucun contact n’a cet ID, Emailit recherche le contact par email.
anonymous_idstringL’ID de visiteur du script de suivi, 255 caractères au maximum. Quand ce visiteur s’identifie plus tard, les paniers qui ont cet ID et aucun contact sont rattachés au contact.
currencystringCode ISO 4217 à trois lettres. Vaut par défaut la devise de l’espace de travail définie dans les paramètres Commerce.
itemsobject[]Les articles, 250 au maximum, au même format que les items de Créer ou mettre à jour une commande. Les articles sans title, url ou image_url les reprennent du catalogue. line_items est aussi accepté.
totalnumber | stringValeur du panier. Vaut par défaut la somme des totaux des articles.
checkout_urlstringUn lien http ou https qui ramène l’acheteur à ce panier, 2 048 caractères au maximum. Les e-mails peuvent y renvoyer avec le bloc panier.
statusstringactive (par défaut) ou converted. Envoyez converted pour clore vous-même un panier.
Réponse
Renvoie 201 Created avec l’objet panier quand le panier est nouveau, ou 200 OK quand un panier existant a été mis à jour. Renvoie 422 quand un champ n’est pas valide.
{
"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"
}{
"message": "Validation failed. checkout_url: must be an http(s) URL",
"errors": {
"checkout_url": [
"must be an http(s) URL"
]
}
}Récupérer un panier
Récupère un panier par son ID Emailit ou par l’ID du panier ou du paiement (checkout) dans votre boutique. Nécessite une clé API avec la portée full.
/carts/{id}Paramètres de chemin
idstringObligatoireL’ID du panier (crt_...) ou l’ID du panier ou du paiement dans votre boutique (external_id). Encodez pour l’URL les ID de boutique qui contiennent des caractères spéciaux.
L’objet panier
objectstringToujours cart.
idstringID du panier dans Emailit (crt_...).
external_idstringL’ID du panier ou du paiement dans votre boutique : l’id que vous avez envoyé. Les paniers du script de suivi sans ID propre utilisent web: suivi de l’ID anonyme du visiteur.
contact_idstring | nullLe contact auquel appartient le panier (con_...), ou null tant que l’acheteur est inconnu.
emailstring | nullL’adresse e-mail de l’acheteur.
statusstring-
active: l’acheteur fait encore ses achats. -
abandoned: le panier appartient à un contact, contient des articles et n’a pas changé pendant la duréecart_abandon_minutesdes paramètres Commerce. -
converted: une commande a été passée pour ce panier, ou vous l’avez envoyé avecstatusdéfini àconverted.
currencystring | nullCode ISO 4217 à trois lettres des montants.
totalnumberValeur du panier.
itemsobject[]Les articles. Chacun a product_id (l’ID du produit dans votre boutique), variant_id, sku, title, quantity, unit_price, total, url et image_url.
checkout_urlstring | nullLien qui ramène l’acheteur à ce panier.
sourcestringapi, ou js pour les paniers du script de suivi.
abandoned_atstring | nullDate à laquelle le panier a été marqué comme abandonné. Effacé quand le panier est de nouveau mis à jour.
converted_atstring | nullDate à laquelle le panier a été converti.
converted_order_idstring | nullLa commande (ord_...) qui a converti le panier.
created_at, updated_atstringDates auxquelles le panier a été enregistré pour la première fois et modifié pour la dernière fois, au format ISO 8601 UTC.
{
"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"
}{
"error": "Cart not found",
"message": "Cart not found."
}Lister les paniers
Liste les paniers, les plus récemment mis à jour en premier. Nécessite une clé API avec la portée full.
/cartsParamètres de requête
pageintegerNuméro de page pour la pagination (minimum : 1, par défaut : 1).
limitintegerNombre de paniers à renvoyer (minimum : 1, maximum : 100, par défaut : 25).
statusstringUniquement les paniers avec ce statut : active, abandoned ou converted.
contact_idstringUniquement les paniers de ce contact (con_...).
matchstringall (par défaut) exige que tous les filtres correspondent. Avec or, il suffit qu’un filtre corresponde. Consultez Filtrage et tri.
orderstringClé de tri de cette liste. Consultez les clés de tri ci-dessous.
directionstringasc ou desc.
Filtres et tri
Les filtres de liste sont des paramètres de requête key.condition=value sur un seul niveau. Consultez Filtrage et tri pour match, order, direction et la liste des conditions par type.
Clés de filtre
| Clé | Type | Conditions | Remarques |
|---|---|---|---|
external_id | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
email | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
status | enum | exact, not_exact | Valeurs : active, abandoned, converted |
total | number | exact, not_exact, gt, gte, lt, lte, empty, not_empty | |
currency | string | exact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty | |
updated_at | date | exact, before, after, empty, not_empty | |
abandoned_at | date | exact, before, after, empty, not_empty | |
created_at | date | exact, before, after, empty, not_empty |
Clés de tri
Passez dans order l’une de ces clés et dans direction la valeur asc ou desc : external_id, email, status, total, currency, updated_at, abandoned_at, created_at
Réponse
Renvoie une page d’objets panier dans data, avec total_records, next_page_url et previous_page_url. Les URL de page ne contiennent que page et limit : ajoutez de nouveau vos filtres quand vous les suivez.
{
"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
}Supprimer un panier
Supprime un panier. Les commandes qui l’ont converti ne sont pas affectées. Si vous renvoyez un panier avec le même id, il est enregistré comme un nouveau panier. Nécessite une clé API avec la portée full.
/carts/{id}Paramètres de chemin
idstringObligatoireL’ID du panier (crt_...) ou l’ID du panier ou du paiement dans votre boutique.
{
"object": "cart",
"id": "crt_3Rx784H7VYWRTViadjbp5oKHRud",
"deleted": true
}{
"error": "Cart not found",
"message": "Cart not found."
}