API de eventos web de servidor a servidor para PBA (Web-S2S)

De un vistazo: Utilice la API web de servidor a servidor (Web-S2S) para reportar eventos y conversiones a PBA que no son notificados por el SDK Web.

5107_Infographic_Web_S2S_759x270_option1.jpg

API de eventos web de servidor a servidor para PBA

La API Web-S2S para la atribución basada en personas complementa el SDK web, lo que permite a los marketers reportar los eventos que se producen en sus sitios web pero que quedan fuera del ámbito del SDK web. Por ejemplo, un visitante del sitio web (un usuario web), dispara un evento de pago en línea, procesado por sistemas backend. Tras el procesamiento, el backend, utilizando la API S2S, reporta el evento a AppsFlyer.

Los eventos enviados por la API S2S:

  • se registran de forma similar a los eventos reportados por el SDK web,
  • se incluyen en los paneles de control de PBA si se establecen como eventos de conversión,
  • rellenan el raw data de PBA con el campo event_source configurado como web S2S.

Instrucciones de uso de la API

Crea tu llamada a la API utilizando las secciones siguientes. 

No. Elemento Observaciones
1 ID de usuario único
  • Intenta proporcionarnos el mejor ID de usuario único disponible. Esto tiene un impacto significativo en el análisis de datos.
  • La práctica recomendada es enviar el customerUserId. Si no está disponible, envía el afUserId, que es el ID de cookie del sitio web establecido por WebSdk.
  • En el momento en que asocies tu ID de usuario de cliente(CUID) con el afUserId envía un mensaje setCuID() con ambos ID.
2 Marca de tiempo
  • Suprimimos tu marca de tiempo si el evento llega tarde. Esto significa que los eventos con marca de tiempo de lunes deben llegar antes de la medianoche del martes UTC.
  • Las marcas de tiempo se basan en UTC. Si es necesario, convierte la hora local en hora UTC antes de rellenar el parámetro.
3 Ingresos y divisas Debes rellenar eventRevenueCurrency y eventRevenue incluso si están incluidos en eventValue. Hazlo porque los utilizamos en nuestros paneles de control.

Conceptos básicos de la API

La implementación de la API requiere las siguientes credenciales disponibles en el panel de control:

  • ID de paquete (también conocido como ID del paquete de marca)
  • Clave de desarrollador web

Para obtener las credenciales: 

  1. En AppsFlyer, en el menú superior, selecciona Mis aplicaciones > Ver paquetes de marcas.
    Aparece la lista de paquetes.
  2. Copia y registra lo que corresponda:
    • ID de paquete de marca
    • Clave de desarrollador web

Conceptos básicos de la API Web S2S

Ruta

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

  • bundleId: es el ID del paquete de aplicaciones disponible en el panel de control. 
  • method es uno de los siguientes:
    • event: se envía para eventos de backend reportables
    • setCuId: se envía al asociar afUserId con tu CUID
Método HTTP POST
Tipo de contenido aceptado application/json 
Limitación de la carga útil de JSON 

Tamaño de la carga útil de JSON: máximo 1 KB

Limitación de la tasa

Volumen de limitación POST: 60 000 POST por minuto. Para aumentar el límite, contacta a tu CSM.

TLS

Método setCuId

Nombre del método

setCuId

Caso de uso 

Al asociar un CUID a un visitante de tu sitio web. Por ejemplo, cada vez que hagas coincidir el afUserId web con tu ID de usuario de cliente. De este modo, la PBA puede cotejar datos de diversas fuentes. Esto es similar a setCustomerUserId en el sitio web.

Ruta del método

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

Carga útil

La carga útil de JSON consta de los parámetros que se enumeran a continuación. Todos los parámetros son obligatorios.

 Ejemplo de setCuId de Curl


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 del evento

Nombre del método

event

Caso de uso Envío
Ruta del método

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

 Información detallada La sección Detalles del método Event de este artículo contiene detalles sobre la carga útil, un ejemplo de Curl, un ejemplo de Python y sugerencias de pruebas.

Detalles del método Event

Parámetros de carga útil

Los parámetros de carga útil se dividen en identificadores de usuario y parámetros de evento. 

  • ID de usuario: debes enviar al menos un parámetro de ID de usuario.
  • Evento: envía los parámetros obligatorios y los parámetros opcionales según sea necesario.

Parámetros de identificador de usuario (envía al menos un parámetro)

Parámetro de ID de usuario  Descripción

customerUserId

El ID de usuario del cliente (CUID) es un identificador único establecido por ti.

  • Usa el mismo identificador para los eventos reportados por cualquier medio a AppsFlyer. Esto significa que se utiliza el mismo identificador en el SDK web, el SDK móvil y las API S2S.
  • ID de usuario del cliente del SDK web
  • Formato: cadena
  • Ejemplo: "customerUserId" : "663274"
  • Rellena el campo de raw data: customer_user_id

afUserId

El ID de usuario único asignado por el SDK web a cada usuario que visita tu sitio web. Deberás transmitir el valor de la cookie a tus servidores de backend.

  •  Detalles de la cookie:
    • Nombre: afUserId
    • Valor: establece afUserId a este valor
    • Dominio: website-domain
  • Ejemplo: "afUserId" : "unique_cookie_uuid"
  • Rellena el campo de raw data: af_web_id

Parámetros del evento

Nombre de parámetro Obligatorio Descripción

webDevKey

Rellénalo utilizando la clave de desarrollador web disponible en el panel de control.

  • Ejemplo:"webDevKey" : "ffffffff-ffff-ffff-ffff-ffffffffffff"
eventType

Identificador de atributo de evento para uso interno de AppsFlyer. Siempre ajustado en EVENT.

  • Ejemplo: "eventType" : "EVENT"
eventName
  • Utilizamos este parámetro para diferenciar los eventos de conversión de los que no lo son utilizando la lista de conversión de eventos establecida por el marketer en los ajustes de PBA. 
  • Asegúrate de rellenarlo con valores coherentes con la lógica de conversión del marketer.
  • Formato: cadena
  • Ejemplo: "eventName" : "web_purchase"
  • Rellena el campo de raw data: event_name
timestamp No

Hora en que se produjo el evento en milisegundos. Se envía como una marca de tiempo Unix de 13 dígitos.

  • Si no se envía ninguna marca de tiempo, la hora se establece utilizando la hora del servidor. 
  • Los eventos que llegan con retraso se registran con la hora actual del servidor. Por "retraso" se entiende la llegada después de la medianoche UTC del día siguiente al evento. Por ejemplo, un evento que se produzca el lunes debe procesarse antes de la medianoche UTC del martes. 
  • Los eventos que tienen una marca de tiempo en el futuro (relativa a la hora actual del servidor) se marcan con la hora del servidor.
  • Formato: Int
  • Ejemplo: "timestamp" : 1584835200123
  • Rellena el campo de raw data: event_time
eventValue No
Asignación de parámetros del evento que describen el evento. Utiliza este parámetro para enviar eventos in-app enriquecidos, como el SKU del producto y el precio del artículo.
  • Nota sobre los ingresos: Puedes rellenar este parámetro con los detalles de los ingresos. Además, debes rellenar eventRevenue y eventRevenueCurrency.
  • Formato: JSON
  • Ejemplo: Para enviar el SKU ABC123, de color azul y con un precio unitario de $3,99, configura eventValue como:
    {"Purchase": {"sku" : "ABC123", "color": "blue", "unit_price":3.99,"currency": "USD"}}
  • Limitación: 1000 caracteres. Si excedes el límite, se truncará. 
  • Rellena el campo de raw data: event_value
eventRevenueCurrency No

Código de moneda de un evento de ingresos, como código de moneda ISO 4217 de tres caracteres.

  • Valor predeterminado: USD
  • Formato: cadena
  • Ejemplo: "eventRevenueCurrency" : "EUR"
  • Rellena el campo de raw data: event_revenue_currency
eventRevenue No 

Ingresos (valor monetario) asignados a un evento.

Nota: Si los ingresos se reportan en eventValue, indícalo también en eventRevenue y rellena eventRevenueCurrency. 

  • Se admiten valores negativos. Por ejemplo, un reembolso.
  • Formato: flotante 
  • Valores de ejemplo: 1 1.2 1234.20 -1234.20
  • Rellena el campo de raw data: event_revenue
eventCategory No  Este parámetro está obsoleto y se eliminará del sistema en el futuro. Utiliza eventValue en su lugar.
eventLabel No 

Este parámetro está obsoleto y se eliminará del sistema en el futuro. Utiliza eventValue en su lugar.

referrer No

Referente HTTP

  • Formato: cadena
  • Ejemplo:"referrer" : "https://www.google.com/"
  • Rellena el campo de raw data: http_referrer
userAgent No 

Solicitud de agente de usuario enviada por el navegador al servidor.

  • Siempre que sea posible, envía este valor, ya que ayuda a determinar el tipo de dispositivo. 
  • Formato: cadena
  • Ejemplo: "userAgent" : "Chrome/80.0.3987"
  • Rellena el campo de raw data: user_agent
ip No

Dirección IP del usuario

  • Cuando sea posible, envía el valor de este campo. Ayuda a determinar la geolocalización del usuario.
  • Formato: cadena
  • Ejemplo: "ip": "192.0.2.1"
  • Rellena el campo de raw data: ip
 

Ejemplo 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"
		}
	}

}'

Ejemplo 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'))

Pruebas

A modo de prueba, envía varios eventos como se indica a continuación:

  1. Envía un evento.
  2. Asegúrate de obtener un código de retorno 200 OK. Si no es así, tome medidas correctivas utilizando los códigos de retorno y los mensajes de error.
  3. Espere varias horas después de medianoche UTC para ver el evento reportado en el raw data de PBA. Debes esperar porque los datos de PBA se procesan una vez al día. 

Información adicional

Obtener la clave de desarrollador web

 Para obtener la clave de desarrollador web:

  1. En AppsFlyer, ve a la sección Mis aplicaciones.
  2. Haz clic en Ver paquetes de marca.

    GetWebDevKeyPba_us-en.pn

  3. Copia la clave de desarrollador web requerida. 

Extraer el afUserID del SDK web

  • El afUserId es un identificador único, establecido por el SDK web cuando un usuario visita tu sitio por primera vez.
  • Si necesitas el afUserId, utiliza uno de los métodos que se indican a continuación.


Obtener el afUserId del encabezado de la cookie HTTP

  • El afUserId es enviado por el navegador del visitante cuando visita tu sitio web.
  •  Extráelo del encabezado de la cookie HTTP si es necesario.


Ver el afUserId en el navegador del visitante

  •  Visualiza el afUserId en el navegador del visitante, con fines de solución de problemas y depuración.
  • Para que esté disponible, el visitante tiene que haber visitado primero una página que tenga el SDK web al menos una vez. 
  • La cookie que contiene afUserId es una cookie de origen en relación con tu dominio.
  • El procedimiento que sigue se preparó utilizando Chrome 81. Puede haber algunas diferencias entre los distintos navegadores y sistemas operativos.

Para obtener el afUserId del navegador del visitante:

  1. En tu navegador, ve a tu sitio web.
  2. Haz clic con el botón derecho del ratón y selecciona Inspeccionar
    Se abre la ventana de inspección de elementos del navegador.

    S2S_inspect.jpg

  3. Ve a la pestaña (A) Aplicación.
  4. En el menú lateral, (B) expande Cookies.
  5. Selecciona tu sitio web. Si no aparece, actualiza el navegador.
  6. En el (C) filtro, introduce afUserId
    Se muestra el valor de afUserID. 

Códigos de respuesta

Código de respuesta Mensaje Cómo manejarlo
200 OK  
404 No se encuentra
  • Comprueba el punto de conexión 
  • Comprueba que el ID del paquete es correcto
400 Solicitud incorrecta
  • Hay un error en el JSON. Consulta el mensaje de error para obtener más información. 

Resolución de problemas

  • Síntoma: Los códigos de retorno HTTP no se devuelven
    Solución: Agregar los servidores de AppsFlyer a la lista de permitidos

Notas de la versión


Notas de la versión del SDK web
Fecha  Versión del punto de conexión* Notas
12-05-2020 1  Lanzamiento inicial
24-05-2020 1  
* El número de versión se refiere al número de versión del punto de conexión. https://webs2s.appsflyer.com/v1/method