Aller au contenu
Docs

Envoyez les paniers de vos acheteurs pour qu’Emailit détecte les paniers abandonnés.

URL de basehttps://api.emailit.com/v2AuthentificationErreursLimites de débit

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_minutes des paramètres Commerce (60 minutes par défaut) passe à abandoned, et Emailit émet cart.abandoned. Les paniers sans contact restent active.
  • De nouveau actif. Mettre à jour un panier abandonné le repasse à active et efface abandoned_at.
  • Converti. Une commande avec le même cart_id convertit 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.
POST/carts

Corps de la requête

idstring | numberObligatoire

L’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.

emailstring

L’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_idstring

Le contact de l’acheteur (con_...). Si aucun contact n’a cet ID, Emailit recherche le contact par email.

anonymous_idstring

L’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.

currencystring

Code 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 | string

Valeur du panier. Vaut par défaut la somme des totaux des articles.

checkout_urlstring

Un 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.

statusstring

active (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.

POST/carts
Terminal
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 }
    ]
  }'
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"
}

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.

GET/carts/{id}

Paramètres de chemin

idstringObligatoire

L’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

objectstring

Toujours cart.

idstring

ID du panier dans Emailit (crt_...).

external_idstring

L’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 | null

Le contact auquel appartient le panier (con_...), ou null tant que l’acheteur est inconnu.

emailstring | null

L’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ée cart_abandon_minutes des paramètres Commerce.

  • converted : une commande a été passée pour ce panier, ou vous l’avez envoyé avec status défini à converted.

currencystring | null

Code ISO 4217 à trois lettres des montants.

totalnumber

Valeur 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 | null

Lien qui ramène l’acheteur à ce panier.

sourcestring

api, ou js pour les paniers du script de suivi.

abandoned_atstring | null

Date à laquelle le panier a été marqué comme abandonné. Effacé quand le panier est de nouveau mis à jour.

converted_atstring | null

Date à laquelle le panier a été converti.

converted_order_idstring | null

La commande (ord_...) qui a converti le panier.

created_at, updated_atstring

Dates auxquelles le panier a été enregistré pour la première fois et modifié pour la dernière fois, au format ISO 8601 UTC.

GET/carts/{id}
Terminal
curl https://api.emailit.com/v2/carts/crt_3Rx784H7VYWRTViadjbp5oKHRud \
  -H "Authorization: Bearer your_api_key"
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"
}

Lister les paniers

Liste les paniers, les plus récemment mis à jour en premier. Nécessite une clé API avec la portée full.

GET/carts

Paramètres de requête

pageinteger

Numéro de page pour la pagination (minimum : 1, par défaut : 1).

limitinteger

Nombre de paniers à renvoyer (minimum : 1, maximum : 100, par défaut : 25).

statusstring

Uniquement les paniers avec ce statut : active, abandoned ou converted.

contact_idstring

Uniquement les paniers de ce contact (con_...).

matchstring

all (par défaut) exige que tous les filtres correspondent. Avec or, il suffit qu’un filtre corresponde. Consultez Filtrage et tri.

orderstring

Clé de tri de cette liste. Consultez les clés de tri ci-dessous.

directionstring

asc 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éTypeConditionsRemarques
external_idstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
emailstringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
statusenumexact, not_exactValeurs : active, abandoned, converted
totalnumberexact, not_exact, gt, gte, lt, lte, empty, not_empty
currencystringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
updated_atdateexact, before, after, empty, not_empty
abandoned_atdateexact, before, after, empty, not_empty
created_atdateexact, 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.

GET/carts
Terminal
curl "https://api.emailit.com/v2/carts?status=abandoned&order=abandoned_at&direction=desc" \
  -H "Authorization: Bearer your_api_key"
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
}

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.

DELETE/carts/{id}

Paramètres de chemin

idstringObligatoire

L’ID du panier (crt_...) ou l’ID du panier ou du paiement dans votre boutique.

DELETE/carts/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/carts/crt_3Rx784H7VYWRTViadjbp5oKHRud \
  -H "Authorization: Bearer your_api_key"
JSON
{
  "object": "cart",
  "id": "crt_3Rx784H7VYWRTViadjbp5oKHRud",
  "deleted": true
}

Cette page vous a-t-elle été utile ?

Merci pour votre retour.

Merci, nous lisons chaque message.