Google Remarketing

For general questions and discussions specific to the AbleCommerce GOLD ASP.Net shopping cart software.
kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Google Remarketing

Post by kwikstand » Wed Feb 12, 2014 1:21 pm

Has anybody set up Google Dynamic Remarketing?

It requires code to be pasted in the footer and it needs to include custom parameters with regard to product id, value, etc. I can't figure out how to get these parameters in the code. Here is a link to some of their instructions:

https://support.google.com/adwords/answer/2476688

Does anybody have any experience with this?

Thanks,

Scott
Contractor's Solutions
www. contractors-solutions.net

User avatar
Katie
AbleCommerce Admin
AbleCommerce Admin
Posts: 2651
Joined: Tue Dec 02, 2003 1:54 am
Contact:

Re: Google Remarketing

Post by Katie » Fri Feb 28, 2014 6:14 pm

The instructions say to "Copy the remarketing tag code and paste it at the bottom of all pages"

Have you tried putting the code in the \conlib\storefooter.aspx file?
Thank you for choosing AbleCommerce!

http://help.ablecommerce.com - product support
http://wiki.ablecommerce.com - developer support

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Mon Mar 03, 2014 6:46 am

Yes. The problem is each product needs to include custom parameters such as its' unique product identifier, price, etc.

<script type="text/javascript">
var google_tag_params = {
ecomm_prodid: 'REPLACE_WITH_VALUE',
ecomm_pagetype: 'REPLACE_WITH_VALUE',
ecomm_totalvalue: 'REPLACE_WITH_VALUE'
};
</script>

Take a look at these instructions: https://support.google.com/adwords/answer/3103357
Contractor's Solutions
www. contractors-solutions.net

ChipWV
Lieutenant Commander (LCDR)
Lieutenant Commander (LCDR)
Posts: 88
Joined: Tue Feb 03, 2009 12:51 pm

Re: Google Remarketing

Post by ChipWV » Mon Mar 03, 2014 8:13 am

It would be nice to have this integrated into R7 footer. My Adwords agency has been nagging me to get the remarketing code installed. It's a bit too complicated to me to. Could this be combined with the Google Analytics code?

User avatar
Katie
AbleCommerce Admin
AbleCommerce Admin
Posts: 2651
Joined: Tue Dec 02, 2003 1:54 am
Contact:

Re: Google Remarketing

Post by Katie » Mon Mar 03, 2014 11:12 am

You will need to request it as a feature using the green Feedback button within Gold. As far as R7, we are in the final QA testing stage right now, so we cannot add any new features at this time.

I have to wonder though...there is an existing HTML head field for each product, which would typically be used for javascript code. I know the instructions say to add it before the ending body tag, but you might want to experiment with a single product to see if it will work.

If you decide to give it a try, let us know how it goes, ok?
Thank you for choosing AbleCommerce!

http://help.ablecommerce.com - product support
http://wiki.ablecommerce.com - developer support

ChipWV
Lieutenant Commander (LCDR)
Lieutenant Commander (LCDR)
Posts: 88
Joined: Tue Feb 03, 2009 12:51 pm

Re: Google Remarketing

Post by ChipWV » Wed Mar 05, 2014 8:13 am

Katie, I don't have Gold installed yet. I have 2 licenses, but have been waiting, as a few features I wanted weren't added until R6. I will start start using these with R7, and upgrading my current 7.06 site.

Thanks, maybe someone else can submit the feature request for me.

User avatar
Shopping Cart Admin
AbleCommerce Admin
AbleCommerce Admin
Posts: 3055
Joined: Mon Dec 01, 2003 8:41 pm
Location: Vancouver, WA
Contact:

Re: Google Remarketing

Post by Shopping Cart Admin » Wed Mar 05, 2014 1:09 pm

Hello Chip,

You can access the gold feedback system without having GOLD installed here:

http://ablecommerce.uservoice.com/
Thanks for your support

Shopping Cart Guru
AbleCommerce.com
Follow us on Facebook

User avatar
jmestep
AbleCommerce Angel
Posts: 8164
Joined: Sun Feb 29, 2004 8:04 pm
Location: Dayton, OH
Contact:

Re: Google Remarketing

Post by jmestep » Thu Mar 06, 2014 5:55 am

It could be put into the GoogleAnalytics widget. Here is a snippet of the code that you could pattern yours after- it gets the sku, name, price, etc

Code: Select all

               if (item.OrderItemType == OrderItemType.Product)
                {
                    // REGISTER THIS ITEM
                    _GoogleAnalyticsJs.Append("_gaq.push(['_addItem',");
                    _GoogleAnalyticsJs.Append(string.Format("'{0}',", order.OrderNumber)); // order ID - required
                    _GoogleAnalyticsJs.Append(string.Format("'{0}',", GetItemSku(item))); // SKU/code
                    _GoogleAnalyticsJs.Append(string.Format("'{0:F2}',", GetItemName(item))); // productName
                    _GoogleAnalyticsJs.Append(string.Format("'{0:F2}',", GetCategoryName(item))); // category or variation
                    _GoogleAnalyticsJs.Append(string.Format("'{0:F2}',", GetItemPrice(order, item))); // unit price - required
                    _GoogleAnalyticsJs.Append(string.Format("'{0}'", item.Quantity)); // quantity - required
                    _GoogleAnalyticsJs.AppendLine("]);");
                }
Judy Estep
Web Developer
jestep@web2market.com
http://www.web2market.com
708-653-3100 x209
New search report plugin for business intelligence:
http://www.web2market.com/Search-Report ... -P154.aspx

User avatar
mazhar
Master Yoda
Master Yoda
Posts: 5084
Joined: Wed Jul 09, 2008 8:21 am
Contact:

Re: Google Remarketing

Post by mazhar » Thu Mar 13, 2014 8:36 am

kwikstand wrote:Yes. The problem is each product needs to include custom parameters such as its' unique product identifier, price, etc.

<script type="text/javascript">
var google_tag_params = {
ecomm_prodid: 'REPLACE_WITH_VALUE',
ecomm_pagetype: 'REPLACE_WITH_VALUE',
ecomm_totalvalue: 'REPLACE_WITH_VALUE'
};
</script>

Take a look at these instructions: https://support.google.com/adwords/answer/3103357
Why not try small NVelocity script to output product specific information. Upon your product details page from retail side, you can edit the page from bottom section edit option. Then edit the content scriptlet and put following script in it. After saving the scriptlet the script will ouput dynamic values into embedded script specific to product being visited.

Code: Select all

<script type="text/javascript" lanugage="javascript">
var google_tag_params = {
ecomm_prodid: '${Product.ProductId}', 
ecomm_pagetype: 'product',
ecomm_totalvalue: '${Product.Price}'
};
</script>

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Wed Aug 05, 2015 1:13 pm

I don't get it. I tried putting that code in my footer and it still doesn't work.

I don't understand any of it. I have been trying to get dynamic remarketing to work on my website for a year and a half and still can't make it work. Where are these values supposed to come from?
Contractor's Solutions
www. contractors-solutions.net

User avatar
mazhar
Master Yoda
Master Yoda
Posts: 5084
Joined: Wed Jul 09, 2008 8:21 am
Contact:

Re: Google Remarketing

Post by mazhar » Wed Aug 05, 2015 11:12 pm

I am not sure maybe the instructions were for older version of ablecommerce AC7. It won't work in footer of gold. Actually you should put this script into a user control and then use that user control on your product display page's description area. Try creating a user control file in ConLib/Custom folder with name GoogleRemarketing.ascx and then put following content in it.

Code: Select all

<%@ Control Language="C#" ClassName="GoogleRemarketing" %>

<script runat="server">
    int ProductId { get; set;}
    decimal Price { get; set;}
    protected void Page_PreRender(object sender, EventArgs e)
    {
        CommerceBuilder.Products.Product product = CommerceBuilder.Products.ProductDataSource.Load(PageHelper.GetProductId());
        ProductId = product.Id;
        Price = product.Price;
    }
</script>
<script type="text/javascript" lanugage="javascript">
var google_tag_params = {
ecomm_prodid: '<%=ProductId%>', 
ecomm_pagetype: 'product',
ecomm_totalvalue: '<%=Price%>'
};
</script>
Finally use this control in product display page description area by using [[ConLib:GoogleRemarketing]]

rmaweb
Commander (CMDR)
Commander (CMDR)
Posts: 118
Joined: Fri Sep 10, 2010 9:41 am

Re: Google Remarketing

Post by rmaweb » Thu Aug 06, 2015 3:44 am

Hello All,

I am in the process of changing over our UniversalGoogleAnalyticsWidget.ascx.cs file to use the enhanced ecommerce tools (which is now obsolete for us since I am now changing over to Google Tag Manager). But here is my file to review for ideas on how to implement it. The Product informaiton from the custom dimension has to be called before firing the Send Pageview command. Thats why I moved it to the ClosePageTrackerJS() function.

Code: Select all

using CommerceBuilder.Catalog;
using CommerceBuilder.Common;
using CommerceBuilder.Orders;
using CommerceBuilder.Stores;
using CommerceBuilder.Utility;
using CommerceBuilder.Products;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Caching;
using System.Web.UI;
using System.Web.UI.WebControls;
using AbleCommerce.Code;

namespace AbleCommerce.ConLib
{
    [Description("Widget for Google Analytics Tracking.")]
    public partial class UniversalGoogleAnalyticsWidget : System.Web.UI.UserControl
    {
        private StoreSettingsManager _Settings;
        private StringBuilder _GoogleAnalyticsJs;

        private bool IsReceiptPage()
        {
            return (Request.FilePath.IndexOf("Checkout/Receipt.aspx", StringComparison.InvariantCultureIgnoreCase) >= 0);
        }

        private bool IsMyOrderPage()
        {
            return (Request.FilePath.IndexOf("Members/MyOrder.aspx", StringComparison.InvariantCultureIgnoreCase) >= 0);
        }

        private bool isBasketPage()
        {
            return (Request.FilePath.IndexOf("Basket.aspx", StringComparison.InvariantCultureIgnoreCase) >= 0);
        }

        protected void Page_PreRender(object sender, EventArgs e)
        {
            // DETERMINE IF GA IS ENABLED AND CONFIGURED
            _Settings = AbleContext.Current.Store.Settings;
            if (_Settings.EnableGoogleAnalyticsPageTracking && !string.IsNullOrEmpty(_Settings.GoogleUrchinId))
            {
                // CHECK TO SEE IF WE'VE ALREADY REGISTERED ANALYTICS SCRIPT
                // THIS IS A SAFETY PRECAUTION IN CASE THE CONTROL GETS ADDED 
                // TO THE PAGE MORE THAN ONCE
                if (!Context.Items.Contains("GoogleAnalytics"))
                {
                    // SHOW THE PANEL AND COMPILE THE TRACKING SCRIPT
                    GA.Visible = true;
                    BeginPageTrackerJs();

                    AddAdwordsJS();

                    // SEE IF WE NEED TO ADD THE TRANSACCTION SCRIPT FOR RECEIPT PAGE
                    if (_Settings.EnableGoogleAnalyticsEcommerceTracking && (this.IsReceiptPage() || this.IsMyOrderPage()))
                    {
                        Order order = AbleCommerce.Code.OrderHelper.GetOrderFromContext();
                        if (order != null && order.Items.Count > 0)
                        {
                            // TRY TO LIMIT REFRESHES FROM MESSING UP THE TRACKING DATA
                            if (order.OrderDate.AddMinutes(20) > LocaleHelper.LocalNow)
                            {
                                // KEEP A LIST OF THE ORDERS WE PROCESS
                                List<int> googleOrders = Context.Cache.Get("GoogleAnalyticsOrderList") as List<int>;
                                if (googleOrders == null)
                                {
                                    googleOrders = new List<int>();
                                    Cache.Add("GoogleAnalyticsOrderList", googleOrders, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 1, 0), CacheItemPriority.Normal, null);
                                }

                                // IF WE DON'T HAVE THE ORDER IN OUR LIST, OUTPUT ANALYTICS
                                if (!googleOrders.Contains(order.Id))
                                {
                                    AddEcommerceJs(order);
                                    googleOrders.Add(order.Id);
                                }
                            }
                        }
                    }

                    // SEE IF WE NEED TO ADD THE AUDIENCE TRACKER FOR BASKET PAGE
                    if (this.isBasketPage())
                    {
                        _GoogleAnalyticsJs.AppendLine("ga('set', 'dimension2', 'cart');");
                    }


                    // FINALIZE GA SCRIPT, REGISTER, AND PREVENT REPEAT PROCESSING
                    ClosePageTrackerJs();
                    this.Page.Header.Controls.Add(new LiteralControl(_GoogleAnalyticsJs.ToString()));
                    this.Context.Items.Add("GoogleAnalytics", true);
                }
            }
        }

        private void BeginPageTrackerJs()
        {
            _GoogleAnalyticsJs = new StringBuilder();
            _GoogleAnalyticsJs.AppendLine("<script>");
            _GoogleAnalyticsJs.AppendLine("(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){");
            _GoogleAnalyticsJs.AppendLine("(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),");
            _GoogleAnalyticsJs.AppendLine("m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)");
            _GoogleAnalyticsJs.AppendLine("})(window,document,'script','//www.google-analytics.com/analytics.js','ga');");

            _GoogleAnalyticsJs.AppendLine(string.Format("ga('create', '{0}', 'auto');", _Settings.GoogleUrchinId));
            _GoogleAnalyticsJs.AppendLine("ga('require', 'ec');");

        }

        private void AddEcommerceJs(Order order)
        {
            // CALCULATE THE TRANSACTION TOTALS
            decimal shippingTotal = 0;
            decimal taxTotal = 0;
            decimal orderTotal = 0;
            foreach (OrderItem item in order.Items)
            {
                decimal extendedPrice = item.ExtendedPrice;
                switch (item.OrderItemType)
                {
                    case OrderItemType.Shipping:
                    case OrderItemType.Handling:
                        shippingTotal += extendedPrice;
                        break;
                    case OrderItemType.Tax:
                        taxTotal += extendedPrice;
                        break;
                    default:
                        break;
                }
                orderTotal += extendedPrice;
            }

            // REGISTER THE PAGE FOR AUDIENCE TRACKING
            _GoogleAnalyticsJs.AppendLine("ga('set', 'dimension2', 'purchase');");

            // REGISTER THE TRANSACTION TOTALS
            _GoogleAnalyticsJs.AppendLine("ga('ec:setAction', 'purchase', {");
            _GoogleAnalyticsJs.AppendLine(string.Format("'id': '{0}',", order.OrderNumber));
            _GoogleAnalyticsJs.AppendLine(string.Format("'affiliation': '{0}',", AbleContext.Current.Store.Name.Replace("'", string.Empty)));
            _GoogleAnalyticsJs.AppendLine(string.Format("'revenue': '{0:F2}',", orderTotal));
            _GoogleAnalyticsJs.AppendLine(string.Format("'tax': '{0:F2}',", taxTotal));
            _GoogleAnalyticsJs.AppendLine(string.Format("'shipping': '{0:F2}'", shippingTotal));
            _GoogleAnalyticsJs.AppendLine("});");


            // REGISTER EACH ITEM
            foreach (OrderItem item in order.Items)
            {
                if (item.OrderItemType == OrderItemType.Product)
                {
                    // REGISTER THIS ITEM
                    _GoogleAnalyticsJs.Append("ga('ec:addProduct', {");
                    _GoogleAnalyticsJs.AppendLine(string.Format("'id': '{0}',", item.Id));
                    _GoogleAnalyticsJs.AppendLine(string.Format("'name': '{0}',", GetItemName(item)));
                    _GoogleAnalyticsJs.AppendLine(string.Format("'category': '{0}',", GetCategoryName(item)));
                    _GoogleAnalyticsJs.AppendLine(string.Format("'brand': '{0}',", GetItemBrand(item)));
                    _GoogleAnalyticsJs.AppendLine(string.Format("'price': '{0:F2}',", GetItemPrice(order, item)));
                    _GoogleAnalyticsJs.AppendLine(string.Format("'quantity': {0}", item.Quantity));
                    _GoogleAnalyticsJs.AppendLine("});");
                }
            }
        }

        private void ClosePageTrackerJs()
        {
            _GoogleAnalyticsJs.AppendLine("ga('send', 'pageview');");
            _GoogleAnalyticsJs.AppendLine("</script>");
        }

        private string GetItemSku(OrderItem item)
        {
            if (string.IsNullOrEmpty(item.Sku)) return item.ProductId.ToString();
            return SanitizeInput(item.Sku);
        }

        private string GetItemName(OrderItem item)
        {
            return SanitizeInput(item.Name);
        }

        private string GetCategoryName(OrderItem item)
        {
            if (item.Product != null && item.Product.Categories.Count > 0)
            {
                int categoryId = item.Product.Categories[0];
                Category category = CategoryDataSource.Load(categoryId);
                if (category != null) return SanitizeInput(category.Name);
            }
            return string.Empty;
        }

        private decimal GetItemPrice(Order order, OrderItem parentItem)
        {
            OrderItemType[] includedChildTypes = { OrderItemType.Charge, OrderItemType.Coupon, OrderItemType.Credit, OrderItemType.Discount };
            decimal totalPrice = parentItem.ExtendedPrice;
            foreach (OrderItem childItem in order.Items)
            {
                if (childItem.ParentItemId == parentItem.Id
                    && childItem.Id != parentItem.Id
                    && Array.IndexOf(includedChildTypes, childItem.OrderItemType) > -1)
                {
                    totalPrice += childItem.ExtendedPrice;
                }
            }
            return ((decimal)totalPrice / (decimal)parentItem.Quantity);
        }

        private string GetItemBrand(OrderItem Item)
        {
            if (Item.Product != null)
            {
                if (Item.Product.Manufacturer != null)
                    return SanitizeInput(Item.Product.Manufacturer.Name);
            }
            return string.Empty;
        }

        private string SanitizeInput(string value)
        {
            return value.Replace("'", string.Empty);
        }

        private void AddAdwordsJS()
        {
            HttpRequest request = HttpContext.Current.Request;

            //CHECK FOR PRODUCT
            int productId = AlwaysConvert.ToInt(request.QueryString["ProductId"]);
            Product product = ProductDataSource.Load(productId);
            if (product != null && !product.ExcludeFromFeed)
            {
                _GoogleAnalyticsJs.AppendLine(string.Format("ga('set', 'dimension1', '{0}');", product.Id));
                _GoogleAnalyticsJs.AppendLine("ga('set', 'dimension2', 'product');");

                _GoogleAnalyticsJs.AppendLine("ga('ec:addProduct', {");
                _GoogleAnalyticsJs.AppendLine(string.Format("'id': '{0}',", product.Id));
                _GoogleAnalyticsJs.AppendLine(string.Format("'name': '{0}',", GetItemName(product)));
                _GoogleAnalyticsJs.AppendLine(string.Format("'category': '{0}',", GetCategoryName(product)));
                _GoogleAnalyticsJs.AppendLine(string.Format("'brand': '{0}',", GetItemBrand(product)));
                _GoogleAnalyticsJs.AppendLine("});");
                _GoogleAnalyticsJs.AppendLine("ga('ec:setAction', 'detail');");
            }

            //CHECK FOR CATEGORY
            int categoryId = AlwaysConvert.ToInt(request.QueryString["CategoryId"]);
            Category category = CategoryDataSource.Load(categoryId);
            if (category != null)
            {
                _GoogleAnalyticsJs.AppendLine("ga('set', 'dimension2', 'category');");
            }
        }

        private string GetItemName(Product item)
        {
            return SanitizeInput(item.Name);
        }

        private string GetCategoryName(Product item)
        {
            if (item != null && item.Categories.Count > 0)
            {
                int categoryId = item.Categories[0];
                Category category = CategoryDataSource.Load(categoryId);
                if (category != null) return SanitizeInput(category.Name);
            }
            return string.Empty;
        }

        private string GetItemBrand(Product Item)
        {
            if (Item != null)
            {
                if (Item.Manufacturer != null)
                    return SanitizeInput(Item.Manufacturer.Name);
            }
            return string.Empty;
        }
    }
}
Ryan A.
Scott's Bait and Tackle
http://store.scottsbt.com
Work In Progress
Able Gold R10
Bootstrap 3.3

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Thu Aug 06, 2015 10:21 am

I just learned about Google tag Manager last night and maybe I will try that.
Contractor's Solutions
www. contractors-solutions.net

rmaweb
Commander (CMDR)
Commander (CMDR)
Posts: 118
Joined: Fri Sep 10, 2010 9:41 am

Re: Google Remarketing

Post by rmaweb » Thu Aug 06, 2015 3:32 pm

I'm in the process of learning it. It looks like an easy web interface to add the different companies, but it still will require some coding for the Econ stuff I think. Just not like the JavaScript used in the google analytics. Instead it looks like using "data layers".
Ryan A.
Scott's Bait and Tackle
http://store.scottsbt.com
Work In Progress
Able Gold R10
Bootstrap 3.3

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Thu Aug 06, 2015 6:56 pm

I spent a bunch of time with it tonight and don't know much more. I still don't know how to get the conversion value. In Google Tag Manager, am I supposed to use DOM Element? If so, then what is the ID?

Or maybe I should use "Data Layer Variable".

I have no idea and there aren't any real instructions anywhere.
Contractor's Solutions
www. contractors-solutions.net

rmaweb
Commander (CMDR)
Commander (CMDR)
Posts: 118
Joined: Fri Sep 10, 2010 9:41 am

Re: Google Remarketing

Post by rmaweb » Fri Aug 07, 2015 3:53 am

Hello Kwikstand,

I would recommend these links for reading.

https://developers.google.com/tag-manag ... -ecommerce

https://support.google.com/tagmanager
Ryan A.
Scott's Bait and Tackle
http://store.scottsbt.com
Work In Progress
Able Gold R10
Bootstrap 3.3

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Fri Aug 07, 2015 4:32 am

I am looking at that. Google is not very good at all with clear and concise directions. For example, under "Triggers and Variables", it doesn't state if I need to enter my complete url, http://www.mysite.com/page.aspx, or just /page.aspx. If it is the complete url, then which version? http://www. mysite.com, http://www.mysite.com, etc.

Then it goes on tom mention "Regex .*". What is that??

Google as usual, is very vague.
Contractor's Solutions
www. contractors-solutions.net

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Fri Aug 07, 2015 5:04 am

Now I am reading that you need to set up a data layer object that contains the information you need. How do you do that in Able?
Contractor's Solutions
www. contractors-solutions.net

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Sat Aug 08, 2015 2:42 pm

Well, I just realized that the GTM code broke my "mobile friendliness" of the responsive theme.

Anybody know why or how to overcome it?
Contractor's Solutions
www. contractors-solutions.net

rmaweb
Commander (CMDR)
Commander (CMDR)
Posts: 118
Joined: Fri Sep 10, 2010 9:41 am

Re: Google Remarketing

Post by rmaweb » Mon Aug 10, 2015 1:45 am

Can you elaborate kwikstand? I should have a GTM conLib file ready by tomorrow afternoon and will post it here. But it would help if I could know what problem you are encountering and how so I can avoid that.
Ryan A.
Scott's Bait and Tackle
http://store.scottsbt.com
Work In Progress
Able Gold R10
Bootstrap 3.3

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Mon Aug 10, 2015 3:40 am

After I put the GTM code in the BaseMaster files, my website didn't pass Google's Mobile Friendly test: https://www.google.com/webmasters/tools ... -friendly/

After deleting the code and putting the BaseMaster files back the way they were, the test passed again.
Contractor's Solutions
www. contractors-solutions.net

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Mon Aug 10, 2015 4:34 pm

Mazhar, since GTM doesn't work with the responsive theme, I tried your method, but it doesn't work either. It just puts this at the bottom of the product description:

[[ConLib:GoogleRemarketing]] g:\Home\WWW\contract\dev.contractors-solutions.net\wwwroot\ConLib\GoogleRemarketing.ascx(8): error CS0103: The name 'PageHelper' does not exist in the current context

Besides, the remarketing code needs to be on all pages so that it can track all visitors to the site and it needs to be on the receipt page so that it can track sales. I think that variable would be something like: OrderTotalSummary, but I am not sure
Contractor's Solutions
www. contractors-solutions.net

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Sat Aug 15, 2015 5:45 am

Any luck with this rmaweb? It doesn't look like anybody else has an interest in remarketing. How are you making out?

Did you try GTM? Have you figured out how to extract the appropriate values from a page?
Contractor's Solutions
www. contractors-solutions.net

rmaweb
Commander (CMDR)
Commander (CMDR)
Posts: 118
Joined: Fri Sep 10, 2010 9:41 am

Re: Google Remarketing

Post by rmaweb » Thu Aug 20, 2015 9:06 am

Hello kwikstand,

I am still trying to get it to work. Having a little trouble getting the data layer to work without throwing errors at me. I am hoping to have the conLib ready within a week to post.

Sorry for the delay in getting back to you.
Ryan A.
Scott's Bait and Tackle
http://store.scottsbt.com
Work In Progress
Able Gold R10
Bootstrap 3.3

kwikstand
Commodore (COMO)
Commodore (COMO)
Posts: 410
Joined: Mon Feb 19, 2007 8:12 pm
Contact:

Re: Google Remarketing

Post by kwikstand » Thu Aug 20, 2015 10:25 am

Does the Tag Manager code mess up the mobile friendliness of your site? Are you using the Responsive Theme?

I was on the phone for quite some time this morning with Google about getting the regular remarketing code to work, They are supposed to be calling me back.
Contractor's Solutions
www. contractors-solutions.net

Post Reply