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

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](https://doc.commandersact.com/fr/developpeurs/tracking-and-integrations/tracking/events-reference)" 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](https://doc.commandersact.com/fr/fonctionnalites/sources/sources-catalog/server/http-tracking-api)), 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   |
