{"id":419,"date":"2021-04-13T12:23:39","date_gmt":"2021-04-13T11:23:39","guid":{"rendered":"https:\/\/organicdigital.co\/blog\/?p=419"},"modified":"2026-05-18T00:58:18","modified_gmt":"2026-05-17T23:58:18","slug":"how-to-do-dynamic-product-meta-data-in-magento-using-gtm","status":"publish","type":"post","link":"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/","title":{"rendered":"How To: Do Dynamic Product Meta Data in Magento Using GTM"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#The_Story_Behind_This_Case_Study\" >The Story Behind This Case Study<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Implement_Alternate_Language_Tags_in_Magento\" >How To Implement Alternate Language Tags in Magento<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#The_Pre-Optimisation_Meta_Data\" >The Pre-Optimisation Meta Data<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#Product_Not_On_Offer_%E2%80%93_Fuel_Tank\" >Product Not On Offer \u2013 Fuel Tank<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#Product_On_offer_%E2%80%93_Door_Hinge_Kit_for_Left_or_Right\" >Product On offer &#8211; Door Hinge Kit for Left or Right<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#Product_Meta_Data_Requirements\" >Product Meta Data Requirements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#Using_Custom_Variables_to_Populate_Data\" >Using Custom Variables to Populate Data<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Configure_Store_Region\" >How To Configure Store Region<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Configure_Product_Name\" >How To Configure Product Name<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Configure_Product_SKU\" >How To Configure Product SKU<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Configure_A_Formatted_Product_SKU\" >How To Configure A Formatted Product SKU<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Configure_Current_Price\" >How To Configure Current Price<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Check_If_On_Offer_And_Configure_Old_New_Price\" >How To Check If On Offer And Configure Old &amp; New Price<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Configure_USP_Unique_To_Store_Region\" >How To Configure USP Unique To Store Region<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#Summary_Of_Configured_Variables\" >Summary Of Configured Variables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Create_A_Product_Page_Trigger\" >How To Create A Product Page Trigger<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Create_Custom_HTML_Tag_For_Dynamic_Meta_Data\" >How To Create Custom HTML Tag For Dynamic Meta Data<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#How_To_Analyse_Product_Page_Performance\" >How To Analyse Product Page Performance<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/daveashworth.co\/blog\/how-to-do-dynamic-product-meta-data-in-magento-using-gtm\/#The_End_Result\" >The End Result<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Story_Behind_This_Case_Study\"><\/span>The Story Behind This Case Study<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As part of my role as an <a href=\"https:\/\/daveashworth.co\/skills\/ecommerce-seo-consultant\/\">Ecommerce SEO consultant<\/a>, I have been working with <a href=\"https:\/\/www.heritagepartscentre.com\/\" target=\"_blank\" rel=\"noopener\">Heritage Parts Centre<\/a> who are a global supplier of spare parts and accessories for classic VW and Porsche cars.&nbsp; Their website stores operate in the UK, US, Australia, Germany, Spain, and Italy, as well as an EU store for all other European countries.&nbsp; They have over 60,000 parts and accessories across over 40 models \u2013 resulting in an XML sitemap containing 250k pages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In summary: It is a big site.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I came on board following a <a href=\"https:\/\/daveashworth.co\/services-and-consultancy\/website-migrations-consultant\/\">migration<\/a> (following a rebrand) from Magento 1 to <a href=\"https:\/\/daveashworth.co\/skills\/ecommerce-seo-consultant\/\">Ma<\/a><a href=\"https:\/\/daveashworth.co\/skills\/ecommerce-seo-consultant\/magento\/\">g<\/a><a href=\"https:\/\/daveashworth.co\/skills\/ecommerce-seo-consultant\/\">ento 2<\/a> where traffic had been lost.&nbsp; Following the <a href=\"https:\/\/daveashworth.co\/services-and-consultancy\/website-seo-audits-consultant\/\">initial audit<\/a>, the priority was to resolve all the redirects from the old site to ensure that they used 301 redirects, and that accurate mappings were in place across 57k old URLs, matching up product IDs, categories, and regions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Following this, several opportunities were identified to enhance on page optimisation across the site \u2013 one of which being product page optimisation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is possible to set up title tag and meta description templates within M2 admin for product meta data such as adding suffixes and prefixes, but any truly bespoke formatting requires developer implementation.&nbsp; This in turn tends to take some time to get implemented as a ticket is raised, placed in a queue and you then you just wait.&nbsp; Very often, developers have much bigger tasks to get stuck into functionality wise than tweaking meta data.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst not a criticism of developers, this is a common frustration for SEOs, and it is not a particularly agile way to go about meta data optimisation, because you may want to test\/tweak\/refine your meta data following regular analysis, and implementation via the database across 250k pages can be a bit on the server intensive side of things.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For me, this is where <a href=\"https:\/\/daveashworth.co\/skills\/google-tag-manager-consultant\/\">Google Tag Manager<\/a> comes into its own \u2013 it makes it very easy to amend meta data at scale and quickly.&nbsp;&nbsp; Using custom variables, triggers, tags, and custom HTML &amp; JavaScript, it is possible to make every product URL\u2019s meta data on the site unique and, more importantly in this case, fully translated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With that in mind, we set about <a href=\"https:\/\/daveashworth.co\/skills\/international-seo-consultant\/\">an international SEO strategy<\/a> to optimise all the product pages across all regions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Implement_Alternate_Language_Tags_in_Magento\"><\/span>How To Implement <strong>Alternate Language Tags<\/strong> in Magento<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst this can, in some instances, be carried out via GTM in this case it wasn\u2019t necessary as the site uses the <a href=\"https:\/\/www.magmodules.eu\/magento2-alternate-hreflang-tags.html\" target=\"_blank\" rel=\"noopener\">Alternate Language Tags plugin by Magmodules<\/a> \u2013 and very good it is too:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"917\" height=\"107\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/alternate_language_tags.png\" alt=\"Alternate Language Tags plugin by Magmodules\" class=\"wp-image-420\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/alternate_language_tags.png 917w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/alternate_language_tags-300x35.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/alternate_language_tags-150x18.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/alternate_language_tags-768x90.png 768w\" sizes=\"(max-width: 917px) 100vw, 917px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Pre-Optimisation_Meta_Data\"><\/span>The <strong>Pre-Optimisation Meta Data<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following examples of titles and descriptions are for a product not on special offer, and one which is.&nbsp; Default regional suffixes had already been set up for each region, but as with many ecommerce stores, the default meta description was unoptimized and in some cases included HTML due to being pulled in from the page content.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Product_Not_On_Offer_%E2%80%93_Fuel_Tank\"><\/span>Product <strong>Not On Offer \u2013 Fuel Tank<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.heritagepartscentre.com\/uk\/170201075j-fuel-tank.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.heritagepartscentre.com\/uk\/170201075j-fuel-tank.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Region<\/td><td>Title<\/td><td>Description<\/td><\/tr><tr><td>AU<\/td><td>Fuel Tank | Heritage Parts Centre AU<\/td><td>Fuel tank&lt;br&gt;<\/td><\/tr><tr><td>DE<\/td><td>Kraftstofftank | Heritage Parts Centre DE<\/td><td>Wir haben unsere Marke umbenannt, liefern aber immer noch eine gro\u00dfe Auswahl an Teilen und Zubeh\u00f6r f\u00fcr klassische VW- und Porsche-Modelle<\/td><\/tr><tr><td>ES<\/td><td>Deposito de combustible | Heritage Parts Centre ES<\/td><td>Hemos cambiado de marca, pero a\u00fan almacenamos y suministramos una amplia gama de piezas y accesorios para los modelos cl\u00e1sicos de VW y Porsche.<\/td><\/tr><tr><td>EU<\/td><td>Fuel Tank | Heritage Parts Centre EU<\/td><td>Fuel tank&lt;br&gt;<\/td><\/tr><tr><td>IT<\/td><td>Serbatoio carburante | Heritage Parts Centre IT<\/td><td>Abbiamo rinominato ma ancora immagazziniamo e forniamo una vasta gamma di parti e accessori per i modelli classici VW e Porsche<\/td><\/tr><tr><td>UK<\/td><td>Fuel Tank | Heritage Parts Centre UK<\/td><td>Fuel tank&lt;br&gt;<\/td><\/tr><tr><td>US<\/td><td>Fuel Tank | Heritage Parts Center US<\/td><td>Fuel tank&lt;br&gt;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Product_On_offer_%E2%80%93_Door_Hinge_Kit_for_Left_or_Right\"><\/span>Product On offer &#8211; Door Hinge Kit for Left or Right<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.heritagepartscentre.com\/uk\/90153103120-door-hinge-kit-for-left-or-right.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.heritagepartscentre.com\/uk\/90153103120-door-hinge-kit-for-left-or-right.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Region<\/td><td>Title<\/td><td>Description<\/td><\/tr><tr><td>AU<\/td><td>Door Hinge Kit for Left or Right | Heritage Parts Centre AU<\/td><td>&lt;p&gt;Door hinge kit for left or right.&lt;\/p&gt;&lt;p&gt;&lt;br&gt;Set includes both hinges for one door, does not include mounting bolts.&lt;\/p&gt;<\/td><\/tr><tr><td>DE<\/td><td>T\u00fcrscharnier-Set, ohne Schrauben\/Bolzen, pro T\u00fcr | Heritage Parts Centre DE<\/td><td>T\u00fcrscharnierset zur Montage an der linken oder rechten T\u00fcr.<br>Der Satz enth\u00e4lt alle Scharniere mit Ausnahme der Bolzen zum Aufh\u00e4ngen der T\u00fcr.&lt;\/div&gt;<\/td><\/tr><tr><td>ES<\/td><td>Kit bisagra puerta. Para 1 puerta | Heritage Parts Centre ES<\/td><td>&lt;p&gt;Kit bisagra puerta para lado derecho o izquierdo.&lt;\/p&gt;&lt;p&gt;&lt;br&gt;&lt;\/p&gt;&lt;p&gt;El kit incluye todas los herrajes excepto los tornillos para colgar la puerta.&lt;br&gt;&lt;\/p&gt;&lt;p&gt;&lt;br&gt;&lt;\/p&gt;&lt;p&gt;&lt;br&gt;&lt;\/p&gt;<\/td><\/tr><tr><td>EU<\/td><td>Door Hinge Kit for Left or Right | Heritage Parts Centre EU<\/td><td>&lt;p&gt;Door hinge kit for left or right.  Set includes both hinges for one door, does not include mounting bolts.&lt;\/p&gt;<\/td><\/tr><tr><td>IT<\/td><td>Kit cerniere porta per guida a dx | Heritage Parts Centre IT<\/td><td>Abbiamo rinominato ma ancora immagazziniamo e forniamo una vasta gamma di parti e accessori per i modelli classici VW e Porsche<\/td><\/tr><tr><td>UK<\/td><td>Door Hinge Kit for Left or Right | Heritage Parts Centre UK<\/td><td>&lt;p&gt;Door hinge kit for left or right. Set includes both hinges for one door, does not include mounting bolts.&lt;\/p&gt;<\/td><\/tr><tr><td>US<\/td><td>Door Hinge Kit Excluding bolts to Hang One Door | Heritage Parts Center US<\/td><td>&lt;p&gt;Door hinge kit to fit the left or right door.&lt;br&gt;Set includes all hinges excluding bolts to hang one door.&lt;\/P&gt;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Product_Meta_Data_Requirements\"><\/span><strong>Product Meta Data Requirements<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After reviewing existing product pages, the following list of requirements was drawn up.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Title tags to be unique across all regions<\/li>\n\n\n\n<li>Meta data to include the original and a formatted version of the product SKU as users tend to search both with and without hyphens and slashes<\/li>\n\n\n\n<li>Descriptions to be bespoke in terms of:\n<ul class=\"wp-block-list\">\n<li>Fully translated, including differing sentence structure per language<\/li>\n\n\n\n<li>Specify whether the product is on offer or not<\/li>\n\n\n\n<li>Include the relevant USP for each region<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Using_Custom_Variables_to_Populate_Data\"><\/span><strong>Using Custom Variables to Populate Data<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">From this, it was determined we would need the following variables to construct the meta data:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Store region<\/li>\n\n\n\n<li>Product name<\/li>\n\n\n\n<li>Product SKU<\/li>\n\n\n\n<li>Formatted product SKU<\/li>\n\n\n\n<li>Current price<\/li>\n\n\n\n<li>Old &amp; new price if on offer<\/li>\n\n\n\n<li>USP unique to store region<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">These were then set as follows:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Configure_Store_Region\"><\/span>How To <strong>Configure Store Region<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst the regions are already in the title tags, as we are creating new titles, and for other purposes, we wanted to set a custom variable that captured the region.&nbsp; As each store is within a subfolder named for that region \u2013 e.g. \/uk\/ \u2013 we can do this by extracting it from the URL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To do this we configure a URL of type \u201cCustom JavaScript\u201d that gets the current URL and splits it into an array via the slashes \u2013 and we know the region will always be in the 3<sup>rd<\/sup> array element:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"733\" height=\"364\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/configure_store_region.png\" alt=\"Custom JavaScript variable\" class=\"wp-image-422\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/configure_store_region.png 733w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/configure_store_region-300x149.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/configure_store_region-150x74.png 150w\" sizes=\"(max-width: 733px) 100vw, 733px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So on this URL:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.heritagepartscentre.com\/uk\/170201075j-fuel-tank.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.heritagepartscentre.com\/uk\/170201075j-fuel-tank.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">the region is set as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"546\" height=\"32\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/store_region-1.png\" alt=\"Store Region\" class=\"wp-image-424\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/store_region-1.png 546w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/store_region-1-300x18.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/store_region-1-150x9.png 150w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst we could just use a JavaScript function to convert this to uppercase, we used a lookup table based up the variable to set the region, as this will give us greater flexibility further down the line if we wish to amend the region name in the title tag \u2013 e.g. USA instead of US<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"726\" height=\"531\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/vlookup_title_tag_region.png\" alt=\"VLOOKUP Title Tag Region\" class=\"wp-image-425\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/vlookup_title_tag_region.png 726w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/vlookup_title_tag_region-300x219.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/vlookup_title_tag_region-150x110.png 150w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Which is then set as follows on the above URL:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"546\" height=\"31\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/title_tag_region-1.png\" alt=\"Title Tag Region\" class=\"wp-image-427\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/title_tag_region-1.png 546w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/title_tag_region-1-300x17.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/title_tag_region-1-150x9.png 150w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This can now be used in our tags and triggers by referring to {{Title Tag Region}}<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Configure_Product_Name\"><\/span>How To <strong>Configure Product Name<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">All the product data we need is within the page content, so we can use CSS selectors to pull in each variable:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" width=\"602\" height=\"80\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_html.png\" alt=\"page title wrapper\" class=\"wp-image-428\" style=\"width:602px;height:80px\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_html.png 602w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_html-300x40.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_html-150x20.png 150w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So in this case, we grab the contents of <em>.page-title .base<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"731\" height=\"363\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_variable.png\" alt=\"DOM Element variable config\" class=\"wp-image-429\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_variable.png 731w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_variable-300x149.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name_variable-150x74.png 150w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Which we can refer to using {{Product Name}}:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" width=\"547\" height=\"32\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name.png\" alt=\"Product Name\" class=\"wp-image-430\" style=\"width:547px;height:32px\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name.png 547w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name-300x18.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_name-150x9.png 150w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Configure_Product_SKU\"><\/span>How To <strong>Configure Product SKU<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Like above, the SKU is also in a uniquely named div:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"547\" height=\"85\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_html.png\" alt=\"Product SKU HTML\" class=\"wp-image-431\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_html.png 547w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_html-300x47.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_html-150x23.png 150w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So, the variable is set as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"602\" height=\"294\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_variable.png\" alt=\"Product SKU Variable\n\" class=\"wp-image-432\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_variable.png 602w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_variable-300x147.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku_variable-150x73.png 150w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Which we can refer to using {{Product SKU}}<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"547\" height=\"32\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku.png\" alt=\"Product SKU\" class=\"wp-image-433\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku.png 547w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku-300x18.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_sku-150x9.png 150w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Configure_A_Formatted_Product_SKU\"><\/span>How To <strong>Configure A Formatted Product SKU<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">By default, the SKU contains \/ and \u2013 for example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">170-201-075\/J<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some users will search with these characters, some without \u2013 so we wanted to include both.&nbsp; By using a custom JavaScript variable, we can pass the SKU then remove the \/ and \u2013 and return the formatted SKU.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I apologise for what looks like horribly inefficient code, but the replace function wasn\u2019t working how I anticipated, so I just hacked this together to remove up to 4 instances of each character:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see, it passes in the previously captured SKU, works its \u201cmagic\u201d, then sends back a nicely formatted SKU:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"731\" height=\"582\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/code_to_format_product_sku.png\" alt=\"Code To Format Product SKU\" class=\"wp-image-434\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/code_to_format_product_sku.png 731w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/code_to_format_product_sku-300x239.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/code_to_format_product_sku-150x119.png 150w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Again, sorry about that code, but anyway, we can now refer to this using {{Product SKU Formatted}}<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"547\" height=\"31\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/formated_product_sku.png\" alt=\"Formatted Product SKU\" class=\"wp-image-435\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/formated_product_sku.png 547w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/formated_product_sku-300x17.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/formated_product_sku-150x9.png 150w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Configure_Current_Price\"><\/span>How To <strong>Configure Current Price<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If the product is not on offer, the price can be found here:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"759\" height=\"252\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_html.png\" alt=\"Product Price HTML\" class=\"wp-image-436\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_html.png 759w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_html-300x100.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_html-150x50.png 150w\" sizes=\"(max-width: 759px) 100vw, 759px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Again, we use a CSS selector to grab this value:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"729\" height=\"511\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_variable.png\" alt=\"Product Price Variable\" class=\"wp-image-437\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_variable.png 729w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_variable-300x210.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price_variable-150x105.png 150w\" sizes=\"(max-width: 729px) 100vw, 729px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And this is called using {{Product Price}}<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"547\" height=\"31\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price.png\" alt=\"Product Price\" class=\"wp-image-438\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price.png 547w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price-300x17.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_price-150x9.png 150w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Check_If_On_Offer_And_Configure_Old_New_Price\"><\/span>How To <strong>Check If On Offer And Configure Old &amp; New Price<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If a product is on offer, the prices appear as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"520\" height=\"147\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer.png\" alt=\"Product On Offer\" class=\"wp-image-439\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer.png 520w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer-300x85.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer-150x42.png 150w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">These appear in the classes <em>.old-price<\/em> and <em>.special-price<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"755\" height=\"360\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_offer_html.png\" alt=\"Product Offer HTML\" class=\"wp-image-440\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_offer_html.png 755w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_offer_html-300x143.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_offer_html-150x72.png 150w\" sizes=\"(max-width: 755px) 100vw, 755px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So, we set them accordingly:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"720\" height=\"368\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_old_price.png\" alt=\"Product Old Price\" class=\"wp-image-441\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_old_price.png 720w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_old_price-300x153.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_old_price-150x77.png 150w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"730\" height=\"365\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_new_price.png\" alt=\"Product New Price\" class=\"wp-image-442\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_new_price.png 730w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_new_price-300x150.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_new_price-150x75.png 150w\" sizes=\"(max-width: 730px) 100vw, 730px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As the <em>.special-price<\/em> only appears on product pages which are on offer, we can set a variable called \u201cProduct On Offer\u201d of type \u201cElement Visibility\u201d which is set to true or false depending on if this element is on the page:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"727\" height=\"421\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer_variable.png\" alt=\"Product On Offer Variable\" class=\"wp-image-443\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer_variable.png 727w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer_variable-300x174.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer_variable-150x87.png 150w\" sizes=\"(max-width: 727px) 100vw, 727px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We then have 3 more potential variables we can use:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">{{Product On Offer}}<br>{{Product Old Price}}<br>{{Product New Price}}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the product is not on offer, we see:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"592\" height=\"123\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_not_on_offer.png\" alt=\"Product Not On Offer\" class=\"wp-image-444\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_not_on_offer.png 592w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_not_on_offer-300x62.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_not_on_offer-150x31.png 150w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Whereas if it is, these are populated accordingly:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"592\" height=\"124\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer-1.png\" alt=\"Product On Offer\" class=\"wp-image-445\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer-1.png 592w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer-1-300x63.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_on_offer-1-150x31.png 150w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(I am not sure why they appear as \u201cnull\u201d and \u201cfalse\u201d, when they should be \u201cfalse\u201d and \u201ctrue\u201d \u2013 I must look into this)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Configure_USP_Unique_To_Store_Region\"><\/span>How To <strong>Configure USP Unique To Store Region<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We want to include a USP within the meta to encourage the click through from the SERPs.&nbsp; The delivery price is different in each region whilst DE, IT and ES need to be translated.&nbsp; As we already have the region as a variable, the USP can be set via a look up table taking {{Store Region}} as the input:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"725\" height=\"592\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp_variable.png\" alt=\"Product USP Variable\" class=\"wp-image-446\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp_variable.png 725w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp_variable-300x245.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp_variable-150x122.png 150w\" sizes=\"(max-width: 725px) 100vw, 725px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is called using {{Product USP}}<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"592\" height=\"34\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp.png\" alt=\"Product USP\" class=\"wp-image-447\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp.png 592w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp-300x17.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_usp-150x9.png 150w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Summary_Of_Configured_Variables\"><\/span><strong>Summary Of Configured Variables<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For each product we now have a set of variables we can use to create our unique meta data:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.heritagepartscentre.com\/uk\/170201075j-fuel-tank.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.heritagepartscentre.com\/uk\/170201075j-fuel-tank.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"592\" height=\"249\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/fuel_tank_variables.png\" alt=\"Fuel Tank Variables\" class=\"wp-image-448\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/fuel_tank_variables.png 592w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/fuel_tank_variables-300x126.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/fuel_tank_variables-150x63.png 150w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.heritagepartscentre.com\/es\/90153103120-kit-bisagra-puerta-para-1-puerta.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.heritagepartscentre.com\/es\/90153103120-kit-bisagra-puerta-para-1-puerta.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"592\" height=\"263\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/door_variables.png\" alt=\"Door Variables\" class=\"wp-image-449\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/door_variables.png 592w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/door_variables-300x133.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/door_variables-150x67.png 150w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Create_A_Product_Page_Trigger\"><\/span>How To <strong>Create A Product Page Trigger<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before we create our custom tag, we need a trigger that will allow us to identify if we are on a product page, or not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are several variables available to us, so we chose {{Product SKU}} \u2013 if this is not null, we know we are on a product page, so set up the trigger accordingly:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"727\" height=\"310\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_page_trigger.png\" alt=\"Product Page Trigger\" class=\"wp-image-450\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_page_trigger.png 727w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_page_trigger-300x128.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/product_page_trigger-150x64.png 150w\" sizes=\"(max-width: 727px) 100vw, 727px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Create_Custom_HTML_Tag_For_Dynamic_Meta_Data\"><\/span>How To Create Custom HTML Tag For Dynamic Meta Data<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, on to the good stuff.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this we use a custom HTML tag that will contain JavaScript and utilise jQuery to manipulate the key elements within the page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, we need to create the variables we will use and set these according to the custom variables set up previously:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var p_name = \"{{Product Name}}\";\nvar p_sku = \"{{Product SKU}}\";\nvar p_sku_formatted = \"{{Product SKU Formatted}}\";\nvar p_region = \"{{Title Tag Region}}\";\nvar p_on_offer = \"{{Product On Offer}}\";\nvar p_price = \"{{Product Price}}\";\nvar p_old_price = \"{{Product Old Price}}\";\nvar p_new_price = \"{{Product New Price}}\";\nvar p_product_usp = \"{{Product USP}}\"; <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To set the title tag, we want to append the product name, formatted SKU and insert the brand followed by the region:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var p_title = p_name + \": \" + p_sku_formatted + \" | Heritage Parts Centre \" + p_region;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We then use jquery to remove the existing title tag, and create a new one populated with the text above:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jQuery('title').remove();\nvar p_title_tag = document.createElement('title');\np_title_tag.text = p_title;\njQuery('head').append(p_title_tag);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst I prefer the syntax of JQuery, the following more efficient code wil also work and supports sites that don&#8217;t utilise JQeuery:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>document.title = p_title;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For the meta description, we have differing formats depending on whether the product is on offer, and then different languages depending on the region.&nbsp;&nbsp; We will translate for DE, IT and ES, whilst AU, US, EU and UK will all use the same text.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The format we decided on in English was:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Buy the <em>product_name<\/em> (<em>product_SKU<\/em>) online for <em>product_price<\/em>.  <em>Product_usp<\/em><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">e.g.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Buy the Fuel Tank (170-201-075\/J) online for \u00a3236.95.  Free delivery on orders over \u00a350, express next day delivery available.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If the product is on offer, the wording is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Buy the <em>product_name<\/em> (<em>product_SKU<\/em>) online.  Was <em>old_price<\/em>, now <em>new_price<\/em>.  Product_usp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">e.g.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Buy the Door Hinge Kit for Left or Right (901-531-031-20) online. Was \u00a3102.95, now \u00a392.95.  Free delivery on orders over \u00a350, express next day delivery available.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We also have the flexibility to change the structure of the sentences depending on the language.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To do this, we used the following code which utilises and if statement to determine if the product is on offer, and then  switch statements to set to description according to the region &#8211; DE, ES and IT, or default English for AU, EU, UK and US &#8211; if we want to have specific descritpions for any English regions at any point, we just add in a further case:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (p_on_offer == \"null\")\n{\n\tswitch(p_region) \n\t{\n\t\tcase \"DE\":\n\t\t\tvar p_desc = \"Bestellen Sie \" + p_name + \" (\" + p_sku + \") auf unserer Webseite f\u00fcr \" + p_price + \".  \" + p_product_usp;\n\t\t\tbreak;\n\t\t\n\t\tcase \"ES\":\n\t\t\tvar p_desc = p_name + \" (\" + p_sku + \") disponible en l\u00ednea por \" + p_price + \".  \" + p_product_usp;\n\t\t\tbreak;\n\t\t\n\t\tcase \"IT\":\n\t\t\tvar p_desc = \"Acquista \" + p_name + \" (\" + p_sku + \") online per \" + p_price + \".  \" + p_product_usp;\n\t\t\tbreak;\n\t\t\n\t\tdefault:\n\t\t\tvar p_desc = \"Buy the \" + p_name + \" (\" + p_sku + \") online for \" + p_price + \".  \" + p_product_usp;\n\t}\n}\nelse\n{\n\tswitch(p_region) \n\t{\n\t\tcase \"DE\":\n\t\t\tvar p_desc = \"Bestellen Sie \" + p_name + \" (\" + p_sku + \") auf unserer Webseite.  Regul\u00e4rer Preis \" + p_old_price + \" - Sonderpreis \" + p_new_price + \".  \" + p_product_usp;\n\t\t\tbreak;\n\t\t\n\t\tcase \"ES\":\n\t\t\tvar p_desc = p_name + \" (\" + p_sku + \") disponible en l\u00ednea.  Precio inicial \" + p_old_price + \" - Precio rebajado \" + p_new_price + \".  \" + p_product_usp;\n\t\t\tbreak;\n\t\t\n\t\tcase \"IT\":\n\t\t\tvar p_desc = \"Acquista \" + p_name + \" (\" + p_sku + \") online.  Prezzo originale \" + p_old_price + \" - Prezzo scontato \" + p_new_price + \".  \" + p_product_usp;\n\t\t\tbreak;\n\t\t\n\t\tdefault:\n\t\t\tvar p_desc = \"Buy the \" + p_name + \" (\" + p_sku + \") online.  Was \" + p_old_price + \" - Now \" + p_new_price + \".  \" + p_product_usp;\n\t}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And add this to the page as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jQuery('meta&#91;name=\"description\"]').remove();\nvar p_meta_desc = document.createElement('meta');\np_meta_desc.name = 'description';\np_meta_desc.content = p_desc;\njQuery('head').append(p_meta_desc);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or, again, without JQuery go with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>document.getElementsByTagName('meta')&#91;\"description\"].content = p_desc;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And that is it \u2013 the Custom HTML tag is set up containing the code above to be fired by the product page trigger:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"728\" height=\"869\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/dynamic_product_meta_data_tag.png\" alt=\"Dynamic Product Meta Data Tag\" class=\"wp-image-451\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/dynamic_product_meta_data_tag.png 728w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/dynamic_product_meta_data_tag-251x300.png 251w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/dynamic_product_meta_data_tag-126x150.png 126w\" sizes=\"(max-width: 728px) 100vw, 728px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And the good news is, the dynamically generated code is crawled, parsed and indexed by Google.&nbsp; Bing doesn\u2019t.&nbsp; But so what.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We can see this using the site query operator to look for the SKU:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"770\" height=\"262\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_door.png\" alt=\"Site Operator: Door\" class=\"wp-image-452\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_door.png 770w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_door-300x102.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_door-150x51.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_door-768x261.png 768w\" sizes=\"(max-width: 770px) 100vw, 770px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"773\" height=\"253\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_fuel_tank.png\" alt=\"Site Operator: Fuel Tank\" class=\"wp-image-453\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_fuel_tank.png 773w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_fuel_tank-300x98.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_fuel_tank-150x49.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/site_operator_fuel_tank-768x251.png 768w\" sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_To_Analyse_Product_Page_Performance\"><\/span>How To Analyse Product Page Performance<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The amends had a significant impact on the organic visibility and traffic generated by the product pages on the site.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s easy to just say that, but, in the name of a comprehensive case study, I&#8217;m going to prove it.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst one of my favourite SEO tools, the performance data in Google Search Console is limited to 1000 pages at a time, however, there are ways of getting a more definitive overview of your site&#8217;s search data.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For those with budget, I highly recommend <a href=\"https:\/\/en.ryte.com\/\" target=\"_blank\" rel=\"noopener\">Ryte<\/a> which has a <a href=\"https:\/\/en.ryte.com\/product\/search-success\/\" target=\"_blank\" rel=\"noopener\">comprehensive Search Success module<\/a> which allows you to see ALL your site&#8217;s URL search data within any given time frame:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"879\" height=\"615\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/ryte.png\" alt=\"ryte screenshot\" class=\"wp-image-455\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/ryte.png 879w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/ryte-300x210.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/ryte-150x105.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/ryte-768x537.png 768w\" sizes=\"(max-width: 879px) 100vw, 879px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Or, if on a budget and you want the same thing for free, <a href=\"https:\/\/www.aleydasolis.com\/en\/search-engine-optimization\/using-google-data-studio-actionable-search-console-performance-report\/\" target=\"_blank\" rel=\"noopener\">Alyeda Solis has created a Google Data Studio Dashboard<\/a> that basically does the same thing, that being, the ability to download all your search data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once we had this data month by month, we then used <a href=\"https:\/\/www.screamingfrog.co.uk\/seo-spider\/\" target=\"_blank\" rel=\"noopener\">Screaming Frog SEO Spider<\/a> and it&#8217;s custom extraction tool to crawl the URLs and identify which were products via the SKU code being in place on the page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To do this, right click on the SKU in the web page and select &#8220;Inspect&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"622\" height=\"303\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/inspect_element.png\" alt=\"inspect tool\" class=\"wp-image-456\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/inspect_element.png 622w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/inspect_element-300x146.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/inspect_element-150x73.png 150w\" sizes=\"(max-width: 622px) 100vw, 622px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Then, from within the code, select the element containing the text you want to extract and right click then select &#8220;Copy -&gt; Copy Selector&#8221; to get the CSS path:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"298\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/copy_selector-1024x298.png\" alt=\"inspect html\" class=\"wp-image-472\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/copy_selector-1024x298.png 1024w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/copy_selector-300x87.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/copy_selector-150x44.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/copy_selector-768x224.png 768w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/copy_selector.png 1260w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Which gives you the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#maincontent &gt; div.columns &gt; div &gt; div.full-width.top.wrapper &gt; div.product-info-main &gt; div.product.attribute.sku &gt; div<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Within Screaming Frog, we can then paste in all the URLs into list mode after we&#8217;ve set &#8220;Configuration -&gt; Custom -&gt; Extraction&#8221; and set this to your CSS path:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"104\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/custom_extraction-1024x104.png\" alt=\"custom extraction\" class=\"wp-image-457\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/custom_extraction-1024x104.png 1024w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/custom_extraction-300x30.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/custom_extraction-150x15.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/custom_extraction-768x78.png 768w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/custom_extraction.png 1076w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This will then crawl all your URLs and where the SKU is in place, this will be flagged in the custom extractor field:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"905\" height=\"364\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/sku_data.png\" alt=\"extracted data\" class=\"wp-image-458\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/sku_data.png 905w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/sku_data-300x121.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/sku_data-150x60.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/sku_data-768x309.png 768w\" sizes=\"(max-width: 905px) 100vw, 905px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If Screaming Frog isn&#8217;t your thing, you can also <a href=\"https:\/\/sitebulb.com\/documentation\/content-extraction-search\/how-to-perform-website-content-extraction\/\" target=\"_blank\" rel=\"noopener\">use Sitebulb for website content extraction<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Either way, export the data, put the original search console export data in one excel tab, your crawl data in another, use a VLOOKUP to match and flag the product URLs with an SKU in place, which you then filter to obtain just product page data:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"224\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/gsc_data-1024x224.png\" alt=\"GSC Data\" class=\"wp-image-460\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/gsc_data-1024x224.png 1024w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/gsc_data-300x66.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/gsc_data-150x33.png 150w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/gsc_data-768x168.png 768w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/gsc_data.png 1298w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Optimisation work began on the site on October covering fundmental tech SEO actions such as crawl rate optimisation and <a href=\"https:\/\/daveashworth.co\/blog\/how-to-implement-breadcrumb-list-schema-mark-up-and-why\/\">breadcrumb schema optimisation<\/a> &#8211; this had a positive impact, but more so on the category landing pages across the site.  The product meta optimisation described above was implemented in December, and as you can see, it did good in terms of unique product pages and keyword generating impressions, clicks and click through rate:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>OCT<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>NOV<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>DEC<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>JAN<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>FEB<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>MAR<\/strong><\/td><\/tr><tr><td><strong>Unique Pages<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">14,448<\/td><td class=\"has-text-align-center\" data-align=\"center\">15,414<\/td><td class=\"has-text-align-center\" data-align=\"center\">16,033<\/td><td class=\"has-text-align-center\" data-align=\"center\">21,750<\/td><td class=\"has-text-align-center\" data-align=\"center\">32,996<\/td><td class=\"has-text-align-center\" data-align=\"center\">34,113<\/td><\/tr><tr><td><strong>Unique Keywords<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">34,898<\/td><td class=\"has-text-align-center\" data-align=\"center\">39,008<\/td><td class=\"has-text-align-center\" data-align=\"center\">35,969<\/td><td class=\"has-text-align-center\" data-align=\"center\">35,073<\/td><td class=\"has-text-align-center\" data-align=\"center\">50,428<\/td><td class=\"has-text-align-center\" data-align=\"center\">49,572<\/td><\/tr><tr><td><strong>Total Impressions<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">224,703<\/td><td class=\"has-text-align-center\" data-align=\"center\">239,396<\/td><td class=\"has-text-align-center\" data-align=\"center\">241,611<\/td><td class=\"has-text-align-center\" data-align=\"center\">218,841<\/td><td class=\"has-text-align-center\" data-align=\"center\">324,858<\/td><td class=\"has-text-align-center\" data-align=\"center\">354,877<\/td><\/tr><tr><td><strong>Total Clicks<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">2,580<\/td><td class=\"has-text-align-center\" data-align=\"center\">2,976<\/td><td class=\"has-text-align-center\" data-align=\"center\">2,768<\/td><td class=\"has-text-align-center\" data-align=\"center\">3,028<\/td><td class=\"has-text-align-center\" data-align=\"center\">3,585<\/td><td class=\"has-text-align-center\" data-align=\"center\">5,150<\/td><\/tr><tr><td><strong>Click Through Rate<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">1.15%<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.24%<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.14%<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.38%<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.10%<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.45%<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The same data, but in a graph:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"480\" height=\"289\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/mom_product_page_performance.png\" alt=\"Month On Month Product Page Performance\n\" class=\"wp-image-461\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/mom_product_page_performance.png 480w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/mom_product_page_performance-300x181.png 300w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/mom_product_page_performance-150x90.png 150w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst Ryte allows us to see new keywords this year to date which includes a lot of product part IDs due to them now being in the title tag and meta description:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"559\" height=\"839\" src=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/new_keywords-2.png\" alt=\"product ID data\" class=\"wp-image-465\" srcset=\"https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/new_keywords-2.png 559w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/new_keywords-2-200x300.png 200w, https:\/\/daveashworth.co\/blog\/wp-content\/uploads\/2021\/04\/new_keywords-2-100x150.png 100w\" sizes=\"(max-width: 559px) 100vw, 559px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_End_Result\"><\/span>The End Result<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Enhanced Visibilty = More Long Tail Organic Traffic = More <a href=\"https:\/\/daveashworth.co\/blog\/how-to-implement-revenue-tracking-on-square-space\/\">Reveune<\/a> = Happy Client<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But don&#8217;t just take my word for it:<\/p>\n\n\n\n<!-- testimonial wrapper  -->\n\t\t\t\t\t\t<div class=\"testimonial-wrapper\">\n\t\t\t\t\t\t  <!-- left  -->\n\t\t\t\t\t\t  <div class=\"testimonial-left\">\n\t\t\t\t\t\t\t<p class=\"testimonial-content\">\n\t\t\t\t\t\t\t  Heritage Parts Centre started working with Dave mid-2020, presenting to him a number of challenges following a website migration earlier in the year. What Dave provided saw a number of quick wins (that quickly and drastically stabilised our organic traffic), and subsequently worked through some more strategic technical SEO optimisations that has seen a tremendous improvement in our SEO performance. It has been refreshing to work with Dave who have been genuinely excited by the unique challenges that our market presents, and look forward to continue our work with him. His direct, professional, pragmatic and creative problem solving and optimisation methods continue to make a positive difference to our business, and I recommend him highly.\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<!-- icon wrapper  -->\n\t\t\t\t\t\t\t<img decoding=\"async\" class=\"testimonial-icon\" src=\"https:\/\/daveashworth.co\/assets\/images\/arrow-top.svg\" alt=\"icon\" \/>\n\t\t\t\t\t\t\t<img decoding=\"async\" class=\"testimonial-icon is-bottom\" src=\"https:\/\/daveashworth.co\/assets\/images\/arrow-bottom.svg\" alt=\"icon\" \/>\n\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t  <!-- left end -->\n\t\t\t\t\t\t  <!-- right  -->\n\t\t\t\t\t\t  <div class=\"testimonial-right\">\n\t\t\t\t\t\t\t<div class=\"testimonial-author-image-wrapper\">\n\t\t\t\t\t\t\t  <div class=\"testimonial-image\">\n\t\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t  <source srcset=\"https:\/\/daveashworth.co\/assets\/images\/testimonials\/rob-tickner.jpg.webp\" type=\"image\/webp\">\n\t\t\t\t\t\t\t\t  <img decoding=\"async\" class=\"w-full max-w-[8.75rem]\" src=\"https:\/\/daveashworth.co\/assets\/images\/testimonials\/rob-tickner.jpg\" alt=\"Rob Tickner\" width=\"200\" height=\"200\">\n\t\t\t\t\t\t\t\t<\/picture>\n\t\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"testimonial-devider\"><\/div>\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t  <a href=\"https:\/\/www.linkedin.com\/in\/robtickner\/\" target=\"_blank\" rel=\"noopener\">Rob Tickner<\/a><br \/>\n\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.heritagepartscentre.com\/\" target=\"_blank\" rel=\"noopener\">heritagepartscentre.com<\/a>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t  <!-- right end -->\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<!-- testimonial wrapper end -->\n\t\t\t\t\t\t<!-- testimonial wrapper  -->\n\t\t\t\t\t\t<div class=\"testimonial-wrapper\">\n\t\t\t\t\t\t  <!-- left  -->\n\t\t\t\t\t\t  <div class=\"testimonial-left\">\n\t\t\t\t\t\t\t<p class=\"testimonial-content\">\n\t\t\t\t\t\t\t  Have been working with Dave for 6 months now and very impressed with the technical SEO work that he has carried out particularly around GTM. His reports and roadmap are clear and concise and the work is returning good results.\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t<!-- icon wrapper  -->\n\t\t\t\t\t\t\t<img decoding=\"async\" class=\"testimonial-icon\" src=\"https:\/\/daveashworth.co\/assets\/images\/arrow-top.svg\" alt=\"icon\" \/>\n\t\t\t\t\t\t\t<img decoding=\"async\" class=\"testimonial-icon is-bottom\" src=\"https:\/\/daveashworth.co\/assets\/images\/arrow-bottom.svg\" alt=\"icon\" \/>\n\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t  <!-- left end -->\n\t\t\t\t\t\t  <!-- right  -->\n\t\t\t\t\t\t  <div class=\"testimonial-right\">\n\t\t\t\t\t\t\t<div class=\"testimonial-author-image-wrapper\">\n\t\t\t\t\t\t\t  <div class=\"testimonial-image\">\n\t\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t  <source srcset=\"https:\/\/daveashworth.co\/assets\/images\/testimonials\/barney-dines.jpg.webp\" type=\"image\/webp\">\n\t\t\t\t\t\t\t\t  <img decoding=\"async\" class=\"w-full max-w-[8.75rem]\" src=\"https:\/\/daveashworth.co\/assets\/images\/testimonials\/barney-dines.jpg\" alt=\"Barney Dines\" width=\"200\" height=\"200\">\n\t\t\t\t\t\t\t\t<\/picture>\n\t\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"testimonial-devider\"><\/div>\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t  <a href=\"https:\/\/www.linkedin.com\/in\/barney-dines-33458677\/\" target=\"_blank\" rel=\"noopener\">Barney Dines<\/a><br \/>\n\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.letsgocamperhire.com\/\" target=\"_blank\" rel=\"noopener\">letsgocamperhire.com<\/a>\n\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t  <\/div>\n\t\t\t\t\t\t  <!-- right end -->\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<!-- testimonial wrapper end -->\n\n\n\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A case study to show how to implement unique, formatted meta data across a large M2 product database which is also then translated for various regions for international SEO purposes.<\/p>\n","protected":false},"author":1,"featured_media":466,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,11,7,13,16],"tags":[],"class_list":["post-419","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tag-manager","category-magento","category-international-seo","category-on-page-seo","category-analysis"],"_links":{"self":[{"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/posts\/419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/comments?post=419"}],"version-history":[{"count":3,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/posts\/419\/revisions"}],"predecessor-version":[{"id":2134,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/posts\/419\/revisions\/2134"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/media\/466"}],"wp:attachment":[{"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/media?parent=419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/categories?post=419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daveashworth.co\/blog\/wp-json\/wp\/v2\/tags?post=419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}