À propos des événements utilisateur

Cette page décrit l'objet User Event, répertorie les types d'événements utilisateur potentiels et fournit des exemples de données pour tous les types d'événements utilisateur.

Vertex AI Search pour le commerce utilise des événements utilisateur en temps réel pour générer des recommandations et dans les résultats de recherche. Lorsque vous importez des données, les recommandations et la recherche Google peuvent utiliser Vous n'avez donc pas besoin d'importer les mêmes événements deux fois si vous utilisez les deux services.

Pour obtenir de l'aide concernant l'enregistrement des événements utilisateur, consultez Enregistrez des événements utilisateur en temps réel.

Types d'événements utilisateur

Vous pouvez enregistrer plusieurs types d'événements utilisateur lorsque les utilisateurs parcourent votre site d'e-commerce :

Nom de l'événement utilisateur Action utilisateur
add-to-cart Permet d'ajouter le produit au panier.
category-page-view Permet d'afficher des pages spéciales, telles que des pages d'offres ou de promotions.
detail-page-view Permet d'afficher la page des détails du produit.
home-page-view Permet d'afficher la page d'accueil.
purchase-complete Permet de finaliser le paiement.
search Permet de rechercher dans le catalogue.
shopping-cart-page-view Permet d'afficher le panier.

Pour en savoir plus sur l'objet UserEvent, consultez la section UserEvent.

Priorité de types d'événements

Pour des résultats de meilleure qualité, nous vous recommandons d'enregistrer les événements utilisateur pour tous les types d'événements. Le tableau suivant décrit la priorité des différents types d'événements utilisateur. Vous devez consigner les événements utilisateur présentant la priorité la plus élevée pour obtenir des modèles de données de qualité.

Priorité Événements utilisateur
Obligatoire pour les expérimentations en direct initiales

add-to-cart

detail-page-view

purchase-complete

home-page-view (pour les recommandations)

search (pour la recherche)

Important pour améliorer la qualité du modèle de recommandations au fil du temps

category-page-view

search

shopping-cart-page-view

Exigences et bonnes pratiques relatives aux événements utilisateur

Les tableaux suivants répertorient les exigences et les bonnes pratiques pour les types d'événements utilisateur que les recommandations et la recherche utilisent. Vérifiez que vos événements utilisateur répondent à ces exigences, afin que Vertex AI Search pour le commerce peut générer des résultats de qualité.

Cette section répertorie les éléments suivants :

Si vous utilisez des modèles de recommandations, consultez également Exigences concernant les données par type de modèle : liste d'exigences supplémentaires en fonction du type de modèle de recommandation et de l'objectif d'optimisation que vous prévoyez utiliser.

Vous pouvez consulter les métriques de qualité des données pour la recherche sur le la page Qualité des données de la Recherchez la console Retail. Ces métriques indiquent les pourcentages de produits et d'événements utilisateur qui respectent les normes recommandées la qualité des données. Pour savoir comment afficher la qualité des données de recherche, consultez Accédez à des niveaux de performances sur le Réseau de Recherche.

Exigences concernant les événements utilisateur

Assurez-vous que vos événements utilisateur répondent aux exigences suivantes Vertex AI Search pour le commerce peut générer des résultats de qualité. Ces conditions s'appliquent les recommandations et la recherche.

Type d'événement Exigence Impact
Tous les événements

N'incluez pas de données synthétiques ni d'événements en double.

Les événements synthétiques ou en double ont un impact négatif sur la qualité du modèle et empêchent souvent l'entraînement du modèle. Les événements en double peuvent entraîner des valeurs de métriques incorrectes.

Incluez au moins 100 ID de visiteurs uniques pour chaque type d'événement ingéré.

Vertex AI Search pour le commerce dispose ainsi de suffisamment de données pour générer des résultats de qualité.

Le format des ID de visiteur doit être identique dans toutes les importations d'événements ou l'enregistrement d'événements et dans les requêtes API.

L'utilisation d'un format cohérent pour les ID de visiteur permet identifier correctement les tendances des visiteurs et fournir des résultats de meilleure qualité ; en fonction du comportement des utilisateurs.

Les produits inclus dans les événements doivent exister dans votre catalogue de produits.

Le ratio d'événements non associés doit être le plus bas possible. Un ratio élevé peut avoir un impact négatif sur la qualité des recommandations ou des résultats de recherche.

Les données d'événement non associées ne sont pas utilisées pour entraîner les modèles. En revanche, les événements peuvent être joints ultérieurement, une fois que les produits associés ont été ingérés. Pour en savoir plus, consultez Réassocier des événements utilisateur.

Certains événements utilisateur doivent avoir le même ID de visiteur.

Pour créer des historiques de séquence de comportement valides, Vertex AI Search pour le commerce doit pouvoir voir plusieurs événements avec le même identifiant de visiteur.

Par exemple, visitor123 a consulté cinq informations détaillées sur le produit , ont ajouté trois produits à leur panier, puis acheté cinq produits originaux. Si ces événements fournissent tous le même un ID de visiteur au format cohérent, Vertex AI Search pour le commerce peut tenir compte de cette séquence de comportement dans ses modèles.

detail-page-view

Incluez un seul produit par événement.

Vous ne pouvez pas utiliser cet événement s'il n'existe aucun produit. Si plusieurs produits sont inclus, l'événement est incorrect et ne peut pas être utilisé.

add-to-cart

Incluez un seul produit par événement.

Si plusieurs produits sont inclus, l'événement est incorrect et ne peut pas être utilisé.

purchase-complete

Incluez purchase_transaction.revenue.

purchase-complete événements pour lesquels le paramètre Le champ revenue n'est pas utilisé pour entraîner les modèles.

Incluez exactement un champ purchase_transaction.currency_code pour tous les événements d'achat.

Il n'existe pas de code de devise par défaut. un code doit être fourni.

Sans ce champ, les événements d'achat génèrent des métriques de revenus incorrectes.

Vérifiez que certains événements d'achat incluent plusieurs produits.

Le fait d'avoir des événements d'achat avec plusieurs produits permet au modèle d'apprendre des habitudes d'achat conjoint.

Exigences spécifiques aux recommandations

Si vous utilisez des recommandations, assurez-vous que vos événements utilisateur respectent les exigences suivantes.

Si vous utilisez des modèles de recommandations, consultez également Exigences concernant les données par type de modèle : liste d'exigences supplémentaires en fonction du type de modèle de recommandation et de l'objectif d'optimisation que vous prévoyez utiliser.

Type d'événement Exigence Impact
purchase-complete

Ne regroupez pas les paniers multi-articles en plusieurs événements d'achat. Ils doivent rester sous la forme d'événements d'achat uniques incluant plusieurs produits.

Cela permet de générer des modèles de co-achat valides.

Exigences concernant la recherche

Si vous utilisez la recherche, assurez-vous que vos événements utilisateur respectent les conditions minimales suivantes pour obtenir des résultats.

Type d'événement Exigence Impact
search

searchQuery doit exister pour les événements de recherche. pageCategories doit exister pour la navigation dans les événements.

Le fait de ne pas inclure ce champ peut avoir un impact négatif important sur la qualité et les métriques des résultats de recherche.

L'ID de visiteur d'une requête de recherche doit correspondre à l'ID de visiteur envoyé dans les événements liés à cette requête de recherche.

S'ils ne correspondent pas, les événements sont incorrects et les métriques peuvent être incorrectes.

La liste des ID produit dans les événements de recherche doit correspondre à la liste des produits présentés à l'utilisateur dans son intégralité.

S'ils ne correspondent pas, l'impact négatif sur la qualité des résultats de recherche peut être important, et les métriques seront incorrectes.

Si la recherche utilise un filtre, le champ filter doit exister et être analysé correctement.

Si ce champ n'existe pas, Vertex AI Search pour le commerce ne peut pas utilisent la partie filtre des données, ce qui peut avoir un impact négatif sur la recherche la qualité des résultats.

Incluez le champ attribution_token pour relier d'autres événements aux événements de recherche.

Le fait de ne pas inclure de jeton de recherche a un impact très négatif sur la qualité de la recherche et la précision des métriques.

Exigences concernant l'optimisation des campagnes sur le Réseau de Recherche

Pour permettre à la recherche d'optimiser automatiquement l'expérience de recherche en fonction sur les tendances générales des utilisateurs, importez les données suivantes.

Les événements doivent être importés au moins une fois par jour, avec un délai maximal de 24 heures.

Métrique "Événements" Volume/Fréquence des événements Description
Volume de search événements 250 000 au cours des 90 derniers jours

Au moins 250 000 événements au cours des 90 derniers jours sont requis pour optimiser l'expérience de recherche en fonction des événements ingérés.

Nous vous recommandons d'importer les événements au moins une fois par jour afin de garantir la qualité des données. Lors des importations d'événements historiques, assurez-vous que la distribution des données est biaisée vers le code temporel le plus récent. Le nombre d'événements le dernier jour du code temporel doit être supérieur ou égal au nombre moyen d'événements quotidiens.

Volume de detail-page-view attribuable à search événement 500 000 au cours des 30 derniers jours Au moins 500 000 événements sont requis pour optimiser la recherche à l'aide d'événements utilisateur.
detail-page-view événements en moyenne attribuables à search événement par produit 10 au cours des 30 derniers jours Obligatoire pour optimiser les résultats de recherche à l'aide des événements ingérés, sauf si des événements des 21 derniers jours sont importés.
Proportion d'événements search avec des filtres analysables 0,1 au cours des 30 derniers jours Recommandé pour optimiser l'ordre des attributs dynamiques dans la réponse de la recherche.
Proportion de produits recherchés avec le prix 0,95 au cours des 30 derniers jours Obligatoire pour optimiser les résultats de recherche à l'aide des événements ingérés.
add-to-cart événements en moyenne attribuables à search événement par produit vendu 0,5 au cours des 30 derniers jours Recommandé pour les résultats de recherche optimisés pour les revenus.
purchase-complete événements en moyenne attribuables à search événement par produit inclus dans l'index de recherche 0,5 au cours des 30 derniers jours Recommandé pour les résultats de recherche optimisés pour les revenus.

Exigences concernant la personnalisation de la recherche

La recherche nécessite les données suivantes pour personnaliser la recherche textuelle et parcourir les résultats de recherche selon l'activité de vos utilisateurs.

Une fois les données suivantes importées, la recherche peut être personnalisée des résultats de recherche.

Métrique "Événements" Volume/Fréquence des événements Description
Volume de search événements diffusés par la recherche 100 000 au cours des 30 derniers jours

Au moins 100 000 événements diffusés par la recherche au cours des 30 derniers jours sont nécessaires pour fournir la personnalisation.

les résultats de recherche ne sont pas mis en cache Moins de 1% des 100 000 événements utilisateur les plus récents

Ne pas mettre en cache les résultats de recherche pour la recherche textuelle ou la navigation si vous prévoyez d'utiliser la personnalisation. Réutiliser les mêmes résultats sur plusieurs visiteurs empêche la recherche de fournir des résultats personnalisés pour chaque utilisateur, ce qui risque d'exposer des données données privées. La recherche est automatiquement désactivée personnalisée si une mise en cache est détectée.

Si vous ne mettez en cache que les résultats de recherche, la recherche peut toujours personnaliser les résultats de navigation. À l'inverse, si vous ne mettez en cache que la navigation résultats, la recherche peut toujours personnaliser les requêtes textuelles résultats.

Correspondances de l'ID de visiteur entre SearchRequests et les événements utilisateur Une correspondance de plus de 10% pour les 100 000 événements utilisateur les plus récents Assurez-vous que l'espacement et le format des ID de visiteur sont identiques SearchRequests et les événements utilisateur. ID de visiteur cohérent la mise en forme garantit que la recherche peut identifier l'activité des utilisateurs correctement.

Exemples et schémas de types d'événements utilisateur

Cette section présente les formats de données pour chaque type d'événement compatible.

Des exemples sont fournis pour JavaScript Pixel et Tag Manager. Pour BigQuery, le schéma de table complet est fourni pour chaque type.

Pour tous les types d'événements utilisateur, le champ userId est facultatif. Les informations sur le produit (priceInfo et availability) sont (facultatif).

Remarques :

  • Le champ experimentIds n'est nécessaire que si vous effectuez un test A/B.
  • Le champ attributionToken est facultatif. Il permet de mesurer les performances. predict, search et detail-page-view les événements générés à partir de clics doivent comporter une afin de lier les événements aux recherches ou recommandations qui les ont générées.
  • Assurez-vous que tous vos événements utilisent la même devise, surtout si vous prévoyez d'utiliser la console Google Cloud pour obtenir des métriques sur les revenus. L'API Vertex AI Search pour le commerce ne permet pas d'utiliser plusieurs devises par catalogue.

Pour en savoir plus sur l'objet événement utilisateur, consultez les Documentation de référence de l'API UserEvent

Ajout au panier

Les lignes suivantes présentent le format d'événement utilisateur add-to-cart.

Champs minimum requis pour l'objet add-to-cart

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur add-to-cart.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API UserEvent

JavaScript Pixel

var user_event = {
  "eventType": "add-to-cart",
  "visitorId": "visitor-id",
  "productDetails": [{
    "product": {
      "id": "product-id"
    },
    "quantity": 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Affichage de la page de catégorie

Les lignes suivantes présentent le format d'événement utilisateur category-page-view.

Champs minimum requis pour l'objet category-page-view

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur category-page-view.

Bien qu'une seule catégorie soit généralement associée à une page, le champ pageCategories accepte également une hiérarchie de catégories, que vous pouvez fournir sous forme de liste.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Affichage de la page des détails

Les lignes suivantes présentent le format de données d'événement utilisateur detail-page-view.

Champs minimum requis pour l'objet detail-page-view

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur detail-page-view.

Dans la plupart des cas, productDetails contient les détails du produit associé, sauf si plusieurs articles sont vendus ensemble au sein d'un lot.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Affichage de la page d'accueil

Les lignes suivantes présentent le format d'événement utilisateur home-page-view.

Champs minimum requis pour l'objet home-page-view

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur home-page-view.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Achat terminé

Les lignes suivantes présentent le format de données d'événement utilisateur purchase-complete.

Champs minimum requis pour l'objet purchase-complete

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur purchase-complete.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Les lignes suivantes présentent le format d'événement utilisateur search.

Champs minimum requis pour l'objet search

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur search.

Au moins l'un des champs searchQuery ou pageCategories doit être renseigné.

productDetails doit inclure la liste des ID produit présentés à l'utilisateur final sur la page des résultats de recherche.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Saisie semi-automatique

Ce champ n'est obligatoire que pour les événements de recherche si vous souhaitez utiliser Saisie semi-automatique : Ce champ n'est pas obligatoire pour la recherche.

Les exemples suivants montrent le champ completionDetail lorsqu'un utilisateur saisit "sh" et clique sur la seconde suggestion "chaussures" dans la liste de suggestions pour déclencher l'événement de recherche. Si l'utilisateur ne clique sur aucune suggestion, le completionDetail le champ reste vide.

eventType doit être "search".

completionAttributionToken est le attributionToken de la réponse completeQuery.

selectedSuggestion doit être identique à 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
     }
    ]
 }
]

Affichage de la page du panier

Les lignes suivantes présentent le format de données d'événement utilisateur shopping-cart-page-view.

Champs minimum requis pour l'objet shopping-cart-page-view

Les exemples suivants affichent uniquement les champs obligatoires du format d'événement utilisateur shopping-cart-page-view.

Spécifiez l'objet productDetails, sauf si le panier est vide.

Lorsque vous importez des événements, vous devez fournir le code temporel dans la section champ eventTime au format spécifié par RFC 3339.

D'autres champs peuvent être requis selon la méthode d'API utilisée ou si des champs supplémentaires sont utilisés. (Par exemple, si l'événement utilisateur est associé à entity, veillez à spécifier le champ entity.) Pour en savoir plus sur chaque champ et savoir quand ils sont obligatoires, consultez les Documentation de référence de l'API 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

Il s'agit du schéma JSON complet pour ce type d'événement utilisateur. Spécifiez ce schéma lorsque vous créez des tables pour ce type d'événement utilisateur dans BigQuery.

Les modes des champs obligatoires sont définis sur REQUIRED ou REPEATED. Les modes des champs facultatifs sont définis sur NULLABLE.

Notez que le champ eventTime est requis pour l'importation d'événements avec BigQuery. eventTime est une chaîne avec un format d'horodatage.

[
 {
   "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"
 }
]

Champs d'événement utilisateur Google Analytics 4

Le tableau suivant montre comment les champs d'événements utilisateur de Google Analytics 4 sont mappés. à Vertex AI Search pour le commerce.

Avant d'importer ou d'enregistrer des événements utilisateur à partir de Google Analytics 4, assurez-vous que vos événements utilisateur Google Analytics 4 utilisent les champs suivants. pour que Vertex AI Search pour le commerce puisse intégrer correctement vos données.

Google Analytics 4 Commerce
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
Clé:
event_params.key définie sur "currency"

Valeur:
event_params.value.string_value
productDetails.product.priceInfo.currencyCode
Clé:
event_params.key définie sur "currency"

Valeur:
event_params.value.string_value
purchaseTransaction.currencyCode
Clé:
event_params.key définie sur "search_term"

Valeur:
event_params.value.string_value
searchQuery
user_id userInfo.userId
user_pseudo_id visitorId

Attributs personnalisés

Vous pouvez intégrer des attributs et des fonctionnalités personnalisés supplémentaires pour les événements utilisateur. Ce peut permettre d'obtenir des recommandations améliorées et plus spécifiques pour vos utilisateurs lorsque vous utiliser les recommandations. Pour ajouter des attributs personnalisés, utilisez attributes lorsque vous enregistrez un événement utilisateur.

Si vous fournissez des attributs personnalisés pour les événements utilisateur ingérés, il est important et les inclure également dans les événements utilisateur que vous associez à la prédiction requêtes. La mise en forme des attributs personnalisés doit être cohérente entre les événements importés et les événements fournis avec les requêtes de prédiction. Cela permet de ces attributs personnalisés lors de l'entraînement l'inférence des prédictions, ce qui contribue à améliorer la qualité des recommandations.

Vous pouvez fournir des valeurs de texte personnalisées à l'aide du champ text, ou des valeurs personnalisées des valeurs numériques à l'aide du champ number.

Par exemple, voici la section attributes d'une requête d'enregistrement d'un événement utilisateur :

"attributes": {
  "user_age": {"text": ["teen", "young adult"]},
  "user_location": {"text": ["CA"]}
}

À propos des informations utilisateur

visitorId représente l'identifiant d'utilisateur unique et est requis lorsque vous enregistrez un événement utilisateur.

Informations sur l'utilisateur (UserInfo) incluses lorsque vous enregistrez un utilisateur contient la valeur visitorId et, le cas échéant, la valeur userId. userId est facultatif et peut être utilisé comme un identifiant unique et persistant pour un utilisateur sur tous les appareils dès qu'un utilisateur se connecte sur votre site. Lorsque vous enregistrez l'userId pour un utilisateur, Vertex AI Search pour le commerce peuvent générer des résultats plus personnalisés pour un même utilisateur sur plusieurs appareils, comme un appareil mobile et un navigateur Web.

À propos de l'horodatage

Lorsque vous enregistrez un événement utilisateur, veillez à inclure un horodatage précis de l'événement. Des codes temporels précis permettent de s'assurer que les événements sont stockés dans dans le bon ordre. Les codes temporels sont enregistrés automatiquement pour les événements collectés avec Tag Manager et le pixel JavaScript. Lorsque vous importez des événements, vous devez spécifier l'horodatage dans le champ eventTime au format indiqué par RFC 3339.

Étape suivante