> For the complete documentation index, see [llms.txt](https://doc.commandersact.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference/common-events.md).

# Événements communs

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

Le `page_view` L'appel vous permet d'enregistrer chaque fois qu'un utilisateur consulte une page de votre site web, ainsi que toutes les propriétés optionnelles 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 (p. ex. Politique de confidentialité)</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 automatiquement remplie à partir des 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, en particulier la clé de rapprochement (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">Objet &#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 automatiquement remplie à partir des 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, en particulier la clé de rapprochement (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: 'Meilleures ventes',
  user: {
    id: '12356',
    email:'toto@domain.fr',
    consent_categories: [1,3]
  }
});
```

{% endtab %}

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

```kotlin
val event = TCPageViewEvent("product_list")
event.pageName = "Meilleures ventes"
serverside.execute(event)
```

{% endtab %}

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

```java
TCPageViewEvent event = new TCPageViewEvent("product_list")
event.pageName = "Meilleures ventes";
serverside.execute(event);
```

{% endtab %}

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

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

//ou vous pouvez aussi 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 = "Meilleures ventes"
	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": "Meilleures ventes"   
}
```

{% endtab %}
{% endtabs %}

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

Envoyez cet événement pour indiquer 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="110">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 automatiquement remplie à partir des 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, en particulier la clé de rapprochement (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 %}

## 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="148">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 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 automatiquement remplie à partir des 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, en particulier la clé de rapprochement (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)" %}

```java
TCSearchEvent event = new TCSearchEvent("t-shirts");
serverside.execute(event);
```

{% 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 indique qu'un utilisateur a sélectionné un contenu d'un certain type. Cet événement peut vous aider à identifier le contenu populaire et les catégories de contenu 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 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 automatiquement remplie à partir des 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, en particulier la clé de rapprochement (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)" %}

```
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 %}

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

Cet événement indique qu'un utilisateur a créé un compte.

#### Paramètres **(requis et recommandé)** <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 automatiquement remplie à partir des 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, en particulier la clé de rapprochement (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="iOS" %}

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

{% endtab %}

{% tab title="Swift" %}

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

{% endtab %}

{% tab title="Flutter" %}

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

{% endtab %}

{% tab title="json" %}

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

{% endtab %}
{% endtabs %}

## - SCHÉMAS COMMUNS -

### Utilisateur

Lorsque vous envoyez un événement, il doit contenir suffisamment d'informations pour identifier l'utilisateur qui l'a émis. Nous pouvons relier les événements entre eux à l'aide de cookies. Mais les partenaires de destination ont besoin d'identifiants précis pour agir.

`id` et `email` sont généralement les paramètres les plus utiles. Cependant, certains partenaires de destination utilisent aussi `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 **(requis et recommandé)** <a href="#parameters_17" id="parameters_17"></a>

<table><thead><tr><th width="229">Nom</th><th width="118">Type</th><th width="104">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 pour 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>E-mail (valeur brute)</p><p>(*) requis pour de nombreuses destinations et pour 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>E-mail, haché à l'aide de <a href="https://en.wikipedia.org/wiki/MD5">l'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>E-mail, haché à l'aide de <a href="https://en.wikipedia.org/wiki/SHA-2">l'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 de famille</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>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>Tableau</code></td><td><strong>Oui</strong></td><td>[1,2,3]</td><td>Catégories de consentement de l'utilisateur.<br>Nécessaires pour autoriser le data sharing avec les partenaires de destination. Il est automatiquement renseigné à partir des sources web si vous utilisez Commanders Act CMP.</td></tr></tbody></table>

**À propos du hachage**

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

Il peut donc être possible d'envoyer la **hachée** valeurs. 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 de l'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 prenons en charge que l'encodage hexadécimal (base16)\
> \&#xNAN;*(c.-à-d. : **hachée** les valeurs sont transmises par des chaînes contenant les caractères \[0-9a-f])*\
> Les autres encodages ne sont pas encore pris en charge

Inutile d'envoyer les deux **en clair** et **hachée** valeurs :

* si vous envoyez **en clair** valeur, les **hachée** valeurs ne sont pas nécessaires\
  \&#xNAN;*Nous pouvons générer **hachée** des valeurs côté serveur à l'aide de **en clair** valeur*
* si vous n'envoyez pas **en clair** valeur, vous devriez alors renseigner autant de **hachée** valeurs que possible\
  \&#xNAN;*Les partenaires requièrent 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 la valeur exacte **hachée** valeur*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference/common-events.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
