Rastreamento de Eventos In-App
Rastreie eventos in-app para analisar o desempenho das campanhas e medir indicadores-chave de desempenho (KPIs), como logins de usuários, registros, conclusões de tutoriais ou marcos de progressão.
Eventos e Atributos Padrão
Usando Eventos Padrão
A Singular oferece suporte a eventos padrão reconhecidos pelas redes de anúncios para relatórios e otimização. Use nomes de eventos padrão sempre que possível para reconhecimento automático e configuração simplificada.
Sua equipe 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 How to Track In-App Events: Guide For Singular Attribution Customers para o planejamento.
Cada evento oferece suporte a diversos atributos. Consulte os atributos padrão recomendados por evento para obter detalhes de implementação.
Enviando Eventos
Diretrizes de Implementação de Eventos
Envie eventos para a Singular usando o método
Event()
com atributos opcionais
para dados enriquecidos.
-
Eventos Padrão:
Use o
nome Unity do evento
da lista de eventos padrão, por exemplo,
Events.sngLogin - Eventos Personalizados: Para eventos exclusivos do seu app que não correspondem a eventos padrão, use qualquer string descritiva que atenda às limitações de caracteres
Limitações de Eventos Personalizados:
- Idioma: Passe nomes de eventos e atributos em inglês para garantir a compatibilidade com parceiros terceiros e soluções de análise
- Nomes de Eventos: Limitados a 32 caracteres ASCII. Strings não ASCII devem ter menos de 32 bytes quando convertidas para UTF-8
- Atributos e Valores: Limitados a 500 caracteres ASCII
Método Event
Registre eventos de usuário com ou sem informações adicionais usando argumentos variáveis ou o formato Dictionary.
Assinaturas de Método:
public static void Event(string name)
public static void Event(string name, params object[] args)
public static void Event(Dictionary<string, object> args, string name)
Observação:
Ao usar a assinatura
params object[] args
, a lista de argumentos deve conter
um número par de elementos (pares chave-valor) ou o evento será
rejeitado. Ao passar dicionários, os valores
devem ser de um destes tipos: string, int, long, float, double, null,
ArrayList, Dictionary<string, object>
Exemplos de Uso
// Example 1: Standard event without attributes
SingularSDK.Event(Events.sngLogin);
// Example 2: Standard event with recommended attributes (key-value pairs)
SingularSDK.Event(Events.sngTutorialComplete,
Attributes.sngAttrContent, "Unity Basics",
Attributes.sngAttrContentId, 32,
Attributes.sngAttrContentType, "video",
Attributes.sngAttrSuccess, "yes"
);
// Example 3: Standard event with attributes using Dictionary
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
[Attributes.sngAttrContent] = "Unity Basics",
[Attributes.sngAttrContentId] = 32,
[Attributes.sngAttrContentType] = "video",
[Attributes.sngAttrSuccess] = "yes"
};
SingularSDK.Event(attributes, Events.sngTutorialComplete);
// Example 4: Custom event without attributes
SingularSDK.Event("SignUp");
// Example 5: Custom event with custom attributes
SingularSDK.Event("Bonus Points Earned", "Points", 500, "Level", 5);
Rastreamento de Receita In-App
Rastreie receita de compras in-app (IAP), assinaturas e fontes de receita personalizadas para medir o desempenho das campanhas e o retorno sobre o investimento em anúncios (ROAS).
Os dados de receita fluem por três canais:
- Relatórios Interativos: Visualize métricas de receita no dashboard da Singular
- Logs de Exportação: Acesse dados de ETL detalhados para análise personalizada
- Postbacks em Tempo Real: Envie eventos de receita para plataformas externas
Limitações de Eventos de Receita:
- Nomes de Eventos: Nomes de eventos de receita personalizados são limitados a 32 caracteres ASCII (ou 32 bytes para não ASCII quando convertidos para UTF-8)
- Atributos: Nomes e valores de atributos de eventos são limitados a 500 caracteres ASCII
- Códigos de Moeda: Devem estar em MAIÚSCULAS e seguir o padrão de três letras ISO 4217 (por exemplo, USD, EUR, INR)
Observação: A receita em diferentes moedas é convertida automaticamente para a moeda preferida da sua organização definida na sua conta Singular.
Práticas Recomendadas
- Nomenclatura Padrão: Use a convenção de nomenclatura padrão de eventos e atributos da Singular
- Idioma: Envie nomes de eventos de receita personalizados em inglês para melhorar a compatibilidade de postbacks das redes de anúncios
- Valores Diferentes de Zero: Envie eventos de receita apenas quando o valor for maior ou menor que 0
Integração com Unity IAP
Compra In-App com Unity IAP
Passe o objeto Purchase ou Order do Unity IAP para o método
InAppPurchase()
para relatórios enriquecidos e
validação de transações.
Benefícios:
- Dados Ricos: A Singular recebe detalhes completos da transação para relatórios abrangentes
- Prevenção de Fraude: Os recibos de transação permitem a validação para combater fraudes in-app
Compatibilidade de Versão do Unity IAP:
-
Unity IAP v5:
Usa a nova
Unity Purchasing API
com Google Play Billing Library 7+. Compatível com Unity 2021.3
LTS e posterior. Use os métodos
InAppPurchase(Order) -
Unity IAP v4:
Usa a antiga
Unity IAP API
com Google Play Billing Library 6. Compatível com Unity 2018.4
LTS até 2020.3 LTS. Use os métodos
InAppPurchase(Product)
Método InAppPurchase (Unity IAP v5)
Envie eventos de IAP usando o objeto Order do Unity IAP v5 para validação automática e dados enriquecidos.
Assinaturas de Método:
public static void InAppPurchase(Order order)
public static void InAppPurchase(Order order, Dictionary<string, object> attributes)
public static void InAppPurchase(Order order, bool isRestored)
public static void InAppPurchase(Order order, string eventName, Dictionary<string, object> attributes)
Exemplos de Uso
// Example 1: IAP with order object only
SingularSDK.InAppPurchase(order);
// Example 2: IAP with order and additional attributes
Dictionary<string, object> attr = new Dictionary<string, object>()
{
["promo_code"] = "SUMMER2025",
["user_tier"] = "premium"
};
SingularSDK.InAppPurchase(order, attr);
// Example 3: IAP with restored transaction flag
SingularSDK.InAppPurchase(order, true);
// Example 4: IAP with custom event name and attributes
Dictionary<string, object> attr = new Dictionary<string, object>()
{
["subscription_tier"] = "gold",
["billing_period"] = "monthly"
};
SingularSDK.InAppPurchase(order, "PremiumSubscription", attr);
Método InAppPurchase (Unity IAP v4)
Envie eventos de IAP usando o objeto Product do Unity IAP v4 para validação automática e dados enriquecidos.
Assinaturas de Método:
public static void InAppPurchase(Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName, Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(IEnumerable<Product> products, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName, IEnumerable<Product> products, Dictionary<string, object> attributes, bool isRestored = false)
Exemplos de Uso
// Example 1: IAP with single product, no extra attributes
SingularSDK.InAppPurchase(myProduct, null);
// Example 2: IAP with single product and attributes
Dictionary<string, object> attr = new Dictionary<string, object>()
{
["promo_code"] = "SUMMER2025",
["user_tier"] = "premium"
};
SingularSDK.InAppPurchase(myProduct, attr);
// Example 3: IAP with custom event name
SingularSDK.InAppPurchase("PremiumUpgrade", myProduct, null);
// Example 4: IAP with list of products
SingularSDK.InAppPurchase(myProductList, null);
// Example 5: IAP with list of products and custom event name
SingularSDK.InAppPurchase("BundlePurchase", myProductList, null);
Receita Personalizada sem Validação de Compra
Rastreamento Manual de Receita
Rastreie a receita passando moeda, valor e detalhes opcionais do produto sem o objeto Purchase ou Order. Observe que este método não fornece recibos de transação para validação.
Importante: Ao usar estes métodos, a Singular não consegue validar transações. Recomendamos fortemente usar os métodos do Unity IAP descritos acima sempre que possível.
Método Revenue
Envie eventos de receita com moeda, valor e detalhes opcionais do produto.
Assinaturas de Método:
public static void Revenue(string currency, double amount)
public static void Revenue(string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void Revenue(string currency, double amount, Dictionary<string, object> attributes)
Exemplos de Uso
// Example 1: Revenue without product details
SingularSDK.Revenue("USD", 1.99);
// Example 2: Revenue with product details
SingularSDK.Revenue("USD", 4.99, "coin_package_abc123", "Coin Pack 5", "Bundles", 1, 4.99);
// Example 3: Revenue with attributes dictionary
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
["productSKU"] = "coin_package_abc123",
["productName"] = "Coin Pack 5",
["productCategory"] = "Bundles",
["productQuantity"] = 2,
["productPrice"] = 4.99,
["transaction_id"] = "T12345"
};
SingularSDK.Revenue("USD", 9.98, attributes);
Método CustomRevenue
Envie eventos de receita personalizados com um nome de evento especificado, moeda, valor e atributos opcionais de transação.
Assinaturas de Método:
public static void CustomRevenue(string eventName, string currency, double amount)
public static void CustomRevenue(string eventName, string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void CustomRevenue(string eventName, string currency, double amount, Dictionary<string, object> attributes)
Exemplos de Uso
// Example 1: Custom revenue without product details
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.99);
// Example 2: Custom revenue with product details
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 50.50, "abc123", "Premium Item", "Virtual Goods", 2, 25.50);
// Example 3: Custom revenue with attributes dictionary
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
["productSKU"] = "premium_bundle_xyz",
["productName"] = "Premium Bundle",
["productCategory"] = "Bundles",
["productQuantity"] = 1,
["productPrice"] = 99.99,
["discount_applied"] = true
};
SingularSDK.CustomRevenue("PremiumBundlePurchase", "USD", 99.99, attributes);
Suporte a StoreKit2
O Singular SDK do Unity não aceita diretamente representações JSON de transação ou produto do StoreKit2.
Para rastrear compras no iOS feitas via StoreKit2, com
validação automática e dados enriquecidos, use o
Método InAppPurchase (Unity IAP v5)
descrito acima e passe o objeto
Order
do Unity IAP.
Rastreamento Híbrido de Eventos (Avançado)
Envie todos os eventos e receita através do Singular SDK integrado ao seu app para uma atribuição ideal. No entanto, a Singular pode coletar eventos de outras fontes quando necessário.
Eventos enviados fora do Singular SDK devem estar em conformidade com a documentação de Eventos Server-to-Server da Singular e fornecer identificadores de dispositivo correspondentes para a atribuição correta.
Importante:
Ocorrem discrepâncias quando os identificadores de dispositivo nas requisições server-to-server não correspondem aos identificadores registrados pelo Singular SDK:
- Eventos Precoces: Se um evento chega antes de o Singular SDK registrar o identificador de dispositivo, o evento se torna a "primeira sessão" de um dispositivo desconhecido, resultando em atribuição orgânica
- Identificadores Divergentes: Se o Singular SDK registrou um identificador de dispositivo diferente daquele na requisição server-to-server, o evento será atribuído incorretamente
Guias de Rastreamento Híbrido de Eventos
Enviando Eventos de um Servidor Interno
Colete dados de receita do seu servidor interno para analisar o desempenho das campanhas e o ROI.
Requisitos:
- Capturar Identificadores de Dispositivo: Durante os eventos de registro ou login in-app, capture e passe os identificadores de dispositivo e, em seguida, armazene esses dados com o User ID no seu servidor. Atualize os identificadores quando os usuários gerarem novas sessões do app 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)
- Atualizações em Tempo Real: Use o mecanismo de postback do Internal BI da Singular para enviar eventos em tempo real ao seu endpoint. Consulte o FAQ de Postback do Internal BI
- Detalhes de Implementação: Revise a seção "Tracking Revenue" no guia de Integração Server-to-Server
Enviando Eventos de um Provedor de Receita
Integre provedores de receita terceiros como RevenueCat ou adapty para enviar receita de compras e assinaturas para a Singular.
Provedores Suportados:
- RevenueCat: Saiba mais na documentação do RevenueCat
- adapty: Saiba mais na documentação do adapty
Enviando Eventos do Segment
Habilite o Segment para enviar eventos para a Singular em paralelo com o Singular SDK, adicionando um destino "Cloud-Mode" no Segment.
Siga o guia de implementação Integração Singular-Segment para obter instruções detalhadas de configuração.