SDK de Unreal Engine - Seguimiento de eventos en la aplicación

Documento

Seguimiento de eventos dentro de la aplicación

Realice un seguimiento de los eventos dentro de la aplicación para analizar el rendimiento de la campaña y medir los indicadores clave de rendimiento (KPI), como inicios de sesión de usuarios, registros, finalización de tutoriales o hitos de progresión.

Directrices de implementación de eventos

Mejores prácticas para nombrar eventos

Envíe eventos a Singular utilizando los métodos SendEvent y SendEventWithArgs con nombres de evento descriptivos y atributos opcionales para datos enriquecidos.

Recomendaciones de nombres de eventos:

  • Idioma: Pase los nombres y atributos de eventos en inglés para garantizar la compatibilidad con socios de terceros y soluciones analíticas
  • Nombres de eventos: Limitados a 32 caracteres ASCII. Las cadenas no ASCII deben tener menos de 32 bytes cuando se convierten a UTF-8
  • Atributos y valores: Limitado a 500 caracteres ASCII

Su equipo de UA, marketing o comercial debe compilar la lista de eventos basándose en los KPI de marketing de su organización. Consulte la guía How to Track In-App Events: Guía para clientes de Singular Attributionpara su planificación.


Envío de eventos

Seguimiento de eventos simples

Envíe eventos de usuario básicos a Singular con un nombre de evento personalizado para realizar un seguimiento de acciones de usuario como inicios de sesión, finalización de tutoriales o subidas de nivel.

C++
// Send an event without any parameters, just a name
USingularSDKBPLibrary::SendEvent(TEXT("Login"));

// Example: Track tutorial completion
USingularSDKBPLibrary::SendEvent(TEXT("TutorialComplete"));

// Example: Track level progression
USingularSDKBPLibrary::SendEvent(TEXT("LevelUp"));

Firma del método:

static void SendEvent(FString eventName);

Seguimiento de Eventos con Atributos

Envíe eventos de usuario con parámetros personalizados adicionales para capturar información contextual como números de nivel, IDs de ítems o acciones de usuario.

C++
// Example 1: Login with user tier
TMap<FString, FString> LoginArgs;
LoginArgs.Add(TEXT("user_tier"), TEXT("premium"));
LoginArgs.Add(TEXT("login_method"), TEXT("email"));
USingularSDKBPLibrary::SendEventWithArgs(TEXT("Login"), LoginArgs);

// Example 2: Tutorial completion with metadata
TMap<FString, FString> TutorialArgs;
TutorialArgs.Add(TEXT("tutorial_name"), TEXT("BasicControls"));
TutorialArgs.Add(TEXT("completion_time"), TEXT("120"));
TutorialArgs.Add(TEXT("difficulty"), TEXT("easy"));
USingularSDKBPLibrary::SendEventWithArgs(TEXT("TutorialComplete"), TutorialArgs);

// Example 3: Level progression with game state
TMap<FString, FString> LevelArgs;
LevelArgs.Add(TEXT("level_number"), TEXT("5"));
LevelArgs.Add(TEXT("character_class"), TEXT("warrior"));
LevelArgs.Add(TEXT("total_playtime"), TEXT("3600"));
USingularSDKBPLibrary::SendEventWithArgs(TEXT("LevelUp"), LevelArgs);

// Example 4: Item purchase with details
TMap<FString, FString> PurchaseArgs;
PurchaseArgs.Add(TEXT("item_id"), TEXT("sword_legendary_001"));
PurchaseArgs.Add(TEXT("item_category"), TEXT("weapons"));
PurchaseArgs.Add(TEXT("item_rarity"), TEXT("legendary"));
USingularSDKBPLibrary::SendEventWithArgs(TEXT("ItemPurchased"), PurchaseArgs);

Firma del método:

static void SendEventWithArgs(FString eventName, TMap<FString, FString> args);

Práctica recomendada: Utilice nombres de atributos descriptivos que indiquen claramente los datos que se están rastreando. Esto mejora el análisis de datos y hace que los informes sean más comprensibles para su equipo de marketing.


Seguimiento de los ingresos dentro de la aplicación

Realice un seguimiento de los ingresos procedentes de compras dentro de la aplicación (IAP), suscripciones y fuentes de ingresos personalizadas para medir el rendimiento de la campaña y el retorno de la inversión publicitaria (ROAS).

Los datos de ingresos fluyen a través de tres canales:

  • Informes interactivos: Visualiza las métricas de ingresos en el panel de control de Singular.
  • Registros de exportación: Acceso a datos ETL detallados para análisis personalizados
  • Postbacks en tiempo real: Envíe eventos de ingresos a plataformas externas

Conversión de divisas: Los ingresos en diferentes monedas se convierten automáticamente a la moneda preferida de su organización establecida en su cuenta de Singular.


Directrices de eventos de ingresos

Limitaciones de los eventos de ingresos

Requisitosde los eventosde ingresos:

  • Nombres de Eventos: Los nombres de eventos de ingresos personalizados están limitados a 32 caracteres ASCII (o 32 bytes para no ASCII cuando se convierten a UTF-8)
  • Atributos: Los nombres y valores de atributos de eventos están limitados a 500 caracteres ASCII
  • Códigos de moneda: Deben ser TODO MAYÚSCULAS y seguir la norma ISO 4217de tres letras (por ejemplo, USD, EUR, INR, GBP, JPY)

Envío de eventos de ingresos

Seguimiento simple de ingresos

Envíe eventos de ingresos a Singular con el nombre del evento, el código de moneda y el importe de la transacción para realizar un seguimiento de los datos básicos de compra.

C++
// Example 1: Basic purchase tracking
USingularSDKBPLibrary::SendRevenue(TEXT("Purchase Completed"), TEXT("USD"), 9.99f);

// Example 2: Subscription purchase
USingularSDKBPLibrary::SendRevenue(TEXT("SubscriptionPurchase"), TEXT("USD"), 29.99f);

// Example 3: In-game currency purchase
USingularSDKBPLibrary::SendRevenue(TEXT("CoinPackagePurchase"), TEXT("EUR"), 4.99f);

// Example 4: Premium item purchase
USingularSDKBPLibrary::SendRevenue(TEXT("PremiumItemPurchase"), TEXT("GBP"), 19.99f);

Firma del método:

static void SendRevenue(FString eventName, FString currency, float amount);

Nota: Pase la divisa como un código de divisa ISO 4217 de tres letras, como "USD", "EUR", "INR".


Seguimiento de ingresos con atributos

Envíe eventos de ingresos con parámetros personalizados adicionales para capturar detalles de transacciones como SKU de productos, categorías o códigos promocionales.

C++
// Example 1: Revenue with product details
TMap<FString, FString> PurchaseArgs;
PurchaseArgs.Add(TEXT("product_id"), TEXT("coin_pack_100"));
PurchaseArgs.Add(TEXT("product_name"), TEXT("100 Coin Pack"));
PurchaseArgs.Add(TEXT("product_category"), TEXT("currency"));
USingularSDKBPLibrary::SendRevenueWithArgs(
    TEXT("Purchase Completed"), 
    TEXT("USD"), 
    4.99f, 
    PurchaseArgs
);

// Example 2: Subscription with billing details
TMap<FString, FString> SubArgs;
SubArgs.Add(TEXT("subscription_tier"), TEXT("premium"));
SubArgs.Add(TEXT("billing_period"), TEXT("monthly"));
SubArgs.Add(TEXT("trial_period"), TEXT("false"));
SubArgs.Add(TEXT("renewal_count"), TEXT("3"));
USingularSDKBPLibrary::SendRevenueWithArgs(
    TEXT("SubscriptionRenewal"), 
    TEXT("USD"), 
    9.99f, 
    SubArgs
);

// Example 3: Purchase with promotional discount
TMap<FString, FString> PromoArgs;
PromoArgs.Add(TEXT("product_id"), TEXT("bundle_mega_001"));
PromoArgs.Add(TEXT("promo_code"), TEXT("SUMMER2025"));
PromoArgs.Add(TEXT("discount_amount"), TEXT("5.00"));
PromoArgs.Add(TEXT("original_price"), TEXT("19.99"));
USingularSDKBPLibrary::SendRevenueWithArgs(
    TEXT("BundlePurchase"), 
    TEXT("USD"), 
    14.99f, 
    PromoArgs
);

// Example 4: IAP with transaction metadata
TMap<FString, FString> IAPArgs;
IAPArgs.Add(TEXT("platform"), TEXT("google_play"));
IAPArgs.Add(TEXT("transaction_id"), TEXT("GPA.1234-5678-90AB"));
IAPArgs.Add(TEXT("item_type"), TEXT("consumable"));
IAPArgs.Add(TEXT("user_level"), TEXT("42"));
USingularSDKBPLibrary::SendRevenueWithArgs(
    TEXT("IAP_Consumable"), 
    TEXT("USD"), 
    2.99f, 
    IAPArgs
);

Firma del método:

static void SendRevenueWithArgs(FString eventName, FString currency, float amount, TMap<FString, FString> args);

Práctica recomendada: Incluya tantos detalles de transacción como sea posible en los atributos para permitir un análisis granular de los ingresos y optimizar el gasto en marketing en función del rendimiento del producto.


Mejores prácticas de seguimiento de ingresos

Atributos recomendados

Incluya estos atributos comunes en sus eventos de ingresos para realizar un seguimiento exhaustivo de las transacciones:

  • product_id: Identificador único del artículo comprado o SKU.
  • product_name: Nombre del producto legible por el ser humano
  • product_category: Categoría o tipo de producto (por ejemplo, "moneda", "armas", "suscripción")
  • transaction_id: Identificador único de transacción de la plataforma de pago
  • platform: Plataforma de compra (por ejemplo, "app_store", "google_play", "steam").
  • promo_code: Código promocional utilizado para los descuentos
  • user_tier: Nivel de suscripción o pertenencia del usuario
  • quantity: Número de artículos comprados

Consejos de implementación:

  • Importes distintos de cero: Sólo envíe eventos de ingresos cuando el importe sea mayor o menor que 0
  • Nombres coherentes: Utilice nombres de atributos coherentes en todos los eventos de ingresos para facilitar el análisis.
  • Compras de prueba: Utilice importes pequeños (por ejemplo, 0,01 $) para las pruebas a fin de evitar sesgar los datos de ingresos de producción.

Seguimiento híbrido de eventos (avanzado)

Envíe todos los eventos e ingresos a través del SDK de Singular integrado en su aplicación para una atribución óptima. Sin embargo, Singular puede recopilar eventos de otras fuentes cuando sea necesario.

Los eventos enviados fuera del SDK de Singular deben cumplir con la documentación de eventos de servidor a servidorde Singular y proporcionar identificadores de dispositivo coincidentes para una atribución correcta.

Consideraciones importantes sobre la atribución:

Se producen discrepancias cuando los identificadores de dispositivo en las solicitudes de servidor a servidor no coinciden con los identificadores registrados por Singular SDK:

  • Eventos tempranos: Si un evento llega antes de que Singular SDK registre el identificador del dispositivo, el evento se convierte en la "primera sesión" de un dispositivo desconocido, lo que da lugar a una atribución orgánica.
  • Identificadores no coincidentes: Si Singular SDK registra un identificador de dispositivo diferente al de la solicitud de servidor a servidor, el evento se atribuirá incorrectamente.

Opciones de seguimiento de eventos híbridos

Envío de eventos desde un servidor interno

Recopile datos de ingresos de su servidor interno para analizar el rendimiento de la campaña y el ROI cuando el seguimiento del lado del cliente sea insuficiente.

Requisitos:

  • Capturar identificadores de dispositivos: Durante los eventos de registro o inicio de sesión dentro de la aplicación, capture y pase los identificadores de dispositivo y, a continuación, almacene estos datos con el ID de usuario en su servidor. Actualice los identificadores cuando los usuarios generen nuevas sesiones de aplicación para garantizar una atribución correcta.
  • Identificadores específicos de la plataforma: Envíe eventos del lado del servidor con el identificador de dispositivo que coincida con la plataforma (por ejemplo, IDFA o IDFV para dispositivos iOS, GAID para dispositivos Android).
  • Actualizaciones en tiempo real: Utilice el mecanismo de postback de BI internode Singular para enviar eventos en tiempo real a su endpoint. Consulte las preguntas frecuentes sobre postback de BI interno.
  • Detalles de implementación: Revise la sección "Seguimiento de ingresos"en la guía de integración de servidor a servidor

Envío de Eventos desde Proveedores de Ingresos

Integre proveedores de ingresos de terceros como RevenueCat o adapty para enviar ingresos por compras y suscripciones a Singular.

Proveedores compatibles:

Nota: Cuando utilice proveedores de ingresos, asegúrese de que estén configurados para enviar los identificadores de dispositivo correctos que coincidan con los que captura Singular SDK para mantener la precisión de la atribución.


Envío de eventos desde Segment

Habilite Segment para enviar eventos a Singular en paralelo con Singular SDK añadiendo un destino "Cloud-Mode" en Segment.

Siga la guía de implementación Integración Singular-Segmentpara obtener instrucciones detalladas de configuración.

Nota de configuración: la integración de Segment requiere la configuración del destino Cloud-Mode para garantizar que los eventos se enrutan correctamente a Singular con los identificadores de dispositivo y el contexto de atribución correctos.