Halaman ini menjelaskan objek peristiwa pengguna, termasuk mencantumkan potensi jenis peristiwa pengguna, dan memberikan contoh data untuk semua jenis peristiwa pengguna.
Untuk mengonfigurasi peristiwa pengguna:
Mengimpor peristiwa pengguna historis.
Merekam peristiwa pengguna live.
Beri tag pada peristiwa pengguna dengan entity.
Tandai peristiwa pengguna dengan token atribusi.
Vertex AI Search untuk retail menggunakan peristiwa pengguna real-time untuk menghasilkan 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 dalam 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 |
---|---|
add-to-cart | Menambahkan produk ke keranjang. |
category-page-view | Melihat halaman khusus, seperti halaman promo atau diskon. |
detail-page-view | Melihat halaman detail produk. |
home-page-view | Melihat halaman beranda. |
purchase-complete | Menyelesaikan checkout. |
search | Menelusuri katalog. |
shopping-cart-page-view | Melihat keranjang belanja. |
Untuk informasi mendetail tentang objek UserEvent, lihat UserEvent.
Prioritas jenis peristiwa
Untuk hasil dengan kualitas terbaik, 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 yang berkualitas.
Prioritas | Peristiwa Pengguna |
---|---|
Diperlukan untuk eksperimen live 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 rekomendasi dan penelusuran. Pastikan peristiwa pengguna Anda memenuhi persyaratan ini sehingga Vertex AI Search untuk retail dapat menghasilkan hasil berkualitas.
Bagian ini mencantumkan:
- Persyaratan untuk peristiwa pengguna: Persyaratan peristiwa pengguna umum. Persyaratan ini berlaku baik Anda menggunakan rekomendasi maupun 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 Anda rencanakan untuk digunakan.
Anda dapat melihat metrik kualitas data untuk penelusuran di halaman Kualitas data di konsol Penelusuran untuk Retail. 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 untuk peristiwa pengguna
Pastikan peristiwa pengguna Anda memenuhi persyaratan berikut agar Vertex AI Search untuk retail dapat menghasilkan hasil berkualitas. Hal 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 pelatihan model yang berhasil. Peristiwa duplikat dapat menyebabkan nilai metrik yang salah. |
Sertakan minimal 100 ID pengunjung unik untuk setiap jenis peristiwa yang ditransfer. |
Hal ini memastikan Vertex AI Search untuk retail memiliki cukup data untuk menghasilkan hasil berkualitas. |
|
ID pengunjung harus diformat sama persis di seluruh impor peristiwa atau perekaman peristiwa dan dalam permintaan API. |
Menggunakan format yang konsisten untuk ID pengunjung membantu mengidentifikasi pola pengunjung dengan benar dan memberikan hasil berkualitas lebih baik berdasarkan perilaku pengguna. |
|
Produk yang disertakan dalam acara harus ada di katalog produk Anda. |
Rasio peristiwa yang tidak bergabung 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 telah diserap. Untuk mengetahui informasi selengkapnya, lihat Bergabung kembali ke 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 tepat satu produk per peristiwa. |
Peristiwa tidak dapat digunakan jika tidak ada produk. Jika beberapa produk disertakan, peristiwa akan salah format dan tidak dapat digunakan. |
add-to-cart |
Sertakan tepat satu produk per peristiwa. |
Jika beberapa produk disertakan, peristiwa akan salah format dan tidak dapat digunakan. |
purchase-complete |
Sertakan |
Peristiwa |
Sertakan tepat satu Tidak ada kode mata uang default; kode harus diberikan. |
Peristiwa pembelian tanpa kolom ini akan menghasilkan 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 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 Anda rencanakan untuk digunakan.
Jenis peristiwa | Persyaratan | Dampak |
---|---|---|
purchase-complete |
Jangan gabungkan keranjang multi-item menjadi beberapa peristiwa pembelian. Peristiwa tersebut harus tetap sebagai satu peristiwa pembelian yang menyertakan beberapa produk. |
Hal ini memastikan bahwa pola pembelian bersama yang valid dihasilkan. |
Persyaratan penelusuran
Jika Anda menggunakan penelusuran, pastikan peristiwa pengguna Anda memenuhi persyaratan minimum berikut untuk mendapatkan hasil.
Jenis peristiwa | Persyaratan | Dampak |
---|---|---|
search |
|
Tidak menyertakan kolom ini dapat berdampak negatif yang serius terhadap 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 akan salah format dan metrik dapat 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 dapat 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 atribusi akan memicu error di Penelusuran untuk Retail dan 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.
Peristiwa harus diupload minimal setiap hari dengan jeda maksimum 24 jam.
Metrik peristiwa | Volume/frekuensi peristiwa | Deskripsi |
---|---|---|
Volume peristiwa search |
250 ribu dalam 90 hari terakhir |
Setidaknya 250.000 peristiwa dalam 90 hari terakhir diperlukan untuk mengoptimalkan pengalaman penelusuran berdasarkan peristiwa yang diserap.
Sebaiknya upload peristiwa minimal setiap hari untuk mempertahankan 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. |
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 ditransfer kecuali jika peristiwa selama 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 ditransfer. |
Peristiwa add-to-cart rata-rata yang dapat diatribusikan ke peristiwa search per produk bertarif |
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 bertarif 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 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 jelajah jika Anda berencana menggunakan personalisasi. Menggunakan kembali hasil yang sama di seluruh pengunjung akan mencegah penelusuran memberikan hasil yang benar-benar dipersonalisasi kepada pengguna tertentu dan berisiko mengekspos data pribadi pengguna. Penelusuran akan otomatis menonaktifkan personalisasi jika penyimpanan dalam cache terdeteksi. Jika Anda hanya meng-cache hasil penelusuran, penelusuran masih dapat mempersonalisasi hasil penjelajahan. Sebaliknya, jika Anda hanya meng-cache hasil penelusuran, penelusuran tetap dapat mempersonalisasi hasil penelusuran kueri teks. |
Kecocokan ID pengunjung antara SearchRequests dan peristiwa pengguna
|
Lebih dari 10% kecocokan untuk 100.000 peristiwa pengguna terbaru |
Pastikan spasi dan format ID pengunjung cocok di seluruh peristiwa SearchRequests dan pengguna. Format ID pengunjung yang konsisten memastikan 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 Pixel JavaScript 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 retail. Metrik ini digunakan untuk mengukur performa. Peristiwapredict
,search
, dandetail-page-view
yang dihasilkan dari klik harus memiliki token atribusi untuk menautkan peristiwa kembali ke penelusuran atau rekomendasi yang menghasilkannya. - Pastikan semua peristiwa Anda menggunakan satu mata uang, terutama jika Anda berencana menggunakan konsol Google Cloud untuk mendapatkan metrik pendapatan. Vertex AI Search untuk retail API tidak mendukung penggunaan beberapa mata uang per katalog.
Untuk mengetahui detail selengkapnya tentang objek peristiwa pengguna, lihat
dokumentasi referensi UserEvent
API.
Tambahkan ke keranjang
Berikut ini menunjukkan format peristiwa pengguna add-to-cart
.
Objek tambahkan ke keranjang minimum yang diperlukan
Contoh berikut hanya menampilkan kolom yang diperlukan 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 entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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 ini menunjukkan format peristiwa pengguna category-page-view
.
Objek penayangan halaman kategori minimum yang diperlukan
Contoh berikut hanya menampilkan kolom yang diperlukan dari 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 entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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 adalah format data peristiwa pengguna detail-page-view
.
Objek tampilan halaman detail minimum yang diperlukan
Contoh berikut hanya menampilkan kolom yang diperlukan dari format peristiwa pengguna
detail-page-view
.
Pada umumnya, productDetails
berisi detail untuk produk terkait,
kecuali jika paket 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 entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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 ini menunjukkan format peristiwa pengguna home-page-view
.
Objek tampilan halaman beranda minimum yang diperlukan
Contoh berikut hanya menampilkan kolom yang diperlukan 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 diperlukan, bergantung pada metode API yang digunakan atau jika
kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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 adalah format data peristiwa pengguna purchase-complete
.
Objek pembelian selesai minimum yang diperlukan
Contoh berikut hanya menampilkan kolom yang diperlukan 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 diperlukan, bergantung pada metode API yang digunakan atau jika
kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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" } ]
Telusuri
Berikut ini menunjukkan format peristiwa pengguna search
.
Objek penelusuran minimum yang diperlukan
Berikut adalah kolom minimum yang diperlukan agar Vertex AI Search untuk retail berfungsi:
Untuk menampilkan daftar hasil penelusuran, Vertex AI Search untuk retail memerlukan
searchQuery
danproductDetails
:searchQuery
dibaca dari parametersearch_term
atau dari peristiwaview_search_results
.productDetails
dibaca dari parameteritems
peristiwaview_item_list
. Daftar ini harus menyertakan daftar ID produk yang ditampilkan kepada pengguna akhir di halaman hasil penelusuran.
Setidaknya salah satu kolom
searchQuery
ataupageCategories
harus ada.
Contoh berikut hanya menampilkan kolom yang diperlukan 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 entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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. Hal ini tidak diperlukan untuk penelusuran.
Contoh berikut menunjukkan kolom completionDetail
saat pengguna mengetik "sh"
dan mengklik saran kedua, "shoes", dalam daftar saran untuk memicu
peristiwa penelusuran. Jika pengguna tidak mengklik saran apa pun, kolom completionDetail
tetap kosong.
eventType
harus berupa "search"
.
completionAttributionToken
adalah attributionToken
dari
respons completeQuery
.
selectedSuggestion
harus sama dengan searchQuery
.
Pixel 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 adalah format data peristiwa pengguna shopping-cart-page-view
.
Objek tampilan halaman keranjang belanja minimum yang diperlukan
Contoh berikut hanya menampilkan kolom yang diperlukan 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 diperlukan, bergantung pada metode API yang digunakan atau jika
kolom tambahan digunakan. (Misalnya, jika peristiwa pengguna dikaitkan dengan entity, pastikan untuk menentukan kolom entity
.)
Untuk mengetahui detail lengkap setiap kolom dan kapan kolom tersebut diperlukan, lihat
dokumentasi referensi API UserEvent
.
Pixel 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 kolom Vertex AI Search for 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 kustom tambahan untuk peristiwa pengguna. Hal ini
dapat menghasilkan rekomendasi yang lebih baik dan lebih spesifik bagi pengguna saat Anda
menggunakan rekomendasi. Untuk menambahkan atribut kustom, gunakan
attributes
saat Anda mencatat peristiwa pengguna.
Jika Anda memberikan atribut kustom untuk peristiwa pengguna yang diserap, sebaiknya sertakan juga atribut tersebut dalam peristiwa pengguna yang Anda kaitkan dengan permintaan prediksi. Format atribut kustom harus konsisten antara peristiwa yang diimpor dan peristiwa yang disediakan dengan permintaan prediksi. Hal ini memungkinkan penggunaan atribut kustom 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, berikut ini menunjukkan 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
mencatat 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 persisten yang unik untuk pengguna di seluruh perangkat setiap kali pengguna login
ke situs Anda. Saat Anda merekam userId
untuk pengguna, Vertex AI Search untuk retail
dapat menghasilkan hasil yang lebih dipersonalisasi untuk satu pengguna di beberapa perangkat,
seperti perangkat seluler dan browser web.
Tentang stempel waktu
Saat Anda merekam peristiwa pengguna, pastikan untuk menyertakan stempel waktu yang akurat saat peristiwa terjadi. Stempel waktu yang akurat memastikan peristiwa disimpan dalam
urutan yang benar. Stempel waktu dicatat secara otomatis untuk peristiwa yang dikumpulkan menggunakan Tag Manager dan Piksel JavaScript. Saat
mengimpor peristiwa, Anda harus memberikan stempel waktu di kolom eventTime
dalam format yang ditentukan oleh
RFC 3339.
Langkah selanjutnya
- Pelajari cara mencatat peristiwa pengguna.