AnalyticsTracker es una utilidad destinada a facilitar el seguimiento de los datos de las aplicaciones ASP.NET a Google Analytics y Google Tag Manager
La instalación de Analyticstracker es simple. Instálelo desde Nuget para agregarlo a su proyecto.
En su plantilla, agregue lo siguiente después del <body> para representar el script de seguimiento
@using Vertica.AnalyticsTracker
...
<body>
@AnalyticsTracker.Render("UA-xxxxxx-1")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= AnalyticsTracker.Render("UA-xxxxxx-1") %>
...
</body>
Puede ajustar la configuración del rastreador utilizando las sobrecargas del método 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 también puede rastrear datos de las solicitudes AJAX. Para activar esto, agregue la Vertica.AnalyticsTracker.Modules.AnalyticsHttpModule a su aplicación. Luego, para las solicitudes que desea rastrear, establezca el encabezado de solicitud HTTP AnalyticsTracker-Enabled en true .
La respuesta incluirá el código JS de seguimiento como encabezados codificados Base64.
Hemos incluido interceptores AJAX para jQuery y angular en el archivo /Scripts/analyticstracker.adapters.js , que puede incluir en su sitio. Asegúrese de incluirlo después de los marcos.
<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 tiene como objetivo proporcionar valores predeterminados sensibles y permitirle anular algunas de las configuraciones avanzadas si es necesario.
Si desea rastrear una URL diferente para PageView que la del navegador, puede anularla configurando la página del rastreador actual
AnalyticsTracker.Current.SetPage("/my/custom/url");
De forma predeterminada, AnalyticsTracker generará el código de seguimiento básico y rastreará una vista de página estándar. Cuando desea rastrear datos adicionales, agregue commands al rastreador actual.
Aquí estamos rastreando un evento de un controlador
public ActionResult About()
{
AnalyticsTracker.Current.Track(new EventCommand("category", "action", "label"));
ViewBag.Message = "Your application description page.";
return View();
}
El comando para rastrear una transacción de comercio electrónico se puede usar de esta manera:
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));
Si ha habilitado el seguimiento mejorado de comercio electrónico en su cuenta, debe usar esos comandos para rastrear sus transacciones:
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));
También es posible que desee establecer la moneda en su rastreador al rastrear el comercio electrónico
El comercio electrónico mejorado también le permite rastrear muchas otras cosas. Los comandos se encuentran en la Vertica.AnalyticsTracker.Commands.EnhancedEcommerce espacio de nombres:
AddToBasketCommand(...)
RemoveFromBasketCommand(...)
CheckoutCommand(...)
CheckoutOptionCommand(...)
ProductClickCommand(...)
ProductDetailCommand(...)
ProductListCommand(...)
Una cosa típica que desea hacer es asegurarse de que, por ejemplo, las transacciones solo se rastreen una vez, incluso si el usuario recarga la página. Debe realizar un seguimiento de esto desde su servidor, pero generalmente también habrá el problema de los usuarios que usan el botón Atrás, o los navegadores que rehidratan una página, etc., donde no hay interacción real del servidor.
Ingrese el CookieGuardedCommand :
AnalyticsTracker.Current.Track(new CookieGuardedCommand(innerCommand, "order12345"));
Envolver su comando en un CookieGuardedCommand hará el comando interno dentro de una declaración if como esta:
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();
}
Esto asegurará que el comando no se ejecute nuevamente, si el mismo JavaScript se ejecuta dos veces. Usuario, por ejemplo, la ID de pedido como ID de comando para asegurarse de que la cookie solo esté configurada para ese pedido específico.
A veces tienes eventos que ocurren sin ninguna interacción del servidor. Por ejemplo, haciendo clic en una imagen para hacer zoom. En este caso, puede usar AnalityCstracker para generar el script necesario:
<a href="#" onmousedown="@AnalyticsTracker.ClientCommand(new EventCommand("category", "action", "label"))">
<img src="..."/>
</a>
En su plantilla, agregue lo siguiente después del <body> para representar el script de seguimiento
@using Vertica.AnalyticsTracker
...
<body>
@TagManager.Render("GTM-XXYYY")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= TagManager.Render("GTM-XXYYY") %>
...
</body>
Si es necesario, puede renderizar las partes individuales de Google Tag Manager (script, noscript y dataLayer) con:
TagManager.RenderScript()TagManager.RenderNoScript()TagManager.RenderDataLayer()Puede ajustar la configuración de la etiqueta utilizando las sobrecargas del método render ().
@TagManager.Render(account:"GTM-XXYYY", dataLayerName: "myLayer");
El uso del TagManager le permite obtener información fácilmente a la variable dataLayer .
TagManager.Current.AddMessage(new Variable("myVariable", "myValue"));
Esto generará el siguiente conjunto de datos
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': 'myValue'});
</script>
A veces es posible que desee agregar objetos más complejos a la caja de datos, y esto se admite mediante el uso de un diccionario
var dict = new Dictionary<string, object>
{
{"myProp", "myValue"},
{"yourProp", 12345}
};
TagManager.Current.AddMessage(new Variable("myVariable", dict));
El diccionario se representará como un objeto profundo
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': {'myProp': 'myValue','yourProp': 12345}});
</script>
Utilizando la transacción de mensajería, la información del pedido se puede enviar a través de 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);
La orden se realizará de acuerdo con las especificaciones de 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>