AnalyticsTracker adalah utilitas yang bertujuan membuatnya lebih mudah untuk melacak data dari aplikasi ASP.NET ke Google Analytics dan Google Tag Manager
Menginstal AnalyticStracker sederhana. Instal dari Nuget untuk menambahkannya ke proyek Anda.
Di template Anda, tambahkan yang berikut setelah <body> untuk membuat skrip pelacakan
@using Vertica.AnalyticsTracker
...
<body>
@AnalyticsTracker.Render("UA-xxxxxx-1")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= AnalyticsTracker.Render("UA-xxxxxx-1") %>
...
</body>
Anda dapat mengubah pengaturan pelacak dengan menggunakan metode kelebihan render ().
@AnalyticsTracker.Render(
account: "UA-xxxxxx-1",
trackDefaultPageview: true,
displayFeatures: false,
trackerConfiguration: new Dictionary<string, object>
{
{"cookieDomain", "foo.example.com"},
{"cookieName", "myNewName"},
{"cookieExpires", 20000}
});
AnalyticsTracker juga dapat melacak data dari permintaan AJAX. Untuk mengaktifkan ini, tambahkan Vertica.AnalyticsTracker.Modules.AnalyticsHttpModule ke aplikasi Anda. Kemudian untuk permintaan yang ingin Anda lacak, atur header permintaan HTTP AnalyticsTracker-Enabled ke true .
Respons kemudian akan mencakup kode JS pelacakan sebagai header yang dikodekan Base64.
Kami telah memasukkan AJAX Interceptors untuk jQuery dan angular di file /Scripts/analyticstracker.adapters.js , yang dapat Anda sertakan di situs Anda. Pastikan untuk memasukkannya setelah kerangka kerja.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js"></script>
<script src="/Scripts/analyticstracker.adapters.js"></script>
AnalyticsTracker bertujuan untuk memberikan default yang masuk akal, dan memungkinkan Anda mengganti beberapa pengaturan lanjutan jika perlu.
Jika Anda ingin melacak URL yang berbeda untuk pageview daripada yang ada di browser, Anda dapat menimpanya dengan mengatur halaman pelacak saat ini
AnalyticsTracker.Current.SetPage("/my/custom/url");
Secara default analyticstracker akan mengeluarkan kode pelacakan dasar, dan melacak halaman pageview standar. Ketika Anda ingin melacak data tambahan, Anda menambahkan commands ke pelacak saat ini.
Di sini kami melacak acara dari pengontrol
public ActionResult About()
{
AnalyticsTracker.Current.Track(new EventCommand("category", "action", "label"));
ViewBag.Message = "Your application description page.";
return View();
}
Perintah untuk melacak transaksi eCommerce dapat digunakan seperti ini:
var transaction = new TransactionInfo(
id: "order1001",
affiliation: string.Empty,
revenue: 100,
shipping: 10,
tax: 5,
currency: AnalyticsCurrency.USD);
transaction.AddItem(
name: "Black shirt",
sku: "sh001",
category: "Shirts",
price: 50,
quantity: 2);
AnalyticsTracker.Current.Track(new TransactionCommand(transaction));
Jika Anda telah mengaktifkan pelacakan eCommerce yang ditingkatkan di akun Anda, maka Anda harus menggunakan perintah itu untuk melacak transaksi Anda:
var purchaseAction = new PurchaseActionFieldObject(
id: "order1001",
affiliation: string.Empty,
revenue: 100,
shipping: 10,
tax: 5,
coupon: null);
var lineItems = new []
{
new ProductFieldObject(
id: "sh001",
name: "Black shirt",
brand: "Northwind",
category: "Shirts",
variant: null,
price: 50,
quantity: 2,
coupon: null,
position: 1)
};
AnalyticsTracker.Current.Track(new PurchaseCommand(purchaseAction, lineItems));
Anda mungkin juga ingin mengatur mata uang pada pelacak Anda saat melacak e -niaga
Ecommerce yang ditingkatkan juga memungkinkan Anda melacak banyak hal lainnya. Perintah tersebut terletak di Vertica.AnalyticsTracker.Commands.EnhancedEcommerce namespace:
AddToBasketCommand(...)
RemoveFromBasketCommand(...)
CheckoutCommand(...)
CheckoutOptionCommand(...)
ProductClickCommand(...)
ProductDetailCommand(...)
ProductListCommand(...)
Hal khas yang ingin Anda lakukan adalah memastikan bahwa misalnya transaksi hanya dilacak sekali, bahkan jika pengguna memuat ulang halaman. Anda harus melacak ini dari server Anda, tetapi biasanya juga akan ada masalah pengguna yang menggunakan tombol kembali, atau browser merehidrasi halaman dll. Di mana tidak ada interaksi server yang sebenarnya.
Masukkan CookieGuardedCommand :
AnalyticsTracker.Current.Track(new CookieGuardedCommand(innerCommand, "order12345"));
Membungkus perintah Anda di CookieGuardedCommand akan membuat perintah dalam di dalam pernyataan if seperti ini:
if (document.cookie.search(/AnalyticsTrackerGuardorder12345=true/) === -1) {
ga('send', {'hitType': 'event','eventCategory': 'cat','eventAction': 'act','eventLabel': ''});
document.cookie = 'AnalyticsTrackerGuardorder12345=true; Expires=' + new Date(2016, 05, 02).toUTCString();
}
Ini akan memastikan bahwa perintah tidak dieksekusi lagi, jika JavaScript yang sama dieksekusi dua kali. Pengguna misalnya ID pesanan sebagai ID perintah untuk memastikan bahwa cookie hanya diatur untuk pesanan tertentu.
Terkadang Anda mengalami peristiwa yang terjadi tanpa interaksi server. Misalnya mengklik gambar untuk memperbesarnya. Dalam hal ini Anda dapat menggunakan AnalityCStracker untuk menghasilkan skrip yang diperlukan:
<a href="#" onmousedown="@AnalyticsTracker.ClientCommand(new EventCommand("category", "action", "label"))">
<img src="..."/>
</a>
Di template Anda, tambahkan yang berikut setelah <body> untuk membuat skrip pelacakan
@using Vertica.AnalyticsTracker
...
<body>
@TagManager.Render("GTM-XXYYY")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= TagManager.Render("GTM-XXYYY") %>
...
</body>
Jika perlu Anda dapat membuat bagian individual dari Google Tag Manager (skrip, noscript dan datalayer) dengan:
TagManager.RenderScript()TagManager.RenderNoScript()TagManager.RenderDataLayer()Anda dapat mengubah pengaturan tag dengan menggunakan kelebihan metode render ().
@TagManager.Render(account:"GTM-XXYYY", dataLayerName: "myLayer");
Menggunakan TagManager memungkinkan Anda dengan mudah informasi ke variabel dataLayer .
TagManager.Current.AddMessage(new Variable("myVariable", "myValue"));
Ini akan menghasilkan datalayer berikut
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': 'myValue'});
</script>
Terkadang Anda mungkin ingin menambahkan objek yang lebih kompleks ke datalayer, dan ini didukung dengan menggunakan kamus
var dict = new Dictionary<string, object>
{
{"myProp", "myValue"},
{"yourProp", 12345}
};
TagManager.Current.AddMessage(new Variable("myVariable", dict));
Kamus kemudian akan diterjemahkan sebagai objek yang dalam
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': {'myProp': 'myValue','yourProp': 12345}});
</script>
Menggunakan TransactionMessage, informasi pesanan dapat dikirim melalui Datalayer:
var items = new[]
{
new TransactionItemInfo(
name: "Black shirt",
sku: "sh001",
category: "Shirts",
price: 50,
quantity: 2)
};
var message = new TransactionMessage(
transactionId: "order1001",
affiliation: string.Empty,
total: 100,
tax: 5,
shipping: 10,
items: items);
TagManager.Current.AddMessage(message);
Pesanan akan diterjemahkan sesuai dengan spesifikasi GTM:
<script>
var dataLayer = dataLayer || [];
dataLayer.push(
{
'transactionId': 'order1001',
'transactionAffiliation': '',
'transactionTotal': 100,
'transactionTax': 5,
'transactionShipping': 10,
'transactionProducts': [
{
'name': 'Black shirt',
'sku': 'sh001',
'category': 'Shirts',
'price': 50,
'quantity': 2
}
]
});
</script>