Rastreamento de eventos in-app
A Singular pode coletar dados sobre eventos in-app para ajudar a analisar o desempenho de suas campanhas e medir KPIs. Por exemplo, a sua organização pode querer recolher dados sobre logins de utilizadores, registos, conclusões de tutoriais ou subida de nível numa aplicação de jogos.
Eventos e atributos padrão
O Singular suporta uma variedade de eventos padrão. Estes eventos normalmente utilizados são muitas vezes suportados por redes de anúncios para relatórios e otimização. Outra vantagem é que, quando você usa nomes de eventos padrão, o Singular os reconhece automaticamente e os adiciona à lista de eventos sem que você tenha que defini-los manualmente. Recomendamos o uso de eventos padrão sempre que possível.
A lista de eventos enviados para a Singular (com os atributos que os acompanham) deve ser compilada pela equipa de UA/marketing/negócio com base nos KPIs de marketing da sua organização. A equipe de negócios pode seguir o guia em Como rastrear eventos no aplicativo: Guide For Singular Attribution Customers.
Com cada evento que rastreia, pode passar vários atributos. Veja os atributos padrão recomendados por evento.
Envio de eventos
Em seu código, envie eventos para a Singular usando os métodos eventJSON ou event (recomendamos eventJSON para facilitar a leitura).
- Para eventos padrão, use o nome Android do evento como ele aparece na lista de eventos e atributos padrão para o Android SDK, por exemplo, sngTutorialComplete. Veja os exemplos de código abaixo.
- Se enviar quaisquer eventos personalizados (eventos que a sua organização pretende medir e que não correspondem a nenhum dos eventos padrão da Singular), utilize qualquer cadeia de caracteres que pretenda e que esteja em conformidade com as limitações.
Limitações de eventos personalizados:
- Recomendamos vivamente a passagem de nomes e atributos de eventos em inglês para garantir a compatibilidade com parceiros terceiros e soluções de análise, caso planeie utilizá-los.
- Os nomes de eventos são limitados a 32 caracteres ASCII. As cadeias de caracteres em caracteres não ASCII têm de ter menos de 32 bytes depois de convertidas para UTF-8.
- Os atributos e valores estão limitados a 500 caracteres ASCII.
Método Singular.eventJSON
Comunica um evento de utilizador ao Singular com informações adicionais no formato JSONObject.
Assinaturas
Singular.eventJSON(String name, JSONObject args)
Exemplos de utilização
// Example 1:
// Send the standard event sng_tutorial_complete with the
// recommended standard attributes
JSONObject att = new JSONObject();
try {
att.put(Attributes.sngAttrContent.toString(), "Telugu");
att.put(Attributes.sngAttrContentId.toString(), 32);
att.put(Attributes.sngAttrContentType.toString(), "video");
att.put(Attributes.sngAttrSuccess.toString(), 92);
} catch (JSONException e) {
e.printStackTrace(); // Or log the exception
}
Singular.eventJSON(Events.sngTutorialComplete.toString(), att);
// Example 2:
// Send a custom event named "bonus_points_earned" with custom attributes
JSONObject att = new JSONObject();
try {
att.put("Points", 500);
att.put("score", 650);
} catch (JSONException e) {
e.printStackTrace(); // Or log the exception
}
Singular.eventJSON("Bonus Points Earned", att);
// Example 1:
// Send the standard event sng_tutorial_complete with the
// recommended standard attributes
val att = JSONObject().apply {
put(Attributes.sngAttrContent.toString(), "Telugu")
put(Attributes.sngAttrContentId.toString(), 32)
put(Attributes.sngAttrContentType.toString(), "video")
put(Attributes.sngAttrSuccess.toString(), 75)
}
Singular.eventJSON(Events.sngTutorialComplete.toString(), att)
// Example 2:
// Send a custom event named "bonus_points_earned" with custom attributes
val att = JSONObject().apply {
put("Points", 500)
put("score",650)
}
Singular.eventJSON("Bonus Points Earned", att)
Método Singular.event
Relata um evento de usuário para o Singular com ou sem informações adicionais.
Assinaturas
Singular.event(String eventName)
Singular.event(String eventName, Object... args)
Nota: 'args' é um ou mais pares chave-valor (veja o exemplo abaixo). A chave é uma cadeia de caracteres e o valor pode ser qualquer tipo que seja permitido como um valor JSONObject (ou seja, JSONObject, JSONArray, String, Boolean, Integer, Long, Double ou NULL).
A lista 'args' deve conter um número par de elementos ou o evento será rejeitado pelo Singular.
Exemplos de uso
// Example 1:
// Send the standard event "Subscribe" (sng_subscribe) without any attributes
Singular.event(Events.sngSubscribe.toString());
// Example 2:
// Send the standard event "sng_tutorial_complete" with the
//recommended standard attributes
Singular.event(Events.sngTutorialComplete.toString(),
Attributes.sngAttrContent.toString(), "Spanish",
Attributes.sngAttrContentId.toString(), 52,
Attributes.sngAttrContentType.toString(), "video",
Attributes.sngAttrSuccess.toString(), 46
);
// Example 3:
// Send a custom event named "SignUp" without any custom attributes
Singular.event("SignUp");
// Example 4:
// Send a custom event named "bonus_points_earned" with a custom attribute
Singular.event("Bonus Points Earned", "Points", 500);
// Example 1:
// Send the standard event "Subscribe" (sng_subscribe) with no attributes
Singular.event(Events.sngSubscribe.toString())
// Example 2:
// Send the standard event sng_tutorial_complete with the
// recommended standard attributes
Singular.event(Events.sngTutorialComplete.toString(),
Attributes.sngAttrContent.toString(), "Telugu",
Attributes.sngAttrContentId.toString(), "32",
Attributes.sngAttrContentType.toString(), "video",
Attributes.sngAttrSuccess.toString(), "yes"
)
// Example 3:
// Send a custom event named "SignUp" with no custom attributes
Singular.event("SignUp")
// Example 4:
// Send a custom event named "bonus_points_earned" with a custom attribute
Singular.event("Bonus Points Earned", "Points", 500)
Rastreamento de receita in-app
A Singular captura eventos de receita de compras in-app (IAP), assinaturas e receita personalizada para medir o desempenho da campanha e o retorno sobre o gasto com anúncios (ROAS). Os dados de receita ficam disponíveis por meio de três canais principais:
- Relatórios interactivos no dashboard Singular
- Registos de exportação detalhados e destinos de dados ETL para análise personalizada
- Postbacks em tempo real para plataformas externas
Este acompanhamento abrangente das receitas permite tomar decisões baseadas em dados sobre os gastos de marketing e a otimização de campanhas, proporcionando flexibilidade na forma como os dados são consumidos e analisados.
- Se forem utilizados nomes personalizados de eventos de receitas, os nomes personalizados de eventos de receitas estão limitados a 32 caracteres ASCII. Para caracteres não-ASCII, o limite é de 32 bytes depois de convertidos para UTF-8.
- Os nomes e valores de atributos de eventos estão limitados a 500 caracteres ASCII.
-
Os códigos de moeda têm de estar em MAIÚSCULAS e respeitar o código de moeda ISO 4217 de três letras:
USD, EUR, INR
Melhores práticas
- A Singular recomenda a transmissão de eventos usando a convenção de nomenclatura de eventos e atributos padrão da Singular.
- Se forem usados nomes personalizados de eventos de receita, eles devem ser enviados em inglês para melhorar a compatibilidade com postbacks da rede de anúncios.
- Os eventos de receita só devem ser enviados para a Singular quando o valor da receita for maior ou menor que 0.
Compra no aplicativo sem assinatura
Para relatar eventos de receita para a Singular, passe o objeto Purchase recebido da Biblioteca de faturamento do Google para os métodos SDK revenue ou customRevenue. Isso tem duas vantagens:
- A Singular obtém todos os detalhes da transação, o que enriquece seus relatórios da Singular.
- O Singular obtém o recibo da transação do Google, que pode ser usado para validar a transação no contexto do combate à fraude in-app.
Observações:
- customRevenue permite-lhe passar um nome de evento personalizado, para que possa ver a receita nos relatórios Singular dividida pelos diferentes tipos de eventos de receita.
- Qualquer receita relatada em uma moeda diferente será convertida automaticamente para a moeda preferida da sua organização, conforme definido na sua conta do Singular.
Método de receita
Enviar um evento de receita para a Singular com o objeto Purchase.
Assinaturas
Singular.revenue(String currency, double amount, Object purchase)
Exemplos de uso
Singular.revenue("USD", 5.50, purchase);
Singular.revenue("USD", 5.50, purchase)
Método customRevenue
Envia um evento de receita para a Singular com um nome de evento personalizado e o objeto Purchase.
Assinaturas
Singular.customRevenue(String eventName, String currency, double amount, Object purchase)
Exemplos de uso
Singular.customRevenue("MyCustomRevenue", "USD", 5.50, purchase);
Singular.customRevenue("MyCustomRevenue", "USD", 5.50, purchase)
Receita de assinatura
Acompanhamento de assinaturas:
O Singular permite que você rastreie suas assinaturas e renovações dentro do seu aplicativo, fornecendo insights sobre o comportamento do usuário e geração de receita. Consulte nosso guia abrangente sobre como implementar eventos de assinatura usando o SDK Singular.[Guia de implementação técnica de eventos de assinatura].
Receita personalizada sem validação de compra
Embora seja altamente recomendável relatar eventos de receita da maneira descrita acima, também é possível usar revenue e customRevenue sem passar o objeto de compra. Em vez disso, você passa a moeda e o valor da transação, e detalhes opcionais do produto.
O método customRevenue também permite passar um nome de evento personalizado.
Observe que, se você usar esses métodos, o Singular não obtém o recibo da transação e não pode validar a transação.
Método revenue
Envia um evento de receita para a Singular com o valor da receita, moeda e detalhes opcionais.
Assinaturas
Singular.revenue(String currency, double amount)
Singular.revenue(String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.revenue(String currency, double amount, Map<String, Object> attributes)
Exemplos de uso
Sem detalhes do produto
Singular.revenue("USD", 5.50);
Com detalhes do produto
Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee" , 1, 5.00);
Com detalhes do produto em um mapa de atributos
Map<string, object="Object"> attributes = new HashMap<>();
attributes.put("product_id", "com.app.premium");
attributes.put("transaction_id", "T12345");
attributes.put("quantity", 1);
attributes.put("is_trial", false);
// Call the revenue method
Singular.revenue("USD", 9.99, attributes);
Sem detalhes do produto
Singular.revenue("USD", 5.50)
Com detalhes do produto
Singular.revenue("EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee" , 1, 5.00)
Com detalhes do produto num mapa de atributos
val attributes = mutableMapOf<String, Any>().apply {
put("product_id", "com.app.premium")
put("transaction_id", "T12345")
put("quantity", 1)
put("is_trial", false)
}
// Call the revenue method
Singular.revenue("USD", 9.99, attributes)
Método customRevenue
Envie eventos de receita personalizados para o Singular especificando o nome do evento, o valor da receita, o código da moeda e quaisquer atributos de transação adicionais. A Singular processa esses eventos para rastrear a receita in-app.
Assinaturas
Singular.customRevenue(String eventName, String currency, double amount)
Singular.customRevenue(String eventName, String currency, double amount, String productSKU, String productName, String productCategory, int productQuantity, double productPrice)
Singular.customRevenue(String eventName, String currency, double amount, Map<String, Object> attributes)
Exemplos de uso
Sem detalhes do produto
Singular.customRevenue("MyCustomRevenue", "USD", 5.50);
Com detalhes do produto
Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee" , 1, 5.00);
Com detalhes do produto em um mapa de atributos
Map<string, object="Object"> attributes = new HashMap<>();
attributes.put("product_id", "com.app.premium");
attributes.put("transaction_id", "T12345");
attributes.put("quantity", 1);
attributes.put("is_trial", false);
// Call the revenue method
Singular.customRevenue("MyCustomRevenue", "USD", 9.99, attributes);
Sem detalhes do produto
Singular.customRevenue("MyCustomRevenue", "USD", 5.50)
Com detalhes do produto
Singular.customRevenue("MyCustomRevenue", "EUR", 5.00, "SKU1928375", "Reservation Fee", "Fee" , 1, 5.00)
Com detalhes do produto num mapa de atributos
val attributes = mutableMapOf<String, Any>().apply {
put("product_id", "com.app.premium")
put("transaction_id", "T12345")
put("quantity", 1)
put("is_trial", false)
}
// Call the revenue method
Singular.customRevenue("MyCustomRevenue", "USD", 9.99, attributes)
Rastreamento de eventos híbrido (avançado)
A Singular recomenda o envio de todos os eventos e receitas por meio do SDK da Singular integrado ao seu aplicativo. No entanto, a Singular pode coletar eventos e receitas de outras fontes.
Qualquer evento NÃO enviado do SDK da Singular deve estar em conformidade com os requisitos de documentação de eventos de servidor para servidor da Singular e fornecer o identificador de dispositivo correspondente para atribuir corretamente um evento.
Importante:
Ocorrerão discrepâncias se os identificadores de dispositivo usados nas solicitações de eventos de servidor para servidor não tiverem um identificador de dispositivo correspondente no Singular. Tenha em atenção as seguintes possibilidades:
- Se um pedido de evento for recebido "antes" de o SDK do Singular ter registado o identificador do dispositivo, a partir de uma sessão da aplicação, o pedido de evento será considerado a "primeira sessão" para o dispositivo desconhecido e o Singular atribuirá o dispositivo como uma atribuição orgânica.
- Se o Singular SDK tiver registado um identificador de dispositivo, mas o identificador do Singular SDK for diferente do identificador de dispositivo especificado no pedido de evento de servidor para servidor, o evento será atribuído incorretamente.
Guias de rastreamento de eventos híbridos
Envio de eventos de um servidor interno
A Singular pode coletar dados sobre a receita do seu servidor para ajudar a analisar o desempenho e o ROI de suas campanhas.
Requisitos:
- A partir de um evento de registo ou de início de sessão na aplicação, capture e passe os identificadores do dispositivo e armazene estes dados com o ID de utilizador no seu servidor. Como os identificadores de dispositivo podem mudar para um utilizador, certifique-se de que actualiza os identificadores quando um utilizador gera uma sessão de aplicação. Isto garante que o evento do lado do servidor será atribuído ao dispositivo correto.
- Os eventos do lado do servidor são específicos da plataforma e só devem ser enviados com o identificador de dispositivo correspondente à plataforma do dispositivo (por exemplo, IDFA ou IDFV para dispositivos iOS).
- Pode utilizar o mecanismo de postback do Singular Internal BI para enviar um evento em tempo real para o seu ponto de extremidade interno, para que possa atualizar o conjunto de dados no lado do servidor. Consulte as Perguntas frequentes sobre o postback do BI interno.
- Reveja a secção "Acompanhamento de receitas" no guia de Integração Servidor a Servidor para obter mais detalhes.
Envio de eventos de um fornecedor de receitas
Provedores de terceiros, como RevenueCat ou adapty, podem fornecer receita de compra e assinatura para a Singular.
Siga os links abaixo para obter detalhes sobre como habilitar esses parceiros.
Envio de eventos do Segment
Para habilitar o Segment a enviar eventos para a Singular, em paralelo com o SDK da Singular, é preciso adicionar um Destino "Cloud-Mode" no Segment. Siga nosso guia AQUI.