private void DoGoogleAnalyticsTracking()
        {
            if (order == null) { return; }
            if (order.AnalyticsTracked) { return; }
            if (store == null) { return; }

            try
            {
                mojoGoogleAnalyticsScript analytics = Page.Master.FindControl("mojoGoogleAnalyticsScript1") as mojoGoogleAnalyticsScript;
                if (analytics == null) { DoAsyncTracking(); return; }

                AnalyticsTransaction transaction = new AnalyticsTransaction();
                transaction.OrderId = order.OrderGuid.ToString();
                transaction.City = order.CustomerCity;
                transaction.Country = order.CustomerCountry;
                transaction.State = order.CustomerState;
                transaction.StoreName = siteSettings.SiteName + " - " + store.Name;
                transaction.Tax = order.TaxTotal.ToString(CultureInfo.InvariantCulture);
                transaction.Total = order.OrderTotal.ToString(CultureInfo.InvariantCulture);

                foreach (OrderOffer offer in order.OrderOffers)
                {
                    AnalyticsTransactionItem item = new AnalyticsTransactionItem();
                    item.Category = string.Empty;
                    item.OrderId = order.OrderGuid.ToString();
                    item.Price = offer.OfferPrice.ToString(CultureInfo.InvariantCulture);
                    item.ProductName = offer.Name;
                    item.Quantity = offer.Quantity.ToString(CultureInfo.InvariantCulture);
                    item.Sku = offer.OfferGuid.ToString();
                    transaction.Items.Add(item);

                }

                if (transaction.IsValid())
                {
                    analytics.Transactions.Add(transaction);
                    Order.TrackAnalytics(order.OrderGuid);
                }

            }
            catch(Exception ex)
            {
                log.Error("error tracking order in google analytics.", ex);
            }
        }
        private void DoAsyncTracking()
        {
            AnalyticsAsyncTopScript analytics = Page.Master.FindControl("analyticsTop") as AnalyticsAsyncTopScript;
            if (analytics == null) { return; }

            AnalyticsTransaction transaction = new AnalyticsTransaction();
            transaction.OrderId = order.OrderGuid.ToString();
            transaction.City = order.CustomerCity;
            transaction.Country = order.CustomerCountry;
            transaction.State = order.CustomerState;
            transaction.StoreName = siteSettings.SiteName + " - " + store.Name;
            transaction.Tax = order.TaxTotal.ToString(CultureInfo.InvariantCulture);
            transaction.Total = order.OrderTotal.ToString(CultureInfo.InvariantCulture);

            foreach (OrderOffer offer in order.OrderOffers)
            {
                AnalyticsTransactionItem item = new AnalyticsTransactionItem();
                item.Category = string.Empty;
                item.OrderId = order.OrderGuid.ToString();
                item.Price = offer.OfferPrice.ToString(CultureInfo.InvariantCulture);
                item.ProductName = offer.Name;
                item.Quantity = offer.Quantity.ToInvariantString();
                item.Sku = offer.OfferGuid.ToString();
                transaction.Items.Add(item);

            }

            if (transaction.IsValid())
            {
                analytics.Transactions.Add(transaction);
                Order.TrackAnalytics(order.OrderGuid);
            }
        }