Aller au contenu
Docs

Envoyez les commandes de votre boutique pour attribuer le chiffre d’affaires aux e-mails et construire les profils d’achat.

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

Créer ou mettre à jour une commande

Envoie une commande depuis le backend de votre boutique. La commande est identifiée par son id dans votre boutique : si vous renvoyez le même id, la commande enregistrée est mise à jour. 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.

Quand une commande est enregistrée pour la première fois, Emailit :

  • l’attribue à l’e-mail de campagne ou d’automatisation sur lequel l’acheteur a cliqué en dernier pendant la fenêtre de clic précédant placed_at ou, sans clic, qu’il a ouvert en dernier pendant la fenêtre d’ouverture. Les fenêtres sont définies dans les paramètres Commerce. Consultez Attribution des commandes aux e-mails.
  • la rattache au contact de l’acheteur, et crée le contact si nécessaire (voir create_contact).
  • marque comme converti le panier désigné par cart_id, ainsi que les autres paniers ouverts de l’acheteur mis à jour pour la dernière fois avant la commande.
  • marque comme utilisés les codes de réduction correspondants.
  • met à jour les métriques d’achat du contact.
  • émet order.placed, que reçoivent les webhooks et les automatisations.

Envoyer une commande déjà enregistrée la met à jour et émet order.updated, avec previous_status quand le statut a changé. L’attribution ne change pas. Seuls les champs envoyés changent : status, placed_at, currency, les montants, coupon_codes, cart_id et items gardent leur valeur enregistrée quand vous les omettez, metadata est fusionné dans l’objet enregistré, et total n’est pas obligatoire. Envoyer items remplace tous les articles. Pour ne modifier que le statut ou un remboursement, vous pouvez aussi utiliser Mettre à jour une commande.

Pour importer des commandes passées sans les attribuer aux e-mails ni démarrer d’automatisation, utilisez Importer des commandes par lots.

POST/orders

Corps de la requête

idstring | numberObligatoire

L’ID de la commande dans votre boutique, 255 caractères au maximum. Les nombres sont enregistrés comme des chaînes. Enregistré dans external_id. Vous pouvez aussi l’envoyer sous le nom external_id ou order_id.

emailstring

L’adresse e-mail de l’acheteur. Enregistrée en minuscules. Emailit l’utilise pour trouver le contact et pour attribuer la commande à un e-mail envoyé à cette adresse. 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.

first_namestring

Le prénom de l’acheteur, 191 caractères au maximum. Utilisé quand Emailit crée le contact. customer.first_name est aussi accepté.

last_namestring

Le nom de l’acheteur, 191 caractères au maximum. Utilisé quand Emailit crée le contact. customer.last_name est aussi accepté.

statusstring

placed (par défaut), paid, fulfilled, canceled ou refunded. La première fois qu’une commande a le statut paid, fulfilled, canceled ou refunded, Emailit définit le champ correspondant (paid_at, fulfilled_at, canceled_at ou refunded_at) à l’heure actuelle. Les commandes annulées ne comptent pas dans le chiffre d’affaires.

currencystring

Code ISO 4217 à trois lettres. Vaut par défaut la devise de l’espace de travail définie dans les paramètres Commerce. Les montants ne sont jamais convertis : les rapports regroupent le chiffre d’affaires par devise.

totalnumber | string

Total de la commande. Obligatoire pour une nouvelle commande sans articles. Sans lui, Emailit calcule la somme des totaux des articles, moins discount, plus shipping et tax, sans jamais descendre sous 0.

Les montants sont des nombres ou des chaînes numériques, ne peuvent pas être négatifs et sont enregistrés avec 4 décimales au maximum.

subtotalnumber | string

Montant avant réduction, livraison et taxes. Vaut par défaut la somme des totaux des articles quand la commande a des articles.

discountnumber | string

Montant de la réduction, en nombre positif.

shippingnumber | string

Montant de la livraison.

taxnumber | string

Montant des taxes.

refunded_amountnumber | string

Montant remboursé. Vaut 0 par défaut, ou total quand status vaut refunded. Le chiffre d’affaires correspond à total moins refunded_amount.

coupon_codesstring[]

Les codes de coupon ou de réduction utilisés dans la commande, 20 au maximum. Un code qui correspond à un code de coupon de l’espace de travail, sans tenir compte de la casse, est marqué comme utilisé par cette commande. coupon_code et discount_codes sont aussi acceptés.

cart_idstring

L’ID du panier ou du paiement (checkout) dans votre boutique dont provient la commande. Le panier qui a cet ID passe à converted.

placed_atstring | number

Date de la commande : une date-heure ISO 8601 ou un horodatage Unix en secondes (les millisecondes fonctionnent aussi). Par défaut : l’heure actuelle. Ne peut pas se situer plus de 24 heures dans le futur. created_at est aussi accepté.

itemsobject[]

Les articles, 250 au maximum. line_items est aussi accepté. Chaque article a :

  • product_id (chaîne ou nombre) : l’ID du produit dans votre boutique. Les articles sans title, url, image_url ou categories les reprennent du catalogue. id est aussi accepté.

  • variant_id, sku (chaîne) : 255 caractères au maximum.

  • title (chaîne) : 500 caractères au maximum. Obligatoire quand l’article n’a ni product_id ni sku. name est aussi accepté.

  • quantity (entier) : 1 ou plus. Par défaut : 1.

  • price (nombre ou chaîne) : le prix unitaire. Par défaut : 0. unit_price est aussi accepté.

  • total (nombre ou chaîne) : le total de la ligne. Vaut par défaut price multiplié par quantity.

  • categories (tableau de chaînes) : 50 noms de catégorie au maximum.

  • url, image_url (chaîne) : URL http ou https.

metadataobject

Vos propres données clé-valeur, 16 Ko au maximum en JSON. Lors d’une mise à jour, les clés envoyées sont fusionnées dans l’objet enregistré.

create_contactboolean

Vaut true par défaut : quand aucun contact ne correspond à contact_id ou email, Emailit en crée un à partir de email, first_name et last_name et émet contact.created. Le nouveau contact n’est abonné à aucune liste : les campagnes ne l’atteignent donc pas. Définissez false pour ne jamais créer de contact : la commande n’est alors rattachée qu’à un contact qui existe déjà.

accepts_marketingboolean

Définissez true, avec audience_id, quand l’acheteur a accepté de recevoir des communications marketing. Emailit abonne alors le contact à cette liste, sauf s’il en fait déjà partie. Par défaut : false.

audience_idstring

La liste (aud_...) à laquelle abonner l’acheteur quand accepts_marketing vaut true. Si la liste n’existe pas ou si la limite d’abonnés de votre forfait est atteinte, la commande est tout de même enregistrée et le contact n’est pas abonné.

email_idstring

L’e-mail de campagne (eml_...) d’où vient l’acheteur, si votre boutique le suit. Utilisé uniquement pour les nouvelles commandes, et seuls les ID qui commencent par eml_ sont lus. La commande est attribuée à cet e-mail quand c’est un e-mail de campagne de l’espace de travail et qu’il a reçu un clic pendant la fenêtre de clic précédant la commande ou a été envoyé pendant cette fenêtre. Sinon, Emailit attribue la commande comme d’habitude. attribution.email_id est aussi accepté.

Réponse

Renvoie 201 Created avec l’objet commande quand la commande est nouvelle, ou 200 OK quand une commande existante a été mise à jour. Renvoie 422 quand un champ n’est pas valide.

POST/orders
Terminal
curl -X POST https://api.emailit.com/v2/orders \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1042",
    "email": "ada@example.com",
    "first_name": "Ada",
    "last_name": "Lovelace",
    "status": "paid",
    "currency": "USD",
    "discount": 10.7,
    "shipping": 5,
    "tax": 0,
    "coupon_codes": ["WELCOME-7KQ2M9XA"],
    "cart_id": "c-58f1a2",
    "placed_at": "2026-10-08T14:32:10Z",
    "items": [
      { "product_id": "8123456789", "variant_id": "42-blue", "sku": "TRS-BLU-42", "title": "Trail running shoe", "quantity": 1, "price": 89 },
      { "product_id": "8123456790", "title": "Merino running socks", "quantity": 2, "price": 9 }
    ],
    "metadata": { "channel": "web" },
    "accepts_marketing": true,
    "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV"
  }'
JSON
{
  "object": "order",
  "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
  "external_id": "1042",
  "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
  "email": "ada@example.com",
  "status": "paid",
  "currency": "USD",
  "subtotal": 107,
  "discount": 10.7,
  "shipping": 5,
  "tax": 0,
  "total": 101.3,
  "refunded_amount": 0,
  "coupon_codes": [
    "WELCOME-7KQ2M9XA"
  ],
  "cart_id": "c-58f1a2",
  "source": "api",
  "placed_at": "2026-10-08T14:32:10.000Z",
  "paid_at": "2026-10-08T14:32:11.204Z",
  "fulfilled_at": null,
  "canceled_at": null,
  "refunded_at": null,
  "attribution": {
    "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
    "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
    "campaign_name": "October newsletter",
    "variant_id": null,
    "automation_id": null,
    "automation_name": null,
    "type": "click",
    "touched_at": "2026-10-08T09:41:52.000Z"
  },
  "items": [
    {
      "product_id": "8123456789",
      "variant_id": "42-blue",
      "sku": "TRS-BLU-42",
      "title": "Trail running shoe",
      "quantity": 1,
      "unit_price": 89,
      "total": 89,
      "categories": [
        "Shoes",
        "Running"
      ],
      "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,
      "categories": [
        "Accessories"
      ],
      "url": "https://shop.example.com/products/merino-running-socks",
      "image_url": "https://shop.example.com/images/merino-running-socks.jpg"
    }
  ],
  "metadata": {
    "channel": "web"
  },
  "created_at": "2026-10-08T14:32:11.204Z",
  "updated_at": "2026-10-08T14:32:11.204Z"
}

Récupérer une commande

Récupère une commande par son ID Emailit ou par l’ID de commande de votre boutique, avec ses articles et son attribution. Nécessite une clé API avec la portée full.

GET/orders/{id}

Paramètres de chemin

idstringObligatoire

L’ID de la commande (ord_...) ou l’ID de commande de votre boutique (external_id). Encodez pour l’URL les ID de boutique qui contiennent des caractères spéciaux.

L’objet commande

objectstring

Toujours order.

idstring

ID de la commande dans Emailit (ord_...).

external_idstring

L’ID de la commande dans votre boutique : l’id que vous avez envoyé.

contact_idstring | null

Le contact de l’acheteur (con_...), ou null quand la commande n’est rattachée à aucun contact.

emailstring | null

L’adresse e-mail de l’acheteur, en minuscules.

statusstring

placed, paid, fulfilled, canceled ou refunded.

currencystring

Code ISO 4217 à trois lettres des montants.

subtotalnumber | null

Somme des articles avant réduction, livraison et taxes.

discountnumber | null

Montant de la réduction.

shippingnumber | null

Montant de la livraison.

taxnumber | null

Montant des taxes.

totalnumber

Total de la commande. Dans les rapports, le chiffre d’affaires correspond à total moins refunded_amount, et les commandes annulées ne comptent pas.

refunded_amountnumber

Montant remboursé jusqu’ici. 0 quand rien n’a été remboursé.

coupon_codesstring[]

Codes de coupon ou de réduction utilisés dans la commande.

cart_idstring | null

L’ID du panier ou du paiement (checkout) dans votre boutique dont provient la commande.

sourcestring

Comment la commande est arrivée dans Emailit : api, js (le script de suivi) ou import (import par lots).

placed_atstring

Date de la commande, au format ISO 8601 UTC.

paid_at, fulfilled_at, canceled_at, refunded_atstring | null

Date à laquelle Emailit a enregistré pour la première fois la commande avec ce statut. Défini une seule fois et pas effacé quand le statut change de nouveau.

attributionobject | null

L’e-mail auquel la commande est attribuée, ou null. Défini une seule fois, au premier enregistrement de la commande. Consultez Attribution des commandes aux e-mails.

  • email_id (chaîne) : l’e-mail auquel la commande est attribuée.

  • campaign_id, campaign_name (chaîne ou null) : sa campagne.

  • variant_id (chaîne ou null) : la version du test A/B (cvr_...) reçue par l’acheteur.

  • automation_id, automation_name (chaîne ou null) : son automatisation.

  • type (chaîne) : click ou open.

  • touched_at (chaîne ou null) : date du clic ou de l’ouverture.

itemsobject[]

Les articles. Chacun a product_id (l’ID du produit dans votre boutique), variant_id, sku, title, quantity, unit_price, total, categories, url et image_url.

metadataobject

Vos propres données clé-valeur.

created_at, updated_atstring

Dates auxquelles Emailit a enregistré la commande et l’a modifiée pour la dernière fois, au format ISO 8601 UTC.

GET/orders/{id}
Terminal
curl https://api.emailit.com/v2/orders/ord_3aMEK4No62Zw8S1fcHNznAnnbfp \
  -H "Authorization: Bearer your_api_key"
JSON
{
  "object": "order",
  "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
  "external_id": "1042",
  "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
  "email": "ada@example.com",
  "status": "paid",
  "currency": "USD",
  "subtotal": 107,
  "discount": 10.7,
  "shipping": 5,
  "tax": 0,
  "total": 101.3,
  "refunded_amount": 0,
  "coupon_codes": [
    "WELCOME-7KQ2M9XA"
  ],
  "cart_id": "c-58f1a2",
  "source": "api",
  "placed_at": "2026-10-08T14:32:10.000Z",
  "paid_at": "2026-10-08T14:32:11.204Z",
  "fulfilled_at": null,
  "canceled_at": null,
  "refunded_at": null,
  "attribution": {
    "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
    "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
    "campaign_name": "October newsletter",
    "variant_id": null,
    "automation_id": null,
    "automation_name": null,
    "type": "click",
    "touched_at": "2026-10-08T09:41:52.000Z"
  },
  "items": [
    {
      "product_id": "8123456789",
      "variant_id": "42-blue",
      "sku": "TRS-BLU-42",
      "title": "Trail running shoe",
      "quantity": 1,
      "unit_price": 89,
      "total": 89,
      "categories": [
        "Shoes",
        "Running"
      ],
      "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,
      "categories": [
        "Accessories"
      ],
      "url": "https://shop.example.com/products/merino-running-socks",
      "image_url": "https://shop.example.com/images/merino-running-socks.jpg"
    }
  ],
  "metadata": {
    "channel": "web"
  },
  "created_at": "2026-10-08T14:32:11.204Z",
  "updated_at": "2026-10-08T14:32:11.204Z"
}

Mettre à jour une commande

Modifie le statut d’une commande enregistrée, enregistre un remboursement ou ajoute des métadonnées. Tout le reste ne change pas, y compris les articles et l’attribution. Les métriques d’achat de l’acheteur sont recalculées, et Emailit émet order.updated, avec le previous_status de la commande quand le statut a changé. 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.

POST/orders/{id}

Paramètres de chemin

idstringObligatoire

L’ID de la commande (ord_...) ou l’ID de commande de votre boutique.

Corps de la requête

Envoyez au moins l’un de ces champs.

statusstring

placed, paid, fulfilled, canceled ou refunded. La première fois que la commande reçoit le statut paid, fulfilled, canceled ou refunded, le champ correspondant (paid_at, fulfilled_at, canceled_at ou refunded_at) prend l’heure actuelle. Les commandes annulées ne comptent pas dans le chiffre d’affaires.

refunded_amountnumber | string

Montant total remboursé jusqu’ici, pas le montant de ce remboursement. Ne peut pas être négatif. Le chiffre d’affaires correspond à total moins refunded_amount. Si vous passez status à refunded sans refunded_amount et que rien n’a été remboursé auparavant, tout le total compte comme remboursé.

metadataobject

Clés à fusionner dans les métadonnées de la commande. 16 Ko au maximum en JSON.

Réponse

Renvoie 200 OK avec l’objet commande mis à jour. Renvoie 404 si aucune commande ne correspond à id et 422 quand le corps est vide ou qu’un champ n’est pas valide.

POST/orders/{id}
Terminal
curl -X POST https://api.emailit.com/v2/orders/1042 \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "refunded_amount": 18 }'
JSON
{
  "object": "order",
  "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
  "external_id": "1042",
  "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
  "email": "ada@example.com",
  "status": "paid",
  "currency": "USD",
  "subtotal": 107,
  "discount": 10.7,
  "shipping": 5,
  "tax": 0,
  "total": 101.3,
  "refunded_amount": 18,
  "coupon_codes": [
    "WELCOME-7KQ2M9XA"
  ],
  "cart_id": "c-58f1a2",
  "source": "api",
  "placed_at": "2026-10-08T14:32:10.000Z",
  "paid_at": "2026-10-08T14:32:11.204Z",
  "fulfilled_at": null,
  "canceled_at": null,
  "refunded_at": null,
  "attribution": {
    "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
    "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
    "campaign_name": "October newsletter",
    "variant_id": null,
    "automation_id": null,
    "automation_name": null,
    "type": "click",
    "touched_at": "2026-10-08T09:41:52.000Z"
  },
  "items": [
    {
      "product_id": "8123456789",
      "variant_id": "42-blue",
      "sku": "TRS-BLU-42",
      "title": "Trail running shoe",
      "quantity": 1,
      "unit_price": 89,
      "total": 89,
      "categories": [
        "Shoes",
        "Running"
      ],
      "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,
      "categories": [
        "Accessories"
      ],
      "url": "https://shop.example.com/products/merino-running-socks",
      "image_url": "https://shop.example.com/images/merino-running-socks.jpg"
    }
  ],
  "metadata": {
    "channel": "web"
  },
  "created_at": "2026-10-08T14:32:11.204Z",
  "updated_at": "2026-10-10T08:05:39.871Z"
}

Lister les commandes

Liste les commandes avec leurs articles, les plus récemment passées en premier. Nécessite une clé API avec la portée full.

GET/orders

Paramètres de requête

pageinteger

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

limitinteger

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

searchstring

Correspondance insensible à la casse sur l’ID de commande de votre boutique ou l’adresse e-mail de l’acheteur.

contact_idstring

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

emailstring

Uniquement les commandes avec cette adresse e-mail d’acheteur, sans tenir compte de la casse.

statusstring

Uniquement les commandes avec ce statut : placed, paid, fulfilled, canceled ou refunded.

campaign_idstring

Uniquement les commandes attribuées à cette campagne (cmp_...).

automation_idstring

Uniquement les commandes attribuées à cette automatisation (aut_...).

attributedboolean

true pour les commandes attribuées à un e-mail, false pour celles qui ne le sont pas.

fromstring

Uniquement les commandes passées à partir de cette date. Une date ou une date-heure ISO 8601 ; toute autre valeur renvoie 422.

tostring

Uniquement les commandes passées jusqu’à cette date incluse. Une date ou une date-heure ISO 8601 ; toute autre valeur renvoie 422.

matchstring

all (par défaut) exige que chaque filtre key.condition corresponde. or accepte n’importe lequel d’entre eux. Consultez Filtrage et tri.

sortstring

Clé de tri : placed_at (par défaut), total ou created_at.

orderstring

Sens du tri : asc ou desc (par défaut).

Filtres

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 : placed, paid, fulfilled, canceled, refunded
currencystringexact, not_exact, contains, not_contains, starts_with, ends_with, empty, not_empty
totalnumberexact, not_exact, gt, gte, lt, lte, empty, not_empty
sourceenumexact, not_exactValeurs : api, js, import, dashboard
attribution_typeenumexact, not_exactValeurs : click, open
placed_atdateexact, before, after, empty, not_empty
created_atdateexact, before, after, empty, not_empty

Clés de tri

Cet endpoint trie avec sort défini sur l’une de ces clés et order sur asc ou desc (order=<key> renvoie 400 ici) : placed_at, total, created_at

Sur cet endpoint, order n’accepte que asc ou desc. Transmettez la clé de tri dans sort, par exemple sort=total&order=desc.

Réponse

Renvoie une page d’objets commande 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 votre recherche et vos filtres quand vous les suivez.

GET/orders
Terminal
curl "https://api.emailit.com/v2/orders?campaign_id=cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN&from=2026-10-01&limit=25" \
  -H "Authorization: Bearer your_api_key"
JSON
{
  "data": [
    {
      "object": "order",
      "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
      "external_id": "1042",
      "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
      "email": "ada@example.com",
      "status": "paid",
      "currency": "USD",
      "subtotal": 89,
      "discount": null,
      "shipping": 5,
      "tax": 0,
      "total": 94,
      "refunded_amount": 0,
      "coupon_codes": [],
      "cart_id": null,
      "source": "api",
      "placed_at": "2026-10-08T14:32:10.000Z",
      "paid_at": "2026-10-08T14:32:11.204Z",
      "fulfilled_at": null,
      "canceled_at": null,
      "refunded_at": null,
      "attribution": {
        "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
        "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
        "campaign_name": "October newsletter",
        "variant_id": null,
        "automation_id": null,
        "automation_name": null,
        "type": "click",
        "touched_at": "2026-10-08T09:41:52.000Z"
      },
      "items": [
        {
          "product_id": "8123456789",
          "variant_id": null,
          "sku": "TRS-BLU-42",
          "title": "Trail running shoe",
          "quantity": 1,
          "unit_price": 89,
          "total": 89,
          "categories": [
            "Shoes",
            "Running"
          ],
          "url": "https://shop.example.com/products/trail-running-shoe",
          "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
        }
      ],
      "metadata": {},
      "created_at": "2026-10-08T14:32:11.204Z",
      "updated_at": "2026-10-08T14:32:11.204Z"
    }
  ],
  "total_records": 1,
  "next_page_url": null,
  "previous_page_url": null
}

Importer des commandes par lots

Envoie jusqu’à 1 000 commandes en une requête. Utilisez cet endpoint pour importer votre historique de commandes, afin que les métriques d’achat, les segments et les recommandations de produits disposent de données dès le premier jour. Chaque commande suit les règles de Créer ou mettre à jour une commande : elle est créée ou mise à jour selon son id, les contacts sont créés sauf si create_contact vaut false, les paniers sont convertis, les codes de réduction sont marqués comme utilisés et les métriques d’achat sont mises à jour. 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.

Par défaut, les commandes sont historiques : elles ne sont attribuées à aucun e-mail et Emailit n’émet ni order.placed ni order.updated, si bien qu’elles ne démarrent pas d’automatisation et n’atteignent pas les webhooks. Les nouveaux contacts émettent tout de même contact.created. Les commandes envoyées avec cet endpoint ont source défini à import, avec ou sans historical.

Les commandes non valides sont ignorées et listées dans rejected ; les autres sont enregistrées. La requête renvoie tout de même 200.

POST/orders/batch

Corps de la requête

ordersobject[]Obligatoire

De 1 à 1 000 commandes, chacune avec les champs de Créer ou mettre à jour une commande.

historicalboolean

Vaut true par défaut : pas d’attribution ni d’événement de commande. Définissez false pour traiter les commandes comme des commandes envoyées une par une : les nouvelles commandes sont attribuées aux e-mails et émettent order.placed, les commandes mises à jour émettent order.updated.

Réponse

createdinteger

Nombre de nouvelles commandes.

updatedinteger

Nombre de commandes déjà enregistrées qui ont été mises à jour.

rejectedobject[]

Les commandes qui n’ont pas été enregistrées. Chaque élément contient l’index de la commande dans votre tableau orders et errors, dont les clés sont des chemins de champ comme orders.4.currency. Une commande qui a passé la validation mais n’a pas pu être enregistrée a l’erreur could not be stored sous orders.<index>.

Renvoie 422 si orders est vide ou contient plus de 1 000 éléments.

POST/orders/batch
Terminal
curl -X POST https://api.emailit.com/v2/orders/batch \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "orders": [
      {
        "id": "981",
        "email": "ada@example.com",
        "status": "fulfilled",
        "currency": "USD",
        "placed_at": "2026-03-14T10:12:00Z",
        "items": [{ "product_id": "8123456789", "quantity": 1, "price": 89 }]
      },
      {
        "id": "982",
        "email": "grace@example.com",
        "status": "fulfilled",
        "currency": "usd dollars",
        "total": 18,
        "placed_at": "2026-03-15T16:40:00Z"
      }
    ]
  }'
JSON
{
  "created": 1,
  "updated": 0,
  "rejected": [
    {
      "index": 1,
      "errors": {
        "orders.1.currency": [
          "must be a three-letter ISO 4217 code, e.g. USD"
        ]
      }
    }
  ]
}

Supprimer une commande

Supprime une commande et ses articles. Les métriques d’achat de l’acheteur sont recalculées sans elle, et son chiffre d’affaires ne compte plus dans les rapports. Les codes de réduction qu’elle a utilisés restent utilisés et les paniers convertis restent convertis. Aucun événement n’est émis. Pour garder la commande sans compter son chiffre d’affaires, passez plutôt son statut à canceled avec Mettre à jour une commande. Nécessite une clé API avec la portée full.

DELETE/orders/{id}

Paramètres de chemin

idstringObligatoire

L’ID de la commande (ord_...) ou l’ID de commande de votre boutique.

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

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

Merci pour votre retour.

Merci, nous lisons chaque message.