Tentang peristiwa pengguna

Halaman ini menjelaskan objek peristiwa pengguna, termasuk mencantumkan jenis peristiwa pengguna potensial, dan menyediakan data sampel untuk semua jenis peristiwa pengguna.

Vertex AI Search untuk retail menggunakan peristiwa pengguna real-time untuk membuat rekomendasi dan hasil penelusuran. Saat Anda mengupload data, rekomendasi dan penelusuran dapat menggunakan data tersebut, sehingga Anda tidak perlu mengupload peristiwa yang sama dua kali jika menggunakan kedua layanan tersebut.

Untuk mendapatkan bantuan terkait cara merekam peristiwa pengguna, lihat Merekam peristiwa pengguna real-time.

Jenis peristiwa pengguna

Ada beberapa jenis peristiwa pengguna yang dapat Anda catat saat pengguna menjelajahi situs retail Anda:

Nama peristiwa pengguna Tindakan pengguna
tambahkan ke keranjang Menambahkan produk ke keranjang.
kunjungan halaman kategori Melihat halaman khusus, seperti halaman penjualan atau promosi.
kunjungan-halaman-detail Melihat halaman detail produk.
home-page-view Melihat halaman beranda.
pembelian-selesai Menyelesaikan {i>checkout<i}.
telusuri Menelusuri katalog.
shopping-cart-page-view Melihat keranjang belanja.

Untuk informasi mendetail tentang objek UserEvent, lihat UserEvent.

Prioritas jenis peristiwa

Untuk mendapatkan hasil berkualitas tertinggi, sebaiknya rekam peristiwa pengguna untuk semua jenis peristiwa. Tabel berikut menjelaskan prioritas berbagai jenis peristiwa pengguna. Anda harus mencatat peristiwa pengguna berprioritas tertinggi ke dalam log untuk memperoleh model data berkualitas.

Prioritas Peristiwa Pengguna
Diperlukan untuk eksperimen langsung awal

add-to-cart

detail-page-view

purchase-complete

home-page-view (untuk rekomendasi)

search (untuk penelusuran)

Penting untuk meningkatkan kualitas model rekomendasi dari waktu ke waktu

category-page-view

search

shopping-cart-page-view

Persyaratan dan praktik terbaik peristiwa pengguna

Tabel berikut mencantumkan persyaratan dan praktik terbaik untuk jenis peristiwa pengguna yang digunakan oleh rekomendasi dan penelusuran. Pastikan peristiwa pengguna Anda memenuhi persyaratan ini sehingga Vertex AI Search untuk retail dapat memberikan hasil yang berkualitas.

Bagian ini mencantumkan:

Jika Anda menggunakan model rekomendasi, lihat juga Persyaratan data jenis model, yang mencantumkan persyaratan tambahan bergantung pada jenis model rekomendasi dan tujuan pengoptimalan yang ingin Anda gunakan.

Anda dapat melihat metrik kualitas data untuk penelusuran di halaman Kualitas data di Search for Retail Console. Metrik ini menunjukkan persentase produk dan peristiwa pengguna yang memenuhi standar kualitas data yang direkomendasikan. Untuk mengetahui informasi tentang cara melihat kualitas data penelusuran, lihat Mengakses tingkat performa penelusuran.

Persyaratan untuk peristiwa pengguna

Pastikan peristiwa pengguna Anda memenuhi persyaratan berikut sehingga Vertex AI Search untuk retail dapat memberikan hasil yang berkualitas. Ini berlaku untuk rekomendasi dan penelusuran.

Jenis peristiwa Persyaratan Dampak
Semua acara

Jangan sertakan data sintetis atau peristiwa duplikat.

Peristiwa sintetis atau duplikat berdampak negatif pada kualitas model dan sering kali mencegah keberhasilan pelatihan model. Peristiwa duplikat dapat menyebabkan nilai metrik yang salah.

Sertakan minimal 100 ID pengunjung unik untuk setiap jenis peristiwa yang diserap.

Hal ini memastikan Vertex AI Search untuk retail memiliki cukup data guna memberikan hasil yang berkualitas.

ID Pengunjung harus diformat sama persis di seluruh impor peristiwa atau pencatatan peristiwa dan di permintaan API.

Penggunaan format yang konsisten untuk ID pengunjung akan membantu mengidentifikasi pola pengunjung dengan benar dan memberikan hasil yang berkualitas lebih baik berdasarkan perilaku pengguna.

Produk yang disertakan dalam peristiwa harus ada di katalog produk Anda.

Rasio peristiwa yang tidak bergabung harus dijaga serendah mungkin. Rasio yang tinggi dapat berpengaruh negatif terhadap kualitas rekomendasi atau hasil penelusuran.

Data peristiwa yang belum digabungkan tidak digunakan untuk melatih model. Namun, peristiwa yang tidak tergabung dapat digabungkan nanti, setelah produk terkait diserap. Untuk mengetahui informasi selengkapnya, lihat Bergabung kembali peristiwa pengguna.

Beberapa peristiwa pengguna harus memiliki ID pengunjung yang sama.

Untuk membuat histori urutan perilaku yang valid, Vertex AI Search untuk retail harus dapat melihat beberapa peristiwa dengan ID pengunjung yang sama.

Misalnya, visitor123 telah melihat lima halaman detail produk, menambahkan tiga produk ke keranjang, lalu membeli dua dari lima produk yang asli. Jika semua peristiwa ini menyediakan ID pengunjung yang diformat secara konsisten dan sama, Vertex AI Search untuk retail dapat mempertimbangkan urutan perilaku tersebut dalam modelnya.

detail-page-view

Sertakan persis satu produk per peristiwa.

Peristiwa tidak dapat digunakan jika tidak ada produk. Jika ada beberapa produk disertakan, format acara salah dan tidak dapat digunakan.

add-to-cart

Sertakan persis satu produk per peristiwa.

Jika ada beberapa produk yang disertakan, format acara akan salah dan tidak dapat digunakan.

purchase-complete

Menyertakan purchase_transaction.revenue.

Peristiwa purchase-complete yang tidak memiliki kolom revenue tidak digunakan untuk melatih model.

Sertakan persis satu purchase_transaction.currency_code di semua peristiwa pembelian.

Tidak ada kode mata uang default; kode harus diberikan.

Peristiwa pembelian tanpa kolom ini menyebabkan metrik pendapatan yang salah.

Pastikan beberapa peristiwa pembelian menyertakan beberapa produk.

Memiliki beberapa peristiwa pembelian dengan beberapa produk akan membantu model mempelajari pola pembelian bersama.

Persyaratan khusus rekomendasi

Jika Anda menggunakan rekomendasi, pastikan peristiwa pengguna memenuhi persyaratan berikut.

Jika Anda menggunakan model rekomendasi, lihat juga Persyaratan data jenis model, yang mencantumkan persyaratan tambahan bergantung pada jenis model rekomendasi dan tujuan pengoptimalan yang ingin Anda gunakan.

Jenis peristiwa Persyaratan Dampak
purchase-complete

Jangan meratakan keranjang multi-item menjadi beberapa peristiwa pembelian. Peristiwa tersebut harus tetap sebagai peristiwa pembelian tunggal yang mencakup beberapa produk.

Hal ini memastikan bahwa pola pembelian bersama yang valid dihasilkan.

Persyaratan penelusuran

Jika Anda menggunakan penelusuran, pastikan peristiwa pengguna memenuhi persyaratan minimum berikut untuk mendapatkan hasil.

Jenis peristiwa Persyaratan Dampak
search

searchQuery harus ada untuk peristiwa penelusuran, dan pageCategories harus ada untuk peristiwa penjelajahan.

Tidak menyertakan kolom ini dapat berdampak negatif parah pada kualitas dan metrik hasil penelusuran.

ID pengunjung dalam permintaan penelusuran harus cocok dengan ID pengunjung yang dikirim dalam peristiwa yang terkait dengan permintaan penelusuran tersebut.

Jika tidak cocok, format acara akan salah dan metrik bisa salah.

Daftar ID produk di peristiwa penelusuran harus cocok dengan daftar produk yang ditampilkan kepada pengguna secara keseluruhan.

Jika tidak cocok, dampak negatif terhadap kualitas hasil penelusuran bisa parah, dan metrik akan salah.

Jika penelusuran menggunakan filter, filter harus ada dan diurai dengan benar.

Jika kolom ini tidak ada, Vertex AI Search untuk retail tidak dapat menggunakan bagian filter data, yang dapat berdampak negatif pada kualitas hasil penelusuran.

Sertakan kolom attribution_token untuk menautkan peristiwa lainnya kembali ke peristiwa penelusuran.

Tidak menyertakan token penelusuran memiliki dampak negatif yang parah terhadap kualitas penelusuran dan akurasi metrik.

Persyaratan pengoptimalan penelusuran

Agar penelusuran dapat otomatis mengoptimalkan pengalaman penelusuran berdasarkan tren pengguna secara keseluruhan, upload data berikut.

Acara harus diupload setidaknya setiap hari dengan keterlambatan maksimum 24 jam.

Metrik peristiwa Volume/frekuensi peristiwa Deskripsi
Volume peristiwa search 2.000.000 dalam 90 hari terakhir

Setidaknya 2 juta peristiwa dalam 90 hari terakhir diperlukan untuk mengoptimalkan pengalaman penelusuran berdasarkan peristiwa yang diserap.

Sebaiknya upload peristiwa setidaknya setiap hari untuk menjaga kualitas data yang baik. Selama impor peristiwa historis, pastikan distribusi data condong ke stempel waktu terbaru. Jumlah peristiwa pada hari stempel waktu terakhir harus sama dengan atau lebih dari jumlah peristiwa harian rata-rata.

Volume detail-page-view yang dapat diatribusikan ke peristiwa search 500.000 dalam 30 hari terakhir Setidaknya 500.000 peristiwa diperlukan untuk mengoptimalkan hasil penelusuran menggunakan peristiwa pengguna.
Peristiwa detail-page-view rata-rata yang dapat diatribusikan ke peristiwa search per produk 10 dalam 30 hari terakhir Wajib untuk mengoptimalkan hasil penelusuran menggunakan peristiwa yang diserap, kecuali jika peristiwa selama 21 hari terakhir diupload.
Proporsi peristiwa search dengan filter yang dapat diurai 0,1 dalam 30 hari terakhir Direkomendasikan untuk mengoptimalkan urutan faset dinamis dalam respons penelusuran.
Proporsi produk yang ditelusuri dengan harga 0,95 dalam 30 hari terakhir Wajib untuk mengoptimalkan hasil penelusuran menggunakan peristiwa yang diserap.
Peristiwa add-to-cart rata-rata yang dapat diatribusikan ke peristiwa search per produk dengan harga 0,5 dalam 30 hari terakhir Direkomendasikan untuk hasil penelusuran yang dioptimalkan untuk pendapatan.
Peristiwa purchase-complete rata-rata yang dapat diatribusikan ke peristiwa search per produk dengan harga yang dapat ditelusuri 0,5 dalam 30 hari terakhir Direkomendasikan untuk hasil penelusuran yang dioptimalkan untuk pendapatan.

Persyaratan personalisasi penelusuran

Penelusuran memerlukan data berikut untuk mempersonalisasi penelusuran teks dan menjelajahi hasil penelusuran untuk pengguna Anda berdasarkan aktivitas mereka.

Setelah Anda mengupload data berikut, penelusuran dapat mempersonalisasi hasil secara otomatis.

Metrik peristiwa Volume/frekuensi peristiwa Deskripsi
Volume search peristiwa yang ditampilkan oleh penelusuran 100.000 dalam 30 hari terakhir

Setidaknya 100.000 peristiwa yang ditayangkan oleh penelusuran dalam 30 hari terakhir diperlukan untuk memberikan personalisasi.

hasil penelusuran tidak di-cache Kurang dari 1% dari 100.000 peristiwa pengguna terbaru

Jangan meng-cache hasil penelusuran untuk penelusuran teks atau mencari penelusuran jika Anda berencana menggunakan personalisasi. Menggunakan kembali hasil yang sama untuk semua pengunjung akan mencegah penelusuran memberikan hasil yang benar-benar dipersonalisasi kepada pengguna tertentu dan berisiko mengekspos data pribadi pengguna. Penelusuran otomatis menonaktifkan personalisasi jika penyimpanan cache terdeteksi.

Jika Anda hanya meng-cache hasil penelusuran, penelusuran tetap dapat mempersonalisasi hasil penjelajahan. Sebaliknya, jika Anda hanya menyimpan hasil penelusuran dalam cache, penelusuran tetap dapat mempersonalisasi hasil penelusuran kueri teks.

ID pengunjung cocok antara SearchRequests dan peristiwa pengguna Lebih dari 10% cocok untuk 100.000 peristiwa pengguna terbaru Pastikan spasi dan format ID pengunjung cocok di seluruh SearchRequests dan peristiwa pengguna. Format ID pengunjung yang konsisten memastikan bahwa penelusuran dapat mengidentifikasi aktivitas pengguna dengan benar.

Contoh dan skema jenis peristiwa pengguna

Bagian ini memberikan format data untuk setiap jenis peristiwa yang didukung.

Contoh untuk JavaScript Pixel dan Tag Manager telah diberikan. Untuk BigQuery, skema tabel lengkap untuk setiap jenis telah disediakan.

Untuk semua jenis peristiwa pengguna, userId bersifat opsional. Kolom informasi produk (priceInfo dan availability) bersifat opsional.

Perlu diingat bahwa:

  • Kolom experimentIds hanya diperlukan jika Anda menjalankan eksperimen A/B.
  • Kolom attributionToken bersifat opsional; kolom ini digunakan untuk mengukur performa. Peristiwa predict, search, dan detail-page-view yang dihasilkan dari klik harus memiliki token atribusi agar dapat menautkan kembali peristiwa tersebut ke penelusuran atau rekomendasi yang menghasilkan peristiwa tersebut.
  • Pastikan semua peristiwa menggunakan mata uang tunggal, terutama jika Anda berencana menggunakan Konsol Google Cloud untuk mendapatkan metrik pendapatan. Vertex AI Search for retail API tidak mendukung penggunaan beberapa mata uang per katalog.

Untuk mengetahui detail selengkapnya tentang objek peristiwa pengguna, lihat dokumentasi referensi API UserEvent.

Tambahkan ke keranjang

Gambar berikut menunjukkan format peristiwa pengguna add-to-cart.

Objek add-to-cart minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib diisi dari format peristiwa pengguna add-to-cart.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Tampilan halaman kategori

Gambar berikut menunjukkan format peristiwa pengguna category-page-view.

Objek category-page-view minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib diisi dari format peristiwa pengguna category-page-view.

Meskipun biasanya hanya ada satu kategori yang dikaitkan dengan sebuah halaman, kolom pageCategories juga mendukung hierarki kategori, yang dapat Anda berikan sebagai daftar.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Tampilan halaman detail

Gambar berikut menunjukkan format data peristiwa pengguna detail-page-view.

Objek detail-page-view minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib diisi dari format peristiwa pengguna detail-page-view.

Umumnya, productDetails berisi detail untuk produk terkait, kecuali jika ada paket item yang dijual bersama.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Tampilan halaman beranda

Gambar berikut menunjukkan format peristiwa pengguna home-page-view.

Objek kunjungan halaman beranda minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib diisi dari format peristiwa pengguna home-page-view.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Pembelian selesai

Gambar berikut menunjukkan format data peristiwa pengguna purchase-complete.

Objek purchase-complete minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib diisi dari format peristiwa pengguna purchase-complete.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Gambar berikut menunjukkan format peristiwa pengguna search.

Objek penelusuran minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib diisi dalam format peristiwa pengguna search.

Setidaknya salah satu kolom searchQuery atau pageCategories wajib diisi.

productDetails harus menyertakan daftar ID produk yang ditampilkan kepada pengguna akhir di halaman hasil penelusuran.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Pelengkapan Otomatis

Kolom ini hanya diperlukan untuk peristiwa penelusuran jika Anda ingin menggunakan Autocomplete. Ini tidak diperlukan untuk penelusuran.

Contoh berikut menampilkan kolom completionDetail saat pengguna mengetik "sh" dan mengklik saran kedua, "sepatu", dalam daftar saran untuk memicu peristiwa penelusuran. Jika pengguna tidak mengklik saran apa pun, kolom completionDetail akan tetap kosong.

eventType harus "search".

completionAttributionToken adalah attributionToken dari respons completeQuery.

selectedSuggestion harus sama dengan searchQuery.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Tampilan halaman keranjang belanja

Gambar berikut menunjukkan format data peristiwa pengguna shopping-cart-page-view.

Objek kunjungan halaman keranjang belanja minimum yang diperlukan

Contoh berikut hanya menampilkan kolom wajib dari format peristiwa pengguna shopping-cart-page-view.

Berikan objek productDetails kecuali jika keranjang belanja kosong.

Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Kolom lain mungkin wajib diisi, bergantung pada metode API yang digunakan atau apakah kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna terkait dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail selengkapnya tentang setiap kolom dan kapan diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

Ini adalah skema JSON lengkap untuk jenis peristiwa pengguna ini. Tentukan skema ini saat membuat tabel untuk jenis peristiwa pengguna ini di BigQuery.

Mode untuk kolom wajib diisi ditetapkan ke REQUIRED atau REPEATED. Mode untuk kolom opsional ditetapkan ke NULLABLE.

Perhatikan bahwa eventTime diperlukan untuk mengimpor peristiwa dengan BigQuery. eventTime adalah string dengan format Stempel waktu.

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

Kolom peristiwa pengguna Google Analytics 4

Tabel berikut menunjukkan cara kolom peristiwa pengguna Google Analytics 4 dipetakan ke Vertex AI Search untuk kolom retail.

Sebelum mengimpor atau mencatat peristiwa pengguna dari Google Analytics 4, pastikan peristiwa pengguna Google Analytics 4 Anda menggunakan kolom berikut sehingga Vertex AI Search untuk retail dapat mengintegrasikan data Anda dengan benar.

Google Analytics 4 Retail
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
Kunci:
event_params.key ditetapkan ke "currency"

Nilai:
event_params.value.string_value
productDetails.product.priceInfo.currencyCode
Kunci:
event_params.key ditetapkan ke "currency"

Nilai:
event_params.value.string_value
purchaseTransaction.currencyCode
Kunci:
event_params.key ditetapkan ke "search_term"

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

Atribut khusus

Anda dapat menyertakan atribut dan fitur khusus tambahan untuk peristiwa pengguna. Hal ini dapat menghasilkan rekomendasi yang lebih baik dan lebih spesifik untuk pengguna saat Anda menggunakan rekomendasi. Untuk menambahkan atribut khusus, gunakan attributes saat Anda merekam peristiwa pengguna.

Jika Anda menyediakan atribut khusus untuk peristiwa pengguna yang diserap, penting untuk menyertakannya dalam peristiwa pengguna yang Anda kaitkan dengan permintaan prediksi. Format atribut khusus harus konsisten antara peristiwa yang diimpor dan peristiwa yang diberikan dengan permintaan prediksi. Hal ini memungkinkan penggunaan atribut khusus tersebut saat melatih model dan menayangkan prediksi, yang membantu meningkatkan kualitas rekomendasi.

Anda dapat memberikan nilai teks kustom menggunakan kolom text, atau nilai numerik kustom menggunakan kolom number.

Misalnya, contoh berikut menampilkan bagian attributes dari permintaan untuk merekam peristiwa pengguna:

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

Tentang informasi pengguna

visitorId mewakili ID pengguna unik dan diperlukan saat Anda merekam peristiwa pengguna.

Informasi pengguna (UserInfo) yang disertakan saat Anda merekam peristiwa pengguna berisi nilai visitorId dan, jika tersedia, nilai userId. userId bersifat opsional dan dapat digunakan sebagai ID unik dan persisten untuk pengguna di seluruh perangkat setiap kali pengguna login ke situs Anda. Saat Anda merekam userId untuk pengguna, Vertex AI Search untuk retail dapat memberikan hasil yang lebih dipersonalisasi untuk satu pengguna di beberapa perangkat, seperti perangkat seluler dan browser web.

Tentang stempel waktu

Saat merekam peristiwa pengguna, pastikan untuk menyertakan stempel waktu yang akurat saat peristiwa tersebut terjadi. Stempel waktu yang akurat memastikan bahwa peristiwa disimpan dalam urutan yang benar. Stempel waktu dicatat secara otomatis untuk peristiwa yang dikumpulkan menggunakan Tag Manager dan Pixel JavaScript. Saat mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime dalam format yang ditentukan oleh RFC 3339.

Langkah selanjutnya