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.
- Konfigurasi dan terapkan peristiwa pengguna.
- Pelajari lebih lanjut jenis peristiwa pengguna.
- Pelajari lebih lanjut token atribusi.
Cara kerja atribusi penelusuran
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) |
|
Acara tambahan yang diperlukan untuk eksperimen live penelusuran |
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:
- 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 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, |
|
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 |
Peristiwa |
Sertakan tepat satu 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 |
|
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, |
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 |
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 kepredict
,search
, dandetail-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" } ]
Telusuri
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 parametersearch_term
atau dari peristiwaview_search_results
.productDetails
dibaca dari parameteritems
peristiwaview_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
- Pelajari cara mencatat peristiwa pengguna.