Cómo enviar propiedades del usuario

Las propiedades del usuario describen segmentos de tu base de usuarios, como la preferencia de idioma o la ubicación geográfica. Analytics registra automáticamente algunas propiedades del usuario. Si quieres recopilar propiedades adicionales, puedes configurar hasta 25 propiedades del usuario adicionales por proyecto. Consulta Propiedades del usuario personalizadas para obtener información sobre cómo configurar y registrar propiedades del usuario.

Las propiedades del usuario mejoran la segmentación de usuarios, pero los datos de las propiedades del usuario suelen estar disponibles solo en el servidor. El Measurement Protocol te permite aumentar las mediciones del cliente con datos del servidor, lo que suele ser inviable si solo se usan soluciones del cliente.

Nombres reservados

Algunos nombres de propiedades del usuario están reservados y no se pueden usar en las mediciones:

  • first_open_time
  • first_visit_time
  • last_deep_link_referrer
  • user_id
  • first_open_after_install

Además, los nombres de propiedades del usuario no pueden comenzar con lo siguiente:

  • google_
  • ga_
  • firebase_

Ejemplo de uso

En el siguiente ejemplo, tu CRM tiene una propiedad del usuario (customer_tier) que te gustaría agregar a tus mediciones. customer_tier se puede configurar en premium o standard. Para obtener esta propiedad del usuario en tus informes, debes hacer lo siguiente:

Primero, haz que el cliente envíe un add_payment_info evento junto con una llamada a una API del servidor que tenga acceso a tu sistema de CRM:

código del cliente

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

Luego, tu servidor aumenta la medición con la propiedad del usuario customer_tier mediante el Measurement Protocol:

código del servidor

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)
    })
  });
}

Esta propiedad del usuario informa los dos segmentos premium y standard.

Consulta Envío de eventos para obtener todos los detalles sobre cómo enviar eventos con el Measurement Protocol.

Anular la marca de tiempo

El Measurement Protocol usa la primera marca de tiempo que encuentra en la siguiente lista para cada propiedad del usuario en la solicitud:

  1. El timestamp_micros de la entrada en user_properties.
  2. El timestamp_micros de la solicitud.
  3. La hora en la que el Measurement Protocol recibe la solicitud.

En el siguiente ejemplo, se envía una marca de tiempo a nivel de la solicitud que se aplica a todas las propiedades del usuario en la solicitud. Como resultado, el Measurement Protocol asigna a las propiedades del usuario customer_tier y customer_group una marca de tiempo de requestUnixEpochTimeInMicros.

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

En el siguiente ejemplo, se envía una marca de tiempo a nivel de la solicitud y una marca de tiempo para la propiedad del usuario customer_tier. Como resultado, el Measurement Protocol asigna a customer_tier una marca de tiempo de customerTierUnixEpochTimeInMicros y a customer_group una marca de tiempo de requestUnixEpochTimeInMicros.

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