Panduan ini menjelaskan cara menerapkan fitur Enhanced E-commerce Universal Analytics menggunakan Google Tag Manager di situs.
Ringkasan
Enhanced E-commerce Google Analytics memungkinkan data penjualan, promosi, serta tayangan produk dikirim bersama kunjungan halaman dan peristiwa Google Analytics. Gunakan kunjungan halaman untuk melacak tayangan produk dan pembelian produk; dan gunakan peristiwa untuk melacak langkah checkout dan klik produk.
Sebelum Anda Mulai
Sebaiknya tinjau bagian Jenis dan Tindakan Data Enhanced E-commerce dalam Panduan Developer Enhanced E-commerce untuk membantu Anda merencanakan penerapan. Panduan ini akan membantu Anda memahami kolom mana yang wajib dan opsional untuk setiap interaksi e-commerce yang ingin diukur.
Mengaktifkan Enhanced E-commerce
Pada sebagian besar penerapan, Anda harus mengaktifkan Enhanced E-commerce di setiap tag peristiwa atau kunjungan halaman Universal Analytics. Anda memiliki dua opsi untuk mengaktifkan Enhanced E-commerce di layar editor tag antarmuka web:
- Terapkan menggunakan Lapisan Data (Direkomendasikan)
- Terapkan menggunakan Makro JavaScript Kustom
Meskipun kedua metode tersebut memberikan fungsi e-commerce yang setara, sebaiknya semua situs yang mendukung lapisan data menggunakan metode Lapisan Data. Panduan ini menyajikan metode Lapisan Data sebagai default, sedangkan metode yang Menggunakan Makro JavaScript Kustom didokumentasikan di bagian akhir panduan ini.
Menggunakan Lapisan Data
Bagian ini akan menunjukkan cara menggunakan lapisan data untuk mengukur aktivitas Enhanced E-commerce berikut:
- Tayangan Produk
- Klik Produk
- Tayangan Detail Produk
- Menambahkan/Menghapus Produk dari Keranjang
- Tayangan Promosi
- Klik Promosi
- Checkout
- Pembelian
- Pengembalian Dana
Menghapus objek e-commerce
Sebaiknya gunakan perintah berikut untuk menghapus objek e-commerce sebelum mengirim peristiwa e-commerce ke lapisan data. Dengan menghapus objek, beberapa peristiwa e-commerce di halaman tidak akan memengaruhi satu sama lain.
dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.
Mengukur Tayangan Produk
- Pengukuran E-commerce:
impressions
- Menerima Data: array
impressionFieldObjects
Ukur tayangan produk menggunakan tindakan impression
dan satu atau beberapa
impressionFieldObjects
. Contoh berikut mengasumsikan detail tentang produk
yang ditampilkan di halaman diketahui pada saat halaman dimuat:
<script> // Measures product impressions and also tracks a standard // pageview for the tag configuration. // Product impressions are sent by pushing an impressions object // containing one or more impressionFieldObjects. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'currencyCode': 'EUR', // Local currency is optional. 'impressions': [ { 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'list': 'Search Results', 'position': 1 }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'list': 'Search Results', 'position': 2 }] } }); </script>
Mengukur Klik Produk
- Pengukuran E-commerce:
click
- Menerima Data:
list
, arrayproductFieldObjects
Ukur klik pada link produk dengan mengirim tindakan click
ke lapisan data,
bersama productFieldObject
untuk merepresentasikan produk yang diklik, seperti dalam
contoh ini:
<script> /** * Call this function when a user clicks on a product link. This function uses the event * callback datalayer variable to handle navigation after the ecommerce data has been sent * to Google Analytics. * @param {Object} productObj An object representing a product. */ function(productObj) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'productClick', 'ecommerce': { 'click': { 'actionField': {'list': 'Search Results'}, // Optional list property. 'products': [{ 'name': productObj.name, // Name or ID is required. 'id': productObj.id, 'price': productObj.price, 'brand': productObj.brand, 'category': productObj.cat, 'variant': productObj.variant, 'position': productObj.position }] } }, 'eventCallback': function() { document.location = productObj.url } }); } </script>
Mengukur Tampilan Detail Produk
- Pengukuran E-commerce:
detail
- Menerima Data:
list
, arrayproductFieldObjects
Ukur tampilan detail produk dengan mengirim tindakan detail
ke lapisan data,
bersama satu atau beberapa productFieldObjects
yang merepresentasikan produk yang dilihat:
<script> // Measure a view of product details. This example assumes the detail view occurs on pageload, // and also tracks a standard pageview of the details page. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'detail': { 'actionField': {'list': 'Apparel Gallery'}, // 'detail' actions have an optional list property. 'products': [{ 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray' }] } } }); </script>
Mengukur Penambahan atau Penghapusan Produk dari Keranjang Belanja
- Pengukuran E-commerce:
add
,remove
- Menerima Data:
list
, arrayproductFieldObjects
Anda juga dapat mengukur penambahan atau penghapusan produk dari keranjang belanja menggunakan
add
atau remove
actionFieldObject
dan daftar
productFieldObjects
:
Menambahkan Produk ke Keranjang Belanja
// Measure adding a product to a shopping cart by using an 'add' actionFieldObject // and a list of productFieldObjects. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'addToCart', 'ecommerce': { 'currencyCode': 'EUR', 'add': { // 'add' actionFieldObject measures. 'products': [{ // adding a product to a shopping cart. 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } } });
Menghapus Produk dari Keranjang Belanja
// Measure the removal of a product from a shopping cart. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'removeFromCart', 'ecommerce': { 'remove': { // 'remove' actionFieldObject measures. 'products': [{ // removing a product to a shopping cart. 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } } });
Mengukur Promosi
Anda dapat mengukur tayangan dan klik pada promosi situs internal, seperti banner yang ditampilkan di situs itu sendiri, yang mengiklankan diskon untuk subkumpulan produk tertentu atau penawaran pengiriman gratis.
Mengukur Tayangan Promosi
- Pengukuran E-commerce:
promoView
- Menerima Data: array
promoFieldObjects
Untuk mengukur tayangan promosi, tetapkan kunci promoView
pada variabel lapisan data
e-commerce Anda ke promoFieldObject
yang menjelaskan promosi yang ditampilkan kepada pengguna di halaman tersebut:
<script> // An example of measuring promotion views. This example assumes that // information about the promotions displayed is available when the page loads. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'promoView': { 'promotions': [ // Array of promoFieldObjects. { 'id': 'JUNE_PROMO13', // ID or Name is required. 'name': 'June Sale', 'creative': 'banner1', 'position': 'slot1' }, { 'id': 'FREE_SHIP13', 'name': 'Free Shipping Promo', 'creative': 'skyscraper1', 'position': 'slot2' }] } } }); </script>
Mengukur Klik Promosi
Untuk mengukur klik pada promosi, kirim tindakan promoClick
ke lapisan data
dengan array yang berisi promoFieldObject
yang menjelaskan promosi yang diklik:
<script> /** * Call this function when a user clicks on a promotion. This function uses the eventCallBack * datalayer variable to handle navigation after the ecommerce data is sent to Google Analytics. * * @param {Object} promoObj An object representing an internal site promotion. */ function onPromoClick(promoObj) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'promotionClick', 'ecommerce': { 'promoClick': { 'promotions': [ { 'id': promoObj.id, // Name or ID is required. 'name': promoObj.name, 'creative': promoObj.creative, 'position': promoObj.pos }] } }, 'eventCallback': function() { document.location = promoObj.destinationUrl; } }); } </script>
Mengukur Checkout
Untuk mengukur setiap langkah dalam proses checkout, Anda perlu:
- Mengukur setiap langkah proses checkout menggunakan tindakan
checkout
. - Mengukur opsi checkout menggunakan
tindakan
checkout_option
, jika relevan. - (Opsional) Menetapkan nama langkah yang mudah digunakan untuk laporan funnel checkout dengan mengonfigurasi Setelan E-commerce di bagian Admin pada antarmuka web.
1. Mengukur Langkah pada Proses Checkout
- Pengukuran E-commerce:
checkout
- Menerima Data:
step
, arrayproductFieldObjects
Untuk mengukur proses checkout, yang mungkin mencakup tombol checkout dan satu atau beberapa halaman checkout
tempat pengguna memasukkan informasi pengiriman dan pembayaran, gunakan tindakan checkout
dan kolom step
untuk menunjukkan tahap pada proses checkout yang sedang diukur.
Anda juga dapat menggunakan kolom option
untuk memasukkan data tambahan tentang
halaman, seperti jenis pembayaran yang dipilih oleh pengguna.
<script> /** * A function to handle a click on a checkout button. This function uses the eventCallback * data layer variable to handle navigation after the ecommerce data has been sent to Google Analytics. */ function onCheckout() { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'checkout', 'ecommerce': { 'checkout': { 'actionField': {'step': 1, 'option': 'Visa'}, 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } }, 'eventCallback': function() { document.location = 'checkout.html'; } }); } </script>
2. Mengukur Opsi Checkout
- Pengukuran E-commerce:
checkout_option
- Menerima Data:
step
,option
Opsi checkout berguna jika Anda telah mengukur
langkah checkout, tetapi ingin mengambil informasi tambahan tentang langkah checkout
tersebut. Misalnya, metode pengiriman yang dipilih oleh pengguna.
Untuk mengukurnya, gunakan tindakan checkout_option
bersama dengan kolom step
dan option
.
<script> /** * A function to handle a click leading to a checkout option selection. */ function onCheckoutOption(step, checkoutOption) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'checkoutOption', 'ecommerce': { 'checkout_option': { 'actionField': {'step': step, 'option': checkoutOption} } } }); } </script>
3. Konfigurasi Funnel Checkout
Opsional, setiap langkah dalam proses checkout dapat diberi nama deskriptif yang akan digunakan dalam laporan. Untuk mengonfigurasi nama ini, kunjungi bagian Admin pada Antarmuka Web Google Analytics, pilih tampilan (profil), lalu klik Setelan E-commerce. Ikuti petunjuk penyiapan E-commerce untuk memberi label pada setiap langkah checkout yang ingin Anda lacak.

Mengukur Pembelian
- Pengukuran E-commerce:
purchase
- Menerima Data:
id
(ID Transaksi), arrayproductFieldObjects
Kirim detail transaksi Anda ke Lapisan Data menggunakan tindakan purchase
, bersama dengan
event
yang akan memicu tag yang diaktifkan Enhanced E-commerce. Dalam contoh ini, detail
transaksi diketahui saat halaman dimuat, dan akan dikirim bersama kunjungan halaman saat
skrip gtm.js
menampilkan:
<script> // Send transaction data with a pageview if available // when the page loads. Otherwise, use an event when the transaction // data becomes available. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { 'actionField': { 'id': 'T12345', // Transaction ID. Required for purchases and refunds. 'affiliation': 'Online Store', 'revenue': '35.43', // Total transaction value (incl. tax and shipping) 'tax':'4.90', 'shipping': '5.99', 'coupon': 'SUMMER_SALE' }, 'products': [{ // List of productFieldObjects. 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1, 'coupon': '' // Optional fields may be omitted or set to empty string. }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'quantity': 1 }] } } }); </script>
Mengukur Pengembalian Dana
- Pengukuran E-commerce:
refund
- Menerima Data:
id
(ID Transaksi), arrayproductFieldObjects
Untuk mengukur pengembalian dana penuh dari sebuah transaksi, kirim refund
actionFieldObject
bersama dengan ID transaksi untuk transaksi
yang dananya dikembalikan:
<script> // Refund an entire transaction by providing the transaction ID. This example assumes the details // of the completed refund are available when the page loads: dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'refund': { 'actionField': {'id': 'T12345'} // Transaction ID. Required for purchases and refunds. } } }); </script>
Untuk mengukur pengembalian dana sebagian, tambahkan daftar
productFieldObjects
, termasuk ID dan jumlah produk yang dananya dikembalikan:
<script> // Measure a partial refund by providing an array of productFieldObjects and specifying the ID and // quantity of each product being returned. This example assumes the partial refund details are // known at the time the page loads: dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'refund': { 'actionField': {'id': 'T12345'}, // Transaction ID. 'products': [ {'id': 'P4567', 'quantity': 1}, // Product ID and quantity. Required for partial refunds. {'id': 'P8901','quantity': 2} ] } } }); </script>
Meneruskan Dimensi Kustom Cakupan Produk
Untuk meneruskan dimensi kustom cakupan produk ke objek e-commerce, gunakan notasi berikut untuk menambahkannya ke produk:
dimensionn
jika n
adalah bilangan asli, contohnya:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { ... 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'dimension1': 'Same day delivery' }] } } }); </script>
Meneruskan Metrik Kustom Cakupan Produk
Untuk meneruskan metrik kustom cakupan produk ke objek e-commerce, gunakan notasi berikut untuk menambahkannya ke produk:
metricn
jika n
adalah bilangan asli, contohnya:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { ... 'products': [{ 'name': 'Goal Flow Garden Hose', 'id': 'p001', 'brand': 'Google Analytics', 'category': 'Home Goods', 'variant': 'Green', 'price': '20', 'quantity': 1, 'metric3': '10' // Custom metric 'Cost' }] } } }); </script>
Menggabungkan Tayangan dan Tindakan
Jika memiliki tayangan produk dan tindakan, Anda dapat menggabungkan dan mengukur keduanya dalam satu hit.
Contoh di bawah ini menunjukkan cara mengukur tampilan detail produk dengan tayangan produk dari bagian produk terkait:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'impressions': [ { 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'list': 'Related Products', 'position': 1 }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'list': 'Related Products', 'position': 2 }], 'detail': { 'actionField': {'list': 'Apparel Gallery'}, // 'detail' actions have an optional list property. 'products': [{ 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray' }] } } }); </script>
Menggunakan Makro JavaScript Kustom
Jika situs Anda tidak mendukung lapisan data, Anda dapat menggunakan makro JavaScript kustom untuk memanggil fungsi yang menampilkan objek data e-commerce. Objek ini harus menggunakan sintaksis lapisan data yang ditunjukkan sebelumnya dalam panduan ini, contohnya:
// A custom JavaScript macro that returns an ecommerceData object // that follows the data layer syntax. function() { var ecommerceData = { 'ecommerce': { 'purchase': { 'actionField': {'id': 'T12345'}, 'products': [ // List of productFieldObjects ], ... // Rest of the code should follow the data layer syntax. } }; return ecommerceData; }
Jika Anda memilih menggunakan makro JavaScript kustom, dan bukan lapisan data, pilih Aktifkan Fitur Enhanced E-commerce dan tetapkan opsi Baca data dari makro.