# E-commerce API

> Les paramètres Commerce, la vue d’ensemble du chiffre d’affaires et le profil d’achat d’un contact.

URL de base : `https://api.emailit.com/v2`. Authentifiez-vous avec `Authorization: Bearer <API key>`.

## Récupérer les paramètres Commerce — GET /commerce/settings

> Récupérez la devise de l’espace de travail, les fenêtres d’attribution et le délai d’abandon de panier. Alpha : réservé à l’équipe Emailit.

# Récupérer les paramètres Commerce

Récupère les paramètres Commerce de l’espace de travail. Un espace de travail qui ne les a jamais modifiés obtient les valeurs par défaut. Nécessite une clé API avec la portée `full`.

> **Commerce est en alpha:** Commerce est réservé à l’équipe Emailit pendant que nous le testons. Les autres requêtes renvoient `403` avec `error: "commerce_alpha"`. Les clés API ne fonctionnent que dans les espaces de travail qui appartiennent à l’équipe Emailit. Consultez [Qui peut utiliser Commerce](/fr/docs/commerce/#who-can-use-commerce).

`GET /commerce/settings`

## L’objet paramètres

- `object` (string): Toujours `commerce_settings`.

- `currency` (string): Code ISO 4217 à trois lettres utilisé pour les commandes et les paniers qui n’indiquent pas de devise. Par défaut : `USD`.

- `attribution_click_days` (integer): Une nouvelle commande est attribuée à l’e-mail de campagne ou d’automatisation sur lequel l’acheteur a cliqué en dernier dans ce nombre de jours précédant la commande. Par défaut : `5`.

- `attribution_open_days` (integer): Sans clic, la commande est attribuée à l’e-mail que l’acheteur a ouvert en dernier dans ce nombre de jours. Avec `0`, seuls les clics sont attribués. Par défaut : `1`.

- `cart_abandon_minutes` (integer): Le panier d’un contact contenant des articles qui n’est pas mis à jour pendant ce nombre de minutes devient abandonné et émet `cart.abandoned`. Par défaut : `60`.

**Requête** `GET /commerce/settings`

**cURL**

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

**200**

```json
{
  "object": "commerce_settings",
  "currency": "USD",
  "attribution_click_days": 5,
  "attribution_open_days": 1,
  "cart_abandon_minutes": 60
}
```

---
Source: https://emailit.com/fr/docs/api-reference/commerce/get-settings/

## Mettre à jour les paramètres Commerce — POST /commerce/settings

> Modifiez la devise de l’espace de travail, les fenêtres d’attribution ou le délai d’abandon de panier. Alpha : réservé à l’équipe Emailit.

# Mettre à jour les paramètres Commerce

Modifie les paramètres Commerce de l’espace de travail. Seuls les champs envoyés changent. L’attribution est fixée au premier enregistrement d’une commande : les nouvelles fenêtres s’appliquent donc aux commandes enregistrées ensuite. Nécessite une clé API avec la portée `full`.

> **Commerce est en alpha:** Commerce est réservé à l’équipe Emailit pendant que nous le testons. Les autres requêtes renvoient `403` avec `error: "commerce_alpha"`. Les clés API ne fonctionnent que dans les espaces de travail qui appartiennent à l’équipe Emailit. Consultez [Qui peut utiliser Commerce](/fr/docs/commerce/#who-can-use-commerce).

`POST /commerce/settings`

## Corps de la requête

- `currency` (string): Code ISO 4217 à trois lettres, comme `EUR`. Utilisé pour les commandes et les paniers qui n’indiquent pas de devise.

- `attribution_click_days` (integer): Fenêtre de clic en jours, de 1 à 30.

- `attribution_open_days` (integer): Fenêtre d’ouverture en jours, de 0 à 30. Avec `0`, seuls les clics sont attribués.

- `cart_abandon_minutes` (integer): Minutes sans mise à jour avant que le panier d’un contact devienne abandonné, de 15 à 10 080 (7 jours).

## Réponse

Renvoie `200 OK` avec l’ensemble des [paramètres](/fr/docs/api-reference/commerce/get-settings/). Renvoie `422` quand une valeur est hors limites.
**Requête** `POST /commerce/settings`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/commerce/settings \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "currency": "EUR", "attribution_open_days": 0, "cart_abandon_minutes": 120 }'
```

**200**

```json
{
  "object": "commerce_settings",
  "currency": "EUR",
  "attribution_click_days": 5,
  "attribution_open_days": 0,
  "cart_abandon_minutes": 120
}
```

**422**

```json
{
  "message": "Validation failed. cart_abandon_minutes: Must be a whole number from 15 to 10080.",
  "errors": {
    "cart_abandon_minutes": [
      "Must be a whole number from 15 to 10080."
    ]
  }
}
```

---
Source: https://emailit.com/fr/docs/api-reference/commerce/update-settings/

## Récupérer la vue d’ensemble Commerce — GET /commerce/overview

> Chiffre d’affaires, chiffre d’affaires généré par les e-mails, clients, paniers, série quotidienne, meilleurs produits et meilleures campagnes sur une période. Alpha : réservé à l’équipe Emailit.

# Récupérer la vue d’ensemble Commerce

Récupère les chiffres de **Email Marketing → Commerce** pour une période. Nécessite une clé API avec la portée `full`.

> **Commerce est en alpha:** Commerce est réservé à l’équipe Emailit pendant que nous le testons. Les autres requêtes renvoient `403` avec `error: "commerce_alpha"`. Les clés API ne fonctionnent que dans les espaces de travail qui appartiennent à l’équipe Emailit. Consultez [Qui peut utiliser Commerce](/fr/docs/commerce/#who-can-use-commerce).

Le chiffre d’affaires correspond au total des commandes moins les remboursements, et les commandes annulées ne comptent pas. Les montants sont regroupés par devise et jamais convertis : la plupart des champs sont donc des listes avec une entrée par devise.

`GET /commerce/overview`

## Paramètres de requête

- `from` (string): Début de la période, une date ou une date-heure ISO 8601. Par défaut : 30 jours avant `to`.

- `to` (string): Fin de la période, exclue. Par défaut : maintenant. La période peut durer jusqu’à 366 jours.

## Réponse

- `object` (string): Toujours `commerce_overview`.

- `from, to` (string): La période utilisée, au format ISO 8601 UTC.

- `totals` (object[]): Toutes les commandes passées sur la période, par devise, du chiffre d’affaires le plus élevé au plus faible : `currency`, `orders`, `revenue`, `buyers` et `average_order_value`.

- `attributed` (object[]): Les commandes attribuées à un e-mail, par `channel` (`campaigns` ou `automations`) et par `currency`, avec `orders`, `revenue` et `buyers`.

- `customers` (object): - `new` : les contacts dont la première commande est dans la période. - `returning` : les contacts dont la première commande est antérieure à `from` et qui ont de nouveau commandé depuis `from`.

- `carts` (object): Les paniers mis à jour pour la dernière fois sur la période : `active`, `abandoned` et `recovered` (convertis après avoir été abandonnés). `abandoned_by_currency` liste, par `currency`, le nombre de paniers abandonnés (`carts`) et leur `value` totale, de la valeur la plus élevée à la plus faible ; `abandoned_value` et `abandoned_currency` reprennent la première entrée.

- `series` (object[]): Une entrée par jour et par devise avec des commandes : `date` (`YYYY-MM-DD`), `currency`, `orders`, `revenue` et `attributed_revenue`.

- `top_products` (object[]): Les produits classés par chiffre d’affaires des articles, 10 au maximum : `product_id` (l’ID du produit dans votre boutique), `title`, `image_url`, `currency`, `quantity` et `revenue`.

- `top_campaigns` (object[]): Les campagnes classées par chiffre d’affaires attribué, 5 au maximum : `campaign_id`, `name`, `currency`, `orders` et `revenue`.

Renvoie `422` si `from` ou `to` n’est pas une date valide, si `from` n’est pas antérieur à `to`, ou si la période dépasse 366 jours.
**Requête** `GET /commerce/overview`

**cURL**

```bash
curl "https://api.emailit.com/v2/commerce/overview?from=2026-09-10&to=2026-10-10" \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "object": "commerce_overview",
  "from": "2026-09-10T00:00:00.000Z",
  "to": "2026-10-10T00:00:00.000Z",
  "totals": [
    {
      "currency": "USD",
      "orders": 1284,
      "revenue": 108422.6,
      "buyers": 1007,
      "average_order_value": 84.44
    }
  ],
  "attributed": [
    {
      "channel": "campaigns",
      "currency": "USD",
      "orders": 312,
      "revenue": 27140.3,
      "buyers": 288
    },
    {
      "channel": "automations",
      "currency": "USD",
      "orders": 158,
      "revenue": 13981.2,
      "buyers": 149
    }
  ],
  "customers": {
    "new": 604,
    "returning": 403
  },
  "carts": {
    "active": 37,
    "abandoned": 412,
    "recovered": 66,
    "abandoned_value": 35210.8,
    "abandoned_currency": "USD",
    "abandoned_by_currency": [
      { "currency": "USD", "carts": 412, "value": 35210.8 }
    ]
  },
  "series": [
    {
      "date": "2026-10-08",
      "currency": "USD",
      "orders": 51,
      "revenue": 4318.4,
      "attributed_revenue": 1702.9
    },
    {
      "date": "2026-10-09",
      "currency": "USD",
      "orders": 44,
      "revenue": 3720.15,
      "attributed_revenue": 1188.6
    }
  ],
  "top_products": [
    {
      "product_id": "8123456789",
      "title": "Trail running shoe",
      "image_url": "https://shop.example.com/images/trail-running-shoe.jpg",
      "currency": "USD",
      "quantity": 214,
      "revenue": 18190
    }
  ],
  "top_campaigns": [
    {
      "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "name": "October newsletter",
      "currency": "USD",
      "orders": 214,
      "revenue": 18364.3
    }
  ]
}
```

**422**

```json
{
  "message": "Validation failed. from: Use an ISO from/to range of at most 366 days.",
  "errors": {
    "from": [
      "Use an ISO from/to range of at most 366 days."
    ]
  }
}
```

---
Source: https://emailit.com/fr/docs/api-reference/commerce/overview/

## Récupérer le profil d’achat d’un contact — GET /contacts/{id}/commerce

> Récupérez les métriques d’achat d’un contact, son risque d’attrition, ses commandes récentes, son panier ouvert et les produits qu’il a consultés récemment. Alpha : réservé à l’équipe Emailit.

# Récupérer le profil d’achat d’un contact

Récupère ce qu’un contact a acheté et consulté : les métriques d’achat, les 10 commandes les plus récentes, le panier ouvert et les produits consultés récemment. Le tableau de bord affiche les mêmes données dans la carte **Purchases** de la page du contact. Nécessite une clé API avec la portée `full`.

> **Commerce est en alpha:** Commerce est réservé à l’équipe Emailit pendant que nous le testons. Les autres requêtes renvoient `403` avec `error: "commerce_alpha"`. Les clés API ne fonctionnent que dans les espaces de travail qui appartiennent à l’équipe Emailit. Consultez [Qui peut utiliser Commerce](/fr/docs/commerce/#who-can-use-commerce).

`GET /contacts/{id}/commerce`

## Paramètres de chemin

- `id` (string, obligatoire): L’ID du contact (`con_...`) ou l’adresse e-mail du contact. Encodez les adresses e-mail pour l’URL.

## Réponse

- `object` (string): Toujours `contact_commerce`.

- `contact_id` (string): L’ID du contact (`con_...`).

- `metrics` (object): Les métriques d’achat, recalculées à chaque écriture de commande. Elles comptent toutes les commandes sauf les commandes annulées et déduisent les remboursements. Quand le contact a commandé dans plusieurs devises, seules les commandes dans la devise de sa dernière commande comptent. - `orders_count` (entier), `total_spent` (nombre), `average_order_value` (nombre), `currency` (chaîne ou null). - `first_order_at`, `last_order_at` (chaîne ou null). - `expected_next_order_at` (chaîne ou null) : la dernière commande plus l’intervalle moyen entre les commandes du contact. Défini à partir de la deuxième commande. - `churn_risk` (chaîne ou null) : `low`, `medium` ou `high`. Compare le temps écoulé depuis la dernière commande à l’intervalle moyen entre les commandes du contact (au moins 14 jours), ou à 90 jours après une seule commande. Dans cet intervalle, il vaut `low`, jusqu’au double de l’intervalle `medium`, et au-delà `high`. `null` sans commande. - `last_active_at` (chaîne ou null) : la dernière activité signalée par le script de suivi sur votre site. - `timezone` (chaîne ou null) : le fuseau horaire IANA signalé par le navigateur du contact. Utilisé par les [envois à l’heure locale](/fr/docs/api-reference/campaigns/send/).

- `orders` (object[]): Les 10 [commandes](/fr/docs/api-reference/orders/get/) les plus récemment passées par le contact.

- `orders_total` (integer): Nombre de commandes du contact, y compris les commandes annulées. Utilisez [Lister les commandes](/fr/docs/api-reference/orders/list/) avec `contact_id` pour les parcourir page par page.

- `open_cart` (object | null): Le [panier](/fr/docs/api-reference/carts/get/) du contact mis à jour le plus récemment qui est `active` ou `abandoned` et contient des articles, ou `null`.

- `recently_viewed` (object[]): Les produits consultés par le contact au cours des 90 derniers jours, 12 au maximum, du plus récent au plus ancien, tels que signalés par le script de suivi. Les produits archivés et en rupture de stock sont exclus. Chacun a `id` (l’ID du produit dans votre boutique), `title`, `url`, `image_url`, `price`, `price_formatted`, `currency` et `on_sale`.

Renvoie `404` si aucun contact ne correspond à `id`.
**Requête** `GET /contacts/{id}/commerce`

**cURL**

```bash
curl https://api.emailit.com/v2/contacts/con_3EwrXnu9OaQWlfI1AyPUUEoYjQs/commerce \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "object": "contact_commerce",
  "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
  "metrics": {
    "orders_count": 3,
    "total_spent": 276.3,
    "average_order_value": 92.1,
    "currency": "USD",
    "first_order_at": "2026-03-14T10:12:00.000Z",
    "last_order_at": "2026-10-08T14:32:10.000Z",
    "expected_next_order_at": "2027-01-20T16:42:15.000Z",
    "churn_risk": "low",
    "last_active_at": "2026-10-09T18:03:27.000Z",
    "timezone": "Europe/London"
  },
  "orders": [
    {
      "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": null,
      "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"
    }
  ],
  "orders_total": 3,
  "open_cart": null,
  "recently_viewed": [
    {
      "id": "8123456790",
      "title": "Merino running socks",
      "url": "https://shop.example.com/products/merino-running-socks",
      "image_url": "https://shop.example.com/images/merino-running-socks.jpg",
      "price": 9,
      "price_formatted": "$9.00",
      "currency": "USD",
      "on_sale": false
    }
  ]
}
```

**404**

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

---
Source: https://emailit.com/fr/docs/api-reference/commerce/contact-commerce/
