public static void RegisterCompanyEvent(string companyName) { var item = Sitecore.Context.Item; var pageEventModel = new Sitecore.Analytics.Model.PageEventData() { PageEventDefinitionId = CompanyEvent, ItemId = item.ID.Guid, Name = "Company Lookup", DateTime = DateTime.UtcNow, Text = $"Comopany {companyName} started a visit on the site." }; var pageEventData = new Sitecore.Analytics.Data.PageEventData(pageEventModel); Tracker.Current.CurrentPage.Item = new Sitecore.Analytics.Model.ItemData { Id = item.ID.Guid, Language = item.Language.Name, Version = item.Version.Number }; Tracker.Current.CurrentPage.Register(pageEventData); Tracker.Current.Interaction.AcceptModifications(); }
public ActionResult RegisterGoal(string goalId, string productId) { using (var client = SitecoreXConnectClientConfiguration.GetClient()) { try { var goal = Tracker.MarketingDefinitions.Goals[new Guid(goalId)]; var pageData = new Sitecore.Analytics.Data.PageEventData(goal.Alias, goal.Id) { Data = productId, Text = "Triggered goal from front-end interaction", DataKey = "productId" }; Tracker.Current.CurrentPage.Register(pageData); string result = "{success:true}"; return(Json(result)); } catch (XdbExecutionException ex) { return(new HttpStatusCodeResult(500, "Unable to log interaction.")); } } }
public ActionResult Index(string email) { string identificationSource = "website"; Sitecore.Analytics.Tracker.Current.Session.Identify(identificationSource, email); var contact = Sitecore.Analytics.Tracker.Current.Contact; var emails = contact.GetFacet <IContactEmailAddresses>("Emails"); if (!emails.Entries.Contains("personal")) { emails.Preferred = "personal"; var personalEmail = emails.Entries.Create("personal"); personalEmail.SmtpAddress = email; } var outcome = new Sitecore.Analytics.Outcome.Model.ContactOutcome( Sitecore.Data.ID.NewID, new Data.ID("{EC97DE22-55CC-4A65-AACB-50435781D7D6}"), new Data.ID(Tracker.Current.Contact.ContactId) ); Tracker.Current.RegisterContactOutcome(outcome); var pageEventData = new Sitecore.Analytics.Data.PageEventData("Newsletter Signup") { Text = "user subsribed." }; Tracker.Current.Interaction.CurrentPage.Register(pageEventData); return(PartialView("~/Views/SubscribeForm/Confirmation.cshtml")); }
public override void Process(ProcessItemArgs args) { Assert.ArgumentNotNull((object)args, nameof(args)); Assert.ArgumentNotNull((object)args.Interaction, nameof(args.Interaction)); Assert.IsNotNull((object)args.Interaction.CurrentPage, "The current page of the specified interaction is not initialized."); var tagNames = GetTagNames(Sitecore.Context.Item); var pageData = new Sitecore.Analytics.Data.PageEventData("Taxonomy Page View", Configuration.ConfigSettings.TaxonomyPageViewEventId) { Data = tagNames, Text = "Viewed page tagged with taxonomy", DataKey = "TagNames" }; args.Interaction.CurrentPage.Register(pageData); }
/// <summary> /// Products the reviewed. /// </summary> /// <param name="productCode">The product code.</param> /// <param name="productName">Name of the product.</param> /// <param name="title">The title.</param> /// <param name="description">The description.</param> /// <param name="rate">The product rate.</param> public virtual void ProductReviewed(string productCode, string productName, string title, string description, string rate) { Assert.ArgumentNotNull(title, "title"); Assert.ArgumentNotNull(description, "description"); Assert.ArgumentNotNull(rate, "rate"); Assert.ArgumentNotNull(productCode, "productCode"); Assert.ArgumentNotNull(productName, "productName"); if (!Tracker.IsActive) { return; } AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>(); Assert.IsNotNull(analyticsHelper, "analyticsHelper"); string eventDescription = analyticsHelper.GetPageEventDescription(EventConstants.EventProductReviewed); if (string.IsNullOrEmpty(eventDescription)) { eventDescription = EventConstants.EventProductReviewed; } string text = eventDescription.FormatWith(new { Title = title, Text = description, Rate = rate, ProductName = productName }); ListString data = new ListString { productCode, title, description, rate, productName }; var currentPage = Tracker.Current.CurrentPage; if (currentPage == null) { return; } var pageEventData = new PageEventData(EventConstants.EventProductReviewed) { Text = text, Data = data.ToString() }; currentPage.Register(pageEventData); }
/// <summary> /// Used to read the querystring parameter from a productlink in list and register event in analytics database. /// </summary> public virtual void FollowListHit() { if (!Tracker.IsActive) { return; } string setting = Settings.GetSetting("Ecommerce.Analytics.EventQueryStringKey"); UrlString urlString = new UrlString(WebUtil.GetRawUrl()); string listName = urlString[setting + "_data"] ?? string.Empty; AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>(); Assert.IsNotNull(analyticsHelper, "analyticsHelper"); string eventDescription = analyticsHelper.GetPageEventDescription(EventConstants.EventUserClickedItemInList); if (string.IsNullOrEmpty(eventDescription)) { eventDescription = EventConstants.EventUserClickedItemInList; } string text = eventDescription.FormatWith(new { List = listName, ProductName = Sitecore.Context.Item["Title"] }); ListString data = new ListString { listName, Sitecore.Context.Item["Title"] }; var currentPage = Tracker.Current.CurrentPage; if (currentPage == null) { return; } var pageEventData = new PageEventData(EventConstants.EventUserClickedItemInList) { Text = text, Data = data.ToString() }; currentPage.Register(pageEventData); }
public ActionResult Index(string email) { // 10.3 Add entered email to session Sitecore.Analytics.Tracker.Current.Session.Identify(email); string message = ""; var contact = Sitecore.Analytics.Tracker.Current.Contact; var emails = contact.GetFacet <IContactEmailAddresses>("Emails"); if (!emails.Entries.Contains("personal")) { var personalEmail = emails.Entries.Create("personal"); personalEmail.SmtpAddress = email; emails.Preferred = "personal"; message = "Email Added; "; } // 10.4 Add Outcome Subscribed Sitecore.Data.ID outcomeID = new Sitecore.Data.ID("{C41E28D0-66C4-423F-84D5-09DEABD6294A}"); Sitecore.Data.ID contactID = new Sitecore.Data.ID(contact.ContactId); var co = new Sitecore.Analytics.Outcome.Model.ContactOutcome(Sitecore.Data.ID.NewID, outcomeID, contactID); Sitecore.Analytics.Tracker.Current.RegisterContactOutcome(co); message += "Subscribed; "; // 10 optional Sitecore.Analytics.Data.PageEventData pageEvent = new Sitecore.Analytics.Data.PageEventData("Newsletter Signup"); var page = Sitecore.Analytics.Tracker.Current.CurrentPage; page.Register(pageEvent); message += "Registered; "; TempData["message"] = message; return(View("Confirmation")); }
/// <summary> /// Tabs the selected. /// </summary> /// <param name="tabName">Name of the tab.</param> public virtual void TabSelected(string tabName) { Assert.ArgumentNotNull(tabName, "tabName"); if (!Tracker.IsActive) { return; } AnalyticsHelper analyticsHelper = Context.Entity.Resolve <AnalyticsHelper>(); Assert.IsNotNull(analyticsHelper, "analyticsHelper"); string description = analyticsHelper.GetPageEventDescription(EventConstants.EventTabSelected); if (string.IsNullOrEmpty(description)) { description = EventConstants.EventTabSelected; } string text = description.FormatWith(new { TabName = tabName, }); ListString data = new ListString { tabName }; var currentPage = Tracker.Current.CurrentPage; if (currentPage == null) { return; } var pageEventData = new PageEventData(EventConstants.EventTabSelected) { Text = text, Data = data.ToString() }; currentPage.Register(pageEventData); }
/// <summary> /// Used to read the querystring parameter from a productlink in list and register event in analytics database. /// </summary> public virtual void FollowListHit() { if (!Tracker.IsActive) { return; } string setting = Settings.GetSetting("Ecommerce.Analytics.EventQueryStringKey"); UrlString urlString = new UrlString(WebUtil.GetRawUrl()); string listName = urlString[setting + "_data"] ?? string.Empty; AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>(); Assert.IsNotNull(analyticsHelper, "analyticsHelper"); string eventDescription = analyticsHelper.GetPageEventDescription(EventConstants.EventUserClickedItemInList); if (string.IsNullOrEmpty(eventDescription)) { eventDescription = EventConstants.EventUserClickedItemInList; } string text = eventDescription.FormatWith(new { List = listName, ProductName = Sitecore.Context.Item["Title"] }); ListString data = new ListString { listName, Sitecore.Context.Item["Title"] }; var currentPage = Tracker.Current.CurrentPage; if (currentPage == null) { return; } var pageEventData = new PageEventData(EventConstants.EventUserClickedItemInList) { Text = text, Data = data.ToString() }; currentPage.Register(pageEventData); }
/// <summary> /// Tabs the selected. /// </summary> /// <param name="tabName">Name of the tab.</param> public virtual void TabSelected(string tabName) { Assert.ArgumentNotNull(tabName, "tabName"); if (!Tracker.IsActive) { return; } AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>(); Assert.IsNotNull(analyticsHelper, "analyticsHelper"); string description = analyticsHelper.GetPageEventDescription(EventConstants.EventTabSelected); if (string.IsNullOrEmpty(description)) { description = EventConstants.EventTabSelected; } string text = description.FormatWith(new { TabName = tabName, }); ListString data = new ListString { tabName }; var currentPage = Tracker.Current.CurrentPage; if (currentPage == null) { return; } var pageEventData = new PageEventData(EventConstants.EventTabSelected) { Text = text, Data = data.ToString() }; currentPage.Register(pageEventData); }
/// <summary> /// Products the reviewed. /// </summary> /// <param name="productCode">The product code.</param> /// <param name="productName">Name of the product.</param> /// <param name="title">The title.</param> /// <param name="description">The description.</param> /// <param name="rate">The product rate.</param> public virtual void ProductReviewed(string productCode, string productName, string title, string description, string rate) { Assert.ArgumentNotNull(title, "title"); Assert.ArgumentNotNull(description, "description"); Assert.ArgumentNotNull(rate, "rate"); Assert.ArgumentNotNull(productCode, "productCode"); Assert.ArgumentNotNull(productName, "productName"); if (!Tracker.IsActive) { return; } AnalyticsHelper analyticsHelper = Context.Entity.Resolve<AnalyticsHelper>(); Assert.IsNotNull(analyticsHelper, "analyticsHelper"); string eventDescription = analyticsHelper.GetPageEventDescription(EventConstants.EventProductReviewed); if (string.IsNullOrEmpty(eventDescription)) { eventDescription = EventConstants.EventProductReviewed; } string text = eventDescription.FormatWith(new { Title = title, Text = description, Rate = rate, ProductName = productName }); ListString data = new ListString { productCode, title, description, rate, productName }; var currentPage = Tracker.Current.CurrentPage; if (currentPage == null) { return; } var pageEventData = new PageEventData(EventConstants.EventProductReviewed) { Text = text, Data = data.ToString() }; currentPage.Register(pageEventData); }
public string RegisterAnalyticsEvent(List <string> json) { var sitecoreEventName = string.Empty; //0 var category = string.Empty; //1 var action = string.Empty; //2 var label = string.Empty; //3 var value = string.Empty; //4 var currencyCode = string.Empty; //5 decimal monetaryValue = 0; //6 var itemId = Guid.Empty; //7 var pageUrl = string.Empty; //8 var culture = string.Empty; //9 var itemVersion = 0; //10 var firstName = string.Empty; //11 var lastName = string.Empty; //12 var jobTitle = string.Empty; //13 var email = string.Empty; //14 var clickUrl = string.Empty; //15 var clickText = string.Empty; //16 var isInternalTraffic = string.Empty; //17 var position = string.Empty; //18 var mediaItemId = Guid.Empty; //19 var mediaItemName = string.Empty; //20 var searchTerm = string.Empty; //21 var itemName = string.Empty; //22 var responseMessage = string.Empty; // Make sure Tracker is started. if (!Tracker.IsActive) { Tracker.StartTracking(); } try { // Check for valid json. if (json == null) { return("Invalid json"); } // Check for valid event definition Name. sitecoreEventName = json[0].ToLower(); if (string.IsNullOrEmpty(sitecoreEventName)) { return("Invalid Event Definition Name"); } // If contact info provided then identify the contact. (independent of any event that is being registered). firstName = json[11]; lastName = json[12]; jobTitle = json[13]; email = json[14]; itemName = json[22]; if (!string.IsNullOrEmpty(firstName) && !string.IsNullOrEmpty(lastName) && !string.IsNullOrEmpty(email)) { IdentifyContact(itemName, firstName, lastName, jobTitle, email); } // Check for valid category. category = json[1].ToLower(); if (string.IsNullOrEmpty(category)) { return("Invalid category"); } // Resolve the event definition ID. Guid eventDefinitionId = Guid.NewGuid(); if (sitecoreEventName != "page view") { var results = new List <SearchResultItem>(); ISearchIndex index = ContentSearchManager.GetIndex("sitecore_master_index"); using (IProviderSearchContext context = index.CreateSearchContext()) { switch (category) { // Ensure we have an item definition ID. case "page event": results = context.GetQueryable <SearchResultItem>().Where(x => x.Path.StartsWith("/sitecore/system/Settings/Analytics/Page Events/") && x.Name == sitecoreEventName).ToList(); break; case "goal": results = context.GetQueryable <SearchResultItem>().Where(x => x.Path.StartsWith("/sitecore/system/Marketing Control Panel/Goals/") && x.Name == sitecoreEventName).ToList(); break; case "campaign": results = context.GetQueryable <SearchResultItem>().Where(x => x.Path.StartsWith("/sitecore/system/Marketing Control Panel/Campaigns/") && x.Name == sitecoreEventName).ToList(); break; case "download": eventDefinitionId = AnalyticsIds.DownloadEvent.Guid; break; case "search": eventDefinitionId = AnalyticsIds.SearchEvent.Guid; break; case "outcome": results = context.GetQueryable <SearchResultItem>().Where(x => x.Path.StartsWith("/sitecore/system/Marketing Control Panel/Outcomes/") && x.Name == sitecoreEventName).ToList(); break; default: return("Invalid Category"); } if (results.Any()) { eventDefinitionId = results.FirstOrDefault().ItemId.Guid; } else { return("Invalid Event Definition"); } } } action = json[2]; label = json[3]; value = json[4]; // Set item properties if all req values are present and valid. if (Guid.TryParse(json[7], out itemId)) { pageUrl = json[8]; culture = json[9]; // Check for valid item version. if (!string.IsNullOrEmpty(culture) && int.TryParse(json[10], out itemVersion)) { Tracker.Current.CurrentPage.SetItemProperties(itemId, culture, itemVersion); Tracker.Current.CurrentPage.SetUrl(pageUrl); } } // Register the event. Sitecore.Analytics.Data.PageEventData pageData = null; if (sitecoreEventName != "page view") { switch (category) { case "page event": var pageEventDefinition = Tracker.MarketingDefinitions.PageEvents[eventDefinitionId]; if (pageEventDefinition != null) { pageData = new Sitecore.Analytics.Data.PageEventData(pageEventDefinition.Alias, pageEventDefinition.Id); Tracker.Current.CurrentPage.RegisterPageEvent(pageEventDefinition); } break; case "goal": var goalDefinition = Tracker.MarketingDefinitions.Goals[eventDefinitionId]; if (goalDefinition != null) { pageData = new Sitecore.Analytics.Data.PageEventData(goalDefinition.Alias, goalDefinition.Id); Tracker.Current.CurrentPage.RegisterGoal(goalDefinition); } break; case "campaign": var campaignDefinition = Tracker.MarketingDefinitions.Campaigns[eventDefinitionId]; if (campaignDefinition != null) { pageData = new Sitecore.Analytics.Data.PageEventData(campaignDefinition.Alias, campaignDefinition.Id); Tracker.Current.CurrentPage.TriggerCampaign(campaignDefinition); } break; case "download": if (Guid.TryParse(json[19], out mediaItemId)) { var downloadDefinition = Tracker.MarketingDefinitions.PageEvents[eventDefinitionId]; if (downloadDefinition != null) { pageData = new Sitecore.Analytics.Data.PageEventData(downloadDefinition.Alias, downloadDefinition.Id); Tracker.Current.CurrentPage.Register(new Sitecore.Analytics.Data.PageEventData(downloadDefinition.Alias, downloadDefinition.Id) { Text = mediaItemName, // Not mandatory ItemId = mediaItemId }); } } break; case "search:": var searchEventDefinition = Tracker.MarketingDefinitions.PageEvents[AnalyticsIds.SearchEvent.Guid]; if (searchEventDefinition != null) { pageData = new Sitecore.Analytics.Data.PageEventData(searchEventDefinition.Alias, searchEventDefinition.Id); Tracker.Current.CurrentPage.Register(new Sitecore.Analytics.Data.PageEventData(searchEventDefinition.Alias, searchEventDefinition.Id) { Data = searchTerm }); } break; case "outcome": currencyCode = json[5]; monetaryValue = decimal.Parse(json[6]); var outcomeDefinition = Tracker.MarketingDefinitions.Outcomes[eventDefinitionId]; if (outcomeDefinition != null) { pageData = new Sitecore.Analytics.Data.PageEventData(outcomeDefinition.Alias, outcomeDefinition.Id); Tracker.Current.Interaction.RegisterOutcome(outcomeDefinition, currencyCode, monetaryValue); } break; default: return("Invalid category"); } // Add the page data. if (pageData != null) { pageData.Data = value; pageData.DataKey = label; pageData.Text = action; // Custom dimensions. pageData.CustomValues.Add("Item Name", itemName); pageData.CustomValues.Add("Page URL", pageUrl); pageData.CustomValues.Add("Click URL", clickUrl); pageData.CustomValues.Add("Click Text", clickText); pageData.CustomValues.Add("Item ID", itemId); pageData.CustomValues.Add("Item Culture", culture); pageData.CustomValues.Add("Item Version", itemVersion); pageData.CustomValues.Add("Is Internal Traffic", isInternalTraffic); pageData.CustomValues.Add("Position", position); Tracker.Current.CurrentPage.Register(pageData); } } responseMessage = string.Format("RegisterAnalyticsEvent: sitecoreEventName='{0}', category='{1}', action='{2}', label='{3}', value='{4}', currencyCode='{5}', monetaryValue='{6}', itemId='{7}', pageUrl='{8}', culture='{9}', itemVersion='{10}', firstName='{11}', lastName='{12}', jobTitle='{13}', email='{14}', clickUrl='{15}', clickText='{16}', isInternalTraffic='{17}', position='{18}', mediaItemId='{19}', mediaItemName='{20}', searchTerm='{21}'", sitecoreEventName, category, action, label, value, currencyCode, monetaryValue, itemId.ToString(), pageUrl, culture, itemVersion, firstName, lastName, jobTitle, email, clickUrl, clickText, isInternalTraffic, position, mediaItemId, mediaItemName, searchTerm); Log.Info(responseMessage, this); return("Success! " + responseMessage); } catch (Exception ex) { responseMessage = string.Format("RegisterAnalyticsEvent Error: message='{0}', sitecoreEventName='{1}', category='{2}', action='{3}', label='{4}', value='{5}', currencyCode='{6}', monetaryValue='{7}', itemId='{8}', pageUrl='{9}', culture='{10}', itemVersion='{11}', firstName='{12}', lastName='{13}', jobTitle='{14}', email='{15}', clickUrl='{16}', clickText='{17}', isInternalTraffic='{18}', position='{19}', mediaItemId='{20}', mediaItemName='{21}', searchTerm='{22}'", ex.Message, sitecoreEventName, category, action, label, value, currencyCode, monetaryValue, itemId.ToString(), pageUrl, culture, itemVersion, firstName, lastName, jobTitle, email, clickUrl, clickText, isInternalTraffic, position, mediaItemId, mediaItemName, searchTerm); Log.Error(responseMessage, ex, this); return(responseMessage); } }