Acompanhamento de eventos in-app
Acompanhe os eventos in-app para analisar o desempenho da campanha e medir os principais indicadores de desempenho (KPIs), como logins de utilizadores, registos, conclusões de tutoriais ou marcos de progressão.
Diretrizes de implementação de eventos
Práticas recomendadas de nomenclatura de eventos
Envie eventos para a Singular usando os métodos SendEvent e SendEventWithArgs com nomes de eventos descritivos e atributos opcionais para dados enriquecidos.
Recomendações de nomes de eventos:
- Idioma: Transmita nomes e atributos de eventos em inglês para garantir a compatibilidade com parceiros e soluções de análise de terceiros
- Nomes de eventos: Limitado a 32 caracteres ASCII. As cadeias de caracteres não ASCII devem ter menos de 32 bytes quando convertidas para UTF-8
- Atributos e valores: Limitado a 500 caracteres ASCII
A sua equipa de UA, marketing ou negócios deve compilar a lista de eventos com base nos KPIs de marketing da sua organização. Consulte o guia Como rastrear eventos no aplicativo: Guia para clientes de atribuição singularpara planeamento.
Envio de eventos
Rastreamento de eventos simples
Envie eventos básicos do usuário para o Singular com um nome de evento personalizado para rastrear ações do usuário, como logins, conclusões de tutoriais ou subidas de nível.
// 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"));
Assinatura do método:
static void SendEvent(FString eventName);
Rastreamento de eventos com atributos
Envie eventos de usuário com parâmetros personalizados adicionais para capturar informações contextuais, como números de nível, IDs de item ou ações do usuário.
// 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);
Assinatura do método:
static void SendEventWithArgs(FString eventName, TMap<FString, FString> args);
Melhores práticas: Utilize nomes de atributos descritivos que indiquem claramente os dados que estão a ser monitorizados. Isto melhora a análise de dados e torna os relatórios mais compreensíveis para a sua equipa de marketing.
Acompanhamento da receita na aplicação
Acompanhe a receita de compras no aplicativo (IAP), assinaturas e fontes de receita personalizadas para medir o desempenho da campanha e o retorno sobre o gasto com anúncios (ROAS).
Os dados de receita fluem através de três canais:
- Relatórios interactivos: Visualize as métricas de receita no painel do Singular
- Registos de exportação: Aceder a dados ETL detalhados para análise personalizada
- Postbacks em tempo real: Envie eventos de receita para plataformas externas
Conversão de moeda: A receita em diferentes moedas é automaticamente convertida para a moeda preferida da sua organização, definida na sua conta Singular.
Diretrizes para eventos de receita
Limitações do evento de receita
Requisitos do evento de receita:
- Nomes de eventos: Os nomes personalizados de eventos de receita são limitados a 32 caracteres ASCII (ou 32 bytes para não-ASCII quando convertidos para UTF-8)
- Atributos: Os nomes e valores dos atributos do evento estão limitados a 500 caracteres ASCII
- Códigos de moeda: Devem estar em MAIÚSCULAS e seguir a norma ISO 4217de três letras (por exemplo, USD, EUR, INR, GBP, JPY)
Envio de eventos de receita
Rastreamento simples de receita
Envie eventos de receita para a Singular com o nome do evento, o código da moeda e o valor da transação para rastrear dados básicos de compra.
// 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);
Método Assinatura:
static void SendRevenue(FString eventName, FString currency, float amount);
Nota: Passe a moeda como um código de moeda ISO 4217 de três letras, como "USD", "EUR", "INR".
Rastreamento de receita com atributos
Envie eventos de receita com parâmetros personalizados adicionais para capturar detalhes da transação, como SKUs de produtos, categorias ou códigos promocionais.
// 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
);
Assinatura do método:
static void SendRevenueWithArgs(FString eventName, FString currency, float amount, TMap<FString, FString> args);
Melhores práticas: Inclua o maior número possível de detalhes da transação nos atributos para permitir a análise granular da receita e otimizar os gastos com marketing com base no desempenho do produto.
Práticas recomendadas de rastreamento de receita
Atributos recomendados
Inclua estes atributos comuns nos seus eventos de receita para um acompanhamento abrangente das transacções:
- product_id: Identificador exclusivo para o item comprado ou SKU
- product_name: Nome do produto legível por humanos
- product_category: Categoria ou tipo de produto (por exemplo, "moeda", "armas", "subscrição")
- transaction_id: Identificador de transação único da plataforma de pagamento
- platform: Plataforma de compra (por exemplo, "app_store", "google_play", "steam")
- promo_code: Código promocional utilizado para descontos
- user_tier: Nível de subscrição ou adesão do utilizador
- quantidade: Número de itens comprados
Dicas de implementação:
- Montantes diferentes de zero: Só enviar eventos de receita quando o valor for maior ou menor que 0
- Nomenclatura consistente: Use nomes de atributos consistentes em todos os eventos de receita para facilitar a análise
- Teste as compras: Utilize pequenos montantes (por exemplo, $0,01) para testar, de modo a evitar distorcer os dados de receitas de produção
Rastreamento de evento híbrido (avançado)
Envie todos os eventos e receitas através do SDK Singular integrado no seu aplicativo para uma atribuição ideal. No entanto, a Singular pode coletar eventos de outras fontes quando necessário.
Os eventos enviados fora do Singular SDK devem estar em conformidade com a documentação de eventos de servidor para servidordo Singular e fornecer identificadores de dispositivo correspondentes para atribuição correta.
Considerações importantes sobre a atribuição:
As discrepâncias ocorrem quando os identificadores de dispositivos nas solicitações de servidor para servidor não correspondem aos identificadores registrados pelo SDK da Singular:
- Eventos antecipados: Se um evento chegar antes de o Singular SDK registar o identificador do dispositivo, o evento torna-se a "primeira sessão" de um dispositivo desconhecido, resultando numa atribuição orgânica
- Identificadores incompatíveis: Se o Singular SDK registar um identificador de dispositivo diferente do que consta do pedido de servidor para servidor, o evento será atribuído incorretamente
Opções de rastreamento de eventos híbridos
Envio de eventos de um servidor interno
Colete dados de receita do seu servidor interno para analisar o desempenho da campanha e o ROI quando o rastreamento do lado do cliente for insuficiente.
Requisitos:
- Capturar identificadores de dispositivo: Durante os eventos de registo ou início de sessão na aplicação, capture e passe os identificadores do dispositivo e, em seguida, armazene estes dados com o ID de utilizador no seu servidor. Atualize os identificadores quando os usuários gerarem novas sessões de aplicativo para garantir a atribuição correta
- Identificadores específicos da plataforma: Envie eventos do lado do servidor com o identificador de dispositivo correspondente à plataforma (por exemplo, IDFA ou IDFV para dispositivos iOS, GAID para dispositivos Android)
- Actualizações em tempo real: Utilize o mecanismo de postback do Singular Internal BI para enviar eventos em tempo real para o seu ponto de extremidade. Consulte as Perguntas frequentes sobre postback do Internal BI
- Detalhes de implementação: Revise a seção "Rastreamento de receita"no guia de integração de servidor para servidor
Envio de eventos de fornecedores de receitas
Integre provedores de receita de terceiros como RevenueCat ou adapty para enviar receitas de compras e assinaturas para o Singular.
Provedores suportados:
- RevenueCat: Saiba mais na documentação do RevenueCat
- adapty: Saiba mais na documentação do adapty
Observação: Ao usar provedores de receita, verifique se eles estão configurados para enviar os identificadores de dispositivo corretos que correspondem ao que o Singular SDK captura para manter a precisão da atribuição.
Envio de eventos do Segment
Habilite o Segment para enviar eventos para a Singular em paralelo com o SDK da Singular, adicionando um destino "Cloud-Mode" no Segment.
Siga o guia de implementação Integração Singular-Segmentpara obter instruções detalhadas de configuração.
Nota de configuração: a integração do Segment requer a configuração do destino Cloud-Mode para garantir que os eventos sejam roteados corretamente para a Singular com os identificadores de dispositivo e o contexto de atribuição corretos.