> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Résultats personnalisés

> Apprenez à suivre les actions utilisateur et les revenus des notifications push et messages in-app en utilisant les résultats personnalisés OneSignal. Personnalisez l'attribution et mesurez l'engagement avec des types de résultats flexibles sur toutes les plateformes.

<Warning>
  **Les résultats personnalisés sont en cours de dépréciation.** Ils sont remplacés par les [métriques de conversion](./conversion-metrics), qui fournissent une attribution au dernier contact multicanal couvrant push, e-mail, SMS, in-app et RCS. Si vous configurez le suivi des conversions pour la première fois, utilisez plutôt les [métriques de conversion](./conversion-metrics).

  Les données existantes de résultats personnalisés restent accessibles en tant que données historiques.
</Warning>

Les résultats personnalisés OneSignal vous permettent de suivre les actions utilisateur significatives résultant des notifications push et des messages in-app. Ces actions—comme les achats, inscriptions ou événements d'application—peuvent être suivies avec des métriques de comptage, somme et uniques, vous donnant un aperçu de l'impact de vos campagnes de messagerie.

<Info> Les résultats personnalisés sont disponibles sur les forfaits **Professionnel** et **Entreprise**. En savoir plus sur notre [tarification](https://onesignal.com/pricing). </Info>

***

## Types de résultats & méthodes SDK

Vous pouvez déclencher un résultat en ajoutant une ligne de code lorsqu'un utilisateur effectue une action spécifique (par ex., touche « Ajouter au panier » ou « Mettre à niveau »).

| Type de résultat      |                          Méthode SDK Mobile                         |                        Méthode SDK Web                       | Description                                                                                                                                                              |
| --------------------- | :-----------------------------------------------------------------: | :----------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Comptage standard** |          [`addOutcome`](./mobile-sdk-reference#addoutcome)          |       [`sendOutcome`](./web-sdk-reference#sendoutcome)       | Augmente le compte de 1 à chaque appel. Aucun suivi de valeur.                                                                                                           |
| **Valeur (Somme)**    | [`addOutcomeWithValue`](./mobile-sdk-reference#addoutcomewithvalue) |       [`sendOutcome`](./web-sdk-reference#sendoutcome)       | Augmente le compte de 1 et la somme de la valeur numérique spécifiée. Utile pour le suivi des revenus.                                                                   |
| **Comptage unique**   |    [`addUniqueOutcome`](./mobile-sdk-reference#adduniqueoutcome)    | [`sendUniqueOutcome`](./web-sdk-reference#senduniqueoutcome) | Augmente le compte de 1, une seule fois par fenêtre d'attribution. Idéal pour les actions utilisateur binaires comme « Session de balayage démarrée » ou « CTA touché ». |

<Info> Les événements de résultats sont mis en cache localement si hors ligne et retentés à la prochaine initialisation de OneSignal. </Info>

***

## Comptage vs somme

Les résultats prennent en charge deux métriques clés :

| Métrique   | Description                                                                       |
| ---------- | --------------------------------------------------------------------------------- |
| **Compte** | Nombre de fois où l'événement de résultat a été déclenché                         |
| **Somme**  | Total de toutes les valeurs numériques envoyées avec le résultat (le cas échéant) |

Les résultats avec valeurs arrondissent toujours au nombre entier le plus proche.

**Exemple** : Pour suivre les revenus d'un achat :

<CodeGroup>
  ```java java theme={null}
  // "Purchase" button pressed in the app
     ...
     OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);
  ```

  ```objectivec objectivec theme={null}
  // "Purchase" button pressed in the app
     ...
     [OneSignal.Session addOutcomeWithValue:@"Purchase" value:18.76]
  ```

  ```javascript javascript theme={null}
  //Purchase Button pressed on site
  OneSignal.Session.addOutcomeWithValue("Purchase", 20.2);
  ```

  ```javascript Javascript(Web SDK) theme={null}
  //Purchase Button pressed on site
  OneSignal.Session.sendOutcome("Purchase", 20.20);
  ```

  ```swift Swift theme={null}
  let value = "20.20"//you supply the value
  OneSignal.Session.addOutcome(withValue: "Purchase", value: NSNumber(value:value), onSuccess: {outcomeSent in
    print("outcome sent: \(outcomeSent!.name) with random value: \(value)" )
  })
  ```

  ```csharp Unity(C#) theme={null}
  //Send an outcome
  OneSignal.Session.AddOutcome("outcomeName");

  //Send a unique outcome
  OneSignal.Session.AddUniqueOutcome("uniqueOutcomeName");

  //Send an outcome with a float value
  OneSignal.Session.AddOutcomeWithValue("outcomeWithVal", 4.2f);
  ```
</CodeGroup>

***

## Attribution de résultats

Chaque résultat est suivi avec un type d'attribution qui explique comment il a été généré :

* **direct** — le résultat s'est produit lorsque l'utilisateur a directement interagi avec le message. Certains résultats, comme `os__click` et `os__confirmed_delivery`, n'ont qu'une attribution directe car ils se produisent uniquement à la suite du message.
* **influencé** — le résultat s'est produit dans la fenêtre temporelle d'attribution après l'envoi du message, mais l'utilisateur n'a jamais interagi directement avec le message.
* **non attribué** — le résultat s'est produit sans relation directe ou influencée avec le message.
* **total** *(par défaut)* — la somme de **direct + influencé + non attribué**.

## Cas d'utilisation

### Site de e-commerce

Les boutiques en ligne peuvent utiliser les notifications push OneSignal pour ramener les utilisateurs vers les paniers abandonnés, les ventes flash, les promotions, et plus encore. Avec les **résultats**, les propriétaires de boutiques peuvent désormais facilement corréler les notifications push aux actions utilisateur telles qu'un ajout au panier, un achat ou un coupon utilisé. Pour les achats, les résultats vont encore plus loin que de simples comptages et peuvent suivre les montants d'achat. Cela permet aux propriétaires de sites de visualiser facilement le total des revenus générés par les push individuels.

<CodeGroup>
  ```java java theme={null}
  OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);
  ```

  ```objectivec objectivec theme={null}
  [OneSignal.Session addOutcomeWithValue:@"Purchase" value:18.76]
  ```

  ```javascript javascript theme={null}
  OneSignal.Session.addOutcomeWithValue("Purchase", 18.76);
  ```

  ```Text Javascript(Web SDK) theme={null}
  OneSignal.Session.sendOutcome("Purchase", 18.76);
  ```

  ```csharp Unity(C#) theme={null}
  OneSignal.Session.AddOutcomeWithValue("Purchase", 18.76);
  ```
</CodeGroup>

### Applications sociales

Les applications sociales peuvent vouloir réengager les utilisateurs en utilisant un push pour les notifier d'un match ou d'une demande d'ami, d'un nouveau like, ou simplement pour les faire swiper. En utilisant les **résultats**, un développeur peut voir si une notification push a conduit à un événement utilisateur tel qu'initier un chat avec un match ou une session de swipe de 34 secondes. Ces données peuvent ensuite être utilisées pour affiner les stratégies de notification et de ciblage.

Dans l'exemple suivant, nous voulons suivre si un utilisateur a commencé à swiper des profils de rencontre après un push. Comme nous ne voudrions pas compter chaque swipe comme une conversion, nous utilisons `sendUniqueOutcome`

Ce résultat « Swipe » ne sera attribué qu'une seule fois au push qui l'a déclenché. Exemples :

* Si l'utilisateur a cliqué sur le push et effectué l'action qui a appelé cette méthode, ce sera une attribution directe.
* Si l'utilisateur a reçu le push mais ne l'a pas cliqué et a effectué l'action dans la fenêtre d'attribution, ce sera une attribution influencée. Même s'ils cliquent plus tard sur le même push et effectuent à nouveau l'action, ce sera toujours uniquement influencé.
* Si l'utilisateur effectue la méthode en dehors d'une fenêtre d'attribution, ce sera non attribué une fois par session.

<CodeGroup>
  ```java Java theme={null}
  OneSignal.Session.addUniqueOutcome("Swipe");
  ```

  ```objectivec Objective-C theme={null}
  [OneSignal.Session addUniqueOutcome:@"Swipe"]
  ```

  ```javascript JavaScript theme={null}
  OneSignal.Session.addUniqueOutcome("my_outcome_event");
  ```

  ```csharp C# theme={null}
  OneSignal.Session.AddUniqueOutcome("swipe");
  ```
</CodeGroup>

### Push cliqués par langue

Dans les méthodes d'écoute Notification Ouverte/Cliquée de notre SDK, vous pouvez configurer les résultats pour incrémenter combien d'appareils ont cliqué sur un push selon leur langue définie. Cela nécessitera du code natif pour détecter la langue de l'appareil, mais vous pouvez ensuite transmettre cette langue au résultat comme ceci :

<CodeGroup>
  ```java Java theme={null}
    public void notificationOpened(OSNotificationOpenResult result) {
      String languageCode = Locale.getDefault().getLanguage();
      System.out.println("languageCode " + languageCode);
      OneSignal.Session.addOutcome(languageCode);
    }
  ```

  ```swift Swift theme={null}
  let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
    // This block gets called when the user reacts to a notification received
    if let languageCode = Locale.current.languageCode {
        print ("languageCode: " + languageCode);
        OneSignal.Session.addOutcome(languageCode);
    }
  }
  ```

  ```javascript JavaScript theme={null}
  var language = navigator.language;
  OneSignal.Session.addOutcome(language);
  ```
</CodeGroup>

### Push cliqués par système d'exploitation et navigateur

Dans les méthodes d'écoute Notification Ouverte/Cliquée de notre SDK, vous pouvez configurer les résultats pour incrémenter quelles plateformes spécifiquement ont été cliquées. C'est générique pour iOS et Android car vous pouvez définir `OneSignal.addOutcome("iOS")` ou `OneSignal.addOutcome("Android")` dans le gestionnaire de clic de votre application mobile, mais si vous voulez également suivre les plateformes push web, vous pouvez utiliser ceci par exemple :

<CodeGroup>
  ```javascript Javascript(Web SDK) theme={null}
  // Example taken from Stackoverflow: https://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
  var os = "Unknown OS";
  if (navigator.userAgent.indexOf("Win") != -1) os = "Windows";
  if (navigator.userAgent.indexOf("Mac") != -1) os = "Macintosh";
  if (navigator.userAgent.indexOf("Linux") != -1) os = "Linux";
  if (navigator.userAgent.indexOf("Android") != -1) os = "Android";
  if (navigator.userAgent.indexOf("like Mac") != -1) os = "iOS";
  console.log('Your os: ' + os);

  var browserType = "Unknown Browser Type";
  if (navigator.userAgent.indexOf("Safari") != -1) browserType = "Safari";
  if (navigator.userAgent.indexOf("Chrome") != -1) browserType = "Chrome";
  if (navigator.userAgent.indexOf("OPR") != -1) browserType = "Opera";
  if (navigator.userAgent.indexOf("Firefox") != -1) browserType = "Firefox";
  console.log('Your Browser: ' + browserType);

  OneSignal.push(["addListenerForNotificationOpened", function(data) {
  OneSignal.Session.sendOutcome(os);
  OneSignal.Session.sendOutcome(browserType);
  }]);

  ```
</CodeGroup>

***

## Désactiver le suivi des résultats

Désactivez le suivi de résultats spécifiques dans le tableau de bord **Paramètres > Push & In-App > Suivi des résultats**.

De là, vous pouvez cliquer sur le bouton **Arrêter le suivi** pour sélectionner un résultat dont vous voulez arrêter le suivi dans le tableau de bord. Une fois que vous avez arrêté le suivi des résultats, vous les verrez listés ici et pourrez recommencer à les suivre en cliquant sur le lien **Démarrer le suivi**.

***

## FAQ

### Combien de temps les données de résultats sont-elles stockées ?

* Les notifications envoyées depuis le tableau de bord conservent leurs données de résultats indéfiniment.
* Les notifications envoyées via l'API ont une rétention de résultats de 30 jours avant d'être purgées.

### Quels canaux prennent en charge les résultats personnalisés ?

Actuellement, les résultats personnalisés ne peuvent être ajoutés qu'aux actions sur les notifications Push et les messages In-App.

Les résultats envoyés via les messages In-App s'afficheront comme « Non attribués » et définiront une balise sur l'appareil au format : `nom du résultat : true`.

### Puis-je exporter les résultats ?

Vous pouvez exporter un ensemble de résultats ou tous les résultats au format CSV. Nous fournissons également un accès API aux résultats pour une [notification individuelle](/reference/view-message) ou pour [toutes les notifications](/reference/view-outcomes).

### Puis-je stocker des chaînes de caractères comme valeurs dans les résultats personnalisés ?

Cela n'est pas pris en charge.

### Que se passe-t-il si un appareil est hors ligne ?

Les données des résultats déclenchés sont mises en file d'attente pour être envoyées à OneSignal une fois que l'appareil est de nouveau en ligne.

### Si un utilisateur met l'application en arrière-plan après avoir cliqué sur une notification puis y revient, déclenchant un résultat, est-il compté comme direct ou influencé ?

Tant que l'utilisateur revient à l'application dans les 30 secondes après l'avoir mise en arrière-plan, la session sera toujours considérée comme la session d'origine et obtiendra une attribution directe.

### Quand la nouvelle fenêtre d'attribution prend-elle effet ?

Si vous modifiez la fenêtre d'attribution de 24 heures à 1 heure par exemple, alors la fenêtre d'1 heure prendra effet par appareil une fois que chaque appareil ouvre l'application depuis une toute nouvelle session. Cette nouvelle session est créée après 30 secondes passées hors de l'application.

### Pourquoi les sessions ne correspondent-elles pas aux autres analytics ?

OneSignal ne compte une session qu'après que l'utilisateur a quitté l'application pendant plus de 30 secondes. Si vous fermez l'application ou le site web et y revenez dans les 30 secondes, ce ne sera pas une nouvelle session.

Par exemple, l'analytique d'Apple suit la session comme le nombre de fois où l'application a été utilisée pendant au moins deux secondes. Si l'application est en arrière-plan et est ensuite utilisée à nouveau, cela compte comme une autre session.

***
