Envoyer les propriétés utilisateur

Les propriétés utilisateur décrivent des segments de votre base d'utilisateurs, comme la langue préférée ou l'emplacement géographique. Analytics enregistre automatiquement certaines propriétés utilisateur. Si vous souhaitez collecter des propriétés supplémentaires, vous pouvez configurer jusqu'à 25 propriétés utilisateur supplémentaires par projet. Consultez Propriétés utilisateur personnalisées pour savoir comment définir et enregistrer des propriétés utilisateur.

Les propriétés utilisateur améliorent la segmentation des utilisateurs, mais les données de propriété utilisateur ne sont souvent disponibles que côté serveur. Le protocole de mesure vous permet d'augmenter les mesures côté client avec des données côté serveur, ce qui est généralement impossible en utilisant uniquement des solutions côté client.

Noms réservés

Certains noms de propriétés utilisateur sont réservés et ne peuvent pas être utilisés dans les mesures :

  • first_open_time
  • first_visit_time
  • last_deep_link_referrer
  • user_id
  • first_open_after_install

De plus, les noms de propriétés utilisateur ne peuvent pas commencer par :

  • google_
  • ga_
  • firebase_

Exemple d'utilisation

Dans l'exemple suivant, votre CRM comporte une propriété utilisateur (customer_tier) que vous souhaitez ajouter à vos mesures. customer_tier peut être défini sur premium ou standard. Pour obtenir cette propriété utilisateur dans vos rapports, procédez comme suit :

Tout d'abord, demandez au client d'envoyer un événement add_payment_info avec un appel à une API de serveur ayant accès à votre système CRM :

code client

FirebaseAnalytics.logEvent("add_payment_info")
ServerAPI.addCustomerTier(
  FirebaseAnalytics.getAppInstanceId(),
  "[{name: \"add_payment_info\"}"]
);

Votre serveur augmente ensuite la mesure avec la propriété utilisateur customer_tier à l'aide du protocole de mesure :

code du serveur

const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";

function addCustomerTier(appInstanceId, events) {

  // Request the customer tier from the CRM.
  const customerTier = getCustomerTier(appInstanceId);

  const queryParams = `?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`;
  fetch(`https://www.google-analytics.com/mp/collect${queryParams}`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "app_instance_id": "APP_INSTANCE_ID",
      "user_properties": {
        "customer_tier": {
          "value": "CUSTOMER_TIER"
        }
      },
      "events": JSON.parse(events)
    })
  });
}

Cette propriété utilisateur indique les deux segments premium et standard.

Pour en savoir plus sur l'envoi d'événements à l'aide du protocole de mesure, consultez Envoyer des événements.

Remplacer le code temporel

Le protocole de mesure utilise le premier code temporel qu'il trouve dans la liste suivante pour chaque propriété utilisateur de la requête :

  1. Le timestamp_micros de l'entrée dans user_properties.
  2. Le timestamp_micros de la demande.
  3. Heure à laquelle le protocole de mesure reçoit la requête.

L'exemple suivant envoie un code temporel au niveau de la requête qui s'applique à toutes les propriétés utilisateur de la requête. Par conséquent, le protocole de mesure attribue aux propriétés utilisateur customer_tier et customer_group un code temporel requestUnixEpochTimeInMicros.

{
  "timestamp_micros": requestUnixEpochTimeInMicros,
  "user_properties": {
      "customer_tier": {
        "value": customerTierValue
      },
      "customer_group": {
        "value": customerGroupValue
      }
  }
}

L'exemple suivant envoie un code temporel au niveau de la requête et un code temporel pour la propriété utilisateur customer_tier. Par conséquent, le protocole de mesure attribue à customer_tier un code temporel customerTierUnixEpochTimeInMicros et à customer_group un code temporel requestUnixEpochTimeInMicros.

"timestamp_micros": requestUnixEpochTimeInMicros,
"user_properties": {
    "customer_tier": {
      "value": customerTierValue,
      "timestamp_micros": customerTierUnixEpochTimeInMicros
    },
    "customer_group": {
      "value": customerGroupValue
    }
}