AnalyticsTracker - это утилита, направленная на то, чтобы упростить отслеживание данных из приложений ASP.NET до Google Analytics и Google Tag Manager
Установка AnalyticsTracker проста. Установите его из Nuget, чтобы добавить его в свой проект.
В вашем шаблоне добавьте следующее после <body> , чтобы отобразить сценарий отслеживания
@using Vertica.AnalyticsTracker
...
<body>
@AnalyticsTracker.Render("UA-xxxxxx-1")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= AnalyticsTracker.Render("UA-xxxxxx-1") %>
...
</body>
Вы можете настроить настройки трекера, используя перегрузки метода 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 также может отслеживать данные по запросам AJAX. Чтобы активировать это, добавьте в ваше приложение Vertica.AnalyticsTracker.Modules.AnalyticsHttpModule . Затем для запросов вы хотите отслеживать, установите заголовок HTTP AnalyticsTracker-Enabled в true .
Затем ответ будет включать код отслеживания JS в качестве кодированных заголовков Base64.
Мы включили Ajax Interceptors для jQuery и angular в файл /Scripts/analyticstracker.adapters.js , которые вы можете включить в свой сайт. Обязательно включите его после фреймворков.
<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 стремится предоставить что -то разумное значения по умолчанию и позволить вам переопределить некоторые из расширенных настройки, если вам нужно.
Если вы хотите отслеживать другой URL для просмотра страниц, чем в браузере, вы можете переопределить его, установив страницу текущего трекера
AnalyticsTracker.Current.SetPage("/my/custom/url");
По умолчанию AnalyticsTracker выведет базовый код отслеживания и отслеживать стандартный просмотр страниц. Если вы хотите отслеживать дополнительные данные, вы добавляете commands в текущий трекер.
Здесь мы отслеживаем событие от контроллера
public ActionResult About()
{
AnalyticsTracker.Current.Track(new EventCommand("category", "action", "label"));
ViewBag.Message = "Your application description page.";
return View();
}
Команда для отслеживания транзакции электронной коммерции может быть использована так:
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));
Если вы включили расширенное отслеживание электронной коммерции в вашей учетной записи, вам следует использовать эти команды для отслеживания ваших транзакций:
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));
Вы также можете установить валюту на своем трекере при отслеживании электронной коммерции
Усовершенствованная электронная коммерция также позволяет вам отслеживать много других вещей. Команды расположены в Vertica.AnalyticsTracker.Commands.EnhancedEcommerce пространство имен:
AddToBasketCommand(...)
RemoveFromBasketCommand(...)
CheckoutCommand(...)
CheckoutOptionCommand(...)
ProductClickCommand(...)
ProductDetailCommand(...)
ProductListCommand(...)
Типичная вещь, которую вы хотите сделать, - это убедиться, что, например, транзакции отслеживаются только один раз, даже если пользователь перезагружает страницу. Вы должны отслеживать это на своем сервере, но, как правило, также будет проблема использования пользователей, использующих кнопку Back, или в браузерах, проводящих страницу и т. Д., Там, где нет фактического взаимодействия сервера.
Войдите в CookieGuardedCommand :
AnalyticsTracker.Current.Track(new CookieGuardedCommand(innerCommand, "order12345"));
Обертывание вашей команды в CookieGuardedCommand отобразит внутреннюю команду внутри оператора if , подобного этому:
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();
}
Это гарантирует, что команда не выполнена снова, если один и тот же JavaScript выполняется дважды. Пользователь, например, идентификатор заказа в качестве идентификатора команды, чтобы убедиться, что файл cookie установлен только для этого конкретного порядка.
Иногда у вас есть события, происходящие без какого -либо взаимодействия с сервером. Например, нажав на изображение, чтобы увеличить его. В этом случае вы можете использовать AnalityCstracker для генерации необходимого сценария:
<a href="#" onmousedown="@AnalyticsTracker.ClientCommand(new EventCommand("category", "action", "label"))">
<img src="..."/>
</a>
В вашем шаблоне добавьте следующее после <body> , чтобы отобразить сценарий отслеживания
@using Vertica.AnalyticsTracker
...
<body>
@TagManager.Render("GTM-XXYYY")
...
</body>
<%@ Import Namespace="Vertica.AnalyticsTracker" %>
...
<body>
<%= TagManager.Render("GTM-XXYYY") %>
...
</body>
При необходимости вы можете отобразить отдельные части менеджера Google Tag (Script, Noscript и DataLayer) с:
TagManager.RenderScript()TagManager.RenderNoScript()TagManager.RenderDataLayer()Вы можете настроить настройки тега, используя перегрузки метода render ().
@TagManager.Render(account:"GTM-XXYYY", dataLayerName: "myLayer");
Использование Tagmanager позволяет легко информации с переменной dataLayer .
TagManager.Current.AddMessage(new Variable("myVariable", "myValue"));
Это будет генерировать следующий DataLayer
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': 'myValue'});
</script>
Иногда вы можете добавить более сложные объекты в DataLayer, и это поддерживается с помощью словаря
var dict = new Dictionary<string, object>
{
{"myProp", "myValue"},
{"yourProp", 12345}
};
TagManager.Current.AddMessage(new Variable("myVariable", dict));
Словарь будет оказан как глубокий объект
<script>
var dataLayer = dataLayer || [];
dataLayer.push({'myVariable': {'myProp': 'myValue','yourProp': 12345}});
</script>
Используя TransactionMessage, информация о заказа может быть отправлена через 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);
Заказ будет представлен в соответствии со спецификациями 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>