Resumen: Exporta datos de medición de rendimiento web desde Data Locker en dos tipos de reportes que te permiten analizar el rendimiento del sitio web al nivel adecuado. Usa End User Events para analizar todas las visitas y eventos, y Conversions para contar y atribuir anclas de conversión únicas (primeras visitas, revisitas y eventos de adquisición de usuarios).
Importante:
Debes tener una suscripción a Data Locker para acceder a los reportes de medición de rendimiento web en Data Locker.
Acerca de los reportes de medición de rendimiento web
Data Locker proporciona dos reportes para la medición de rendimiento web, End User Events y Conversions, cada uno diseñado para distintas necesidades de análisis.
- El reporte Web End User Events es la fuente principal para analizar la actividad del sitio web:
- Incluye todos los eventos web y todas las visitas
- Registra cada visita como una sesión atribuida
SESSION - Ideal para reportes a nivel de visita y nivel de evento
- El reporte Conversions es el más adecuado para el análisis a nivel de conversión. Una conversión es un ancla de atribución, un punto de contacto que determina cuándo y cómo asignar el crédito de marketing. Esto incluye:
- primeras visitas (cuando un usuario llega a tu sitio web por primera vez),
- revisitas (cuando un usuario vuelve después de un engagement con un anuncio no orgánico), y
- eventos de adquisición de usuarios (eventos personalizados como registro o primer depósito) que indican que se ha adquirido un usuario.
- Todos los eventos de usuario se vinculan posteriormente a estas conversiones y heredan los detalles de la campaña
Campos de reporte
Para conocer qué campos contienen los reportes, descarga un ejemplo de cada reporte:
El reporte de ejemplo incluye todos los campos del reporte y sus valores. Para ver las definiciones de los campos, consulta el diccionario de campos.
Frecuencia del reporte y actualización de los datos
Usa estos detalles para entender cuándo se añaden datos nuevos y cuándo los eventos recientes pasan a estar disponibles en el reporte.
- Frecuencia del reporte: Se añaden datos nuevos cada hora.
- Actualización de los datos: Los eventos suelen aparecer en el reporte en un plazo de 2 a 3 horas desde que se producen.
Así es como funciona cada lote:
- Cada lote procesa eventos de una ventana de 1,5 horas.
- Dentro de esa ventana, solo se atribuyen los eventos de la primera hora.
- Los 30 minutos restantes se usan únicamente para enriquecer los eventos atribuidos con IDs de usuario de cliente (CUIDs).
- Los 30 minutos más recientes de eventos todavía no se atribuyen; se incluirán en el siguiente lote.
¿Cuándo aparecerán estos eventos en el reporte?
Los eventos se escriben en los reportes cuando termina el procesamiento. Por ejemplo, los eventos de 08:00–09:00, atribuidos en el lote de las 10:00, aparecerán en la versión del reporte de las 11:00.
Ejemplo: qué hace el lote de las 10:00
| Fecha | Reporte disponible en | Eventos web atribuidos (hora del evento) | Eventos web procesados para enriquecer eventos anteriores con CUIDs |
|---|---|---|---|
| 01-28-2026 | 11:00 | 08:00 — 09:00 | 09:00-09:30 |
| 01-28-2026 | 12:00 | 09:00 — 10:00 | 10:00-10:30 |
| 01-28-2026 | 13:00 | 10:00 — 11:00 | 10:00-11:30 |
Cómo acceder a los datos del reporte en tu cloud bucket
Para obtener más información sobre cómo acceder a los datos del reporte en tu cloud bucket, consulta la estructura de carpetas de Data Locker.
Consideraciones para desarrolladores de BI
Diferencias clave: Web frente a móvil
La atribución web difiere de la atribución móvil tanto en los identificadores como en la lógica de los datos. Para mejorar la precisión de los datos, aplica los siguientes filtros y mejores prácticas en tus consultas.
| Aspecto | Móvil | Web |
|---|---|---|
| Filtro de plataforma |
platform = 'IOS' o platform = 'ANDROID'
|
platform = 'WEBSITE' |
| Identificador de usuario (valor) |
appsflyer_id (basado en el dispositivo) |
appsflyer_id_value (basado en cookies) |
| Tipo de identificador | Varía según el dispositivo |
appsflyer_id_type siempre es web_id
|
| Evento de adquisición | Solo disponible en reportes avanzados. | First Visit es el valor predeterminado, pero la adquisición de usuarios se puede personalizar |
| Reengagement | RE-ENGAGEMENT |
REVISITA |
| Reatribución | Compatible | No compatible: la web solo tiene adquisición de usuarios y revisitas |
| Identificación de la aplicación | ID de la app (p. ej., id123456789) |
Dominio con prefijo (p. ej., website-www.example.com) |
¿Qué tabla consultar?
El reporte de Eventos de usuario final es adecuado para la mayoría de los análisis. Incluye todos los eventos y visitas del sitio web. En este reporte, cada visita web también se registra como una SESSION atribuida, lo que lo convierte en la fuente principal para reportar a nivel de visita y de evento.
La tabla de conversiones es adecuada principalmente para contar primeras visitas, revisitas y adquisiciones de usuarios cuando necesitas conversiones únicas sin registros de eventos duplicados.
| Caso de uso | Tabla | ¿Por qué? |
|---|---|---|
| Contar visitas/sesiones | end_user_events |
Cada fila es una sesión o un evento |
| Contar conversiones únicas | conversiones |
Evita duplicados |
| Analiza los eventos in-app |
end_user_events con end_user_event_type = 'IN_APP'
|
Solo los eventos in-app tienen nombres de evento |
Implementar filtros de consulta
Para garantizar la precisión de los datos en tus consultas de raw data, aplica los siguientes filtros. Si no los implementas, el resultado será entradas duplicadas y métricas mezcladas entre plataformas.
-
Filtrar por plataforma (obligatorio): Incluye
WHERE platform = 'WEBSITE'para aislar los datos de origen web y excluir los registros de entornos móviles, PC o CTV. -
Filtrar por crédito de atribución (obligatorio): La misma acción del usuario puede aparecer dos veces en
end_user_eventsporque AppsFlyer puede asignarle dos créditos de atribución diferentes, según la vista de reporte.Esto puede ocurrir cuando el usuario tiene:
- una fuente original de Adquisición de usuarios (UA) y, más adelante,
- una fuente de re-engagement.
En ese caso, AppsFlyer puede escribir dos registros para el mismo evento:
-
Crédito principal: atribuye el evento a la interacción de marketing relevante más reciente. Se usa en las vistas Unificada y Retargeting.
Para evitar el recuento doble, consulta
end_user_eventsusando solo el registro de crédito principal de forma predeterminada:WHERE platform = 'WEBSITE' AND is_primary_attribution = true -
Crédito secundario: atribuye el evento a la fuente de UA original. Se usa en la vista Adquisición de usuarios para el seguimiento del valor del ciclo de vida (LTV).
Como la misma acción del usuario puede almacenarse como dos registros (uno con crédito principal y otro con crédito secundario), contar eventos sin un filtro puede contabilizar esa acción dos veces.
Usa estas consultas como plantillas para analizar datos de atribución web en BigQuery u otras herramientas de BI.
-
Filtrar por tipo de conversión (opcional): Incluye
WHERE conversion_type = 'USER_ACQUISITION'oWHERE conversion_type = 'RETARGETING'para aislar los datos de atribución según el tipo de campaña.
Tabla de resumen de filtros
| Requisito del filtro | Lógica SQL | Contexto de implementación |
|---|---|---|
| Especificación de la plataforma | WHERE platform = 'WEBSITE' |
Aísla los datos de origen web de los registros de otras plataformas. |
| Vista unificada (evita duplicados) | WHERE is_primary_attribution = true AND plataforma = 'WEBSITE' |
Prioriza el crédito de la campaña de retargeting sobre la campaña de UA original. Úsalo para reportes generales y evitar el doble conteo. |
| Vista solo de retargeting | WHERE conversion_type = 'RETARGETING' AND plataforma = 'WEBSITE' |
Úsalo específicamente cuando analices el rendimiento solo de las campañas de retargeting. |
| Vista solo de adquisición de usuarios | WHERE conversion_type = 'USER_ACQUISITION' AND plataforma = 'WEBSITE' |
Úsalo específicamente en vistas centradas en la adquisición, donde los eventos deben vincularse a la visita inicial. |
Identificación y recuento de usuarios finales
En raw data de Web Performance Measurement, un usuario final puede aparecer con dos ID distintos:
-
customer_user_id: Un identificador estable que configuras tú (normalmente para usuarios que han iniciado sesión). -
appsflyer_id_value: Un ID basado en cookies que puede caducar con el tiempo.
Para identificar correctamente a los usuarios únicos y calcular métricas a nivel de usuario, usa siempre:
COALESCE(customer_user_id, appsflyer_id_value)
Así es como funciona:
- Si existe
customer_user_id, AppsFlyer lo usa (preferido y estable). - Si no, AppsFlyer recurre a
appsflyer_id_value.
Usa COALESCE(customer_user_id, appsflyer_id_value) siempre que necesites:
- Contar usuarios distintos
- Agrupar por usuario
- Filtrar por usuarios específicos
- Unir tablas por usuario
- Calcular cualquier métrica a nivel de usuario
Ejemplo: contar usuarios distintos
SELECT
COUNT(DISTINCT COALESCE(customer_user_id, appsflyer_id_value)) AS unique_users
FROM `end_user_events`
WHERE platform = 'WEBSITE'
AND is_primary_attribution = TRUE
Tráfico orgánico vs. no orgánico
Utiliza el campo is_organic:
| Tipo de tráfico | Filtro |
|---|---|
| Utilizando la dirección IP del dispositivo reportada por el SDK. | is_organic = true |
| No orgánicas | is_organic = false |
Gestión de valores vacíos
| Tipo de datos | Valor vacío |
|---|---|
| Cadena |
'' (cadena vacía) |
| Suscripción IAP | NULL |
Ejemplos de consultas
1. Total de visitas por fuente de medios (7 días)
Cuenta las sesiones web atribuidas a cada fuente de medios.
SELECT media_source, COUNT(*) AS total_visits
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
AND end_user_event_type = 'SESSION'
GROUP BY media_source
ORDER BY total_visits DESC
2. Primeras visitas y revisitas por campaña
SELECT campaign_name, conversion_name, COUNT(*) AS conversion_count
FROM conversions
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND conversion_name IN ('FIRST_VISIT', 'REVISIT')
GROUP BY campaign_name, conversion_name
ORDER BY conversion_count DESC
3. Contar nombres de evento distintos (solo eventos in-app)
SELECT
event_name,
COUNT(*) AS event_count
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
AND end_user_event_type = 'IN_APP'
GROUP BY event_name
ORDER BY event_count DESC4. Contar usuarios distintos por fuente de medios
SELECT
media_source,
COUNT(DISTINCT COALESCE(customer_user_id, appsflyer_id_value)) AS unique_users
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
GROUP BY media_source
ORDER BY unique_users DESC5. Tasa de conversión: de First Visit a Purchase (unión entre tablas)
WITH first_visits AS (
SELECT
COALESCE(customer_user_id, appsflyer_id_value) AS user_id,
media_source
FROM conversions
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND conversion_name = 'FIRST_VISIT'
),
purchases AS (
SELECT DISTINCT
COALESCE(customer_user_id, appsflyer_id_value) AS user_id
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
AND end_user_event_type = 'IN_APP'
AND event_name = 'purchase'
)
SELECT
fv.media_source,
COUNT(DISTINCT fv.user_id) AS first_visit_users,
COUNT(DISTINCT p.user_id) AS purchasers,
SAFE_DIVIDE(COUNT(DISTINCT p.user_id), COUNT(DISTINCT fv.user_id)) AS conversion_rate
FROM first_visits fv
LEFT JOIN purchases p ON fv.user_id = p.user_id
GROUP BY fv.media_source
ORDER BY conversion_rate DESC6. Ingresos por campaña (últimos 7 días)
SELECT
campaign_name,
media_source,
SUM(revenue_usd) AS total_revenue_usd,
COUNT(*) AS revenue_events
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
AND revenue_usd IS NOT NULL
AND revenue_usd <> 0.0
GROUP BY campaign_name, media_source
ORDER BY total_revenue_usd DESC7. Primeras visitas orgánicas vs. no orgánicas por día
SELECT
DATE(event_time) AS visit_date,
CASE WHEN is_organic = true THEN 'Organic' ELSE 'Non-Organic' END AS traffic_type,
COUNT(*) AS first_visits
FROM conversions
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND conversion_name = 'FIRST_VISIT'
GROUP BY visit_date, traffic_type
ORDER BY visit_date, traffic_type8. Desglose de adquisición de usuarios vs. retargeting
SELECT
conversion_type,
conversion_name,
COUNT(*) AS conversions
FROM conversions
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
GROUP BY conversion_type, conversion_name
ORDER BY conversions DESC9. Distribución de ID de clic (Google, Meta, TikTok, etc.)
SELECT
click_id_type,
COUNT(*) AS events_with_click_id
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
AND click_id_type != ''
GROUP BY click_id_type
ORDER BY events_with_click_id DESC
10. Agrupa a los usuarios en cohortes por fecha de conversión (equivalente a la fecha de instalación en móvil)
SELECT
DATE(event_time__conversion) AS cohort_date,
media_source,
COUNT(DISTINCT COALESCE(customer_user_id, appsflyer_id_value)) AS cohort_users
FROM end_user_events
WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND platform = 'WEBSITE'
AND unified_app_id = 'website-example.com'
AND is_primary_attribution = true
GROUP BY cohort_date, media_source
ORDER BY cohort_date, cohort_users DESCEspecificaciones y limitaciones
Los siguientes campos no son compatibles con los datos web y siempre estarán vacíos:
| Caducado | Nota |
|---|---|
advertising_id_type, hardware_id_type, etc. |
Ambos |
agency, site_id, ad_type
|
Ambos |
platform_group |
conversiones |
app_version__conversion |
end_user_events |
Todos los campos __assist_*
|
conversiones |
This article was translated automatically and may contain errors. The English version is the most accurate - use the language selector below to switch.