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 |
|
Penting untuk meningkatkan kualitas model rekomendasi dari waktu ke waktu |
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:
- Persyaratan untuk peristiwa pengguna: Persyaratan peristiwa pengguna umum. Persyaratan ini berlaku, baik Anda menggunakan rekomendasi dan penelusuran.
- Persyaratan khusus rekomendasi: Persyaratan peristiwa pengguna untuk rekomendasi.
- Persyaratan khusus penelusuran: Persyaratan peristiwa pengguna untuk penelusuran.
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, |
|
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 |
Peristiwa |
Sertakan persis satu 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 |
|
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, |
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 |
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. Peristiwapredict
,search
, dandetail-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" } ]
Penelusuran
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
- Pelajari cara merekam peristiwa pengguna.