Rudderstack - Destino Singular (Modo Nube)

RudderStack es una plataforma de datos de clientes (CDP) de código abierto que permite a las empresas recopilar, unificar y enrutar los datos de los clientes a diversos destinos. Ofrece una plataforma centralizada para administrar los pipelines de datos de clientes, permitiendo a las organizaciones recopilar fácilmente datos de diversas fuentes, como sitios web, aplicaciones móviles, servidores y servicios en la nube.

Singular puede recibir datos de eventos de Rudderstack a través de las REST API Server-to-Server (S2S) de Singular para actividad móvil de iOS y Android. Esto se conoce como un destino de "Cloud-Mode" . Las instrucciones a continuación ilustran cómo agregar el destino de Singular en Rudderstack.

Guía para Equipos de ingeniería
Requisitos previos Este artículo asume que ya tiene el SDK de Rudderstack para iOS o Android integrado en su aplicación.

Para usar esta integración, debe utilizar los SDK móviles de Rudderstack. Esta integración NO es compatible con datos de eventos no móviles. No se admiten eventos de servidor ni web.

RudderStack admite dos tipos de eventos de track que puede enviar a Singular mediante "Cloud-Mode":

  • Eventos de sesión
  • Eventos personalizados
Qué se admite
  1. Atribución básica de instalaciones
  2. Atribución mediante Google Install Referrer
  3. Compatibilidad con SkAdNetwork versión 3 (modo manual)
  4. Atribución de Apple Search Ads
  5. Seguimiento de eventos in-app personalizados
  6. Seguimiento de ingresos
  7. Custom User ID
  8. Seguimiento de desinstalaciones
  9. Compatibilidad con Limited Data Sharing (consentimiento)
  10. Singular Device ID (SDID) mediante API v2
Qué NO se admite
  1. Compatibilidad con SkAdNetwork versión 4
  2. Modo gestionado de SkAdNetwork para modelos de conversión
  3. Atribución mediante META Install Referrer
  4. Deep linking

Si necesita compatibilidad S2S para la "funcionalidad completa" que ofrece Singular, debe implementar las REST API S2S de Singular de forma independiente de Rudderstack. Consulte la Guía de integración Server-to-Server (S2S) AQUÍ .

Singular Device ID (SDID) y versión de la API

La versión de la API de Singular que utiliza RudderStack depende de los campos de identificador presentes en el evento:

  • Si el Singular Device ID (SDID) está presente en el evento, RudderStack utiliza automáticamente la API v2 de Singular e ignora los identificadores tradicionales específicos de la plataforma ( idfa , andi , idfv , aifa ).
  • De lo contrario, RudderStack recurre a los identificadores específicos de la plataforma y envía el evento utilizando la API v1 de Singular.

Para enviar el Singular Device ID (y, opcionalmente, el consentimiento de intercambio de datos), incluya singularDeviceId y limitDataSharing dentro del objeto integrations.Singular de su evento:

rudderanalytics.track(
  "Order Completed", {
    revenue: 30,
    currency: "USD"
  }, {
    integrations: {
      Singular: {
        singularDeviceId: "SINGULAR_DEVICE_ID",
        limitDataSharing: true  // optional
      }
    }
  }
);

Primeros pasos

  1. Desde su panel de RudderStack , agregue la fuente. Luego, en la lista de destinos, seleccione Singular .
  2. Asigne un nombre a su destino y haga clic en Continuar .

Configuración de la conexión

Para configurar correctamente Singular como destino, debe establecer los siguientes ajustes:



  • API Key: Ingrese aquí su "SDK Key" de Singular. Este es un campo obligatorio.

    Obtenga su "SDK KEY" de Singular, que se encuentra en el Singular Dashboard, en "Developer Tools > SDK Integration > SDK Keys" .


    Nota: Para la integración "Cloud-Mode", SOLO ingresará el valor de la API Key (SDK Key) .
    Deje el campo "Secret" en blanco.

  • Session Event Name: Ingrese los nombres de los eventos que se usarán como eventos de sesión. Este ajuste solo aplica al envío de eventos mediante cloud mode.

    RudderStack envía los eventos de sesión a Singular a través de la API launch de Singular.

    RudderStack considera un evento como evento de sesión solo si está especificado en la configuración del panel o si es uno de los siguientes tres eventos de ciclo de vida :

    • Application Installed
    • Application Opened
    • Application Updated

    RudderStack rastrea automáticamente los tres eventos de ciclo de vida anteriores si el seguimiento de eventos de ciclo de vida está habilitado.

  • Use device mode to send events: Estas opciones deben estar deshabilitadas cuando se usa "Cloud Mode" . Al usar las plataformas Android o iOS, puede habilitar este ajuste para enviar eventos mediante device mode. Luego, siga la guía de Singular Device Mode para conocer los pasos para agregar Singular a su proyecto.
  • Filtrado de eventos del lado del cliente: Especifica qué eventos deben bloquearse o permitirse hacia Singular. Consulta la guía Client-side Events Filtering para obtener más información.
  • Configuración de gestión de consentimiento: Configura los ajustes de gestión de consentimiento para la fuente eligiendo el proveedor de gestión de consentimiento en el menú desplegable e ingresando los IDs de categoría de consentimiento correspondientes. Consulta Consent Management in RudderStack para obtener más información.

Configuración del SDK de Unity

La siguiente configuración se aplica cuando se usa Unity como fuente:

Configuración Descripción
Match ID mapping Usa esta configuración para asignar el match ID de Singular a uno de los siguientes campos de evento: context.device.advertisingId o properties.match_id.

Requisitos de los eventos de sesión

Mapeos de eventos de SESSION admitidos

Atributos capturados automáticamente por los SDK móviles de Rudderstack

Esta sección enumera los mapeos de las propiedades de eventos de RudderStack a los campos correspondientes de Singular.

La siguiente tabla enumera el mapeo de los atributos capturados automáticamente por RudderStack para las plataformas móviles ( Android e iOS ):

Propiedad de RudderStack Atributo de Singular Presencia Descripción
context.os.name
p
Obligatorio La plataforma de origen (Android o iOS).
context.app.namespace
i
Obligatorio El nombre del paquete (Android) o el bundle ID (iOS) de su aplicación.
context.app.version
app_v
Obligatorio La versión de la aplicación.
context.ip / request_ip 
(en ese orden)
ip
Obligatorio La dirección IP del usuario. Consulte la nota a continuación para obtener información sobre cómo anonimizar su IP.
context.os.version
ve
Obligatorio La versión del sistema operativo del dispositivo en el momento de la sesión.
context.device.model
mo
Obligatorio El modelo del dispositivo. Este parámetro debe usarse junto con el parámetro ma.
context.device.manufacturer
ma
Obligatorio La marca del hardware del dispositivo. Este parámetro debe usarse junto con el parámetro mo.
context.locale
lc
Obligatorio La etiqueta de configuración regional IETF del dispositivo, usando un código de idioma y país de dos letras, separados por un guion bajo.
context.device.id
idfv
Obligatorio El IdentifierForVendor sin procesar, en mayúsculas y con guiones. Esto aplica únicamente a las aplicaciones de iOS .
context.device.id
andi
Obligatorio El Android ID sin procesar, en minúsculas. Esto aplica únicamente a las aplicaciones de Android y es obligatorio si el advertising ID (aifa) y el App Set ID (asid) están ausentes. Consulte las preguntas frecuentes a continuación para obtener más información.
context.app.build
bd
Obligatorio La compilación del dispositivo (codificada en URL).
context.device.adTrackingEnabled
dnt
Obligatorio Pase true si do not track (dnt) está deshabilitado (dnt=0); de lo contrario, pase false (dnt=1). Esto se captura automáticamente si pasa el advertising ID al SDK.
context.app.name
n
Opcional El nombre legible de la aplicación tal como se muestra en la interfaz de usuario.
timestamp / originalTimestamp
utime
Opcional La hora de la sesión (en tiempo UNIX).
context.network.wifi
c
Opcional El tipo de conexión (WiFi u operador).
context.network.carrier
cn
Opcional El nombre del operador del proveedor de internet.
integrations.Singular.limitDataSharing
data_sharing_options.limit_data_sharing
Opcional Consentimiento del usuario para el intercambio de datos, codificado como JSON en URL. Debe persistir y pasarse en todas las solicitudes de eventos posteriores.

Para anonimizar su IP, puede enviar una IP de marcador de posición en el campo context.ip . RudderStack la usa como la dirección IP en lugar de capturarla automáticamente desde el backend. En el caso de los SDK móviles, puede aprovechar la función Transformations para hacerlo, al enviar eventos mediante cloud mode .

Atributos que deben pasarse a través de las propiedades del evento

La siguiente tabla enumera el mapeo de los atributos que deben pasarse a través de las propiedades del evento:

Estas propiedades no se conservan en el SDK y deben pasarse con cada evento.

Propiedad de RudderStack Atributo de Singular Presencia Descripción
properties.install_ref
install_ref
Obligatorio La información de Google Install Referrer.
properties.referring_application
install_source
Obligatorio El nombre del paquete de la fuente de instalación en Android. Use getInitiatingPackageName() para obtenerlo.
properties.install_receipt
install_receipt
Obligatorio El recibo recibido de la instalación. Para obtenerlo, siga la guía de iOS Install Receipt .
properties.asid
asid
Obligatorio El App Set ID para dispositivos Android v12+. Obligatorio si el advertising ID (aifa) y el Android ID (andi) están ausentes. Consulte las preguntas frecuentes a continuación para obtener más información.
properties.url
openui
Obligatorio Si la aplicación se abre mediante un deep link/universal link, el valor de la URL del deep link codificada.
context.device.attTrackingStatus
att_authorization_status
Obligatorio El estado de autorización de App Tracking Transparency .
userId
custom_user_id
Opcional El ID de usuario pasado a través de la llamada identify.
properties.attribution_token
attribution_token
Opcional Se usa para atribuir Apple Search Ads en iOS 14.3 y versiones posteriores. Más información aquí .
properties.skan_conversion_value
skan_conversion_value
Opcional El último valor de SkAdNetwork en el momento de la notificación de sesión.
properties.skan_first_call_timestamp
skan_first_call_timestamp
Opcional Timestamp UNIX de la primera llamada realizada a la API de SkAdNetwork.
properties.skan_last_call_timestamp
skan_last_call_timestamp
Opcional Timestamp UNIX de la última llamada realizada a la API de SkAdNetwork en el momento de la notificación de sesión.
properties.install
install
Opcional El indicador de instalación. Establézcalo en true en la primera sesión después de la instalación de la aplicación, o en false en caso contrario. Obligatorio para la capacidad de seguimiento de reinstalaciones.
properties.install_time / timestamp / originalTimestamp
install_time
Opcional La hora de instalación (en tiempo UNIX).
properties.update_time / timestamp / originalTimestamp
update_time
Opcional La hora de actualización (en tiempo UNIX).
Atributos que deben pasarse a través de las propiedades del evento una sola vez:

La siguiente tabla enumera el mapeo de los atributos que deben pasarse a través de las propiedades del evento una sola vez:

Estas propiedades se conservan en el SDK y deben pasarse una sola vez.

Propiedad de RudderStack Atributo de Singular Presencia Descripción
context.device.token
fcm
Opcional El token de dispositivo de Firebase Cloud Messaging. Es obligatorio para el seguimiento de desinstalaciones en Android.
context.device.token
apns_token
Opcional El token de dispositivo de Apple Push Notification Service. Es obligatorio para el seguimiento de desinstalaciones en iOS.
context.device.advertisingId
idfa
Obligatorio El advertising ID sin procesar, en mayúsculas y con guiones. Esto aplica únicamente a las aplicaciones de iOS .
context.device.advertisingId
aifa
Obligatorio Este es el advertising ID sin procesar, en minúsculas y con guiones. Esto aplica únicamente a las aplicaciones de Android . Obligatorio si el App Set ID (asid) y el Android ID (andi) están ausentes. Consulte las preguntas frecuentes a continuación para obtener más información.

Para obtener más información sobre cómo establecer el token de dispositivo, consulte la documentación correspondiente del SDK:

RudderStack solo admite fcm para mapear el token de dispositivo.

Requisitos de los eventos personalizados

RudderStack envía todos los eventos que no sean eventos de sesión como eventos personalizados a través del endpoint evt de Singular.

Mapeos de EVENT admitidos

Atributos capturados automáticamente por los SDK móviles de Rudderstack

Esta sección enumera los mapeos de las propiedades de eventos de RudderStack a los campos correspondientes de Singular.

La siguiente tabla enumera el mapeo de los atributos capturados automáticamente por RudderStack para las plataformas móviles ( Android e iOS ):

Propiedad de RudderStack Atributo de Singular Presencia Descripción
context.os.name
p
Obligatorio La plataforma de origen (Android o iOS).
context.app.namespace
i
Obligatorio El nombre del paquete (Android) o el bundle ID (iOS) de su aplicación.
context.ip / request_ip 
(en el mismo orden)
ip
Obligatorio La dirección IP del usuario.
context.device.advertisingId
idfa
Obligatorio El IdentifierForVendor sin procesar, en mayúsculas y con guiones. Esto aplica únicamente a las aplicaciones de iOS .
context.device.advertisingId
aifa
Obligatorio Este es el advertising ID sin procesar, en minúsculas y con guiones. Esto aplica únicamente a las aplicaciones de Android . Obligatorio si el App Set ID (asid) y el Android ID (andi) están ausentes. Consulte las preguntas frecuentes a continuación para obtener más información.
context.device.id
idfv
Obligatorio El IdentifierForVendor sin procesar, en mayúsculas y con guiones. Esto aplica únicamente a las aplicaciones de iOS .
context.device.id
andi
Obligatorio El Android ID sin procesar, en minúsculas. Esto aplica únicamente a las aplicaciones de Android y es obligatorio si el advertising ID (aifa) y el App Set ID (asid) están ausentes. Consulte las preguntas frecuentes a continuación para obtener más información.
context.os.version
ve
Obligatorio La versión del sistema operativo del dispositivo en el momento de la sesión.
timestamp / originalTimestamp
utime
Opcional La hora de la sesión (en tiempo UNIX).
integrations.Singular.limitDataSharing
data_sharing_options.limit_data_sharing
Opcional Consentimiento del usuario para el intercambio de datos, codificado como JSON en URL. Debe persistir y pasarse en todas las solicitudes de eventos posteriores.

Singular prefiere aifa sobre asid y asid sobre andi (en Android) e idfa sobre idfv (en iOS).

Atributos que deben pasarse a través de las propiedades del evento

La siguiente tabla enumera el mapeo de los atributos que deben pasarse a través de las propiedades del evento:

Estas propiedades no se conservan en el SDK y deben pasarse con cada evento.

Propiedad de RudderStack Atributo de Singular Presencia Descripción
event
n
Obligatorio El nombre del evento. Este es definido por el usuario .
context.device.attTrackingStatus
att_authorization_status
Obligatorio El estado de autorización de App Tracking Transparency .
userId
custom_user_id
Opcional El ID de usuario pasado a través de la llamada identify.
properties.skan_conversion_value
skan_conversion_value
Opcional El último valor de SkAdNetwork en el momento de la notificación de sesión.
properties.skan_first_call_timestamp
skan_first_call_timestamp
Opcional Timestamp UNIX de la primera llamada realizada a la API de SkAdNetwork.
properties.skan_last_call_timestamp
skan_last_call_timestamp
Opcional Timestamp UNIX de la última llamada realizada a la API de SkAdNetwork en el momento de la notificación de sesión.
properties.eventAttributes
e
Opcional Los atributos personalizados del evento en formato JSON. Debe pasarlos con cada evento, ya que no se conservan en el SDK.
properties.is_revenue_event
is_revenue_event
Opcional Determina si un evento es un evento de ingresos. Debe pasarlo a través de las propiedades con cada evento, ya que no se conserva en el SDK.
properties.receipt_signature
receipt_signature
Opcional La firma del recibo.
Atributos definidos por el usuario específicos de los eventos de ingresos

La siguiente tabla enumera el mapeo de los atributos definidos por el usuario específicos de los eventos de ingresos:

Propiedad de RudderStack Atributo de Singular Presencia Descripción
properties.total/ properties.value / properties.revenue
amt
Opcional El monto de la moneda.
properties.currency
cur
Opcional El código de moneda de tres letras ISO 4217. Debe usarse junto con el parámetro amt.
properties.purchase_receipt
purchase_receipt
Opcional El recibo recibido de una compra.
properties.product_id/properties.sku
purchase_product_id
Opcional El identificador SKU del producto.
properties.orderId / properties.purchase_transaction_id
(en ese orden)
purchase_transaction_id
Opcional El identificador de la transacción.

Si establece cualquiera de las propiedades value, revenue o total , RudderStack considera automáticamente el evento como un evento de ingresos, a menos que se indique explícitamente mediante la propiedad is_revenue_event .

A continuación se enumeran algunas consideraciones importantes en el caso de los eventos personalizados:

  • RudderStack toma el user agent de context.userAgent para Android y de las propiedades del evento en el caso de iOS.
  • RudderStack almacena los atributos adicionales pasados en el evento personalizado en el campo e de Singular.

Pruebas

¿Cómo puedo verificar si los eventos se entregan correctamente a Singular?

Para verificar si los eventos se entregan correctamente a Singular, puede usar la función Destination live events de RudderStack.

También puede verificar la entrega de eventos accediendo a su Singular dashboard y siguiendo estos pasos:

Siga la guía detallada aquí sobre cómo usar la Testing Console

  1. Vaya a "Developer Tools > Testing Console" .

  2. Haga clic en Add Device e ingrese el identificador de dispositivo correspondiente:

  3. Debería poder ver un registro en tiempo real de todos los eventos enviados a Singular:

Preguntas frecuentes

¿Qué atributos de device ID se requieren para Android?

Para las solicitudes de Android, Singular requiere uno de los siguientes atributos, en este orden de preferencia:

  1. aifa
  2. asid
  3. andi

Si ninguno de ellos está disponible, debe enviar al menos uno con un valor vacío (en lugar de null o undefined). Si los envía todos, RudderStack descarta el atributo andi conforme a las políticas de datos de Google.