AnalyticStracker ist ein Dienstprogramm, das es einfacher macht, Daten von ASP.NET -Anwendungen an Google Analytics und Google Tag Manager zu verfolgen
Die Installation von AnalyticsTracker ist einfach. Installieren Sie es von Nuget, um es Ihrem Projekt hinzuzufügen.
Fügen Sie in Ihrer Vorlage Folgendes nach der <body> hinzu, um das Tracking -Skript zu rendern
@using Vertica.AnalyticsTracker
...
<body>
@AnalyticsTracker.Render("UA-xxxxxx-1")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= AnalyticsTracker.Render("UA-xxxxxx-1") %>
...
</body>
Sie können die Einstellungen des Trackers mithilfe der Überladungen der Render () -Methode optimieren.
@AnalyticsTracker.Render(
account: "UA-xxxxxx-1",
trackDefaultPageview: true,
displayFeatures: false,
trackerConfiguration: new Dictionary<string, object>
{
{"cookieDomain", "foo.example.com"},
{"cookieName", "myNewName"},
{"cookieExpires", 20000}
});
AnalyticStracker kann auch Daten von AJAX -Anfragen verfolgen. Um dies zu aktivieren, fügen Sie Ihre Anwendung die Vertica.AnalyticsTracker.Modules.AnalyticsHttpModule hinzu. Setzen Sie dann für Anfragen, die Sie verfolgen möchten, den AnalyticsTracker-Enabled HTTP-Anforderungsheader auf true .
Die Antwort enthält dann den Tracking JS -Code als Base64 -codierte Header.
Wir haben AJAX -Interceptors für jQuery und angular in die Datei /Scripts/analyticstracker.adapters.js aufgenommen, die Sie in Ihre Website aufnehmen können. Stellen Sie sicher, dass Sie es nach den Frameworks einschließen.
<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 zielt darauf ab, einige vernünftige Standardeinstellungen bereitzustellen, und können Sie einige der erweiterten Einstellungen überschreiben, wenn Sie dies benötigen.
Wenn Sie eine andere URL für die Seitenansicht verfolgen möchten als die im Browser, können Sie sie überschreiben, indem Sie die Seite des aktuellen Trackers einstellen
AnalyticsTracker.Current.SetPage("/my/custom/url");
Standardmäßig gibt AnalyticsTracker den grundlegenden Tracking -Code aus und verfolgt eine Standard -Seite. Wenn Sie zusätzliche Daten verfolgen möchten, fügen Sie dem aktuellen Tracker commands hinzu.
Hier verfolgen wir ein Ereignis von einem Controller
public ActionResult About()
{
AnalyticsTracker.Current.Track(new EventCommand("category", "action", "label"));
ViewBag.Message = "Your application description page.";
return View();
}
Der Befehl zur Verfolgung einer E -Commerce -Transaktion kann so verwendet werden:
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));
Wenn Sie eine erweiterte E -Commerce -Tracking in Ihrem Konto aktiviert haben, sollten Sie diese Befehle verwenden, um Ihre Transaktionen zu verfolgen:
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));
Möglicherweise möchten Sie auch die Währung auf Ihrem Tracker festlegen, wenn Sie E -Commerce verfolgen
Mit erweitertem E -Commerce können Sie auch viele andere Dinge verfolgen. Die Befehle befinden sich in der Vertica.AnalyticsTracker.Commands.EnhancedEcommerce Namespace:
AddToBasketCommand(...)
RemoveFromBasketCommand(...)
CheckoutCommand(...)
CheckoutOptionCommand(...)
ProductClickCommand(...)
ProductDetailCommand(...)
ProductListCommand(...)
Eine typische Sache, die Sie tun möchten, ist sicherzustellen, dass beispielsweise Transaktionen nur einmal verfolgt werden, auch wenn der Benutzer die Seite neu lädt. Sie sollten dies von Ihrem Server von Ihrem Server verfolgen, aber es wird in der Regel auch das Problem der Benutzer, die die Back -Taste verwenden, oder Browser, die eine Seite usw. rehydrieren usw., wobei keine tatsächliche Serverinteraktion vorhanden ist.
Geben Sie den CookieGuardedCommand ein:
AnalyticsTracker.Current.Track(new CookieGuardedCommand(innerCommand, "order12345"));
Wenn Sie Ihren Befehl in einen CookieGuardedCommand einwickeln, wird der innere Befehl in eine if Anweisung wie folgt gerendert:
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();
}
Dadurch wird sichergestellt, dass der Befehl nicht erneut ausgeführt wird, wenn dasselbe JavaScript zweimal ausgeführt wird. Benutzer beispielsweise die Bestell -ID als Befehls -ID, um sicherzustellen, dass das Cookie nur für diese bestimmte Bestellung festgelegt ist.
Manchmal haben Sie Ereignisse ohne Serverinteraktion. Zum Beispiel auf ein Bild klicken, um es zu zoomen. In diesem Fall können Sie AnalityCStracker verwenden, um das erforderliche Skript zu generieren:
<a href="#" onmousedown="@AnalyticsTracker.ClientCommand(new EventCommand("category", "action", "label"))">
<img src="..."/>
</a>
Fügen Sie in Ihrer Vorlage Folgendes nach der <body> hinzu, um das Tracking -Skript zu rendern
@using Vertica.AnalyticsTracker
...
<body>
@TagManager.Render("GTM-XXYYY")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= TagManager.Render("GTM-XXYYY") %>
...
</body>
Bei Bedarf können Sie mit:
TagManager.RenderScript()TagManager.RenderNoScript()TagManager.RenderDataLayer()Sie können die Einstellungen des Tags anhand der Überladungen der Render () -Methode optimieren.
@TagManager.Render(account:"GTM-XXYYY", dataLayerName: "myLayer");
Mithilfe des TagManager können Sie leicht Informationen über die dataLayer -Variable erhalten.
TagManager.Current.AddMessage(new Variable("myVariable", "myValue"));
Dies generiert den folgenden DataLayer
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': 'myValue'});
</script>
Manchmal möchten Sie dem DataLayer möglicherweise komplexere Objekte hinzufügen, und dies wird durch die Verwendung eines Wörterbuchs unterstützt
var dict = new Dictionary<string, object>
{
{"myProp", "myValue"},
{"yourProp", 12345}
};
TagManager.Current.AddMessage(new Variable("myVariable", dict));
Das Wörterbuch wird dann als tiefes Objekt gerendert
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': {'myProp': 'myValue','yourProp': 12345}});
</script>
Mithilfe der TransactionMessage können Bestellinformationen über den Datalayer gesendet werden:
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);
Die Bestellung wird gemäß den GTM -Spezifikationen wiedergegeben:
<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>