# Référence des événements

## Introduction

Pour chaque événement, certaines propriétés sont requises.

Dans tous les cas, les propriétés suivantes sont requises :

* `event_name`
* `context.event_id`
* `context.event_timestamp`

Remarque : Les commanders act [one tag](https://doc.commandersact.com/fr/pour-commencer/integrating-your-data/onetag-tutorial) et les [mobile sdks](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/about-events/mobile-sdk-event-specificity) ajoutent automatiquement les propriétés de contexte.

Dans cette section, vous trouverez la liste de tous nos événements standard, avec la liste des propriétés standard requises ou non.

{% content-ref url="events-reference/common-events" %}
[common-events](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference/common-events)
{% endcontent-ref %}

{% content-ref url="events-reference/e-commerce-events" %}
[e-commerce-events](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference/e-commerce-events)
{% endcontent-ref %}

{% content-ref url="events-reference/video-event-reference" %}
[video-event-reference](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference/video-event-reference)
{% endcontent-ref %}

{% content-ref url="events-reference/campaign-analytics-module-events" %}
[campaign-analytics-module-events](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference/campaign-analytics-module-events)
{% endcontent-ref %}

Si le type d’événement ou les propriétés que vous recherchez ne sont pas mentionnés dans cette section, vous pouvez toujours envoyer des événements personnalisés et des propriétés personnalisées. Mais la propriété `event_name` reste requise.\
\
Voici les événements les plus utilisés :

## add\_payment\_info <a href="#add_payment_info" id="add_payment_info"></a>

Cet événement signifie qu’un utilisateur a soumis ses informations de paiement

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="137">Nom</th><th width="101">Type</th><th width="76">Obligatoire</th><th width="147">Valeur d’exemple</th><th width="288">Description</th></tr></thead><tbody><tr><td><code>payment_method</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>card</td><td>La méthode de paiement choisie (voir la liste des valeurs possibles ci-dessous)</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur et est obligatoire pour gérer les consentements. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>coupon</code></td><td><code>string</code></td><td>Non</td><td>CHRISTMAS</td><td>Code coupon utilisé pour un achat.</td></tr><tr><td><code>revenue</code></td><td><code>number</code></td><td>Non</td><td>16.00</td><td><p>Chiffre d’affaires (prix d’expédition et taxes <strong>exclus</strong>) après remise.<br>(<em>)<code>revenue</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>revenue</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td>Non</td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td>Non</td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %}
{% tab title="JavaScript" %}

```javascript
cact('trigger','add_payment_info', {
  payment_method: 'card',
  revenue: 16.00,
  currency: 'EUR',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCAddPaymentInfoEvent("card")
event.revenue = 16.00f
event.currency = "EUR"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java  (Android)" %}

```java
TCAddPaymentInfoEvent event = new TCAddPaymentInfoEvent("card");
event.revenue = 16.6f;
event.currency = "EUR";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCAddPaymentInfoEvent *event = [[TCAddPaymentInfoEvent alloc] initWithId: @"ID";
event.revenue = [[NSDecimalNumber alloc] initWithFloat: 16.00f];
event.currency = @"EUR";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let event = TCAddPaymentInfoEvent(payementMethod: "card")
	event?.revenue = 16.00
	event?.currency = "EUR"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCAddPaymentInfoEvent();
    event.paymentMethod = "card";
    event.revenue = 16.00;
    event.currency = "EUR";
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "add_payment_info",
        "payment_method": "card",
        "revenue": 16.00,
        "value": 22.53,
        "currency": "EUR",
        "user": {
            "id": "12345",
            "email": "toto@domain.fr",
            "consent_categories": [
                1,
                3
            ]
        }
}
```

{% endtab %}
{% endtabs %}

## add\_shipping\_info

Cet événement signifie qu’un utilisateur a soumis ses informations de livraison.

#### Paramètres <a href="#parameters_2" id="parameters_2"></a>

<table><thead><tr><th width="138">Nom</th><th width="99">Type</th><th width="74">Obligatoire</th><th width="159">Valeur d’exemple</th><th width="281">Description</th></tr></thead><tbody><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td>Oui</td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> ou <code>value</code>vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>value</code></td><td><code>number</code></td><td>Oui</td><td>22.53</td><td>La valeur monétaire de l’événement (prix d’expédition et taxes <strong>inclus</strong>) après remise</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>coupon</code></td><td><code>string</code></td><td>Non</td><td>CHRISTMAS</td><td>Code coupon utilisé pour un achat.</td></tr><tr><td><code>shipping_tier</code></td><td><code>string</code></td><td>Non</td><td>Ground</td><td>Le niveau de livraison (par ex. <code>Next-day</code>, Air`) sélectionné pour la livraison de l’article acheté.</td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %} \`

\`\`javascript cact('trigger','add\_shipping\_info', { value: 8.00, currency: 'EUR', coupon: 'promo', shipping\_tier: 'ups', items: \[{ id: 'SKU\_12345', quantity: 1, variant: 'red', coupon: 'CHRISTMAS', discount: 1.99, product:{ id: '12345', name: 'Trex tshirt', category\_1: 'clothes', category\_2: 't-shirts', category\_3: 'boy', brand: 'Lacoste', price: 9.99 } }], user: { id: '12356', email:'<toto@domain.fr>', consent\_categories: \[1,3] } });

````

</div>

<div data-gb-custom-block data-tag="tab" data-title='Kotlin (Android)'>

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCAddShippingInfoEvent(items,  112.5f, "EUR")
    event.coupon = "promo"
    event.shippingTier = "ups"
serverside.execute(event)
````

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCAddShippingInfoEvent event = new TCAddShippingInfoEvent(items, 112.5f, "EUR");
event.coupon = "promo";
event.shippingTier = "ups";
serverside.execute(event);
```

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1"
                                  withPrice: [[NSDecimalNumber alloc] initWithString: @"1.5"]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2" 
                                  withName: @"pName2" 
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCAddShippingInfoEvent *event = [[TCAddShippingInfoEvent alloc] initWithItems: items
withValue: [[NSDecimalNumber alloc] initWithString: @"12.2"]
withCurrency: @"EUR"];

event.coupon = @"promo";
event.shippingTier = @"ups";
[TCS execute: event];
```

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCAddShippingInfoEvent(items: [item_1, item_2], withValue: 1, withCurrency: "EUR")
	event?.addAdditionalProperty("additionalKey", withBoolValue: true)
	event?.coupon = "promo"
	event?.shippingTier = "ups"
	serverside?.execute(event)
```

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 150;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
TCProduct tc_product_2 = TCProduct();
		tc_product_2.ID = "product_2_ID";
		tc_product_2.name = "product_2_name";
		tc_product_2.price = 150;
		tc_product_2.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_2 = TCItem();
		tc_item_2.ID = "item_2_id";
		tc_item_2.quantity = 2;
		tc_item_2.product = tc_product;
		tc_item_2.addAdditionalProperty("key_additional_item", "val_additional_product");

var event = TCAddShippingInfoEvent();
    event.coupon = "promo";
    event.shippingTier = "ups";
    event.currency = "EUR";
    event.items = [tc_item_1, tc_item_2];
serverside.execute(event);
```

```json
{
    "event_name": "add_shipping_info",
        "shipping_tier": "Ground",
        "revenue": 16.00,
        "value": 22.53,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ],
                    "price": 9.99
                }
            },
            {
                "id": "SKU_12346",
                "quantity": 1,
                "price": 9.99,
                "variant": "green",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12346",
                    "name": "Heart tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "girl",
                    "brand": "Jenyfion",
                    "colors": [
                        "blue",
                        "white"
                    ],
                    "price": 9.99
                }
            }
        ],
        "user": {
            "id": "12345",
            "email": "toto@domain.fr",
            "consent_categories": [
                1,
                3
            ]
        }
}
```

## add\_to\_cart

Cet événement signifie qu’un article a été ajouté à un panier pour achat.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="136">Nom</th><th width="103">Type</th><th width="102">Obligatoire</th><th width="135">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>value</code></td><td><code>number</code></td><td><strong>Oui</strong>*</td><td>8.00</td><td><p>La valeur monétaire de l’événement.<br>(<em>)<code>value</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>value</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td><strong>Oui</strong>*</td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','add_to_cart', {
  value: 8.00,
  currency: 'EUR',
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCAddToCartEvent(22.53f,  "EUR", items)
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCAddToCartEvent event = new TCAddToCartEvent(22.53f,  "EUR", items);
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 1.5f]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2"
                                  withName: @"pName2"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCAddToCartEvent *event = [[TCAddToCartEvent alloc] initWithValue: [[NSDecimalNumber alloc] initWithString: @"12.2"]
withCurrency: @"EUR"
withItems: items];
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCAddToCartEvent(value: 1, withCurrency: "EUR", withItems: [item_1, item_2])
	event?.addAdditionalProperty("additionalKey", withBoolValue: true)
	event?.currency = "EUR"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 12.5;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");

var event = TCAddToCartEvent();
    event.currency = "EUR";
    event.items = [tc_item_1];
    event.value = 12.5;
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "add_to_cart",
        "value": 8.00,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ]
                }
            }
        ]
}
```

{% endtab %} {% endtabs %}

## add\_to\_wishlist

L’événement signifie qu’un article a été ajouté à une wishlist. Utilisez cet événement pour identifier les articles cadeaux populaires dans votre app.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="142">Nom</th><th width="100">Type</th><th width="80">Obligatoire</th><th width="157">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>value</code></td><td><code>number</code></td><td>Non</td><td>8.00</td><td><p>La valeur monétaire de l’événement.<br>(<em>)<code>revenue</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>revenue</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td>Non</td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','add_to_wishlist', {
  value: 8.00,
  currency: 'EUR',
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCAddToWishlistEvent(items)
    event.value = 20.00f
    event.currency = "EUR"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCAddToWishlistEvent event = new TCAddToWishlistEvent(items);
event.value = 20.00f;
event.currency = "EUR";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
    withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
    withName: @"pName1"
    withPrice: [[NSDecimalNumber alloc] initWithFloat: 1.5f]]
    withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
    withProduct: [[TCProduct alloc] initWithProductId: @"pID2"
    withName: @"pName2"
    withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
    withQuantity: 2]];

TCAddToWishlistEvent *event = [[TCAddToWishlistEvent alloc] initWithValue: [[NSDecimalNumber alloc] initWithString: @"12.2"]
withCurrency: @"EUR"
withItems: items];
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCAddToWishlistEvent(items: [item_1, item_2])
	event?.currency = "EUR"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 150;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");

var event = TCAddToWishlistEvent();
    event.addAdditionalPropertyWithIntValue("key_additional_1", 12);
    event.addAdditionalPropertyWithListValue("key_additional_2", [12,12,12]);
    event.currency = "EUR";
    event.items = [tc_item_1];
    event.value = 12.5;
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "add_to_wishlist",
        "value": 8.00,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ]
                }
            }
        ]
}
```

{% endtab %} {% endtabs %}

## begin\_checkout <a href="#begin_checkout" id="begin_checkout"></a>

Cet événement signifie qu’un utilisateur a commencé un checkout.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="138">Nom</th><th width="98">Type</th><th width="78">Obligatoire</th><th width="157">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>revenue</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>16.00</td><td>La valeur monétaire de l’événement (prix d’expédition et taxes <strong>exclus</strong>) après remise</td></tr><tr><td><code>value</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>22.53</td><td>La valeur monétaire de l’événement (prix d’expédition et taxes <strong>inclus</strong>) après remise</td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td><strong>Oui</strong></td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>coupon</code></td><td><code>string</code></td><td>Non</td><td>CHRISTMAS</td><td>Code coupon utilisé pour un achat.</td></tr><tr><td><code>id</code></td><td><code>string</code></td><td>Non</td><td>0_12345</td><td>ID de transaction. Utilisé comme clé pour les mises à jour</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','begin_checkout', {
  id: 'O_12345',
  coupon: 'CHRISTMAS',
  revenue: 16.00,
  value: 20.33,
  currency: 'EUR',
  user: {
    id: '12356',
    email:'toto@domain.fr'
  },
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    price: 9.99,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      colors: ['red'],
      price: 9.99
    }
  }, {
    id: 'SKU_12346',
    quantity: 1,
    price: 9.99,
    variant: 'green',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12346',
      name: 'Heart tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'girl',
      brand: 'Jenyfion',
      colors: ['blue','white'],
      price: 9.99
    }
  }]
})
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCBeginCheckoutEvent(1.0f,  2.0f, "EUR", items)
    event.coupon = "CHRISTMAS"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCBeginCheckoutEvent event = new TCBeginCheckoutEvent(1.0f,  2.0f, "EUR", items);
event.coupon = "CHRISTMAS";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1" 
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 1.5f]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2" 
                                  withName: @"pName2" 
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCBeginCheckoutEvent *event = [[TCBeginCheckoutEvent alloc] initWithRevenue: [[NSDecimalNumber alloc] initWithString: @"1.1"]
withValue: [[NSDecimalNumber alloc] initWithString: @"12.2"]
withCurrency: @"EUR"
withItems: items];
event.coupon = @"CHRISTMAS";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCBeginCheckoutEvent(revenue: 1, withValue: 3, withCurrency: "EUR", withItems: [item_1, item_2])
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 10;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
TCProduct tc_product_2 = TCProduct();
		tc_product_2.ID = "product_2_ID";
		tc_product_2.name = "product_2_name";
		tc_product_2.price = 5.10;
		tc_product_2.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_2 = TCItem();
		tc_item_2.ID = "item_2_id";
		tc_item_2.quantity = 2;
		tc_item_2.product = tc_product;
		tc_item_2.addAdditionalProperty("key_additional_item", "val_additional_product");
var event = TCBeginCheckoutEvent();
    		event.coupon = "CHRISTMAS";
		event.items = [tc_item_1, tc_item_2];
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "begin_checkout",
        "id": "O_12345",
        "coupon": "CHRISTMAS",
        "revenue": 16.00,
        "value": 22.53,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ],
                    "price": 9.99
                }
            },
            {
                "id": "SKU_12346",
                "quantity": 1,
                "price": 9.99,
                "variant": "green",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12346",
                    "name": "Heart tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "girl",
                    "brand": "Jenyfion",
                    "colors": [
                        "blue",
                        "white"
                    ],
                    "price": 9.99
                }
            }
        ],
        "user": {
            "id": "12345",
            "email": "toto@domain.fr",
            "consent_categories": [
                1,
                3
            ]
        }
}
```

{% endtab %} {% endtabs %}

## generate\_lead <a href="#generate_lead" id="generate_lead"></a>

Enregistrez cet événement lorsqu’un lead a été généré pour comprendre l’efficacité de vos campagnes de réengagement.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="134">Nom</th><th width="103">Type</th><th width="77">Obligatoire</th><th width="144">Valeur d’exemple</th><th width="288">Description</th></tr></thead><tbody><tr><td><code>value</code></td><td><code>number</code></td><td><strong>Non</strong>*</td><td>9.99</td><td><p>La valeur monétaire de l’événement.<br>(<em>)<code>revenue</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>revenue</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td><strong>Non*</strong></td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>id</code></td><td><code>string</code></td><td>Non</td><td></td><td>ID du lead</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','generate_lead', {
  currency: 'EUR',
  value: 9.99,
  id: 'L_12345',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCGenerateLeadEvent(9.99f, "EUR")
event.ID = "L_12345"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCGenerateLeadEvent event = new TCGenerateLeadEvent(9.99f, "EUR");
event.ID = "L_12345";
serverside.execute(event);TCLoginEvent event = new TCLoginEvent();
event.method = "LinkedIn";
serverside.execute(event);

```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCGenerateLeadEvent *event = [[TCGenerateLeadEvent alloc] initWithValue: [[NSDecimalNumber alloc] initWithString: @"12.2"]
withCurrency: @"EUR"];
event.ID = @"2b758628-f81b-454f-8e3d-867e8bc98523";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let event = TCGenerateLeadEvent(value: 1, withCurrency: "EUR")
    event?.ID = "2b758628-f81b-454f-8e3d-867e8bc98523";
    serverside.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCGenerateLeadEvent();
    event.currency = "EUR";
    event.value = 9.99;
    event.ID = "2b758628-f81b-454f-8e3d-867e8bc98523";
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "generate_lead",
        "method": "LinkedIn"
}
```

{% endtab %} {% endtabs %}

## login <a href="#login" id="login"></a>

Envoyez cet événement pour signifier qu’un utilisateur s’est connecté.

#### Paramètres <a href="#parameters_14" id="parameters_14"></a>

<table><thead><tr><th width="119">Nom</th><th width="103">Type</th><th width="77">Obligatoire</th><th width="224">Exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>method</code></td><td><code>string</code></td><td>Non</td><td>LinkedIn</td><td>La méthode utilisée pour se connecter.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="Javascript" %}

```javascript
cact('trigger', 'login', {
  method: 'LinkedIn',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCLoginEvent()
event.method = "LinkedIn"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCLoginEvent event = new TCLoginEvent();
event.method = "LinkedIn";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCLoginEvent *event = [[TCLoginEvent alloc] init];
event.method = @"LinkedIn";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let event = TCLoginEvent()
	event.method = "linkedin"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCLoginEvent();
    event.method = "LinkedIn";
    serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "login",
        "method": "LinkedIn"
}
```

{% endtab %} {% endtabs %}

## page\_view <a href="#page_view" id="page_view"></a>

L’appel `page_view` vous permet d’enregistrer chaque fois qu’un utilisateur voit une page de votre site web, ainsi que toute propriété optionnelle concernant la page.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="144">Nom</th><th width="99">Type</th><th width="82">Obligatoire</th><th width="160">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>page_type</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>product_list</td><td><p>Catégorie de page. Types prédéfinis recommandés :</p><ul><li>home</li><li>landing</li><li>product_list</li><li>product</li><li>content_list</li><li>content</li><li>search</li><li>funnel</li><li>success</li><li>funnel_confirmation</li><li>account</li><li>cart</li><li>legal (par ex. Privacy Policy)</li></ul><p>Équivalent à <code>tc_vars.env_template</code></p></td></tr><tr><td><code>page_name</code></td><td><code>string</code></td><td>Non</td><td>Suggestion pour la Fête des Mères</td><td>Nom de la page.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>type</code><br>(obsolète)</td><td><code>string</code></td><td>Non</td><td>product_list</td><td>Catégorie de page</td></tr></tbody></table>

**Paramètres ajoutés automatiquement par l’API cact pour les sources web**

<table><thead><tr><th width="133">Nom</th><th width="103">Type</th><th width="81">Obligatoire</th><th width="161">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>user</code></td><td><a href="#user">Object &#x3C;User></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>title</code></td><td><code>string</code></td><td>Non</td><td>Products - MySite.com</td><td>Titre de la page :<a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/title"><code>document.title</code></a> depuis l’API DOM</td></tr><tr><td><code>url</code></td><td><code>string</code></td><td>Non</td><td><a href="http://www.mysite.com">http://www.mysite.com</a></td><td>URL complète de la page. Équivalent à<a href="https://developer.mozilla.org/en-US/docs/Web/API/Location"><code>location.href</code></a> depuis l’API DOM.</td></tr><tr><td><code>path</code></td><td><code>string</code></td><td>Non</td><td>/products/mothers</td><td>Partie chemin de l’URL de la page : <a href="https://developer.mozilla.org/en-US/docs/Web/API/Location"><code>location.pathname</code></a> depuis l’API DOM.</td></tr><tr><td><code>referrer</code></td><td><code>string</code></td><td>Non</td><td><a href="http://www.example.com">http://www.example.com</a></td><td>URL complète de la page précédente : <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer"><code>document.referrer</code></a> depuis l’API DOM.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="Javascript" %}

```javascript
cact('trigger','page_view', {
  page_type: 'product_list',
  page_name: 'Best sellers',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCPageViewEvent("product_list")
event.pageName = "Best sellers"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCPageViewEvent event = new TCPageViewEvent("product_list")
event.pageName = "Best sellers";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCPageViewEvent *event = [[TCPageViewEvent alloc] init];
event.pageType = @"product_list";
event.pageName = @"Best sellers";
[TCS execute: event];

//ou vous pourriez également l’utiliser dans un constructeur, comme suit :
TCPageViewEvent *event = [[TCPageViewEvent alloc] initWithType: @"type"];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let event = TCPageViewEvent(type: "product list")
	event?.pageName = "Best sellers"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCPageViewEvent();
    event.pageName = "event_page_name";
    event.pageType = "event_page_type";
    serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "page_view", 
        "page_type": "product_list",
        "page_name": "Best sellers"   
}
```

{% endtab %} {% endtabs %}

## purchase

Déclenchez cet événement lorsqu’un ou plusieurs articles sont achetés par un utilisateur.

#### Paramètres **(obligatoires et recommandés)** <a href="#parameters_17" id="parameters_17"></a>

<table><thead><tr><th width="182">Nom</th><th width="113">Type</th><th>Obligatoire</th><th>Exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>O_1245</td><td>ID de transaction. Utilisé comme clé pour les mises à jour</td></tr><tr><td><code>event_name</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>purchase</td><td>Doit être purchase</td></tr><tr><td><code>type</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>offline</td><td>Type de conversion (online, offline, call, etc.)</td></tr><tr><td><code>value</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>22.53</td><td>Le prix final de la conversion (expédition et taxes <strong>inclus</strong>) après remise</td></tr><tr><td><code>revenue</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>16.00</td><td>Le prix final de la conversion (expédition et taxes <strong>exclus</strong>) après remise</td></tr><tr><td><code>payment_method</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>card</td><td>Type de méthode de paiement (voir la liste des <a href="#payment-methods">valeurs possibles</a> ci-dessous)</td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td><strong>Oui</strong></td><td>EUR</td><td>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</td></tr><tr><td><code>status</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>en_cours</td><td>Statut de la conversion (voir la liste des <a href="#purchase-status">valeurs possibles</a> ci-dessous).<br><em>Les conversions avec le statut "pending" ne sont pas incluses dans la somme par défaut et les comptes agrégés sur la fonctionnalité augmented user attributes</em></td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td><strong>Oui</strong></td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3],</code></p><p><code>card:3320457845</code></p><p><code>}</code></p></td><td><p>Toutes les propriétés que vous ajoutez ici seront utilisées comme conditions pour faire correspondre les utilisateurs dans notre base de données.</p><p><code>consent_categories</code> est automatiquement rempli si vous utilisez Commanders Act CMP.</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr><tr><td><code>coupon</code></td><td><code>string</code></td><td>Non</td><td>CHRISTMAS</td><td>Code coupon utilisé pour un achat.</td></tr><tr><td><code>tax_amount</code></td><td><code>number</code></td><td>Non</td><td>3.20</td><td>Montant des taxes à la fin de la conversion</td></tr><tr><td><code>shipping_amount</code></td><td><code>number</code></td><td>Non</td><td>3.33</td><td>Coût d'expédition associé à une transaction.</td></tr><tr><td><code>shipping_provider</code></td><td><code>string</code></td><td>Non</td><td>Post</td><td>Informations sur le fournisseur</td></tr><tr><td><code>discount_value</code></td><td><code>number</code></td><td>Non</td><td>3.98</td><td>Montant de la remise (taxes <strong>inclus</strong>)</td></tr><tr><td><code>original_value</code></td><td><code>number</code></td><td>Non</td><td>19.98</td><td>Premier prix pour la conversion originale (taxes <strong>inclus</strong>)</td></tr><tr><td><code>original_revenue</code></td><td><code>number</code></td><td>Non</td><td>16.78</td><td>Premier revenu pour la conversion originale (taxes <strong>exclus</strong>)</td></tr><tr><td><code>original_tax_amount</code></td><td><code>number</code></td><td>Non</td><td>3.20</td><td>Montant des taxes au début de la conversion</td></tr><tr><td><code>returned_value</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Montant des articles retournés (taxes <strong>inclus</strong>)</td></tr><tr><td><code>returned_quantity</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Quantité d'articles retournés (taxes <strong>inclus</strong>)</td></tr><tr><td><code>cancelled_value</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Montant des articles annulés (taxes <strong>inclus</strong>)</td></tr><tr><td><code>cancelled_quantity</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Quantité d'articles annulés (taxes <strong>inclus</strong>)</td></tr></tbody></table>

**Ajouté automatiquement par cact API**

| Nom   | Type        | Obligatoire | Exemple | Description                                                                                           |
| ----- | ----------- | ----------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `url` | string(url) | Non         | aucun   | <p>URL vers le site web où vous pouvez acheter l'article</p><p>Équivalent à window\.location.href</p> |

**Exemple**

{% tabs %} {% tab title="json" %}

```json
{
   "id": "O_12345",
   "event_name": "purchase",
   "type": "offline",
   "value": 0,
   "revenue": 16.00,
   "payment_method": "card",
   "currency": "EUR",
   "status": "in_progress",
   "user": {
      "id": "12345",
      "email": "toto@domain.fr",
      "consent_categories": [
         1,
         3
      ],
      "card": "3320457845"
   },
   "context": {
      "event_id": "2025uaoauud",
      "event_timestamp": "2025-04-18T07:53:39.974+02:00"
   },
   "items": [
      {
         "id": "SKU_12345",
         "quantity": 1,
         "price": 9.99,
         "variant": "red",
         "discount": 1.99,
         "value": 8.0,
         "cancelled_value": 0,
         "cancelled_quantity": 0,
         "original_value": 9.99,
         "returned_value": 0,
         "returned_quantity": 0,
         "product": {
            "id": "12345",
            "name": "Trex tshirt",
            "category_1": "clothes",
            "category_2": "t-shirts",
            "category_3": "boy",
            "brand": "Lacoste",
            "colors": [
               "red"
            ],
            "price": 9.99
         }
      },
      {
         "id": "SKU_12346",
         "quantity": 1,
         "price": 9.99,
         "variant": "green",
         "coupon": "CHRISTMAS",
         "discount": 1.99,
         "value": 8.0,
         "cancelled_value": 0,
         "cancelled_quantity": 0,
         "original_value": 9.99,
         "returned_value": 0,
         "returned_quantity": 0,
         "product": {
            "id": "12346",
            "name": "Heart tshirt",
            "category_1": "clothes",
            "category_2": "t-shirts",
            "category_3": "girl",
            "brand": "Jenyfuen",
            "colors": [
               "blue",
               "white"
            ],
            "price": 9.99
         }
      }
   ],
   "coupon": "CHRISTMAS",
   "tax_amount": 3.20,
   "shipping_amount": 3.33,
   "shipping_provider": "Post",
   "discount_value": 3.98,
   "original_value": 19.98,
   "original_revenue": 16.78,
   "original_tax_amount": 3.20,
   "returned_value": 0,
   "returned_quantity": 0,
   "cancelled_value": 0,
   "cancelled_quantity": 0
}
```

{% endtab %}

{% tab title="Javascript" %}

```javascript
cact('trigger','purchase', {
  id: 'O_12345',
  coupon: 'CHRISTMAS',
  revenue: 16.00,
  value: 20.33,
  shipping_amount: 3.33,
  tax_amount: 3.20,
  currency: 'EUR',
  user: {
    id: '12356',
    email:'toto@domain.fr'
  },
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    price: 9.99,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      colors: ['red'],
      price: 9.99
    }
  }, {
    id: 'SKU_12346',
    quantity: 1,
    price: 9.99,
    variant: 'green',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12346',
      name: 'Heart tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'girl',
      brand: 'Jenyfion',
      colors: ['blue','white'],
      price: 9.99
    }
  }]
})
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCPurchaseEvent("O_12345", 16.0f,  22.53f, "EUR", "purchase", "CreditCard", "waiting", items)
    event.shippingAmount = 3.33f
    event.taxAmount = 3.20f
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCPurchaseEvent event = new TCPurchaseEvent("O_12345", 16.0f,  22.53f, "EUR", "purchase", "CreditCard", "waiting", items);
event.shippingAmount = 3.33f;
event.taxAmount = 3.20f;
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1" 
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1"
                                  withName: @"pName1"
                                  withPrice: [[NSDecimalNumber alloc] initWithString: @"1.5"]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2"
                                  withName: @"pName2"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCPurchaseEvent *event = [[TCPurchaseEvent alloc] initWithId: @"ID"
withRevenue: [[NSDecimalNumber alloc] initWithString: @"1.1"]
withValue: [[NSDecimalNumber alloc] initWithString: @"12.2"]
withCurrency: @"EUR"
withType: @"purchase"
withPaymentMethod: @"CreditCard"
withStatus: @"waiting"
withItems: items];

[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCPurchaseEvent(id: "purchaseID", withRevenue: 16.21, withValue: 23.10, withCurrency: "EUR", withType: "purchase", withPaymentMethod: "CreditCard", withStatus: "waiting", withItems: [item_1, item_2])
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 10;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
TCProduct tc_product_2 = TCProduct();
		tc_product_2.ID = "product_2_ID";
		tc_product_2.name = "product_2_name";
		tc_product_2.price = 5.10;
		tc_product_2.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_2 = TCItem();
		tc_item_2.ID = "item_2_id";
		tc_item_2.quantity = 2;
		tc_item_2.product = tc_product;
		tc_item_2.addAdditionalProperty("key_additional_item", "val_additional_product");
var event = TCPurchaseEvent();
    		event.shippingAmount = 3.33;
    		event.taxAmount = 3.20;
    		event.revenue = 2.5;
		event.value = 12.2;
		event.currency = "EUR";
		event.type = "purchase";
		event.paymentMethod = "CreditCard";
		event.status = "waiting";
		event.items = [tc_item_1, tc_item_2];
serverside.execute(event);
```

{% endtab %} {% endtabs %}

## refund

Déclenchez cet événement lorsqu'un achat a été remboursé

#### Paramètres **(obligatoires et recommandés)** <a href="#parameters_17" id="parameters_17"></a>

<table><thead><tr><th width="182">Nom</th><th width="99">Type</th><th width="76">Obligatoire</th><th width="154">Exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>O_1245</td><td>ID de transaction. Utilisé comme clé pour les mises à jour</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p>Toutes les propriétés que vous ajoutez ici seront utilisées comme conditions pour faire correspondre les utilisateurs dans notre base de données.</p><p><code>consent_categories</code> est automatiquement rempli si vous utilisez Commanders Act CMP.</p></td></tr><tr><td><code>revenue</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>16.00</td><td>La valeur monétaire de l’événement (prix d’expédition et taxes <strong>exclus</strong>) après remise</td></tr><tr><td><code>value</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>22.53</td><td>La valeur monétaire de l’événement (prix d’expédition et taxes <strong>inclus</strong>) après remise</td></tr><tr><td><code>shipping_amount</code></td><td><code>number</code></td><td>Non</td><td>3.33</td><td>Coût d'expédition associé à une transaction.</td></tr><tr><td><code>tax_amount</code></td><td><code>number</code></td><td>Non</td><td>3.20</td><td>Coût d'expédition associé à une transaction.</td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td><strong>Oui</strong></td><td>EUR</td><td>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</td></tr><tr><td><code>coupon</code></td><td><code>string</code></td><td>Non</td><td>CHRISTMAS</td><td>Code coupon utilisé pour un achat.</td></tr><tr><td><code>type</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>offline</td><td>Type de conversion (online, offline, call, etc.)</td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td>Non*</td><td></td><td>(*) <code>items</code> est requis pour les remboursements partiels mais peut être omis pour les remboursements complets.</td></tr></tbody></table>

**Ajouté automatiquement par cact API**

<table><thead><tr><th width="128">Nom</th><th width="115">Type</th><th width="103">Obligatoire</th><th>Exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>url</code></td><td>string(url)</td><td>Non</td><td>aucun</td><td><p>URL vers le site web où vous pouvez acheter l'article</p><p>Équivalent à window.location.href</p></td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','refund', {
  id: 'O_12345',
  coupon: 'CHRISTMAS',
  revenue: 16.00,
  value: 20.33,
  shipping_amount: 3.33,
  tax_amount: 3.20,
  currency: 'EUR',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
})
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCRefundEvent("O_12345", 16.00f, 23.53f, "EUR", "offline")
    event.coupon = "CHRISTMAS"
    event.shippingAmount = 4.33f
    event.taxAmount = 3.20f
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCRefundEvent event = new TCRefundEvent("O_12345", 16.00f, 23.53f, "EUR", "offline");
event.coupon = "CHRISTMAS";
event.shippingAmount = 4.33f;
event.taxAmount = 3.20f;
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1"
                                  withName: @"pName1"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 1.5f]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2"
                                  withName: @"pName2"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCRefundEvent *event = [[TCRefundEvent alloc] initWithID: @"2b758628-f81b-454f-8e3d-867e8bc98523"
withRevenue: [[NSDecimalNumber alloc] initWithString: @"20.2"]
withValue: [[NSDecimalNumber alloc] initWithString: @"26.2"]
withCurrency: @"EUR"
withType: @"offline"
withItems: items];

[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCRefundEvent(id: "purchaseID", withRevenue: 16.32, withValue: 23.1, withCurrency: "EUR", withType: "refund", withItems: [item_1, item_2])
	event?.shippingAmount = 11
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCRefundEvent();
    event.currency = "EUR";
    event.value = 26.20;
    event.revenue = 20.20;
    event.coupon = "CHRISTMAS";
    event.shippingAmount = 4.33;
    event.taxAmount = 3.20;
    event.type = "offline";    
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "refund",
        "value": 8.00,
        "currency": "EUR",
        "revenue": 16.00,
        "shipping_amount": 3.33,
        "tax_amount": 3.20
}
```

{% endtab %} {% endtabs %}

## remove\_from\_cart

Cet événement signifie qu'un article a été retiré d'un panier.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="146">Nom</th><th width="103">Type</th><th width="106">Obligatoire</th><th>Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>value</code></td><td><code>number</code></td><td>Non</td><td>8.00</td><td><p>La valeur monétaire de l’événement.<br>(<em>)<code>value</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>value</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td>Non</td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','remove_from_cart', {
  value: 8.00,
  currency: 'EUR',
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)
val event = TCRemoveFromCartEvent(items)
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCRemoveFromCartEvent event = new TCRemoveFromCartEvent(items);
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 1.5f]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2"
                                  withName: @"pName2"
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCRemoveFromCartEvent *event = [[TCRemoveFromCartEvent alloc] initWithItems: items];
event.value = [[NSDecimalNumber alloc] initWithString: @"12.2"];
event.currency = @"EUR";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCRemoveFromCartEvent(items: [item_1, item_2])
	event?.value = 22.53
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 10;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
var event = TCRemoveFromCartEvent();
		event.value = 15.1;
		event.currency = "EUR";		
		event.items = [tc_item_1];
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "remove_from_cart",
        "value": 8.00,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ]
                }
            }
        ]
}
```

{% endtab %} {% endtabs %}

## search

Utilisez cet événement pour contextualiser les opérations de recherche. Cet événement peut vous aider à identifier le contenu le plus populaire dans votre application.

#### Paramètres <a href="#parameters_21" id="parameters_21"></a>

<table><thead><tr><th width="169">Nom</th><th width="102">Type</th><th width="82">Obligatoire</th><th width="155">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>search_term</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>t-shirts</td><td>Le terme qui a été recherché.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','search', {
  search_term: 't-shirts',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCSearchEvent("t-shirts")
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```
// Some code
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCSearchEvent *event = [[TCSearchEvent alloc] init];
event.searchTerm = @"t-shirts";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

<pre class="language-swift"><code class="lang-swift">let event = TCSearchEvent(searchTerm: "t-shirts")
<strong>    serverside.execute(event)
</strong></code></pre>

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCSearchEvent();
    event.searchTerm = "t-shirts";
    serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "search",
        "search_term": "t-shirts"
}
```

{% endtab %} {% endtabs %}

## select\_content

Cet événement signifie qu'un utilisateur a sélectionné du contenu d'un certain type. Cet événement peut vous aider à identifier le contenu et les catégories de contenu populaires dans votre application ou à cliquer sur une promotion interne.

#### Paramètres <a href="#parameters_22" id="parameters_22"></a>

<table><thead><tr><th width="175">Nom</th><th width="100">Type</th><th width="76">Obligatoire</th><th width="159">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>content_type</code></td><td><code>string</code></td><td>Non</td><td>product</td><td>Le type de contenu sélectionné.</td></tr><tr><td><code>item_id</code></td><td><code>string</code></td><td>Non</td><td>I_12345</td><td>Un identifiant pour l'article qui a été sélectionné.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','select_content', {
  content_type: 'product',
  item_id: 'I_12345',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCSelectContentEvent
event.contentType = "product"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCSelectContentEvent event = new TCSelectContentEvent();
event.contentType = "product";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCSelectContentEvent *event = [[TCSelectContentEvent alloc] init];
event.contentType = @"product";
event.itemID = @"I_12345";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let event = TCSelectContentEvent()
	event.contentType = "product"
	event.itemID = "I_12345"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCSelectContentEvent();
    event.contentType = "product";
    event.itemId = "I_12345";
    serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "select_content",
        "content_type": "product",
        "item_id": "I_12345"
}
```

{% endtab %} {% endtabs %}

## select\_item

Cet événement signifie qu'un article a été sélectionné à partir d'une liste.

#### Paramètres <a href="#parameters_23" id="parameters_23"></a>

<table><thead><tr><th width="192">Nom</th><th width="105">Type</th><th width="71">Obligatoire</th><th width="124">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>item_list_name</code></td><td><code>string</code></td><td>Non</td><td>Produits associés</td><td>Le nom de la liste dans laquelle l'article a été présenté à l'utilisateur.</td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles pour l'événement. Le <code>items</code> tableau est censé avoir un seul élément, représentant l'article sélectionné.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','select_item', {
  item_list_name: 'Related products',
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

<pre class="language-kotlin"><code class="lang-kotlin">val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf&#x3C;TCItem>(item1, item2)

val event = TCSelectItemEvent(items);
<strong>    event.itemListName = "Related products"
</strong>serverside.execute(event);
</code></pre>

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCSelectItemEvent event = new TCSelectItemEvent(items);
event.itemListName = "Related products";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1" 
                                  withPrice:[[NSDecimalNumber alloc] initWithFloat: 1.5f]]
                                  withQuantity: 1]];

TCSelectItemEvent *event = [[TCSelectItemEvent alloc] initWithItems: items];
event.itemListName = @"Related products";

[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCSelectItemEvent(items: [item_1, item_2])
	event.itemListName = "Related products";
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 150;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
var event = TCSelectItemEvent();
		event.itemListName = "Related products";
		event.items = [tc_item_1];
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "select_item",
        "item_list_name": "Related products",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ]
                }
            }
        ]
}
```

{% endtab %} {% endtabs %}

## sign\_up <a href="#sign_up" id="sign_up"></a>

Cet événement indique qu'un utilisateur s'est inscrit pour un compte.

#### Paramètres **(obligatoires et recommandés)** <a href="#parameters_27" id="parameters_27"></a>

<table><thead><tr><th width="117">Nom</th><th width="102">Type</th><th width="104">Obligatoire</th><th width="160">Exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>method</code></td><td><code>string</code></td><td>Non</td><td>Facebook</td><td>La méthode utilisée pour l'inscription.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','sign_up', {
  method: 'email',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val event = TCSignUpEvent()
event.method = "email"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCSignUpEvent event = new TCSignUpEvent();
event.method = "email";
serverside.execute(event);

```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
TCSignUpEvent *event = [[TCSignUpEvent alloc] init];
event.method = @"email";
[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let event = TCSignUpEvent()
	event.method = "email"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
var event = TCSignUpEvent();
    event.method = "email";
    serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "sign_up",
        "method": "email"
}
```

{% endtab %} {% endtabs %}

## view\_cart

Cet événement signifie qu'un utilisateur a consulté son panier.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="147">Nom</th><th width="102">Type</th><th width="76">Obligatoire</th><th width="163">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>value</code></td><td><code>number</code></td><td>Non</td><td>8.00</td><td><p>La valeur monétaire de l’événement.<br>(<em>)<code>value</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>value</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td>Non</td><td>EUR</td><td><p>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</p><p>(*) Si vous fournissez le paramètre <code>revenue</code> vous devez également fournir le paramètre <code>currency</code> afin que les métriques de revenu puissent être calculées avec précision.</p></td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','view_cart', {
  value: 8.00,
  currency: 'EUR',
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCViewCartEvent(items)
    event.value = 15.1f
    event.currency = "EUR"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCViewCartEvent event = new TCViewCartEvent(items);
event.value = 15.1f;
event.currency = "EUR";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1" 
                                  withPrice: [[NSDecimalNumber alloc] initWithString: @"1.5"]]
                                  withQuantity: 1]];

TCViewCartEvent *event = [[TCViewCartEvent alloc] initWithItems: items];
event.value = [[NSDecimalNumber alloc] initWithString: @"12.2"];
event.currency = @"EUR";

[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCViewCartEvent(items: [item_1, item_2])
	event?.value = 22.53
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 10;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
TCProduct tc_product_2 = TCProduct();
		tc_product_2.ID = "product_2_ID";
		tc_product_2.name = "product_2_name";
		tc_product_2.price = 5.10;
		tc_product_2.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_2 = TCItem();
		tc_item_2.ID = "item_2_id";
		tc_item_2.quantity = 2;
		tc_item_2.product = tc_product;
		tc_item_2.addAdditionalProperty("key_additional_item", "val_additional_product");

var event = TCViewCartEvent();
	event.value = 15.1;
	event.currency = "EUR";
	event.items = [tc_item_1, tc_item_2	
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "view_cart",
        "value": 8.00,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ]
                }
            }
        ]
}
```

{% endtab %} {% endtabs %}

## view\_item

Cet événement signifie qu'un contenu a été affiché à l'utilisateur. Utilisez cet événement pour gérer les articles les plus consultés.

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="139">Nom</th><th width="101">Type</th><th width="82">Obligatoire</th><th width="157">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>value</code></td><td><code>number</code></td><td><strong>Oui</strong>*</td><td>9.99</td><td><p>La valeur monétaire de l’événement.<br>(<em>)<code>value</code> est généralement requis pour un reporting pertinent.</em></p><p><em>(</em>)<code>currency</code> est requis si vous définissez <code>value</code>.</p></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td><strong>Oui*</strong></td><td>EUR</td><td>Devise de l’achat ou des articles associés à l’événement, au format ISO 4217 à 3 lettres.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="JavaScript" %}

```javascript
cact('trigger','view_item', {
  value: 9.99,
  currency: 'EUR',
  items: [{
    id: 'SKU_12345',
    quantity: 1,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCViewItem(items)
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCViewItem event = new TCViewItem(items);
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1" 
                                  withPrice: [[NSDecimalNumber alloc] initWithString: @"1.5"]]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2" 
                                  withName: @"pName2" 
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCViewItem *event = [[TCViewItem alloc] initWithItems: items];
event.revenue = [[NSDecimalNumber alloc] initWithString: @"12.2"];
event.currency = @"EUR";

[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCViewItem(items: [item_1, item_2])
	event?.revenue = 12.2
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 150;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
var event = TCViewItemEvent();
	event.pageName = "event_page_name";
	event.pageType = "event_page_type";
	event.items = [tc_item_1];
	event.addAdditionalPropertyWithIntValue("key_additional_1", 12);
	event.addAdditionalPropertyWithListValue("key_additional_2", [12,12,12]);
	event.addAdditionalPropertyWithMapValue("key_map", {'test': 12, "test2": "value"});
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "view_item",
        "value": 8.00,
        "currency": "EUR",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ]
                }
            }
        ]
}
```

{% endtab %} {% endtabs %}

## view\_item\_list

Enregistrez cet événement lorsque l'utilisateur s'est vu présenter une liste d'articles d'une certaine catégorie.

#### Paramètres <a href="#parameters_35" id="parameters_35"></a>

<table><thead><tr><th width="195">Nom</th><th width="100">Type</th><th width="78">Obligatoire</th><th width="163">Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>item_list_name</code></td><td><code>string</code></td><td>Non</td><td>Produits associés</td><td>Le nom de la liste dans laquelle l'article a été présenté à l'utilisateur.</td></tr><tr><td><code>user</code></td><td><a href="#user"><code>Object&#x3C;User></code></a></td><td>Oui</td><td><p><code>{</code><br><code>id: '12345',</code><br><code>email: 'toto@domain.fr',</code></p><p><code>consent_categories: [1,3]</code></p><p><code>}</code></p></td><td><p><code>consent_categories</code> est la liste des consentements de l’utilisateur. Elle est remplie automatiquement depuis les sources web si vous utilisez Commanders Act CMP.</p><p>Vous devez également ajouter toutes les propriétés de l’utilisateur dans cet objet user, notamment la clé de réconciliation (id, email).</p></td></tr><tr><td><code>items</code></td><td><a href="#item"><code>Array&#x3C;Item></code></a></td><td><strong>Oui</strong></td><td></td><td>Les articles de l’événement.</td></tr></tbody></table>

**Exemple**

{% tabs %} {% tab title="Javascript" %}

```kotlin
cact('trigger','view_item_list', {
  item_list_name: 'Related products',
   items: [{
    id: 'SKU_12345',
    quantity: 1,
    price: 9.99,
    variant: 'red',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12345',
      name: 'Trex tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'boy',
      brand: 'Lacoste',
      colors: ['red'],
      price: 9.99
    }
  }, {
    id: 'SKU_12346',
    quantity: 1,
    price: 9.99,
    variant: 'green',
    coupon: 'CHRISTMAS',
    discount: 1.99,
    product:{
      id: '12346',
      name: 'Heart tshirt',
      category_1: 'clothes',
      category_2: 't-shirts',
      category_3: 'girl',
      brand: 'Jenny',
      colors: ['blue','white'],
      price: 9.99
    }
  }],
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

{% tab title="Kotlin (Android)" %}

```kotlin
val item1 = TCItem("my_product1_id", TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1)
val item2 = TCItem("my_product2_id", TCProduct("my_product_2_id", "my_product_2_name", 110f), 1)
val items = listOf<TCItem>(item1, item2)

val event = TCViewItemList(items)
    event.itemListName = "your products"
serverside.execute(event)
```

{% endtab %}

{% tab title="Java (Android)" %}

```java
TCItem item1 = new TCItem("my_product1_id", new TCProduct("my_product_1_id", "my_product_1_name", 12.5f), 1);
TCItem item2 = new TCItem("my_product2_id", new TCProduct("my_product_2_id", "my_product_2_name", 25.6f), 1);
ArrayList<TCItem> items = new ArrayList<>(Arrays.asList(item1, item2));

TCViewItemListEvent event = new TCViewItemListEvent(items);
event.itemListName = "your products";
serverside.execute(event);
```

{% endtab %}

{% tab title="Objective-C (iOS)" %}

```objectivec
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [[TCItem alloc] initWithItemId: @"iID1"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID1" 
                                  withName: @"pName1" 
                                  withPrice: @1.5f]
                                  withQuantity: 1]];
[items addObject: [[TCItem alloc] initWithItemId: @"iID2"
                                  withProduct: [[TCProduct alloc] initWithProductId: @"pID2" 
                                  withName: @"pName2" 
                                  withPrice: [[NSDecimalNumber alloc] initWithFloat: 2.5f]]
                                  withQuantity: 2]];

TCViewItemListEvent *event = [[TCViewItemListEvent alloc] initWithItems: items];
event.itemListName = @"summer_collection";

[TCS execute: event];
```

{% endtab %}

{% tab title="Swift (iOS)" %}

```swift
let item_1:TCItem = TCItem(itemId: "my_item1.id", with: TCProduct(productId: "my_product1.id", withName: "my_product1.name", withPrice: 12.5), withQuantity: 1)
let item_2:TCItem = TCItem(itemId: "my_item2.id", with: TCProduct(productId: "my_product2.id", withName: "my_product2.name", withPrice: 22.5), withQuantity: 1)

let event = TCViewItemListEvent(items: [item_1, item_2])
	event?.itemListName = "summer_collection"
	serverside?.execute(event)
```

{% endtab %}

{% tab title="Dart (Flutter)" %}

```dart
TCProduct tc_product = TCProduct();
		tc_product.ID = "product_1_ID";
		tc_product.name = "product_1_name";
		tc_product.price = 150;
		tc_product.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_1 = TCItem();
		tc_item_1.ID = "item_1_id";
		tc_item_1.product = tc_product;
		tc_item_1.quantity = 1;
		tc_item_1.addAdditionalProperty("key_additional_item", "val_additional_product");
TCProduct tc_product_2 = TCProduct();
		tc_product_2.ID = "product_2_ID";
		tc_product_2.name = "product_2_name";
		tc_product_2.price = 150;
		tc_product_2.addAdditionalProperty("key_additional_product", "val_additional_product");
TCItem tc_item_2 = TCItem();
		tc_item_2.ID = "item_2_id";
		tc_item_2.quantity = 2;
		tc_item_2.product = tc_product;
		tc_item_2.addAdditionalProperty("key_additional_item", "val_additional_product");

var event = TCViewItemListEvent();
	event.pageName = "event_page_name";
	event.pageType = "event_page_type";
	event.items = [tc_item_1, tc_item_2];
	event.addAdditionalPropertyWithIntValue("key_additional_1", 12);
	event.addAdditionalPropertyWithListValue("key_additional_2", [12,12,12]);
	event.addAdditionalPropertyWithMapValue("key_map", {'test': 12, "test2": "value"});
	event.itemListName = "itemListName";	
serverside.execute(event);
```

{% endtab %}

{% tab title="json" %}

```json
{
    "event_name": "view_item_list",
        "item_list_name": "Related products",
        "items": [
            {
                "id": "SKU_12345",
                "quantity": 1,
                "price": 9.99,
                "variant": "red",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12345",
                    "name": "Trex tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "boy",
                    "brand": "Lacoste",
                    "colors": [
                        "red"
                    ],
                    "price": 9.99
                }
            },
            {
                "id": "SKU_12346",
                "quantity": 1,
                "price": 9.99,
                "variant": "green",
                "coupon": "CHRISTMAS",
                "discount": 1.99,
                "product": {
                    "id": "12346",
                    "name": "Heart tshirt",
                    "category_1": "clothes",
                    "category_2": "t-shirts",
                    "category_3": "girl",
                    "brand": "Jenyfion",
                    "colors": [
                        "blue",
                        "white"
                    ],
                    "price": 9.99
                }
            }
        ],
        "user": {
            "id": "12345",
            "email": "toto@domain.fr",
            "consent_categories": [
                1,
                3
            ]
        }
}
```

{% endtab %} {% endtabs %}

## - SCHÉMAS COURANTS -

### Article

#### Paramètres **(obligatoires et recommandés)** <a href="#parameters_27" id="parameters_27"></a>

<table><thead><tr><th width="179">Nom</th><th>Type</th><th width="64">Obligatoire</th><th width="129">Exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>SKU_12345</td><td><p>L'ID d'un article.</p><p>Si vous n'avez pas d'identifiant d'article, vous pouvez utiliser l'id produit comme valeur. Ce champ est utilisé comme clé pour les mises à jour (ex : refund)</p></td></tr><tr><td><code>product</code></td><td><a href="#product"><code>Object&#x3C;Product></code></a></td><td><strong>Oui</strong></td><td></td><td>Les détails du produit</td></tr><tr><td><code>variant</code></td><td><code>string</code></td><td>Non</td><td>rouge</td><td>La variante de l'article.</td></tr><tr><td><code>list_position</code></td><td><code>number</code></td><td>Non</td><td>1</td><td>La position de l'article dans une liste ou une collection.</td></tr><tr><td><code>discount</code></td><td><code>number</code></td><td>Non</td><td>2.00</td><td>Valeur monétaire de la remise pour un article courant</td></tr><tr><td><code>quantity</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>2</td><td>La quantité de l'article.</td></tr><tr><td><code>affiliation</code></td><td><code>string</code></td><td><strong>Non</strong>*</td><td>TÉLÉCHARGER</td><td>Requis pour la plupart des destinations d'affiliation.</td></tr><tr><td><code>coupon</code></td><td><code>string</code></td><td>Non</td><td>CHRISTMAS</td><td>Le code coupon associé à un article.</td></tr><tr><td><code>value</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Le prix final des articles (taxes <strong>inclus</strong>). Il correspond au prix unitaire TTC * quantité des articles</td></tr><tr><td><code>cancelled_value</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Montant des<br>articles annulés<br>(taxes <strong>inclus</strong>)</td></tr><tr><td><code>cancelled_quantity</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Quantité d'articles annulés (taxes <strong>inclus</strong>)</td></tr><tr><td><code>original_value</code></td><td><code>number</code></td><td>Non</td><td>10.00</td><td>Prix original de l'article (taxes <strong>inclus</strong>)</td></tr><tr><td><code>returned_value</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Prix de l'article retourné (taxes <strong>inclus</strong>)</td></tr><tr><td><code>returned_quantity</code></td><td><code>number</code></td><td>Non</td><td>0</td><td>Quantité d'articles retournés</td></tr></tbody></table>

### Produit

**Paramètres (obligatoires et recommandés)**

<table><thead><tr><th width="133">Nom</th><th>Type</th><th width="76">Obligatoire</th><th>Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td><strong>Oui</strong>*</td><td>12345</td><td><p>L'ID du produit (ex : dans votre base de données du catalogue produit)<br>Le <code>item.id</code> et <code>product.id</code> n'ont pas à être différents. S'ils sont différents, typiquement le <code>product.id</code> est un identifiant de base de données, comme <code>9714107479</code> et les <code>item.id</code> est un identifiant destiné au public comme <code>SKU-12345</code>.</p><p>(*) Si vous avez importé votre catalogue produit sur la plateforme, le <code>product.id</code> correspond à l'id produit unique dans le catalogue et peut être utilisé avec la fonctionnalité d'expansion d'id.</p></td></tr><tr><td><code>name</code></td><td><code>string</code></td><td><strong>Oui</strong></td><td>Trex</td><td>Nom du produit</td></tr><tr><td><code>price</code></td><td><code>number</code></td><td><strong>Oui</strong></td><td>14.99</td><td>Le prix du produit (avec remise et taxes <strong>exclues)</strong></td></tr><tr><td><code>currency</code></td><td><code>string (ISO 4217)</code></td><td>Non</td><td>EUR</td><td><p>Devise du <code>price</code>, au format ISO 4217 à 3 lettres.</p><p>Si défini, le niveau d'événement <code>currency</code> est ignoré.<br><br>Plusieurs devises par événement ne sont pas supportées. Chaque article doit définir la même devise.</p></td></tr><tr><td><code>category_1</code></td><td><code>string</code></td><td>Non</td><td>T-Shirts</td><td>Catégorie de produit (spécifique au contexte). <code>item_category2</code> jusqu'à <code>item_category5</code> peut également être utilisé si le produit a de nombreuses catégories.</td></tr><tr><td><code>brand</code></td><td><code>string</code></td><td>Non</td><td>Lacoste</td><td>Marque du produit</td></tr><tr><td><code>colors</code></td><td><code>Array[string]</code></td><td>Non</td><td>[blue, white]</td><td>La/les couleur(s) du produit</td></tr><tr><td><code>size</code></td><td><code>string</code></td><td>Non</td><td>128</td><td>Taille de l'article</td></tr></tbody></table>

### Utilisateur

Lorsque vous envoyez un événement, il doit contenir suffisamment d'informations pour identifier quel utilisateur l'a émis. Nous pouvons relier les événements entre eux en utilisant des cookies. Mais les partenaires de destination exigent des identifiants précis pour prendre des actions.

`id` et `email` sont généralement les paramètres les plus utiles. Bien que certains partenaires de destination utilisent également `firstname`, `lastname`, `birthdate`, `city`, ...

Vous n'aurez pas toujours tous ces paramètres. Mais il est recommandé de les envoyer dès que possible pendant la navigation de l'utilisateur.

#### Paramètres **(obligatoires et recommandés)** <a href="#parameters_17" id="parameters_17"></a>

<table><thead><tr><th width="173">Nom</th><th width="121">Type</th><th width="91">Obligatoire</th><th>Valeur d’exemple</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td><code>string</code></td><td>Non*</td><td>845454</td><td><p>Identifiant principal de l'utilisateur (ex. id CRM)</p><p>(*) requis pour de nombreuses destinations et le traitement interne.</p></td></tr><tr><td><code>email</code></td><td><code>string</code></td><td>Oui*</td><td>john.doe@example.com</td><td><p>Email (valeur en clair)</p><p>(*) requis pour de nombreuses destinations et le traitement interne. Non requis si <code>email_sha256</code> est fourni</p></td></tr><tr><td><code>email_md5</code></td><td><code>string</code></td><td>Non*</td><td>8eb1b52... (taille 32)</td><td>Email, haché en utilisant <a href="https://en.wikipedia.org/wiki/MD5">algorithme MD5</a>. Non requis si <code>email</code> est fourni (voir ci-dessous)</td></tr><tr><td><code>email_sha256</code></td><td><code>string</code></td><td>Non*</td><td>836f82d... (taille 64)</td><td>Email, haché en utilisant <a href="https://en.wikipedia.org/wiki/SHA-2">algorithme SHA-256</a>. Non requis si <code>email</code> est fourni (voir ci-dessous)</td></tr><tr><td><code>phone</code></td><td><code>string</code></td><td>Non*</td><td>+33612345678</td><td>Numéro de téléphone, <a href="https://en.wikipedia.org/wiki/E.164">E.164</a> format<br>(*) requis pour certaines destinations.</td></tr><tr><td><code>firstname</code></td><td><code>string</code></td><td>Non</td><td>John</td><td>Prénom</td></tr><tr><td><code>lastname</code></td><td><code>string</code></td><td>Non</td><td>Doe</td><td>Nom</td></tr><tr><td><code>gender</code></td><td><code>string</code></td><td>Non</td><td>m</td><td><p>Genre</p><ul><li><code>f</code> pour Femme</li><li><code>m</code> pour Homme</li></ul></td></tr><tr><td><code>birthdate</code></td><td><code>string</code></td><td>Non</td><td>1970-01-01</td><td>Date de naissance, <code>YYYY-MM-DD</code> format</td></tr><tr><td><code>city</code></td><td><code>string</code></td><td>Non</td><td>Boston</td><td>Ville</td></tr><tr><td><code>state</code></td><td><code>string</code></td><td>Non</td><td>Massachusetts</td><td>État</td></tr><tr><td><code>street</code></td><td><code>string</code></td><td>Non</td><td>303 Sumner St</td><td>Adresse</td></tr><tr><td><code>zipcode</code></td><td><code>string</code></td><td>Non</td><td>02108</td><td>Code postal</td></tr><tr><td><code>country</code></td><td><code>string</code></td><td>Non</td><td>USA</td><td>Code pays, ISO 3166-1 <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">2-lettres</a> ou <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3">3-lettres</a> formats</td></tr><tr><td><code>consent_categories</code></td><td><code>Array</code></td><td><strong>Oui</strong></td><td>[1,3,4]</td><td>Catégories de consentement de l'utilisateur. Cela doit contenir uniquement les catégories pour lesquelles l'utilisateur a donné son consentement.<br>Nécessaire pour autoriser le partage de données avec les partenaires de destination. Il est automatiquement rempli à partir des sources web si vous utilisez Commanders Act CMP.</td></tr><tr><td>status</td><td><code>string</code></td><td>Non</td><td>Nouveau</td><td>Statut tel que rapporté dans votre CRM (Ex. "New", "Existing", "Premium")</td></tr></tbody></table>

**À propos du hachage**

Dans certains cas, vous ne pourrez pas envoyer un paramètre **en clair** valeur. Il est soit indisponible soit restreint.

Ainsi il peut être possible d'envoyer les **valeurs hachées.** Nous acceptons actuellement 2 algorithmes : [`md5`](https://en.wikipedia.org/wiki/MD5) et [`sha256`](https://en.wikipedia.org/wiki/SHA-2).

Chaque `user.<property>` peut être envoyé au format haché avec le suffixe d'algorithme : `_md5` ou `_sha256` *(underscore suivi du nom de l'algorithme en minuscules)*

Exemple :

```
{
  user: {
    email_md5: '8eb1b522f60d11fa897de1dc6351b7e8',                                      // md5('john.doe@example.com')
    email_sha256: '836f82db99121b3481011f16b49dfa5fbc714a0d1b1b9f784a1ebbbf5b39577f',   // sha256('john.doe@example.com')
    phone_md5: '60dd761f55cb17f0532c9fb1679e8ddd',                                      // md5('+33612345678')
    phone_sha256: '42d573cfc315801d4cd8eddd5416b416a0bf298b9b9e12d6b07442c91db42bd8',   // sha256('+33612345678')
  }
}
```

> :information\_source: nous ne supportons que l'encodage hexadécimal (base16)\
> \&#xNAN;*(c.-à-d. : **valeurs hachées.** les valeurs sont portées par des chaînes avec des caractères \[0-9a-f])*\
> D'autres encodages ne sont pas encore pris en charge

Pas besoin d'envoyer les deux **en clair** et **valeurs hachées.** valeurs :

* si vous envoyez **en clair** valeur, les **valeurs hachées.** valeurs ne sont pas nécessaires\
  \&#xNAN;*Nous pouvons générer **valeurs hachées.** valeurs côté serveur en utilisant **en clair** value*
* si vous n'envoyez pas **en clair** valeur, alors vous devez remplir autant de **valeurs hachées.** valeurs que possible\
  \&#xNAN;*Les partenaires exigent différents algorithmes de hachage et sans **en clair** valeur, nous ne pouvons générer aucun hachage. C'est pourquoi nous avons besoin de l'exact **valeurs hachées.** value*

## - VALEUR ÉNUMÉRÉE -

### Méthodes de paiement

Valeurs énumérées pour les méthodes de paiement :

| Propriété       | Valeur                          |
| --------------- | ------------------------------- |
| payment\_method | by\_invoice                     |
| payment\_method | by\_bank\_transfer\_in\_advance |
| payment\_method | card                            |
| payment\_method | check\_in\_advance              |
| payment\_method | cod                             |
| payment\_method | coupon                          |
| payment\_method | direct\_debit                   |
| payment\_method | online\_payment\_system         |
| payment\_method | other                           |

### Statut d'achat

Valeurs énumérées pour le statut d'achat :

<table><thead><tr><th width="380">Propriété</th><th>Valeur</th></tr></thead><tbody><tr><td>status</td><td>annulé</td></tr><tr><td>status</td><td>livré</td></tr><tr><td>status</td><td>en_cours</td></tr><tr><td>status</td><td>partiellement_livré</td></tr><tr><td>status</td><td>partiellement_retourné</td></tr><tr><td>status</td><td>partiellement_expedie</td></tr><tr><td>status</td><td>en_attente_d'expédition</td></tr><tr><td>status</td><td>retourné</td></tr><tr><td>status</td><td>expédié</td></tr><tr><td>status</td><td>en_attente</td></tr></tbody></table>

##

###
