Tentang peristiwa pengguna

Halaman ini menjelaskan objek peristiwa pengguna, termasuk mencantumkan potensi jenis peristiwa pengguna, dan memberikan contoh data untuk semua jenis peristiwa pengguna.

Vertex AI Search untuk commerce 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.

Cara kerja atribusi penelusuran

Cara kerja atribusi

Jenis peristiwa pengguna

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

Nama peristiwa pengguna Tindakan pengguna Google Analytics 4 event_name
home-page-view Melihat halaman beranda. view_homepage
penelusuran (Penelusuran dan penjelajahan) Menelusuri katalog. view_item_list + [searchQuery ATAU pageCategories + filter]
category-page-view (Khusus Rekomendasi) Melihat halaman khusus, seperti halaman promo atau diskon. view_item_list + pageCategories
detail-page-view Melihat halaman detail produk. view_item
add-to-cart Menambahkan produk ke keranjang. add_to_cart
shopping-cart-page-view Melihat keranjang belanja. begin_checkout
purchase-complete Menyelesaikan checkout. purchase

Untuk melihat daftar lengkap kolom peristiwa GA4, lihat Kolom peristiwa pengguna Google Analytics 4.

Untuk mengetahui informasi mendetail tentang objek UserEvent, lihat UserEvent.

Prioritas jenis peristiwa

Untuk hasil berkualitas tinggi, sebaiknya rekam peristiwa pengguna untuk semua jenis peristiwa. Tabel berikut menjelaskan prioritas berbagai jenis peristiwa pengguna. Anda harus mencatat peristiwa pengguna dengan prioritas tertinggi untuk mendapatkan model data berkualitas.

Prioritas Jenis peristiwa pengguna

Diperlukan untuk eksperimen live awal untuk rekomendasi

(jenis acara bergantung pada jenis model rekomendasi)

detail-page-view

add-to-cart

purchase-complete

home-page-view

Acara tambahan yang diperlukan untuk eksperimen live penelusuran

search

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 agar Vertex AI Search untuk commerce dapat menghasilkan 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 konsol Penelusuran untuk e-commerce. 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 Memanfaatkan tingkat performa penelusuran.

Persyaratan umum peristiwa pengguna

Pastikan peristiwa pengguna Anda memenuhi persyaratan berikut agar Vertex AI Search untuk commerce dapat menghasilkan hasil yang berkualitas. Setelan 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 setidaknya 100 ID pengunjung unik untuk setiap jenis peristiwa yang di-ingest.

Hal ini memverifikasi bahwa Vertex AI Search untuk commerce memiliki cukup data untuk menghasilkan hasil berkualitas.

ID pengunjung harus diformat persis sama di seluruh impor peristiwa atau perekaman peristiwa dan dalam permintaan API.

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

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

Rasio peristiwa yang tidak digabungkan harus dijaga serendah mungkin. Rasio yang tinggi dapat berdampak negatif pada kualitas rekomendasi atau hasil penelusuran.

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

Beberapa peristiwa pengguna harus memiliki ID pengunjung yang sama.

Untuk membuat histori urutan perilaku yang valid, Vertex AI Search untuk commerce 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 asli. Jika semua peristiwa ini memberikan ID pengunjung yang diformat secara konsisten, Vertex AI Search untuk e-commerce dapat mempertimbangkan urutan perilaku tersebut dalam modelnya.

detail-page-view

Sertakan tepat satu produk per acara.

Peristiwa tidak dapat digunakan jika tidak ada produk. Jika beberapa produk disertakan, peristiwa salah bentuk dan tidak dapat digunakan.

add-to-cart

Sertakan tepat satu produk per acara.

Jika beberapa produk disertakan, peristiwa salah bentuk dan tidak dapat digunakan.

purchase-complete

Sertakan purchase_transaction.revenue.

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

Sertakan tepat satu purchase_transaction.currency_code di semua peristiwa pembelian.

Tidak ada kode mata uang default; kode harus diberikan.

Peristiwa pembelian tanpa kolom ini akan menghasilkan metrik pendapatan yang salah.

Periksa apakah beberapa peristiwa pembelian menyertakan beberapa produk.

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

Persyaratan khusus rekomendasi

Jika Anda menggunakan rekomendasi, pastikan peristiwa pengguna Anda 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 ini harus tetap sebagai peristiwa pembelian tunggal yang mencakup beberapa produk.

Hal ini memverifikasi bahwa pola pembelian bersama yang valid dihasilkan.

Persyaratan khusus Penelusuran

Jika Anda menggunakan penelusuran, pastikan peristiwa pengguna Anda 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 yang 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, peristiwa tidak terbentuk dengan benar dan metrik bisa salah.

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

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

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

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

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

Tidak menyertakan token atribusi akan memicu error di Penelusuran untuk e-commerce dan berdampak negatif parah pada kualitas penelusuran dan akurasi metrik.

Persyaratan pengoptimalan penelusuran

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

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

Metrik peristiwa Volume/frekuensi peristiwa Deskripsi
Volume acara search 250 ribu dalam 90 hari terakhir

Setidaknya 250.000 peristiwa dalam 90 hari terakhir diperlukan untuk mengoptimalkan pengalaman penelusuran berdasarkan peristiwa yang diproses.

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 besar dari jumlah peristiwa harian rata-rata.

Volume detail-page-view yang diatribusikan ke peristiwa search 500.000 dalam 30 hari terakhir Setidaknya 500.000 peristiwa diperlukan untuk mengoptimalkan hasil penelusuran menggunakan peristiwa pengguna.
Rata-rata peristiwa detail-page-view yang dapat diatribusikan ke peristiwa search per produk 10 dalam 30 hari terakhir Wajib untuk mengoptimalkan hasil penelusuran menggunakan peristiwa yang diproses, kecuali jika peristiwa untuk 21 hari terakhir diupload.
Proporsi peristiwa search dengan filter yang dapat diuraikan 0,1 dalam 30 hari terakhir Direkomendasikan untuk mengoptimalkan urutan aspek 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.
Rata-rata peristiwa add-to-cart yang dapat diatribusikan ke peristiwa search per produk yang diberi harga 0,5 dalam 30 hari terakhir Direkomendasikan untuk hasil penelusuran yang dioptimalkan untuk pendapatan.
Rata-rata peristiwa purchase-complete yang dapat diatribusikan ke peristiwa search per produk yang dapat ditelusuri dan memiliki harga 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 bagi pengguna Anda berdasarkan aktivitas mereka.

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

Metrik peristiwa Volume/frekuensi peristiwa Deskripsi
Volume peristiwa search yang ditayangkan 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 menyimpan hasil penelusuran dalam cache untuk penelusuran teks atau penelusuran penjelajahan jika Anda berencana menggunakan personalisasi. Menggunakan kembali hasil yang sama di seluruh pengunjung mencegah penelusuran memberikan hasil yang benar-benar dipersonalisasi kepada pengguna tertentu dan berisiko mengekspos data pribadi pengguna. Penelusuran akan otomatis menonaktifkan personalisasi jika caching terdeteksi.

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

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

Contoh dan skema jenis peristiwa pengguna

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

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

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

Perhatikan bahwa:

  • Kolom experimentIds hanya diperlukan jika Anda menjalankan eksperimen A/B.
  • Kolom attributionToken hanya diperlukan untuk Vertex AI Search untuk commerce. Metrik ini digunakan untuk mengukur performa. Token atribusi tidak boleh dikirim ke predict, search, dan detail-page-view, atau peristiwa klik.
  • Pastikan semua peristiwa Anda menggunakan satu mata uang, terutama jika Anda berencana menggunakan konsolGoogle Cloud untuk mendapatkan metrik pendapatan. API Vertex AI Search untuk commerce tidak mendukung penggunaan beberapa mata uang per katalog.

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

Tambahkan ke keranjang

Berikut format peristiwa pengguna add-to-cart.

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 diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat dokumentasi referensi API UserEvent.

Piksel JavaScript

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

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

Berikut format peristiwa pengguna category-page-view.

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

Meskipun biasanya hanya ada satu kategori yang terkait dengan 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 diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut 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

Berikut ini menunjukkan format data peristiwa pengguna detail-page-view.

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

Dalam sebagian besar kasus, productDetails berisi detail untuk produk terkait, kecuali jika sekelompok item dijual bersama.

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

Kolom lain mungkin diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut 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

Berikut format peristiwa pengguna home-page-view.

Contoh berikut hanya menampilkan kolom wajib di 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 diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut 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

Berikut ini menunjukkan format data peristiwa pengguna purchase-complete.

Contoh berikut hanya menampilkan kolom wajib di 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 diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut 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"
 }
]

Berikut format peristiwa pengguna search.

Objek penelusuran minimum yang diperlukan

Berikut adalah kolom minimum yang diperlukan agar Vertex AI Search untuk commerce menampilkan daftar hasil penelusuran:

  • searchQuery dibaca dari parameter search_term atau dari peristiwa view_search_results.
  • productDetails dibaca dari parameter items peristiwa view_item_list. Ini harus menyertakan daftar ID produk yang ditampilkan kepada pengguna akhir di halaman hasil penelusuran.
  • userEvents merekam semua informasi metadata yang perlu diketahui Retail API tentang cara pengguna akhir berinteraksi dengan situs pelanggan.

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

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

Kolom lain mungkin diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut 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 Pelengkapan Otomatis. Tidak diperlukan untuk penelusuran.

Contoh berikut menunjukkan kolom completionDetail saat pengguna mengetik "sepatu" 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 berupa "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

Berikut ini menunjukkan format data peristiwa pengguna shopping-cart-page-view.

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

Berikan objek productDetails dan userEvents 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 diperlukan, bergantung pada metode API yang digunakan atau jika kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entitas, pastikan untuk menentukan kolom entity.) Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut 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"
      },
      "quantity": PRODUCT-QUANTITY
    }]
};

Ganti PRODUCT-ID, PRODUCT-QUANTITY, VISOTOR-ID, dan CART-ID dengan ID produk, jumlah produk, ID sesi, dan ID keranjang belanja Anda.

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'
            },
            'quantity': PRODUCT-QUANTITY
          }]
      }
    });
</script>

Ganti PRODUCT-ID, PRODUCT-QUANTITY, VISOTOR-ID, dan CART-ID dengan ID produk, jumlah produk, ID sesi, dan ID keranjang belanja Anda.

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 pemetaan kolom peristiwa pengguna Google Analytics 4 ke kolom Vertex AI Search untuk e-commerce.

Sebelum mengimpor atau merekam peristiwa pengguna dari Google Analytics 4, pastikan peristiwa pengguna Google Analytics 4 Anda menggunakan kolom berikut agar Vertex AI Search untuk e-commerce 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

Langkah berikutnya