# Spécificité des événements Mobile App

1. [Mappage Event SDK](#event-sdk-mapping)
2. [Spécificité des événements pour l’application mobile](#event-specificity-for-mobile-app)
3. [Détails des champs](#fields-details)
4. [device](#device)
5. [device -> os](#device---os)
6. [device -> screen](#device---screen)
7. [device -> network](#device---network)
8. [device -> Lifecycle](#device---lifecycle)
9. [app](#app)

Un événement complet est l’ajout d’informations spécifiques à l’événement et de données collectées par le SDK. Pour chaque événement, vous trouverez dans la documentation "[events reference](/fr/developers/tracking-and-integrations/tracking/events-reference.md)" toutes les propriétés possibles et celles obligatoires.

## Mappage Event SDK

Pour créer un événement, vous devrez utiliser les classes du SDK qui représentent les événements. Comme cela peut prêter à confusion, vous trouverez ici une liste des noms de classe et de leurs équivalents d’événement.

Tous ces noms de classe sont valides à la fois sur Android et iOS.

| nom de l’événement          | nom de classe          |
| --------------------------- | ---------------------- |
| tout événement personnalisé | TCCustomEvent          |
| add\_payment\_info          | TCAddPaymentInfoEvent  |
| add\_shipping\_info         | TCAddShippingInfoEvent |
| add\_to\_cart               | TCAddToCartEvent       |
| add\_to\_wishlist           | TCAddToWishlistEvent   |
| begin\_checkout             | TCBeginCheckoutEvent   |
| generate\_lead              | TCGenerateLeadEvent    |
| login                       | TCLoginEvent           |
| page\_view                  | TCPageViewEvent        |
| purchase                    | TCPurchaseEvent        |
| remboursement               | TCRefundEvent          |
| remove\_from\_cart          | TCRemoveFromCartEvent  |
| search                      | TCSearchEvent          |
| select\_content             | TCSelectContentEvent   |
| select\_item                | TCSelectItemEvent      |
| sign\_up                    | TCSignUpEvent          |
| view\_cart                  | TCViewCartEvent        |
| view\_item                  | TCViewItem             |
| view\_item\_list            | TCViewItemListEvent    |

| SCHÉMAS COMMUNS | nom de classe |
| --------------- | ------------- |
| Article         | TCItem        |
| Produit         | TCProduct     |
| User            | TCUser        |

| VALEUR ÉNUMÉRÉE      | Nom de classe     |
| -------------------- | ----------------- |
| Méthodes de paiement | ETCPaymentMethod  |
| Statut d'achat       | ETCPurchaseStatus |

## Spécificité des événements pour l’application mobile

Les SDK iOS et Android ajoutent des propriétés spécifiques concernant l’appareil et l’application. Celles-ci s’ajoutent aux propriétés gérées par l’événement.

{% hint style="info" %}
Si vous suivez vos applications mobiles sans utiliser le sdk (avec le [http tracking api](/fr/fonctionnalites/sources/sources-catalog/server/http-tracking-api.md)), vous devez suivre cette spécification afin de bénéficier du plug\&play sur les destinations\\
{% endhint %}

Voici un exemple de payload d’événement :

```json
{
   "event_name":"add_to_cart",
   "value":22.53,
   "currency":"EUR",
   "user": {
	   "consistent_anonymous_id": "b5c6aa4e-0532-40c0-bf6b-a77bff46d600",
	   "email": "toto@domain.fr",
	   "consent_categories": ["1", "3"]
   },
   "items":[
      {
         "id":"SKU_12345",
         "quantity":1,
         "product":{
            "id":"12345",
            "name":"Trex tshirt",
            "price":9.99
         }
      }
   ],
   "context":{
      "event_id":"8f6e05dd-6df0-476c-9c56-5d277fac7cea",
      "device":{
         "sdk_id":"a47f71c0-9561-4a26-96d6-0d8632095caa",
         "user_agent":"Mozilla\/5.0 (Linux; Android 13; sdk_gphone64_arm64 Build\/TE1A.220922.012; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/103.0.5060.71 Mobile Safari\/537.36",
         "manufacturer":"Google",
         "model":"sdk_gphone64_arm64",
         "name":"emu64a",
         "type":"android",
         "language":"en",
         "region":"US",
         "network":{
            "bluetooth":false,
            "cellular":false,
            "wifi":true
         },
         "os":{
            "name":"android",
            "version":"13"
         },
         "screen":{
            "width":1080,
            "height":1857,
            "density":2.625
         },
         "timezone":"Europe\/Paris",
         "lifecycle":{
            "session_id":"5ab5fd16-5ebd-42bb-8c9c-b12564370c83",
            "new_session":false,
            "first_execute":false,
            "is_first_visit":true,
            "session_duration":138200,
            "current_session":1673571497826,
            "current_visit":1673571497826,
            "current_version_first_visit":1673571497826,
            "first_visit":1673571497826,
            "last_visit":1673571497826,
            "last_call":1673571632270,
            "last_session_start":0,
            "last_session_last_hit":0,
            "foreground_time":137652,
            "background_time":548,
            "foreground_transitions":2,
            "session_number":1,
            "visit_number":1
         }
      },
      "app":{
         "name":"TCDemo ServerSide And Consent",
         "version":"1.0",
         "build":"1",
         "namespace":"com.tagcommander.tcdemo",
         "core_version":"5.3.1",
	 "consent_version":"5.4.2",
         "serverside_version":"5.3.1"
      },
      "event_timestamp":1673571636026
   }
}
```

## Détails des champs

Voici les champs ajoutés automatiquement par le sdk.

(\*) L’adresse IP n’est pas collectée par nos bibliothèques, mais renseignée par nos serveurs lorsqu’ils reçoivent un message pour **événements côté client uniquement**.

### context

<table><thead><tr><th>Nom du champ</th><th>Exemple de valeur</th><th width="227">Description</th><th>Plateforme</th></tr></thead><tbody><tr><td>event_id</td><td>8f6e05dd-6df0-476c-9c56-5d277fac7cea</td><td>Un UUID aléatoire généré lors de la sérialisation de l’instance de l’événement</td><td>Les deux</td></tr><tr><td>event_timestamp</td><td>1673571636026</td><td>Horodatage de l'envoi de l'événement.</td><td>Les deux</td></tr></tbody></table>

### context.app

<table><thead><tr><th>Nom du champ</th><th width="252">Exemple de valeur</th><th width="178">Description</th><th>Plateforme</th></tr></thead><tbody><tr><td>namespace</td><td>com.tagcommander.TCDemo</td><td>L’espace de noms de l’application</td><td>Les deux</td></tr><tr><td>name</td><td>TCDemo</td><td>Le nom de l’application</td><td>Les deux</td></tr><tr><td>build</td><td>1</td><td>L’ID de build de l’application</td><td>Les deux</td></tr><tr><td>version</td><td>1.1</td><td>La version de l’application</td><td>Les deux</td></tr><tr><td>serverside_version</td><td>5.1.0</td><td>La version du module server-side</td><td>Les deux</td></tr><tr><td>core_version</td><td>5.1.0</td><td>La version du module core</td><td>Les deux</td></tr><tr><td>consent_version</td><td>5.3.3</td><td>La version du module consent</td><td>Les deux</td></tr></tbody></table>

### context.device

<table><thead><tr><th>Nom du champ</th><th>Exemple de valeur</th><th width="227">Description</th><th>Plateforme</th></tr></thead><tbody><tr><td>manufacturer</td><td>Apple</td><td>Le fabricant du matériel</td><td>Les deux</td></tr><tr><td>model</td><td>iPhone7.3</td><td>Le modèle de l’appareil</td><td>Les deux</td></tr><tr><td>name</td><td>maguro</td><td>Le nom donné à l’appareil</td><td>Les deux</td></tr><tr><td>sdk_id</td><td>C32272DB0-C21E-11E4-8DFC-AA07A5B093DB</td><td>Un UUID aléatoire généré au premier lancement du SDK et stocké sur l’appareil pour les lancements futurs.</td><td>Les deux</td></tr><tr><td>timezone</td><td>Europe/Paris</td><td>Le fuseau horaire détaillé</td><td>Les deux</td></tr><tr><td>type</td><td>android</td><td>Le nom de l’os</td><td>Les deux</td></tr><tr><td>language</td><td>en</td><td>La langue par défaut de l’appareil</td><td>Les deux</td></tr><tr><td>region</td><td>US</td><td>La région par défaut de l’appareil</td><td>Les deux</td></tr><tr><td>user_agent</td><td>Mozilla 5.0 (iPhone; ...</td><td>L’user agent de l’appareil ; le SDK iOS n’attend pas qu’il soit disponible par défaut.</td><td>Les deux</td></tr></tbody></table>

Les champs suivants nécessitent le consentement et sont ajoutés lorsque vous appelez "addAdvertisingIDs" depuis la classe ServerSide.

| Nom du champ          | Exemple de valeur                    | Description                                     | Plateforme |
| --------------------- | ------------------------------------ | ----------------------------------------------- | ---------- |
| advertising\_id       | 705EB54D-9FC7-4730-BF1B-A5D0494E1D8C | IDFA ou AAD                                     | Les deux   |
| idfv                  | 5E35A9BA-C945-4A79-80B6-D89139471308 | IDFV                                            | iOS        |
| ad\_tracking\_enabled | true                                 | Si l’utilisateur a activé le suivi publicitaire | Les deux   |

### user

User contient tous les champs déclarés dans <https://doc.commandersact.com/developers/tracking/events-reference/common-events#user>

| Nom du champ              | Exemple de valeur                    | Description                                                                                                                         | Plateforme |
| ------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| consistent\_anonymous\_id | b5c6aa4e-0532-40c0-bf6b-a77bff46d600 | ID généré pour le consentement, par défaut égal au sdk\_id ; nommé anonymous\_id dans les classes Android/iOS pour la modification. | Les deux   |
| consent\_categories       | \["1","2","10019","10018","13001"]   | Liste des catégories acceptées                                                                                                      | Les deux   |
| ID                        | "anything"                           | Aucune valeur par défaut, mais peut être utilisé par le client s’il a besoin d’un ID spécifique                                     | Les deux   |
| consentID                 | b5c6aa4e-0532-40c0-bf6b-a77bff46d600 | ID utilisé pour envoyer les informations de consentement. Par défaut égal au sdk\_id;                                               | Les deux   |
| refused\_vendors          | \["12","309","380"] or "ALL"         | liste des ID des fournisseurs refusés, pouvant être hachés, ou "ALL" comme valeur.                                                  | Les deux   |

### context.device.os

| Nom du champ | Exemple de valeur | Description                      | Plateforme |
| ------------ | ----------------- | -------------------------------- | ---------- |
| name         | ios               | Le nom du système d’exploitation | Les deux   |
| version      | 15.5              | La version de l’os               | Les deux   |

### context.device.screen

| Nom du champ | Exemple de valeur | Description                         | Plateforme |
| ------------ | ----------------- | ----------------------------------- | ---------- |
| width        | 390               | La largeur de l’écran de l’appareil | Les deux   |
| height       | 844               | La hauteur de l’écran de l’appareil | Les deux   |
| density      | 2                 | La densité d’écran de l’appareil    | Android    |

### context.device.network

| Nom du champ | Exemple de valeur | Description                                                               | Plateforme |
| ------------ | ----------------- | ------------------------------------------------------------------------- | ---------- |
| bluetooth    | false             | Le bluetooth est-il connecté                                              | Les deux   |
| cellular     | true              | Le réseau cellulaire est-il connecté                                      | Les deux   |
| carrier      | T-Mobile US       | Nom de l’opérateur (uniquement lorsque le réseau cellulaire est connecté) | Android    |
| wifi         | false             | Le wifi est-il connecté                                                   | Android    |

### context.device.lifecycle

| Nom du champ                   | Exemple de valeur                    | Description                                                                                                               | Plateforme |
| ------------------------------ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ---------- |
| session\_id                    | F318C0D1-1DDB-4B53-9326-F2078A97CD38 | Un ID spécifique à cette session                                                                                          | Les deux   |
| new\_session                   | false                                | Vrai si ce hit est le premier d’une nouvelle session                                                                      | Les deux   |
| session\_duration              | 8291                                 | Le temps passé pendant cette session                                                                                      | Les deux   |
| current\_session               | 1655824764174                        | Horodatage du début de la session en cours                                                                                | Les deux   |
| visit\_number                  | 1                                    | Nombre de fois que l’application a été lancée                                                                             | Les deux   |
| current\_visit                 | 1655824764174                        | Horodatage du début de la visite en cours                                                                                 | Les deux   |
| current\_version\_first\_visit | 1655824764174                        | Horodatage de la première visite pour cette version de l’application                                                      | Les deux   |
| session\_number                | 1                                    | Le nombre de sessions                                                                                                     | Les deux   |
| first\_visit                   | 1655824764174                        | Horodatage de la première visite de l’application                                                                         | Les deux   |
| last\_visit                    | 1655824764174                        | Horodatage de la dernière visite                                                                                          | Les deux   |
| last\_call                     | 1655824772416                        | Horodatage du hit précédent                                                                                               | Les deux   |
| last\_session\_start           | 0                                    | Horodatage du début de la session précédente                                                                              | Les deux   |
| last\_session\_last\_hit       | 0                                    | Horodatage du dernier hit envoyé pendant la session précédente                                                            | Les deux   |
| foreground\_transitions        | 2                                    | Nombre de fois où l’application est passée de l’arrière-plan au premier plan                                              | Les deux   |
| foreground\_time               | 8278                                 | Temps passé par l’application au premier plan                                                                             | Les deux   |
| background\_time               | 0                                    | Temps passé par l’application en arrière-plan                                                                             | Les deux   |
| first\_execute                 | false                                | Est-ce le premier hit de ce lancement à froid                                                                             | Les deux   |
| is\_first\_visit               | true                                 | S’agit-il du premier lancement de cette application. (avec first execute, vous pouvez valider de nouvelles installations) | Les deux   |


---

# Agent Instructions: 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:

```
GET https://doc.commandersact.com/fr/developers/tracking-and-integrations/tracking/about-events/mobile-sdk-event-specificity.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
