En esta página, se describe el objeto de eventos del usuario, incluida la enumeración de posibles tipos de eventos del usuario, y se proporcionan datos de muestra para todos ellos.
Para configurar tus eventos de usuario, sigue estos pasos:
Importa eventos históricos de usuarios.
Registra eventos de usuario en vivo.
Etiqueta los eventos de usuario con entidades.
Marca los eventos de usuario con tokens de atribución.
Vertex AI Search para venta minorista usa eventos de usuario en tiempo real para generar recomendaciones y resultados de la búsqueda. Cuando subes datos, tanto las recomendaciones como la búsqueda pueden usarlos, por lo que no es necesario subir los mismos eventos dos veces si usas ambos servicios.
Para obtener ayuda con el registro de eventos de usuario, consulta Registra eventos de usuarios en tiempo real.
Tipos de eventos del usuario
Existen varios tipos de eventos de usuarios que puedes registrar a medida que los usuarios exploran tu sitio de venta minorista:
Nombre del evento del usuario | Acción del usuario |
---|---|
add-to-cart | Agrega el producto al carrito. |
category-page-view | Visualiza páginas especiales, como páginas de ofertas o de promociones. |
detail-page-view | Visualiza la página de detalles del producto. |
home-page-view | Visualiza la página principal. |
purchase-complete | Completa la confirmación de la compra. |
búsqueda | Busca en el catálogo. |
shopping-cart-page-view | Visualiza el carrito de compras. |
Para obtener información detallada sobre el objeto UserEvent, consulta UserEvent.
Prioridad del tipo de evento
Si quieres obtener resultados de la mayor calidad, te recomendamos que registres los eventos de usuario para todos los tipos de eventos. En la siguiente tabla, se describe la prioridad de los diferentes tipos de eventos del usuario. Debes registrar los eventos de usuario con mayor prioridad para lograr modelos de datos de calidad.
Prioridad | Eventos del usuario |
---|---|
Obligatorio para el experimento inicial en vivo |
|
Importante para mejorar la calidad del modelo de recomendaciones a lo largo del tiempo |
Requisitos y prácticas recomendadas para eventos del usuario
En las siguientes tablas, se enumeran los requisitos y las prácticas recomendadas para los tipos de eventos de usuario que usan las recomendaciones y la búsqueda. Verifica que tus eventos de usuario cumplan con estos requisitos para que Vertex AI Search for Retail pueda generar resultados de calidad.
En esta sección, se enumera lo siguiente:
- Requisitos para los eventos de usuario: Requisitos generales para los eventos de usuario. Estos requisitos se aplican independientemente de si usas las recomendaciones y la búsqueda.
- Requisitos específicos de Recomendaciones: Requisitos de los eventos de usuario para las recomendaciones.
- Requisitos específicos de la Búsqueda: Requisitos de los eventos de usuario para la Búsqueda.
Si usas modelos de recomendaciones, también consulta los requisitos de datos de tipo de modelo, en los que se enumeran requisitos adicionales según el tipo de modelo de recomendación y el objetivo de optimización que planeas usar.
Puedes ver las métricas de calidad de los datos de la búsqueda en la página Calidad de los datos de la consola de Search for Retail. Estas métricas muestran los porcentajes de productos y eventos de usuario que cumplen con los estándares de calidad de los datos recomendados. Si quieres obtener información para ver la calidad de los datos de búsqueda, consulta Desbloquea los niveles de rendimiento de la búsqueda.
Requisitos para los eventos del usuario
Asegúrate de que tus eventos de usuario cumplan con los siguientes requisitos para que Vertex AI Search for Retail pueda generar resultados de calidad. Se aplican a las recomendaciones y a la búsqueda.
Tipo de evento | Requisito | Impacto |
---|---|---|
Todos los eventos |
No incluyas datos sintéticos ni eventos duplicados. |
Los eventos sintéticos o duplicados afectan de forma negativa la calidad del modelo y, a menudo, impiden que entrenamiento de modelos correctamente. Los eventos duplicados pueden causar valores de métricas incorrectos. |
Incluye al menos 100 ID de visitantes únicos para cada tipo de evento transferido. |
Esto garantiza que Vertex AI Search para venta minorista tenga suficientes datos para generar resultados de calidad. |
|
Los IDs de visitante deben tener el mismo formato en la importación de eventos o su registro, y en las solicitudes a la API. |
El uso de un formato coherente para los IDs de visitante ayuda a identificar correctamente los patrones de los visitantes y a proporcionar resultados de mejor calidad en función del comportamiento de los usuarios. |
|
Los productos incluidos en los eventos deben existir en tu catálogo de productos. |
La proporción de eventos no unidos debe mantenerse lo más baja posible. Una proporción alta puede tener un impacto negativo en la calidad de las recomendaciones o los resultados de la búsqueda. Los datos de eventos no unidos no se usan para entrenar modelos. Sin embargo, los eventos no unidos se pueden unir más adelante, después de que se hayan transferido los productos asociados. Para obtener más información, consulta Cómo volver a unirte a eventos de usuario. |
|
Algunos eventos de usuario deben tener el mismo ID de visitante. |
Para construir historias de secuencias de comportamiento válidas, la Búsqueda de Vertex AI para venta minorista debe poder ver varios eventos con el mismo ID de visitante.
Por ejemplo, |
|
detail-page-view |
Incluye exactamente un producto por evento. |
No se puede usar el evento si no existe ningún producto. Si se incluyen varios productos, el evento tiene un formato incorrecto y no se puede usar. |
add-to-cart |
Incluye exactamente un producto por evento. |
Si se incluyen varios productos, el evento tiene un formato incorrecto y no se puede usar. |
purchase-complete |
Incluye |
Los eventos |
Incluye exactamente un No hay un código de moneda predeterminado; se debe proporcionar uno. |
Los eventos de compra sin este campo dan como resultado métricas de ingresos incorrectas. |
|
Verifica que algunos eventos de compra incluyan varios productos. |
Tener algunos eventos de compra con varios productos ayuda al modelo a aprender patrones de compra conjunta. |
Requisitos específicos de Recomendaciones
Si usas recomendaciones, asegúrate de que tus eventos de usuario cumplan con los siguientes requisitos.
Si usas modelos de recomendaciones, también consulta los requisitos de datos de tipo de modelo, en los que se enumeran requisitos adicionales según el tipo de modelo de recomendación y el objetivo de optimización que planeas usar.
Tipo de evento | Requisito | Impacto |
---|---|---|
purchase-complete |
No compactes las cestas de varios artículos en varios eventos de compra. Deberían permanecer como eventos únicos de compra que incluyan varios productos. |
Esto garantiza que se generen patrones de compra en conjunto válidos. |
Requisitos de búsqueda
Si usas la búsqueda, asegúrate de que tus eventos de usuario cumplan con los siguientes requisitos mínimos para obtener resultados.
Tipo de evento | Requisito | Impacto |
---|---|---|
search |
|
No incluir este campo puede tener un impacto negativo grave en la calidad del resultado de la búsqueda y las métricas. |
El ID de visitante en las solicitudes de búsqueda debe coincidir con el ID de visitante enviado en eventos relacionados con esa solicitud de búsqueda. |
Si no coinciden, los eventos tienen un formato incorrecto y las métricas pueden ser incorrectas. |
|
La lista de ID de productos en los eventos de búsqueda debe coincidir con la lista de productos que se muestra al usuario en su totalidad. |
Si no coinciden, el impacto negativo en la calidad de los resultados de la búsqueda puede ser grave y las métricas serán incorrectas. |
|
Si la búsqueda usa un filtro, |
Si este campo no existe, Vertex AI Search for Retail no puede usar la parte del filtro de los datos, lo que puede afectar de forma negativa la calidad de los resultados de la búsqueda. |
|
Incluye el campo |
Si no incluyes un token de atribución, se activará un error en la Búsqueda para comercios y se tendrá un impacto negativo grave en la calidad de la búsqueda y la exactitud de las métricas. |
Requisitos de optimización de la búsqueda
Para permitir que la búsqueda optimice automáticamente la experiencia de búsqueda según las tendencias generales de los usuarios, sube los siguientes datos.
Los eventos deben subirse al menos a diario con una demora máxima de 24 horas.
Métrica de eventos | Volumen o frecuencia de eventos | Descripción |
---|---|---|
Volumen de eventos de search |
250,000 en los últimos 90 días |
Se exigen al menos 250,000 eventos en los últimos 90 días para optimizar la experiencia de búsqueda en función de los eventos transferidos.
Recomendamos subir eventos al menos una vez al día para mantener una buena calidad de los datos. Durante las importaciones de eventos históricos, asegúrate de que la distribución de datos se incline hacia la marca de tiempo más reciente. La cantidad de eventos del último día de la marca de tiempo debe ser igual o superior al recuento promedio de eventos diarios. |
Volumen de detail-page-view atribuible a un
evento search |
500,000 en los últimos 30 días | Se exigen al menos 500,000 eventos para optimizar los resultados de la búsqueda con eventos de usuario. |
Cantidad promedio de eventos detail-page-view atribuibles a un evento search por producto |
10 en los últimos 30 días | Obligatorio para optimizar los resultados de la búsqueda con los eventos transferidos, a menos que se suban los eventos de los últimos 21 días. |
Proporción de eventos search con filtros analizables |
0.1 en los últimos 30 días | Se recomienda para optimizar el orden de las facetas dinámicas en la respuesta de búsqueda. |
Proporción de productos buscados con precio | 0.95 en los últimos 30 días | Obligatorio para optimizar los resultados de la búsqueda con los eventos transferidos. |
Cantidad promedio de eventos add-to-cart atribuibles a un evento search por producto con precio |
0.5 en los últimos 30 días | Se recomienda para los resultados de la búsqueda optimizados para los ingresos. |
Cantidad promedio de eventos purchase-complete atribuibles a un evento search por producto con precio que se puede buscar |
0.5 en los últimos 30 días | Se recomienda para los resultados de la búsqueda optimizados para los ingresos. |
Requisitos de personalización de la Búsqueda
La Búsqueda requiere los siguientes datos para personalizar la búsqueda de texto y explorar los resultados de la búsqueda de tus usuarios en función de su actividad.
Después de subir los siguientes datos, la búsqueda puede personalizar los resultados automáticamente.
Métrica de eventos | Volumen o frecuencia de eventos | Descripción |
---|---|---|
Volumen de eventos de search que entrega la búsqueda |
100,000 en los últimos 30 días |
Se requieren al menos 100,000 eventos publicados por la búsqueda en los últimos 30 días para proporcionar personalización.
|
Los resultados de la búsqueda no se almacenan en caché | Menos del 1% de los 100,000 eventos de usuario más recientes |
No almacenes en caché los resultados de la búsqueda de texto ni las búsquedas de exploración si planeas usar la personalización. El uso de los mismos resultados para todos los visitantes impide que la búsqueda proporcione resultados realmente personalizados a cualquier usuario determinado y corre el riesgo de exponer los datos privados de los usuarios. La Búsqueda desactiva automáticamente la personalización si se detecta el almacenamiento en caché. Si solo almacenas en caché los resultados de la búsqueda, la búsqueda aún puede personalizar los resultados de la navegación. Por el contrario, si solo almacenas en caché los resultados de la navegación, la Búsqueda aún puede personalizar los resultados de la búsqueda de consultas de texto. |
Coincidencia de ID de visitante entre SearchRequests y los eventos del usuario
|
Más del 10% de coincidencias para los 100,000 eventos de usuario más recientes |
Asegúrate de que el espaciado y el formato del ID de visitante coincidan en SearchRequests y los eventos del usuario. El formato coherente del ID de visitante garantiza que la búsqueda pueda identificar la actividad del usuario correctamente.
|
Ejemplos y esquemas de los tipos de eventos del usuario
En esta sección, se proporcionan los formatos de datos para cada tipo de evento admitido.
Se proporcionan ejemplos de JavaScript Pixel y Tag Manager. En el caso de BigQuery, se proporciona el esquema de tabla completo para cada tipo.
Para todos los tipos de eventos de usuario, userId
es opcional. Los campos de información del producto (priceInfo
y availability
) son opcionales.
Ten en cuenta lo siguiente:
- El campo
experimentIds
solo es necesario si ejecutas un experimento de A/B. - El campo
attributionToken
es obligatorio solo para Vertex AI Search para la venta minorista. Se usa para medir el rendimiento. Los eventospredict
,search
ydetail-page-view
que se generan a partir de clics deben tener un token de atribución para vincular los eventos a las búsquedas o recomendaciones que los generaron. - Asegúrate de que todos tus eventos usen una moneda única, en especial si planeas usar la consola de Google Cloud para obtener métricas de ingresos. La API de Vertex AI Search for Retail no admite el uso de varias monedas por catálogo.
Para obtener más detalles sobre el objeto de evento de usuario, consulta la documentación de referencia de la API de UserEvent
.
Agregar al carrito
A continuación, se muestra el formato del evento de usuario add-to-cart
.
Objeto add-to-cart mínimo requerido
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario add-to-cart
.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "add-to-cart", "visitorId": "visitor-id", "productDetails": [{ "product": { "id": "product-id" }, "quantity": { "value": product-quantity }] };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'add-to-cart', 'visitorId': 'visitor-id', // You can also define the visitor ID // directly on the Tag Manager tag. 'productDetails': [{ 'product': { 'id': 'product-id' }, 'quantity': product-quantity }] } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "experimentIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] }, { "name": "quantity", "type": "INTEGER", "mode": "REQUIRED" } ] }, { "name": "cartId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "ipAddress", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" }, { "name": "directUserRequest", "type": "BOOLEAN", "mode": "NULLABLE" } ] }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageViewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Vista de página de categoría
A continuación, se muestra el formato del evento de usuario category-page-view
.
Objeto category-page-view mínimo requerido
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario category-page-view
.
Si bien, por lo general, solo hay una categoría asociada a una página, el campo pageCategories
también admite una jerarquía de categorías, que puedes proporcionar como una lista.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "category-page-view", "visitorId": "visitor-id", "pageCategories": ["category1 > category2"] };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'category-page-view', 'visitorId": 'visitor-id', // You can also define the user ID and visitor ID // directly on the Tag Manager tag. 'pageCategories': ['category1 > category2'] } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "experimentIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] } ] }, { "name": "pageCategories", "type": "STRING", "mode": "REPEATED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "ipAddress", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" }, { "name": "directUserRequest", "type": "BOOLEAN", "mode": "NULLABLE" } ] }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageViewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Vista de página de detalles
A continuación, se muestra el formato de datos del evento de usuario detail-page-view
.
Objeto detail-page-view mínimo requerido
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario detail-page-view
.
En la mayoría de los casos, productDetails
contiene detalles del producto asociado, a menos que un paquete de artículos se venda de forma conjunta.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "detail-page-view", "visitorId": "visitor-id", "productDetails": [{ "product": { "id": "product-id" } }] };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'detail-page-view', 'visitorId': 'visitor-id', // You can also define the visitor ID directly on // the Tag Manager tag. 'productDetails': [{ 'product': { 'id': 'product-id' } }] } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "experimentIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] } ] }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "ipAddress", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" }, { "name": "directUserRequest", "type": "BOOLEAN", "mode": "NULLABLE" } ] }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageViewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Vista de página principal
A continuación, se muestra el formato del evento de usuario home-page-view
.
Objeto home-page-view mínimo requerido
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario home-page-view
.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "home-page-view", "visitorId": "visitor-id", };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'home-page-view', 'visitorId': 'visitor-id' // You can also define the visitor ID // directly on the Tag Manager tag. } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "experimentIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] }, { "name": "quantity", "type": "INTEGER", "mode": "REQUIRED" } ] }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "ipAddress", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" }, { "name": "directUserRequest", "type": "BOOLEAN", "mode": "NULLABLE" } ] }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageViewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Se realizó la compra
A continuación, se muestra el formato de datos del evento de usuario purchase-complete
.
Objeto purchase-complete mínimo requerido
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario purchase-complete
.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "purchase-complete", "visitorId": "visitor-id", "productDetails": [{ "product": { "id": "product-id" }, "quantity": product-quantity }], "purchaseTransaction": { "revenue": revenue, "currencyCode": "currency-code" } };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'purchase-complete', 'visitorId': 'visitor-id', // You can also define the visitor id directly on // the Tag Manager tag. 'productDetails': [{ 'product': { 'id': 'product-id' }, 'quantity': product-quantity }], 'purchaseTransaction': { 'revenue': revenue, 'currencyCode': 'currency-code' } } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "experimentIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" }, { "name": "priceInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "price", "type": "FLOAT", "mode": "REQUIRED" }, { "name": "originalPrice", "type": "FLOAT", "mode": "NULLABLE" }, { "name": "currencyCode", "type": "STRING", "mode": "REQUIRED" }, { "name": "cost", "type": "FLOAT", "mode": "NULLABLE" } ] } ] }, { "name": "quantity", "type": "INTEGER", "mode": "REQUIRED" } ] }, { "name": "cartId", "type": "STRING", "mode": "NULLABLE" }, { "name": "purchaseTransaction", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" }, { "name": "revenue", "type": "FLOAT", "mode": "REQUIRED" }, { "name": "tax", "type": "FLOAT", "mode": "NULLABLE" }, { "name": "cost", "type": "FLOAT", "mode": "NULLABLE" }, { "name": "currencyCode", "type": "STRING", "mode": "REQUIRED" } ] }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "ipAddress", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" }, { "name": "directUserRequest", "type": "BOOLEAN", "mode": "NULLABLE" } ] }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageViewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Buscar
A continuación, se muestra el formato del evento de usuario search
.
Objeto search mínimo requerido
Estos son los campos mínimos obligatorios para que funcione Vertex AI Search for Retail:
Para mostrar una lista de resultados de la búsqueda, Vertex AI Search para la venta minorista requiere
searchQuery
yproductDetails
:searchQuery
se lee del parámetrosearch_term
o de los eventosview_search_results
.productDetails
se lee del parámetroitems
del eventoview_item_list
. Debe incluir la lista de IDs de productos que se muestra al usuario final en la página de resultados de la búsqueda.
Se requiere al menos uno de los campos
searchQuery
opageCategories
.
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario search
.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "search", "visitorId": "visitor-id", "searchQuery": "search-query", "pageCategories": ["category1 > category2"], "productDetails": [ { "product": { "id": "product-id1" } }, { "product": { "id": "product-id2" } } ] };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'search', 'visitorId': 'visitor-id', // You can also define the visitor ID // directly on the Tag Manager tag. 'searchQuery': 'search-query', 'pageCategories': ['category1 > category2'], 'productDetails': [ { 'product': { 'id': 'product-id1' } }, { 'product': { 'id': 'product-id2' } } ] } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] } ] }, { "name": "searchQuery", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageCategories", "type": "STRING", "mode": "REPEATED" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Autocompletar
Este campo solo es obligatorio para los eventos de búsqueda si deseas usar la función Autocomplete. No es obligatorio para la búsqueda.
En los siguientes ejemplos, se muestra el campo completionDetail
cuando un usuario escribe "sh" y hace clic en la segunda sugerencia, "zapatos", en la lista de sugerencias para activar un evento de búsqueda. Si el usuario no hace clic en ninguna sugerencia, el campo completionDetail
permanecerá vacío.
eventType
debe ser "search"
completionAttributionToken
es el attributionToken
de la respuesta de completeQuery
.
selectedSuggestion
debe ser igual a searchQuery
.
JavaScript Pixel
var user_event = { "eventType": "search", "visitorId": "visitor-id", "searchQuery": "search-query", "pageCategories": ["category1 > category2"], "productDetails": [ { "product": { "id": "product-id1" } }, { "product": { "id": "product-id2" } } ] "completionDetail": { "completionAttributionToken": "completion_token", "selectedSuggestion": "search-query", "selectedPosition": completion_position } };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'search', 'visitorId': 'visitor-id', // You can also define the visitor ID // directly on the Tag Manager tag. 'searchQuery': 'search-query', 'pageCategories': ['category1 > category2'], 'productDetails': [ { 'product': { 'id': 'product-id1' } }, { 'product': { 'id': 'product-id2' } } ] "completionDetail": { "completionAttributionToken": 'completion_token', "selectedSuggestion": 'search-query', "selectedPosition": completion_position } } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] } ] }, { "name": "searchQuery", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageCategories", "type": "STRING", "mode": "REPEATED" }, { "name": "completionDetail", "type": "RECORD" "mode": "NULLABLE" "fields": [ { "name": "completionAttributionToken", "type": "STRING", "mode": "REQUIRED" }, { "name": "selectedSuggestion", "type": "STRING", "mode": "REQUIRED" }, { "name": "selectedPosition", "type": "INTEGER", "mode": "REQUIRED" } ] } ]
Vista de la página del carrito de compras
A continuación, se muestra el formato de datos del evento de usuario shopping-cart-page-view
.
Objeto shopping-cart-page-view mínimo requerido
En los siguientes ejemplos, se muestran solo los campos obligatorios del formato del evento de usuario shopping-cart-page-view
.
Proporciona el objeto productDetails
, a menos que el carrito de compras esté vacío.
Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
Es posible que se requieran otros campos según el método de la API que se use o si se usan campos adicionales. (por ejemplo, si el evento del usuario está asociado con una entidad, asegúrate de especificar el campo entity
).
Para obtener detalles completos de cada campo y cuándo son obligatorios, consulta la
documentación de referencia de la API de UserEvent
.
JavaScript Pixel
var user_event = { "eventType": "shopping-cart-page-view", "visitorId": "visitor-id "cartId": "cart-id", "productDetails": [{ "product": { "id": "product-id" }, { "id": "product-id" } }] };
Tag Manager
<script> dataLayer = dataLayer || []; dataLayer.push({ 'cloud_retail': { 'eventType': 'shopping-cart-page-view', 'visitorId': 'visitor-id' // You can also define the visitor ID // directly on the Tag Manager tag. 'cartId': 'cart-id', 'productDetails': [{ 'product': { 'id': 'product-id' }, { 'id': 'product-id' } }] } }); </script>
BigQuery
Este es el esquema JSON completo para este tipo de evento de usuario. Especifica este esquema cuando crees tablas para este tipo de evento de usuario en BigQuery.
Los modos de los campos obligatorios se establecen en REQUIRED
o REPEATED
. Los modos para los campos opcionales se configuran en NULLABLE
.
Ten en cuenta que se requiere eventTime
para importar eventos con BigQuery. eventTime
es una string con un formato de marca de tiempo.
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "visitorId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "experimentIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "productDetails", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "product", "type": "RECORD", "mode": "REQUIRED", "fields": [ { "name": "id", "type": "STRING", "mode": "REQUIRED" } ] }, { "name": "quantity", "type": "INTEGER", "mode": "REQUIRED" } ] }, { "name": "cartId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "ipAddress", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" }, { "name": "directUserRequest", "type": "BOOLEAN", "mode": "NULLABLE" } ] }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" }, { "name": "pageViewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "entity", "type": "STRING", "mode": "NULLABLE" } ]
Campos de eventos del usuario de Google Analytics 4
En la siguiente tabla, se muestra cómo se asignan los campos de eventos del usuario de Google Analytics 4 a Vertex AI Search para los campos de venta minorista.
Antes de importar o registrar eventos de usuarios de Google Analytics 4, asegúrate de que tus eventos de usuarios de Google Analytics 4 usen los siguientes campos para que Vertex AI Search for retail pueda integrar tus datos correctamente.
Google Analytics 4 | Venta minorista |
---|---|
ecommerce.purchase_revenue |
purchaseTransaction.revenue |
event_name |
eventType |
event_timestamp |
eventTime |
items.item_id |
productDetails.product.id |
items.price |
productDetails.product.priceInfo.price |
items.quantity |
productDetails.quantity |
Clave:event_params.key establecida en "currency" Valor: event_params.value.string_value |
productDetails.product.priceInfo.currencyCode |
Clave:event_params.key establecida en "currency" Valor: event_params.value.string_value |
purchaseTransaction.currencyCode |
Clave:event_params.key establecida en "search_term" Valor: event_params.value.string_value |
searchQuery |
user_id |
userInfo.userId |
user_pseudo_id |
visitorId |
Atributos personalizados
Puedes incluir atributos y funciones personalizados adicionales para eventos de usuario. Esto puede generar recomendaciones mejoradas y más específicas para tus usuarios cuando uses recomendaciones. Para agregar atributos personalizados, usa attributes
cuando registres un evento del usuario.
Si proporcionas atributos personalizados para los eventos del usuario transferidos, es importante que también los incluyas en los eventos del usuario que asocies con las solicitudes de predicción. El formato de los atributos personalizados debe ser coherente entre los eventos importados y los eventos proporcionados con solicitudes de predicción. Esto permite el uso de esos atributos personalizados cuando se entrenan modelos y se publican predicciones, lo que ayuda a mejorar la calidad de las recomendaciones.
Puedes proporcionar valores de texto personalizados con el campo text
o valores numéricos personalizados con el campo number
.
Por ejemplo, a continuación se muestra la sección attributes
de una solicitud para registrar un evento del usuario:
"attributes": { "user_age": {"text": ["teen", "young adult"]}, "user_location": {"text": ["CA"]} }
Acerca de la información del usuario
visitorId
representa el identificador de usuario único y es obligatorio cuando registras un evento del usuario.
La información del usuario (UserInfo
) incluida cuando registras un evento del usuario contiene el valor visitorId
y, si está disponible, el valor userId
.
userId
es opcional y se puede usar como un identificador único y persistente para un usuario en todos los dispositivos cada vez que este acceda a tu sitio. Cuando registras userId
para un usuario, Vertex AI Search para venta minorista puede generar resultados más personalizados para un usuario en varios dispositivos, como un dispositivo móvil y un navegador web.
Acerca de la marca de tiempo
Cuando registres un evento del usuario, asegúrate de incluir una marca de tiempo precisa de cuándo ocurrió el evento. Las marcas de tiempo precisas garantizan que los eventos se almacenen en el orden correcto. Las marcas de tiempo se registran automáticamente para los eventos recopilados mediante Tag Manager y JavaScript Pixel. Cuando importes eventos, debes proporcionar la marca de tiempo en el campo eventTime
con el formato especificado por RFC 3339.
¿Qué sigue?
- Aprende a registrar eventos de usuario.