API de eventos Servidor para servidor para PBA (Web-S2S)

Visão geral: Use a API de eventos de servidor para servidor Web (Web-S2S) para relatar eventos e conversões para PBA que não são relatados pelo Web SDK.

5107_Infographic_Web_S2S_759x270_option1.jpg

API web de eventos de servidor para servidor para PBA

A API Web-S2S para atribuição baseada em pessoas complementa o Web SDK permitindo que os profissionais de marketing relatem eventos que ocorrem em seus sites, mas fora do escopo do Web SDK. Por exemplo, um visitante do site (um usuário da web), aciona um evento de pagamento online, processado por sistemas de backend. Após o processamento, o backend, usando a API S2S, relata o evento à AppsFlyer.

Eventos enviados pela API do S2S:

  • são registrados de forma semelhante aos eventos relatados pelo Web SDK
  • são incluídos nos painéis do PBA se definidos como eventos de conversão
  • preenchem dados brutos de PBA com o campo event_source definido como ]web S2S

Instruções de uso da API

Crie sua chamada de API usando as seções a seguir. 

Não. Item Observações
1 Usuário único (EN: Unique user)
  • Forneça-nos a melhor ID de usuário único possível. Isso tem um impacto significativo na análise dos dados.
  • A prática recomendada é enviar a customerUserId. Se não estiver disponível, envie a afUserId sendo a ID do cookie do site definida pelo WebSdk.
  • A qualquer momento você associa sua ID de usuário do cliente (CUID) com o afUserId enviar uma mensagem setCuID() com ambas as IDs.
2 Carimbo de data/hora
  • Suprimimos seu carimbo de data/hora se o evento chegar atrasado. Ou seja, os eventos com carimbo de data/hora de segunda-feira devem chegar antes da meia-noite UTC de terça-feira.
  • Os carimbos de data/hora são baseados em UTC. Se necessário, converta da hora local para a hora UTC antes de preencher o parâmetro
3 Receita e moeda Você deve preencher eventRevenueCurrency e eventRevenue mesmo que eles estejam contidos no eventValue. Faça isso porque os usamos em nossos painéis.

Noções básicas da API

A implementação da API requer as seguintes credenciais disponíveis no painel:

  • ID do agrupamento (também conhecida como ID do agrupamento da marca)
  • Chave do desenvolvedor web 

Para obter as credenciais: 

  1. Na AppsFlyer, no menu superior, selecione Meus aplicativos > Exibir agrupamentos de marca.
    A lista de agrupamentos é exibida.
  2. Copie e registre:
    • ID do agrupamento de marca
    • Chave do desenvolvedor web

Noções básicas da API Web S2S

Caminho

https://webs2s.appsflyer.com/v1/bundleId/method

  • bundleId: A ID do agrupamento de aplicativos está disponível no painel. 
  • method sendo um dos seguintes:
    • event: enviar para eventos de backend relatáveis
    • setCuId: enviar ao associar afUserId com seu CUID
Método HTTP POST
Tipo de conteúdo aceito application/json 
Limitação de carga útil JSON 

Tamanho da carga útil JSON: máximo de 1KB

Taxa de limitação

Volume de limitação do POST: 60.000 POSTs por minuto. Para aumentar o limite, entre em contato com seu CSM.

TLS

método setCuId

Nome do método

setCuId

Caso de uso 

Ao associar um CUID a um visitante do seu site. Por exemplo, sempre que você fizer a correspondência da web afUserId com a ID de usuário do cliente. Isso permite que o PBA corresponda dados de várias fontes. Isso é semelhante a setCustomerUserId no site.

Caminho do método

https://webs2s.appsflyer.com/v1/bundleId/setcuid

Carga útil

A carga JSON consiste nos parâmetros listados aqui. Todos os parâmetros são obrigatórios.

 Exemplo de Curl setCuId


curl --location --request POST 'https://webs2s.appsflyer.com/v1/bundleId/setcuid' \ --header 'Accept-Encoding: application/json' \ --header 'Content-Type: application/json' \ --data-raw '{ "customerUserId": "1234567890abcdef", "afUserId":"9999999-f848-4963-a091-568f0bf9a361", "webDevKey" : "99999999-9999-9999-9999-999999999999"}

Método do evento

Nome do método

event

Caso de uso Enviar
Caminho do método

https://webs2s.appsflyer.com/v1/bundleId/event

 Informações detalhadas Detalhes do método do evento deste artigo contém detalhes de carga útil, exemplo de Curl, exemplo de Python e sugestões de teste.

Detalhes do método do evento

Parâmetros do payload

Os parâmetros de carga útil são divididos em identificadores de usuário e parâmetros de evento. 

  • ID do usuário: você deve enviar pelo menos um parâmetro de ID de usuário.
  • Evento: envie os parâmetros obrigatórios e opcionais conforme necessário.

Parâmetros do identificador do usuário (enviar pelo menos um parâmetro)

Parâmetro de ID do usuário  Descrição

customerUserId

O ID de usuário do cliente (CUID) é um identificador exclusivo definido por você.

  • Use o identificador idêntico para eventos relatados por qualquer meio à AppsFlyer. Ou seja, o mesmo identificador é usado no web SDK, no mobile SDK e nas APIs S2S.
  • ID do usuário cliente do web SDK
  • Formato: Sequência de caracteres
  • Exemplo: "customerUserId" : "663274"
  • Preenche o campo de dados brutos: customer_user_id

afUserId

O ID de usuário exclusivo atribuído pelo web SDK a cada usuário que visita seu site. Você precisará passar o valor do cookie para seus servidores de backend.

  •  Detalhes do cookie:
    • Nome: afUserId
    • Valor: defina afUserId para este valor
    • Domínio: website-domain
  • Exemplo: "afUserId" : "unique_cookie_uuid"
  • Preenche o campo de dados brutos: af_web_id

Parâmetros do evento

Nome do parâmetro Obrigatoriedade Descrição

webDevKey

Sim

Preencha usando a chave do desenvolvedor web disponível no painel.

  • Exemplo:
eventType Sim

Identificador de atributo de evento para uso interno pela AppsFlyer. Sempre definido como EVENTO.

  • Exemplo: "eventType" : "EVENT"
eventName Sim
  • Usamos esse parâmetro para diferenciar eventos de conversão e não conversão usando a lista de conversão de eventos definida pelo profissional de marketing nas configurações do PBA. 
  • Certifique-se de preenchê-lo com valores consistentes com a lógica de conversão do profissional de marketing.
  • Formato: Sequência de caracteres
  • Exemplo: "eventName" : "web_purchase"
  • Preenche o campo de dados brutos: event_name
timestamp Não

Tempo em que o evento ocorreu em milissegundos. Enviar como um carimbo de data/hora Unix com 13 dígitos.

  • Se nenhum carimbo de data/hora for enviado, a hora será definida usando a hora do servidor. 
  • Os eventos que chegam atrasados são marcados com data e hora usando a hora atual do servidor. Tarde significa chegada após a meia-noite UTC do dia seguinte ao evento. Por exemplo, um evento que ocorre na segunda-feira deve ser processado antes da meia-noite UTC de terça-feira. 
  • Os eventos com carimbo de data/hora no futuro (em relação à hora atual do servidor) são marcados com carimbo de data/hora com a hora do servidor.
  • Formato: Int
  • Exemplo: "timestamp" : 1584835200123
  • Preenche o campo de dados brutos: event_time
Valor do evento Não
Mapa de parâmetros de eventos que descrevem o evento. Use este parâmetro para enviar eventos avançados in-app como SKU do produto, preço do item de linha.
  • Observações sobre a receita: você pode preencher esse parâmetro com detalhes de receita. Além disso, você deve preencher eventRevenue e eventRevenueCurrency.
  • Formato: JSON
  • Exemplo: Para enviar SKU ABC123, com uma cor azul e um preço unitário de $3.99 defina eventValue para:
    {"Purchase": {"sku" : "ABC123", "color": "blue", "unit_price":3.99,"currency": "USD"}}
  • Limitação: 1000 caracteres. Não exceda este valor, ou ficará truncado.
  • Preenche o campo de dados brutos: event_value
eventRevenueCurrency Não

Código de moeda de um evento de receita, sendo um código de moeda ISO 4217 de três caracteres.

  • Padrão: USD
  • Formato: Sequência de caracteres
  • Exemplo: "eventRevenueCurrency" : "EUR"
  • Preenche o campo de dados brutos: event_revenue_currency
eventRevenue Não 

Receita (valor monetário) atribuída a um evento.

Atenção! Se a receita for relatada em eventValue, relate-a também em eventRevenue e preencha eventRevenueCurrency. 

  • Valores negativos permitidos. Por exemplo, um reembolso.
  • Formato: Float 
  • Valores de exemplo: 1 1.2 1234.20 -1234.20
  • Preenche o campo de dados brutos: event_revenue
eventCategory Não  Esse parâmetro foi preterido e será removido do sistema em uma data futura. Em vez disso, use eventValue.
eventLabel Não 

Esse parâmetro foi preterido e será removido do sistema em uma data futura. Em vez disso, use eventValue.

referrer Não

Referência HTTP

  • Formato: Sequência de caracteres
  • Exemplo:"referrer" : "https://www.google.com/"
  • Preenche o campo de dados brutos: http_referrer
userAgent Não 

Solicitação de agente do usuário enviada pelo navegador ao servidor.

  • Sempre que possível, envie esse valor, pois ele auxilia na determinação do tipo de dispositivo. 
  • Formato: Sequência de caracteres
  • Exemplo: "userAgent" : "Chrome/80.0.3987"
  • Preenche o campo de dados brutos: user_agent
ip Não

Endereço IP do usuário

  • Sempre que possível envie o valor deste campo. Auxilia na determinação da geolocalização do usuário.
  • Formato: Sequência de caracteres
  • Exemplo:"ip": "192.0.2.1"
  • Preenche o campo de dados brutos: ip
 

Exemplo de Curl

curl --location --request POST 'https://webs2s.appsflyer.com/v1/bundleId/event' \
--header 'Accept-Encoding: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
	"customerUserId": "1234567890abcdef",
	"afUserId":"9999999-f848-4963-a091-568f0bf9a361",
    "webDevKey" : "99999999-9999-9999-9999-999999999999",
    "ip" : "192.0.2.1",
	"eventType":"EVENT",
	"timestamp" : 1234567890123,
	"eventName":"my_web_event",
	"eventRevenueCurrency" : "EUR",
	"eventRevenue" : 1234.56,
	
		"eventValue": {
		"purchase":{
		 "shoes": "color",
		 "quantity" : "3",
		 "Revenue" : "1234.56",
		 "Currency" : "ZAR"
		}
	}

}'

Exemplo de Python

''' using the requests python package, install using pip install requests  '''
import requests
url = "https://webs2s.appsflyer.com/v1/bundleId/event"
payload = {
    "customerUserId": "1234567890abcdef",
    "afUserId": "9999999-f848-4963-a091-568f0bf9a361",
    "webDevKey": "99999999-9999-9999-9999-999999999999",
    "ip": "192.0.2.1",
    "eventType": "EVENT",
    "timestamp": 1234567890123,
    "eventName": "my_web_event",
    "eventRevenenuCurrency": "EUR",
    "eventRevenue": 1234.56,
    "eventValue":
        {
            "purchase":
            {
                "shoes": "color",
                "quantity": "3",
                "Revenue": "1234.56",
                "Currency": "ZAR"
            }
        }
    }
headers = {
    'Accept-Encoding': 'application/json',
    'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text.encode('utf8'))

Testes

Para fins de teste, envie vários eventos da seguinte maneira:

  1. Envie um evento.
  2. Certifique-se de obter um código de retorno 200 OK. Caso contrário, execute uma ação corretiva usando os códigos de retorno e as mensagens de erro.
  3. Aguarde várias horas após a meia-noite UTC para ver o evento relatado nos dados brutos do PBA. Você deve aguardar porque os dados do PBA são processados uma vez por dia. 

Informações adicionais

Obtendo a chave do desenvolvedor web

 Para obter a chave do desenvolvedor web:

  1. Na AppsFlyer, vá para a aba Meus Aplicativos.
  2. Clique em Visualizar agrupamentos de marca.

    GetWebDevKeyPba_us-en.pn

  3. Copie a chave do desenvolvedor web necessária. 

Extraindo o afUserID do Web SDK

  • O afUserId é um identificador exclusivo definido pelo Web SDK quando um usuário visita seu site pela primeira vez.
  • Se você precisar afUserIduse um dos métodos a seguir.


Obtenha afUserId do cabeçalho do cookie HTTP

  • O afUserId é enviado pelo navegador de visitantes em chamadas para o seu site.
  •  Extraia-o do cabeçalho do cookie HTTP, se necessário.


Visualizando afUserId no navegador do visitante

  •  Visualize oafUserId no navegador do visitante, para fins de solução de problemas e depuração.
  • Para que ele esteja disponível, o visitante precisa ter visitado primeiro uma página com o Web SDK pelo menos uma vez. 
  • O cookie que contém afUserId é um cookie primário em relação ao seu domínio.
  • O procedimento a seguir foi preparado usando o Chrome 81. Pode haver algumas diferenças entre vários navegadores e sistemas operacionais.

Para obter o afUserId do navegador do visitante:

  1. No seu navegador, acesse seu site.
  2. Clique com o botão direito do mouse, selecione Inspecionar
    A janela do elemento de inspeção do navegador é aberta.

    S2S_inspect.jpg

  3. Vá para a aba (A) Aplicativo.
  4. No menu lateral (B), expanda Cookies.
  5. Selecione seu site. Se ele não for exibido, atualize o navegador.
  6. No campo de filtro (C), insira afUserId
    O valor de afUserID é exibido. 

Códigos de resposta

Código de resposta Mensagem O que fazer
200 OK  
404 Não encontrado
  • Verifique o endpoint 
  • Verifique se a ID do agrupamento está correta
400 Erro na solicitação
  • Há um erro no JSON. Consulte a mensagem de erro para mais detalhes. 

Solução de problemas

  • Sintoma: Os códigos de retorno HTTP não retornam
    Solução: Incluir servidores da AppsFlyer na lista de permissões

Notas de versão


Notas de versão do Web SDK
Data  Versão do endpoint* Observações
2020-05-12 1  Lançamento inicial
2020-05-24 1  
* O número da versão refere-se ao número da versão do endpoint. https://webs2s.appsflyer.com/v1/method