Мне лучше опубликовать это, чтобы избавить всех от попыток создать этот чудовищный URL-адрес UTM gif.
Теперь вы можете использовать новый API протокола измерений , чтобы отправлять запрос POST и легко записывать события, просмотры страниц, попадания или почти любой другой тип измерения. Это супер просто!
POST /collect HTTP/1.1
Host: www.google-analytics.com
payload_data
Например, вот фрагмент кода для отправки события в C # (с использованием конечной точки SSL):
public void SendEvent(string eventCategory = null, string eventAction = null, string eventLabel = null, int? eventValue = null)
{
using(var httpClient = new HttpClient() {BaseAddress = new Uri("https://ssl.google-analytics.com/")}) {
var payload = new Dictionary<string, string>();
// Required Data
payload.Add("v", "1"); // Version
payload.Add("tid", "UA-XXX"); // UA account
payload.Add("aip", "1"); // Anonymize IP
payload.Add("cid", Guid.NewGuid().ToString()); // ClientID
payload.Add("t", "event"); // Hit Type
// Optional Data
payload.Add("ni", "1"); // Non-interactive hit
// Event Data
if (eventCategory != null)
{
payload.Add("ec", eventCategory);
}
if (eventAction != null)
{
payload.Add("ea", eventAction);
}
if (eventLabel != null)
{
payload.Add("el", eventLabel);
}
if (eventValue != null)
{
payload.Add("ev", eventValue.Value.ToString(CultureInfo.InvariantCulture));
}
using (var postData = new FormUrlEncodedContent(payload))
{
var response = httpClient.PostAsync("collect?z=" + DateTime.Now.Ticks, postData).Result;
if (!response.IsSuccessStatusCode)
{
throw new Exception("Could not send event data to GA");
}
}
}
}
Намного проще, чем взломать с __utm GIF.
Полезный пример
Вы можете легко добавить это к электронным письмам, выполнив следующее:
В электронном письме:
<img src="{url}/newsletter/track.gif?newsletterName=X" />
На вашем сайте MVC, например, NewsletterController
:
public ActionResult Track(string newsletterName) {
using(var ga = new AnalyticsFacade()) {
ga.TrackEmailOpen(newsletterName);
}
return Content("~/images/pixel.gif", "image/gif");
}
В вашем Global.asax или RouteConfig
:
routes.MapRoute(
"newsletteropen",
"newsletter/track.gif",
new
{
controller = "Newsletter",
action = "Track"
});
БУМ, готово, сынок. Теперь вы можете отслеживать открытия электронной почты, используя гораздо более приятный API, который поддерживается и документирован.