Server-to-Server - Fundamentos

Server-to-Server - Fundamentos

Implemente a REST API da Singular para rastreamento completo do lado do servidor como alternativa à integração via SDK, permitindo controle total sobre a coleta, a transmissão e os fluxos de trabalho de atribuição de dados.

Escolhendo sua integração: SDK ou S2S? Se você puder incorporar um SDK de cliente, comece pela documentação de integração do SDK . Use Server-to-Server quando precisar de entrega de eventos do lado do servidor, estiver em uma plataforma sem SDK ou quiser controle total sobre a coleta de dados. Esta suíte cobre o caminho S2S e é a referência compartilhada para os guias S2S de Mobile, Web e PC/Console.


Visão geral

Caso de uso do Server-to-Server

A integração server-to-server (S2S) fornece endpoints da REST API para criar soluções completas de atribuição e análise executadas a partir da sua infraestrutura de backend, sem incorporar o SDK da Singular nos aplicativos cliente.

Abordagens de integração:

  • S2S puro: Implementação 100% do lado do servidor, tratando o rastreamento de sessões e de eventos
  • Híbrido: O SDK da Singular gerencia as sessões enquanto o lado do servidor trata o rastreamento de eventos

Padrão de integração híbrida

A integração híbrida combina o SDK da Singular para gerenciamento de sessões com a EVENT API do lado do servidor para rastreamento de eventos no backend, equilibrando a facilidade de implementação com a flexibilidade do lado do servidor.

Benefícios do modo híbrido:

  • O SDK trata automaticamente a lógica complexa de sessões, o deep linking e a coleta de dados do dispositivo
  • O servidor envia eventos para transações processadas nos sistemas de backend
  • Redução da complexidade de implementação do lado do cliente
  • Endpoint SESSION não é necessário — o SDK gerencia o ciclo de vida da sessão

Fluxo de dados do S2S híbrido

Métodos de recuperação de dados do dispositivo:

  1. Fluxo gerenciado pelo cliente: Capture os dados necessários no cliente e encaminhe-os ao servidor por meio de uma API interna para uso com o endpoint EVENT da Singular
  2. Postback de BI interno: Configure o postback de BI interno da Singular para receber, em tempo real, um payload JSON com identificadores de dispositivo após uma instalação, um reengajamento ou eventos ( Guia de configuração )

Manutenção do grafo de dispositivos: Ambos os métodos exigem lógica do lado do servidor para manter o grafo de dispositivos. Quando o SDK detectar alterações no identificador do dispositivo, atualize o servidor de acordo para garantir um rastreamento preciso.

Recursos de implementação:


Principais princípios de integração

Princípio Descrição
Flexibilidade Controle total sobre a coleta de dados e o momento da transmissão
Paridade de recursos Suporta todas as funcionalidades do SDK quando os dados adequados são fornecidos
Caminho de integração Cliente → Seu servidor → API da Singular
Processamento em tempo real Uma requisição por vez — sem suporte a processamento em lote
Fluxo sequencial Os eventos devem ser processados cronologicamente
Sem deduplicação A Singular não faz deduplicação — implemente a deduplicação do lado do servidor
Permanência dos dados Dados em nível de dispositivo não podem ser excluídos após a ingestão — valide antes de enviar

Requisitos de integração

A integração S2S pura exige a implementação de um pipeline de dados abrangente para o rastreamento de sessões e eventos.

  1. Coleta de dados: Colete os dados necessários dos aplicativos cliente
  2. Grafo de dispositivos: Encaminhe os dados ao servidor e mantenha o armazenamento dos identificadores de dispositivo
  3. Requisições de sessão: Envie notificações de sessão pela SESSION API
  4. Tratamento de respostas: Processe e repasse as respostas da Singular de volta ao aplicativo cliente
  5. Requisições de eventos: Encaminhe os eventos pela EVENT API

Guias S2S relacionados

Este artigo é a referência compartilhada para a suíte S2S. Use o guia que corresponde à sua plataforma e as referências de endpoint para obter todos os detalhes dos parâmetros.

Guias por plataforma

Referências de endpoint

Guias de recursos


Endpoints da REST API

A Singular fornece dois endpoints principais da REST API para o rastreamento de sessões e eventos server-to-server.

Endpoint de sessão

API de rastreamento de sessão

O endpoint SESSION notifica a Singular sobre eventos de abertura do aplicativo para inicializar sessões de usuário para atribuição e rastreamento de retenção.

GET https://s2s.singular.net/api/v1/launch

Referência completa: Referência da API do endpoint SESSION


Endpoint de evento

API de rastreamento de eventos

O endpoint EVENT rastreia eventos e receita in-app para análise de atribuição e otimização de campanhas.

GET https://s2s.singular.net/api/v1/evt

Referência completa: Referência da API do endpoint EVENT


Parâmetros comuns

Estes parâmetros são compartilhados entre os endpoints SESSION e EVENT da REST API S2S da Singular. Esta seção contém suas definições canônicas; outros artigos S2S apontam para cá em vez de redefini-los.


Autenticação

Parâmetro Detalhes
a

string

SDK Key da Singular para autenticação na API.

Obtenha em: Singular UI → Menu principal → Developer Tools .

Importante: Não use a Reporting API Key. As requisições serão rejeitadas.

Exemplo: sdkKey_afdadsf7asf56


Identificadores de dispositivo

Os identificadores de dispositivo variam conforme a plataforma e a disponibilidade. Inclua todos os identificadores aplicáveis à sua plataforma. Omita qualquer identificador indisponível — nunca passe NULL ou uma string vazia.

Parâmetro Detalhes
idfa

Plataforma: iOS

Identifier for Advertisers (IDFA) habilita o rastreamento de anúncios e a atribuição de campanhas.

Requisito de ATT: O iOS 14.5+ exige o consentimento do usuário por meio do framework App Tracking Transparency.

  • Omita o parâmetro se o IDFA estiver indisponível (o usuário negou o prompt de ATT).
  • Nunca passe NULL ou string vazia.
  • Recuperar o IDFA

Exemplo: DFC5A647-9043-4699-B2A5-76F03A97064B

idfv

Plataforma: iOS

Identifier for Vendors (IDFV) permanece consistente em todos os aplicativos do mesmo fornecedor.

Sempre obrigatório: Deve ser incluído independentemente do status do ATT ou da disponibilidade do IDFA.

Exemplo: 21DB6612-09B3-4ECC-84AC-B353B0AF1334

aifa

Plataforma: Android
(Google Play)

Google Advertising ID (GAID) habilita o rastreamento de publicidade redefinível pelo usuário no Android.

  • Obrigatório em dispositivos Google Play.
  • Omita em dispositivos que não sejam Google Play.
  • Omita se indisponível — nunca passe NULL ou string vazia.
  • Recuperar o AIFA

Exemplo: 8ecd7512-2864-440c-93f3-a3cabe62525b

asid

Plataforma: Android
(Google Play)

Android App Set ID fornece rastreamento entre aplicativos com foco em privacidade para o mesmo desenvolvedor.

Sempre obrigatório: Deve ser incluído em dispositivos Google Play independentemente da disponibilidade do GAID.

Exemplo: edee92a2-7b2f-45f4-a509-840f170fc6d9

amid

Plataforma: Android
(Amazon)

Amazon Advertising ID para dispositivos Amazon sem os Google Play Services.

Exemplo: df07c7dc-cea7-4a89-b328-810ff5acb15d

oaid

Plataforma: Android
(OEMs chineses)

Open Advertising Identifier (OAID) para dispositivos fabricados na China sem os Google Play Services (Huawei, Xiaomi, OPPO etc.).

  • Obrigatório para dispositivos de OEMs chineses sem Google Play.
  • Omita se indisponível.
  • Recuperar o OAID

Exemplo: 01234567-89abc-defe-dcba-987654321012

andi

Plataforma: Android
(Não Google Play)

O Android ID é um identificador de 64 bits gerado pelo dispositivo.

Uso restrito: Proibido em dispositivos Google Play — use AIFA e ASID em vez dele. Envie apenas se nenhum outro identificador estiver disponível e o aplicativo não for distribuído pela Google Play.

Exemplo: fc8d449516de0dfb

sdid

Plataforma: iOS, Android, PC, Xbox, PlayStation, Nintendo, MetaQuest, CTV

O Singular Device ID é um UUIDv4 anonimizado gerado pelo cliente que representa uma instalação única do aplicativo.

Identificador principal: Único identificador de dispositivo relevante para aplicativos de PC e console.

Exemplo: 40009df0-d618-4d81-9da1-cbb3337b8dec


Parâmetros de dispositivo

Parâmetro Detalhes
p

string

Plataforma do aplicativo.

Valores permitidos (diferencia maiúsculas de minúsculas):

  • Android
  • iOS
  • PC
  • Xbox
  • Playstation
  • Nintendo
  • MetaQuest
  • CTV

Exemplo: Android

ip

string

Endereço IPv4 público do dispositivo. IPv6 é suportado, mas IPv4 é recomendado para compatibilidade de atribuição com as ad networks.

Exemplo: 172.58.29.235

ve

string

Versão do sistema operacional do dispositivo no momento da sessão.

Exemplo: 9.2

ma
iOS, Android

string

Marca do dispositivo (nome do fabricante). Deve ser usado com mo (modelo).

Recuperar a marca do dispositivo

Exemplo: Samsung , LG , Apple

mo
iOS, Android

string

Modelo do dispositivo. Deve ser usado com ma (marca).

Recuperar o modelo do dispositivo

Exemplo: iPhone 4S , Galaxy SIII

lc
iOS, Android

string

Tag de locale IETF — código de idioma e de país de duas letras separados por um sublinhado.

Recuperar o locale do dispositivo

Exemplo: en_US

bd
iOS, Android

string

Identificador de build do dispositivo, codificado em URL.

Recuperar o build do dispositivo

Exemplo: Build%2F13D15


Parâmetros do aplicativo

Parâmetro Detalhes
i

string

Identificador do aplicativo (diferencia maiúsculas de minúsculas).

  • Android: Package Name (por exemplo, com.singular.app )
  • iOS: Bundle ID (por exemplo, com.singular.app )
  • PC/Console: Seu identificador designado

Exemplo: com.singular.app

app_v

string

Versão do aplicativo.

Exemplo: 1.2.3

att_authorization_status
iOS

integer

Código de status do App Tracking Transparency (ATT) (iOS 14.5+).

Valores de status:

  • 0 - Indeterminado (prompt não exibido)
  • 1 - Restrito (rastreamento em nível de dispositivo desativado)
  • 2 - Negado (o usuário negou a autorização)
  • 3 - Autorizado (o usuário concedeu a autorização)

Sempre obrigatório: Mesmo que o ATT não seja implementado, passe 0 (indeterminado).

Exemplo: 3


Parâmetros de rede e localização

Parâmetro Detalhes
use_ip

boolean

Instrui a Singular a extrair o endereço IP da requisição HTTP em vez do ip parâmetro.

Limitações:

  • Impede a geolocalização baseada em IP pela Singular.
  • Forneça um código de país de duas letras pelo country parâmetro.
  • Mutuamente exclusivo com o ip parâmetro — não use ambos.
  • Deve fornecer ip ou use_ip para evitar a rejeição de dados.

Exemplo: true

country

string

Código de país de duas letras ISO 3166-1 alpha-2 .

Obrigatório quando: O endereço IP não estiver disponível ou use_ip=true .

Exemplo: US

ua

string

String de User Agent codificada em URL.

Bruto: Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15...

Exemplo: Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2014_0...

c
iOS, Android

string

Tipo de conexão de rede.

Valores permitidos: wifi , carrier

Exemplo: wifi

cn
iOS, Android

string

Nome da operadora do provedor de internet.

Exemplo: Comcast


Parâmetros de privacidade de dados

Parâmetro Detalhes
data_sharing_options

JSON

Consentimento do usuário final para compartilhamento de dados em JSON codificado em URL. Deve persistir e ser passado em todas as requisições SESSION e EVENT subsequentes.

Usuário consentiu (opt-in):

{"limit_data_sharing":false}

Usuário recusou (opt-out):

{"limit_data_sharing":true}

Exemplo: %7B%22limit_data_sharing%22%3Atrue%7D

dnt
iOS, Android

integer

Status de Do Not Track.

  • 1 - Do Not Track ativado
  • 0 - Do Not Track desativado

Exemplo: 0

dntoff
iOS, Android

integer

Indica se o Do Not Track está DESATIVADO.

  • 0 - Do Not Track ativado (OFF=false)
  • 1 - Do Not Track desativado (OFF=true)

Exemplo: 1


Suporte a múltiplos dispositivos

Parâmetro Detalhes
custom_user_id

string

Seu ID de usuário interno para rastreamento entre dispositivos.

Sem PII: Não passe informações de identificação pessoal. Use um identificador interno com hash ou anonimizado de outra forma, e não endereços de e-mail, números de telefone ou nomes brutos.

Exemplo: 123456789abcd


Fases de implementação

Uma integração S2S bem-sucedida exige quatro fases principais de implementação executadas sequencialmente para obter qualidade de dados e precisão de atribuição ideais.

Fase 1: Coleta de dados

Dados necessários

Estabeleça uma estratégia robusta de coleta de dados que capture todos os parâmetros necessários para a funcionalidade da plataforma Singular.

Todos os parâmetros obrigatórios são mandatórios: Omitir parâmetros obrigatórios resulta em discrepâncias de dados e erros de atribuição. Nenhum parâmetro é opcional.

Tratamento de funções assíncronas: Ao coletar dados do lado do cliente para transmissão ao servidor, aguarde a conclusão das funções assíncronas e trate os casos extremos. Problema comum que causa dados ausentes e atribuição parcial.

Recursos de implementação:


Fase 2: Streaming em tempo real

Requisitos críticos de tempo

O streaming de dados em tempo real mantém a precisão da atribuição e habilita recursos sensíveis ao tempo, como as atualizações de conversion value do SKAdNetwork.

Impacto na atribuição:

  • Sessões atrasadas: Afetam gravemente a precisão da atribuição — o sistema exige dados temporais precisos para a associação de campanhas
  • Timer do SKAdNetwork: A rigorosa janela do timer no dispositivo para os conversion values torna o streaming em tempo real crítico. Atrasos causam a perda de atualizações de conversion value e dados de campanha incompletos

Boas práticas:

  • Implemente listeners de eventos do lado do servidor para os inícios de sessão do aplicativo
  • Encaminhe os dados de sessão imediatamente, com todos os parâmetros necessários
  • Implemente listeners de eventos do lado do servidor para os eventos in-app
  • Encaminhe os dados de eventos imediatamente, com todos os parâmetros necessários
  • Use uma arquitetura de webhook para uma transmissão de dados confiável
  • Implemente mecanismos de repetição para requisições que falharem
  • Monitore o fluxo de dados para garantia de qualidade

Fase 3: Tratamento de respostas

Comunicação bidirecional

O tratamento de respostas conecta as interações da API do lado do servidor com a funcionalidade do lado do cliente, habilitando o deferred deep linking e as atualizações de conversion value.

Principais tipos de resposta:

  • Deferred Deep Links: A resposta da API contém dados de deep link pendentes que exigem repasse imediato ao aplicativo para roteamento e personalização do usuário
  • Conversion Values: Os conversion values do SKAdNetwork no iOS devem ser prontamente encaminhados ao aplicativo para uma medição de campanha precisa

Boas práticas:

  • Implemente o tratamento de respostas na infraestrutura do servidor
  • Faça o parsing e valide as respostas da API da Singular
  • Encaminhe os dados de resposta relevantes ao aplicativo cliente (essencial para o SKAdNetwork no iOS)
  • Implemente o processamento de respostas do lado do cliente
  • Trate os erros de forma adequada com os códigos de status HTTP apropriados
  • Registre as respostas com falha para os mecanismos de repetição

Fase 4: Testes e validação

Verificação do fluxo de dados

A fase de testes valida a funcionalidade completa do pipeline de dados e a precisão da atribuição antes da implantação em produção.

Processos de atribuição de sessão:

  • Primeira sessão (nova instalação): A Singular reconhece a nova instalação e aciona o processo de atribuição de instalação
  • Reengajamento qualificado: A Singular aciona o processo de atribuição de reengajamento ( FAQ de reengajamento )
  • Sessão padrão: A Singular registra a sessão para as métricas de atividade e retenção do usuário

Requisitos críticos de tempo:

  1. Sessão antes dos eventos: Uma única SESSION deve ser recebida antes de quaisquer eventos. O SDK aciona a sessão na abertura do aplicativo e depois envia os eventos in-app. Após mais de 1 minuto em segundo plano, a sessão expira. Uma nova sessão é enviada quando o aplicativo retorna ao primeiro plano. Use eventos de ciclo de vida do aplicativo e timers para o gerenciamento de sessões
  2. Eventos em tempo real: Os eventos que ocorrem no aplicativo devem ser enviados em tempo real após a sua respectiva sessão

Checklist de validação:

  • Teste o fluxo de dados de sessão — valide se a primeira e as sessões subsequentes têm os dados e valores corretos
  • Confirme que os eventos são recebidos somente após a sessão ser reportada à Singular (eventos antes da sessão criam atribuição orgânica)
  • Confirme que a resposta da sessão é tratada e repassada ao aplicativo cliente (crítico para os deferred deep links)

Integração concluída:

  • ✓ Coleta e armazenamento de dados validados
  • ✓ Streaming em tempo real para a Singular validado
  • ✓ Tratamento de respostas e registro de logs validados
  • ✓ Todos os fluxos de dados de teste validados

Guia de testes: Guia de testes de integração S2S


Recursos adicionais

Implemente rastreamento entre dispositivos, rastreamento de receita, monitoramento de desinstalações e conformidade com a privacidade de dados para uma análise abrangente.

Rastreamento entre dispositivos

Implementação do Custom User ID

Utilize o custom_user_id parâmetro para associar usuários a sessões em nível de dispositivo para relatórios entre dispositivos e análises em nível de usuário.

Conformidade com privacidade: Cumpra as políticas de privacidade de dados evitando informações de identificação pessoal (PII) em custom_user_id . Use um nome de usuário com hash, e-mail ou uma string gerada aleatoriamente como identificador de usuário único.

Habilita relatórios abrangentes entre dispositivos, exportações de dados em nível de usuário e postbacks de BI interno, mantendo a privacidade do usuário.

Mais informações: Parâmetro Custom User ID


Rastreamento de receita

Relatório de compras in-app

Rastreie a receita de compras in-app para análise de ROI, medição de desempenho de campanhas e enriquecimento de exportações/postbacks.

Use o endpoint EVENT com parâmetros de receita :

  • is_revenue_event : Marca o evento como evento de receita (pule se o nome do evento for __iap__ ou o valor for > 0)
  • purchase_receipt : Objeto de compra in-app do Android/iOS — altamente recomendado para detalhes da transação e enriquecimento de relatórios
  • receipt_signature (Android): Altamente recomendado para validação de transações e prevenção de fraudes
  • amt : Valor da receita como Double (por exemplo, "amt=1.99")
  • cur : Código de moeda ISO 4217 (por exemplo, "cur=USD")

Guia de implementação: Gerenciamento do estado de assinaturas


Conformidade com a privacidade de dados

Tratamento do consentimento do usuário

Notifique a Singular sobre o consentimento do usuário final para compartilhamento de dados a fim de cumprir o GDPR, a CCPA e outras regulamentações de privacidade.

Use o data_sharing_options parâmetro para comunicar a escolha do usuário:

  • {"limit_data_sharing":false} : O usuário consentiu (opt-in) em compartilhar informações
  • {"limit_data_sharing":true} : O usuário recusou compartilhar informações

A Singular usa o limit_data_sharing nos Postbacks de privacidade do usuário e repassa as informações aos parceiros que exigem conformidade.

Opcional, mas recomendado: Parâmetro opcional, mas algumas informações de atribuição só são compartilhadas pelos parceiros quando o usuário fez explicitamente o opt-in.

Mais informações: Privacidade do usuário e Limit Data Sharing