All posts by DEVBlogger

Mastering WordPress Filters

how we filterIf you are reading this series in order, then you just finished reading about using WordPress Hooks to modify how your site using some out of the box code rather than another bloated WordPress plugin.

WordPress explains the two different types of hooks available like this:

  1. Actions (Codex Action Reference)
  2. Filters (Codex Filter Reference)

You can sometimes accomplish the same goal with either an action or a filter. For example, if you want your plugin to change the text of a post, you might add an action function to publish_post (so the post is modified as it is saved to the database), or a filter function to the_content (so the post is modified as it is displayed in the browser screen).

Now that you are totally up to speed… what? That wasn’t as clear as you hoped? Ok, let’s break it down by looking at a couple of examples.

Getting Started with WordPress Filters

One modification that I use on my own personal WordPress site (and sometimes for clients) is adding additional fields to user accounts that include social networks. After a little bit of work, this is what it looks like.

Phil Buckley's 1918 Author Archive page

To get that page to include all those social networks without having to insert it some crazy way, I made additional fields by adding the following code to the functions.php file.

WARNING: If you make a mistake editing your functions.php file, your site can become unresponsive to web requests – which means you’ll have to fix it via FTP or SSH.

function my_new_contactmethods( $contactmethods ) { //** Add Twitter */ $contactmethods['twitter'] = 'Twitter profile URL'; //** Add Facebook */ $contactmethods['facebook'] = 'Facebook profile URL'; //** Add LinkedIn */ $contactmethods['linkedin'] = 'LinkedIn profile URL'; //** Add Pinterest */ $contactmethods['pinterest'] = 'Pinterest profile URL'; //** Add Foursquare */ $contactmethods['foursquare'] = 'Foursquare profile URL'; //** Add Scoopit */ $contactmethods['scoopit'] = 'Scoop.it! profile URL'; //** Add Quora */ $contactmethods['quora'] = 'Quora profile URL'; //** Add Yelp */ $contactmethods['yelp'] = 'Yelp profile URL'; //** Add Flickr */ $contactmethods['flickr'] = 'Flickr profile URL'; //** Add Tumbler */ $contactmethods['tumblr'] = 'Tumblr profile URL'; //** Add Vimeo */ $contactmethods['vimeo'] = 'Vimeo profile URL'; //** Add WordPress */ $contactmethods['wordpress'] = 'Wordpress profile URL'; //** Add RSS */ $contactmethods['rss'] = 'RSS feed URL'; unset($contactmethods['yim']); unset($contactmethods['aim']); unset($contactmethods['jabber']); return $contactmethods;
} add_filter('user_contactmethods','my_new_contactmethods',10,1);

The code above does a couple of different things. The function (my_new_contactmethods) adds a bunch of fields for me to enter my profile on those platforms and also removes (unset) the fields for Yahoo Instant Messenger, AOL Instant Messenger and Jabber – since I don’t use them. I then add those new fields by calling add_filter to shove them into the user_contactmenthods for every user.

This is what my contact area looks like.

WordPress Contact Info with new fields added

Now that I added those additional contact methods, I can call them with a specific function and drop them into my author archive page. Since I don’t ever want to modify code directly, we return again to the functions.php page and insert those social profiles.

I won’t go into the additional tweaking I do to my own author archive to get the intro the way I wanted it, but here is how I go about inserting the (first few) new contact fields into the page.

echo '<div id="connectbar">';
if (get_the_author_meta('googleplus')) { echo '<a href="'. get_the_author_meta('googleplus') .'" rel="author" class="google_icon" title="Circle me on Google+">Circle me on Google+</a>';
}
if (get_the_author_meta('twitter')) { echo '<a href="http://twitter.com/'. get_the_author_meta('twitter') .'" class="twitter_icon" title="Follow me on Twitter">Follow me on Twitter</a>';
}
if (get_the_author_meta('facebook')) { echo '<a href="'. get_the_author_meta('facebook') .'" class="facebook_icon" title="Friend me on Facebook">Friend me on Facebook</a>';
}
if (get_the_author_meta('linkedin')) { echo '<a href="'. get_the_author_meta('linkedin') .'" class="linkedin_icon" title="Connect with me LinkedIn">Connect with me LinkedIn</a>';
}
echo '</div>';

I use the class tags to call a small background-image to make it look like a clickable button that changes color when you hover over it.

#connectbar a.twitter_icon { background: #f0f0f0 url(/wp-content/themes/eleven40-pro/images/twitter.png) no-repeat 0 0;
} #connectbar a.twitter_icon:hover { background-color: #48c4d2;
} #connectbar a.facebook_icon { background: #f0f0f0 url(/wp-content/themes/eleven40-pro/images/facebook.png) no-repeat 0 0;
} #connectbar a.facebook_icon:hover { background-color: #3b5998;
}

Let’s look at something a bit easier, and also something that gets asked about more frequently.

Using WordPresss Filters to Remove the Footer Text

In almost every WordPress theme, the developer leaves a link at the bottom. Below is an example from the Author Pro Theme from Studiopress.

WordPress footer attribution

You may love your theme so much that you are cool leaving the attribution link in the footer, but what if you’re not? There’s a simple way to remove it, and yes, it’s totally legal to remove that stuff. The code below is specific for the Genesis themes, but the concept is the same.

  1. Dream up what you would like in the footer
  2. Use a WordPress filter to change the default text in the footer

Once again, you’ll need to edit the functions.php file to add a snippet of code. Below we want the footer code to say © <current year> Acme Widget Company.

add_action('wp_footer', 'my_footer'); function my_footer () { echo '<p>&copy; '.date('Y').' Acme Widget Company.</p>';
}

Your theme may be set up slightly different, so be prepared to dig in a bit if that’s the case.

Using a combination of WordPress Hooks, Actions and Filters you can accomplish almost anything in WordPress.

If you’re interested in using WordPress Actions, you can follow along with the super simple example in the previous post in this series.

Optimizing Your WordPress Site Series


Do I Need Cross-Domain Tracking?

Cross-domain tracking is one of the more complex, confusing and often misunderstood areas of web analytics. It involves cookies, browser security settings, and an understanding of your overall measurement strategy.

I hope to simplify some of this for you with a simple flowchart, that will tell you whether or not you need cross-domain tracking to begin with. This is the first question that frequently stumps web analysts.

But before you dive into the flowchart, let’s get some things straight:

Let’s Define domain and subdomain

We’ll be defining domain and subdomain for the purposes of cross-domain tracking in Google Analytics.

As such, this is a simplistic explanation of the distinctions, and doesn’t fully examine the subtle differences. If you’d like to learn more, the Wikipedia entry for Domain name is rather extensive.

The domain (also called the root domain) is the part of the website address immediately before the .com (or .net, .edu, .org, etc.). For example:

Full Website URL: http://www.example.com

The Domain Is: example

The subdomain is the part between the http:// and the first dot (.). In our example, www is the subdomain, but consider the following examples:

Full Website URL: http://video.example.com

Full Website URL: http://blog.example.com

Full Website URL: https://shop.example.com

The Subdomains Are: video, blog, and shop, respectively.

Bonus: For extra credit, the part at the end – com, org, edu, etc. – is called the top level domain, or TLD. This is important because from the perspective of cross-domain tracking, example.com and example.org are considered two separate domains.

Do I Need Cross-Domain Tracking?

We use cross-domain tracking with Google Analytics to track multiple websites into one property and to make sure that one user that travels between multiple sites is tracked as a single user. Generally this means that even though there are multiple domains, they serve the same audience and appear to the user as if they’re the same site.

Sometimes, cross-domain tracking is not necessary. Take a look this flowchart:

If you followed the chart and determined that cross-domain tracking is necessary, then we’ve got a great setup guide for Google Tag Manager. You’ll need to be able to make changes to your website code or through Google Tag Manager, and you’ll need to follow several steps, which we’ve outlined for you.

What About Subdomains?

Cross-domain tracking only applies if you have multiple domains. If you have a single domain with multiple subdomains, cross-domain tracking is not necessary!

If you have two or more subdomains that you’re tracking into the same Property in Google Analytics, the default tracking code for that Google gives you to put on your site is already set up to automatically work across your subdomains.

This wasn’t always the case. With the older versions of the Google Analytics tracking code (anything before Universal Analytics and the analytics.js library), you had to modify your tracking code to explicitly tell Google Analytics to set the cookie at the root domain level. That way, all of your subdomains would be able to read and write to the same cookie. Now, that happens automatically.

There are two easy steps for cross-subdomain tracking, 1) Set the Cookie Domain and 2) Update Your Referral Exclusion List. For more information, check out our guide here:


Using WordPress Hooks Like A Boss

WordPress Hooks

hooksWhen you get started with WordPress, you are in awe of the power of Plugins. As you get more exposure you realize that they are often just adding a little bit of code into the hooks that WordPress makes available.

For example, there are a lot of plugins available to insert something into the head tag of your site. But you can also do it without the overhead of a plugin by using the built-in WordPress hook.

If you’re slightly code-phobic that may seem terrifying. So let me share a super simple copy-and-paste example that you can use in your functions.php file.

WARNING: If you make a mistake editing your functions.php file, your site can become unresponsive to web requests – which means you’ll have to fix it via FTP or SSH.

You can find your functions.php file either through the WordPress backend or FTP.

functions.php via FTPfunctions.php under settings in wordpress

WordPress Actions

The easiest way to insert something into the head of every page on your site is to register a function to be executed when the built-in wp_head action is called.
To do that, you’ll need to add the following line into your functions.php file:

add_action('wp_head', 'my_function');

You probably already have some code in your functions.php file, so add this near the bottom. It will probably end up looking more like this:

/** * Customizer additions. * * @since Twenty Fifteen 1.0 */
require get_template_directory() . '/inc/customizer.php'; // This is my special function to insert something into the head tag add_action('wp_head', 'my_function');

At this point, you’ve told WordPress, “when you are building out a page and filling in the head tag make sure you also include my my_function call as well.” The next step is to create the my_function so WordPress can include it.

Since we’re only doing this as an example, all we’ll include is an HTML comment that you’ll be able to see in the code, but won’t be displayed for the world to see.

/** * Customizer additions. * * @since Twenty Fifteen 1.0 */
require get_template_directory() . '/inc/customizer.php'; // This is my special function to insert something into the head tag add_action('wp_head', 'my_function'); function my_function() { echo '<!-- this is a test -->';
}

Now you can see that the action you’re adding is to insert that silly commented line into the head of your site. Obviously, this is just an example, but you can use this exact procedure to inject whatever you want into the head of your site.

view source custom head insertion via wordpress hook

Sometimes all you need is something like that on one page. To do that you can add additional if/then code around the function above, or build out a quick custom field.

Using Custom Fields with Hooks

If you don’t need something injected into every single page on the site, then you can build out a way to only include it on pages where it’s needed. To accomplish this we’ll use WordPress’s custom fields to call a function that is wrapped by a conditional.

First off we need to expose the custom field section because it’s usually hidden by default. Click on the Screen Options tab in the upper right of your WordPress administrative area.

Expose the custom field section

Then click the checkbox to show custom fields.

Show Custom Fields

You can then close the Screen Options tab by clicking on the arrow in the tab and then scroll on down to the newly exposed Custom Fields section. This is where you will create a brand new custom field.

To add a new custom field you click the “Enter New” link (not the button).

Add a new custom field

Clicking on the “Enter New” link allows you to enter a name for the new custom field. Let’s call ours “custom_head”.

New Custom Field

You then complete the new field by adding a value for the “custom_head” field and then clicking on the “Add Custom Field” button.

custom field value

You have just created a custom field that you can now use almost anywhere.

Newly created custom field in WordPress

Now, that custom field is added to the meta data for the post that I added it to. What that means in English is… that little snippet of code that we labeled at “custom_head” is stored in the WordPress database and linked to the post where I first created it. It will also be attached to other posts if I choose to use it again.

NOTE: The next time you want to use that custom field, it will appear in the drop-down menu in the custom fields section, you only have to create it once.

Now you have to head back to the functions.php file to add a little bit of code so that your new custom field can get injected into the head of the document it’s attached to.

Because our snazzy new custom field is stored in the database as meta data, WordPress has provided an easy way to retrieve it using get_post_meta.

Let’s add the new code in a step by step manner. First we’ll be quering the database from within “the loop” so we can ask it for the custom_head meta data for the current post.

/* This is my special function to insert something into the head tag by using the custom field called "custom_head". */ add_action('wp_head', 'my_function'); function my_function() { global $post; echo get_post_meta($post->ID, 'custom_head', true);
} 

With the updated code, we can specify what to add to each page. This is another place where I can warn you about messing up your functions.php page and tell you that there are plugins available to do this type of thing. But to run lean and mean, you can follow the examples above.

WARNING: If you are using a theme that is NOT a “child-theme”, then your functions.php file will be deleted and replaced every time you upgrade the theme. Child themes are meant to be used for customizations on upstream parent theme. WPBeginner has a good tutorial on this.

For more good examples you can check out Ed Stafford’s post on how to Use Custom Fields To Add Keyword Metadata to Your Posts and the 2 part series at Perishable Press on custom fields.

Next stop, WordPress Filters.

Optimizing Your WordPress Site Series


2016 AdWords Updates: What You Need to Know

Two weeks ago at the Google Summit, Google announced some big feature changes in AdWords. Stephen and I had such a productive discussion analyzing the ad layout change in February, that we sat down again to share a discourse on what these changes mean for search marketers as the dust settles.

What follows is a transcript of that discussion.

Too Long; Don’t Want to Read:

  • Longer text ads: Two 30-character headlines, one 80 character description line
  • Bid adjustments for mobile, desktop and tablets up to +900%
  • Promoted location pins and updated location pages in Maps
  • Better store visit tracking
  • New responsive Display ads and new cross-exchange ad placement access
  • Similar audiences and demographics for search ads
  • A new AdWords interface for 2017

2016 AdWords Updates: A(nother) Socratic Dialogue

“So, Stephen, we find ourselves staring down more industry-shaking news and I’m having a hard time processing it all. Could you please tell me more about the impending changes?”

“I certainly can! What would you like to hear about first?”

“Start by giving me some context on this whole thing.”

“You see, Nick, about 7.6 billion years from now, it is highly likely that the Earth will be engulfed when the sun expands into a red giant, rendering everything we do ultimately and, quite probably, meaningless.”

“I was thinking more along the lines of context for these changes.”

“Oh, right. Well, it’s clear that we now live in what Google is calling a ‘mobile-first’ world, where over half of web traffic comes from phones and tablets. Many of the feature changes are centered on this concept.”

“But I thought we lived in a multi-device world?”

“What? Where did you get such a crazy idea …

… Oh.”

“It seems that the emphasis used to be on users moving across devices.”

“Right, which is what those enhanced campaigns were originally designed to address. The idea was that you could have one campaign targeting users seamlessly across devices. Now, we can adjust bids on each device type, including desktop and tablets, up to +900%. Thus, we hit the devices and moments that are most valuable to our businesses.”

“That’s pretty interesting.”

“Indeed. We also have the ability to serve our users a longer message. There will now be two 30-character headlines, and the description lines will be consolidated into one 80-character line. Your site’s domain will also be automatically extracted for your display URL, so you don’t have to worry about matching your display and final URL anymore. Please see the table Google helpfully crafted for us below:”

“Wait, more device targeting options and one, longer line of ad text? Are you sure Google didn’t accidentally demo Bing Ads?”

“The conspiracy runs deeper than I thought.”

“So Google also emphasized bridging the digital and physical worlds, giving us more opportunity to drive and measure store visits. Tell me more about this.”

“Yes they did. 1/3 of mobile searches are now local and Google introduced new ad formats to reflect that. The most interesting feature is the promoted location pins that show up in your Maps. So, for example, if you’re driving home at 3 a.m., you might see a promoted pin for a Walgreens location on the way so you can buy pepperoni-flavored Combos, a kite, and the director’s cut of Kazaam on Blu-Ray.“

“Ah, the usual.”

New Maps ad formats

“Users can also see location-specific information when they click on a location, like special promotions and that particular store’s inventory.”

“So instead of being disappointed in person when they don’t have your item in stock, you can now be disappointed digitally.”

“Exactly. But if you do decide to go into the store anyway, they’re making it easier to measure ad-driven store visits, as they claim to now be 99% accurate when measuring store visits.”

“That should help with attribution. The more you can tie business performance to ads, the better decisions you can make. There were also rumblings about the Display Network, Stephen. Let’s talk about that.”

“Yes, there will now be responsive ads for display, which adapt to the content format of the site on which they are serving. All you need are headlines, an image, a description, and a URL, and you have yourself a snazzy native ad, my friend.”

Snazzy native ads

“Ooooh, that seems fancy. And you can serve those across more sites now, right?”

“Correctamundo. They’re now giving us access to cross-exchange inventory, so we can advertise on more sites and apps from around the world. So instead of just one flashlight app or puzzle game site, you now have access to several.

“Sounds enticing.”

“But display isn’t getting all the love. In addition to the longer text ads, we now have more opportunities for audience targeting in search. Specifically, we can use our remarketing lists to create similar audiences to target in search. So we’ll be able to specifically target search ads to users who have similar interest to our visitors, but have never actually been to our site.”

“Wait, that wasn’t a feature? I thought AdWords always created a similar audience.”

“It does, but you could only use it for display. If you uploaded a customer email list for example, a feature only available for search, it would create an ‘active’ similar audience that was unusable since similar audiences were only for display.”

“So you would have an allegedly active similar audience in your list but you couldn’t target it?”

“Precisely.”

“Weird.”

“Quite. There are also now demographics for search ads, so we can adjust our bidding based on age and gender to reach more qualified users.”

“It seems like they’re really trying to give us a chance to leverage context and intent.”

“They are, and it’s about time. Previously, we’ve had to rely primarily on the user’s query and location to get a handle on their qualification. We now have more buttons to push to serve the right ad to the right user at the right time.”

“Speaking of buttons, give me some information about the new AdWords interface.”

“Only if you say the magic word.”

“Please?”

“No, you fool. Kazaam. Why do you think we purchased that God-awful movie at our promoted Walgreens location all those lines ago?”

“Forgive me.”

“In due time. But, back to the interface. In addition to simple changes like moving the navigation to the lefthand side, it looks like the main goal of the redesign is to make the information marketers care about immediately available in the form of a dashboard. And the way you create campaigns allows you to customize objectives for your business and utilize specific features in order to meet those goals. So it’s all about making sure AdWords is working for your specific organization. Do you want to drive site visits? Calls? Store visits? The world is your oyster.”

“So there are now campaign objectives? Are you sure they didn’t accidentally demo Facebook Ads?”

*Sean suddenly slides into the room down a fire pole, firing a NERF dart that hits Nick squarely in the head*

“Hey-o! Headshot! Are you really gonna use the same joke twice in one post, Oats?”

Editor’s Note: Nick peacefully eats oatmeal every day at 3 p.m., and has thus been christened “Oats” by some of his less tolerant and, frankly, ill-mannered co-workers.

“Sean, can’t you see Stephen and I are having a civil discussion about AdWords? And where did that fire pole come from? We have a staircase.”

“Not anymore! I decided to upgrade the office a bit. And AdWords? BOOOORING. Check out this cool GIF I just found!”

“Classic.”

“I hate all of you.”


Achievement Unlocked: Super Blog Reading Packs

  • Have you had enough of being mediocre?
  • Are you tired of asking your tech gurus a question?
  • Ready to try your hand at being the best?

If so, check out these blog packs, ready for your digital consumption. After reading these, you’ll be ready to do life… in BEAST mode. Achievement unlocked!

(Re)Launch a Brand New Website

So you want to start a new site? Start with your plan! The more strategy you put in before launching will help you immensely in the long run. Read these blog posts and be enlightened.

Tried and True: Our Website Migration Checklist

Launching a website can be a harrowing process. Let  make it a little less harrowing by following this insightful migration checklist. Having this plan in place and following these steps will definitely make the (re)launch smoother.

An Analytics Goal Too Far: Understanding Measurement Strategy

Defining a goal for your website is important. Knowing how to track that goal is of equal importance. Read this guide and let it help you define your website goals, how to measure them and how they reinforce your overall business objectives.

SX – The Initiative Missing from Your 2016 SEO Plan

 covers in great detail the changing landscape of all things that now encompass the Search Experience (SX). Read this article to learn the importance of applying an over-arching SX strategy to your content and technical efforts.

Creating a Search Strategy That’s Right for You

‘s informative blog post takes you on a journey to discover the right overall strategy strategy for your business and your objectives. Move beyond boilerplate solutions and craft a finely tuned plan that exclusively meets your needs.

Start an eCommerce Website

So you want to start an eCommerce website? Don’t pets.com your way into notoriety. Take advantage of our insight into the world of eCommerce.

Absolute Beginner Google Analytics Tips for Small Businesses

Why not start your journey here? Samantha Barnes discusses the basics of tracking your small business website. Strategy, common definitions and other reporting tips are all covered.

FAQ About Google Analytics Enhanced Ecommerce

Have questions about enhanced eCommerce tracking? Once again, Samantha Barnes has an amazing write-up tackling the questions you want answered most. She discusses how Enhanced eCommerce tracking can… err… enhance your analytics and your insight into your transactions.

Tracking Offline Purchases with Enhanced Ecommerce and Google Forms

Kristen Perko discusses the capabilities of tracking those old-fashioned Brick-and-Mortar store transactions within Google Analytics using App Scripts and the measurement protocol. While more technical in nature, the steps are clearly explained and will surely pay dividends!

Tackle Ecommerce Strategy with Google Shopping Campaigns

You’ve built it, but why won’t they come? Perhaps you need to tweak your eCommerce strategy. Stephen Kapusta knocks it out of the park. He discusses not just the “how’s” of Google Shopping campaigns, but he walks you through the “why’s” as well.

Get the (Ad)Word Out About Your Website!

Anyone these days can have a website. Why not unlock beast mode here, too and make it stand out! Take advantage of LunaMetrics’ vast knowledge of SEO and SEM best practices to grow your following and expand your customer base.  Our blogs cut through the clutter and give true insight.

Nail Your First AdWords Campaign: Agency Tips & Tricks

Google’s AdWords platform affords you so much power and customization, it would be easy to get lost in the setup. Thankfully,  does a great job breaking down the fundamentals. Read this blog post and be amazed at your new-found SEM Superpowers.

Managing Multiple Locations on Google My Business

Managing and curating how your business appears within Google search is vitally important. One of those ways is to use Google My Business to its fullest. Let this article walk you through the specifics – from account management practices to keeping tabs on any location updates. A must read for any Brick-and-Mortar.

Linking AdWords to Google Analytics & Webmaster Tools

Did you know that Google Analytics, AdWords and Search Console (Webmaster Tools) integrate and can work in concert to help your see the bigger picture of your site and your marketing efforts?  has written an excellent article discussing the importance of tying together all of your key data points within Google Analytics.

Stay On Schedule with AdWords Management Calendar

Maintaining an AdWords account can be a trying experience. Tap into LunaMetrics’ expertise and best practices to learn how you can tame the Monster that can be your AdWords account. ‘s informative article even offers a calendar template and other handy tips.

Google Tag Manager Magic

Google Tag Manager (GTM) is a powerful tool to wield and unlocking its potential can bring both new insights and easier management. Read these blog posts and open your mind to the possibilities.

What Is Google Tag Manager? (And How Does It Work With Google Analytics?)

The best place to start with delving into Google Tag Manager is with ‘s excellent blog post. It covers the many benefits (and potential pitfalls) of Google Tag Manager and how it supercharges your GA implementation.

Safely Migrating To Google Tag Manager

If you know your way around a website and have a little more technical background, this is another great read. , one of our resident GTM gurus, writes a detailed article describing the recommended steps to move from on-page code to the wonderful world of GTM.

Google Analytics and Google Tag Manager Debugging Tools

So you’ve implemented GTM and something’s not quite right. Use our latest roundup of tools to help you single out and resolve the issue.

Instantiating & Using The Google Tag Manager dataLayer – Data Layer Best Practices Pt 1

The Data Layer object is an important part of passing information through the site into Google Tag Manager. ‘s four-part magnum opus covers all the details in an approachable manner. On the other side of this series, you will surely be a data layer master!

Audit That Site

You have an existing website. You like it just the way it is. Your tracking, however leaves something to be desired. Worse yet, you love your 10% bounce rate, but how do you know it’s real? SPOILER ALERT: It’s not. There’s nothing better to clean up the data cobwebs than an old-fashioned audit. Use these blogs to help you roll up your sleeves and dive in!

Where Should The Google Analytics Tracking Code Be Placed?

In an audit, this is a great place to start. The distance between the top and the bottom of the page might as well be miles given the right circumstance. Where is your code? Is it in the right place? Read this and find out.

20+ Reasons Your Google Analytics Pageviews Are Wrong

Another great stop in your audit journey is here! There may be 20+ ways your pageviews are wrong, but it only takes one of them for the whole to be inaccurate. Read this and clean them up!

Data Layer Forensics: Ecommerce Edition

You know something isn’t quite right, in your data but you just can’t put your finger on it. Let Dorcas Alexander be your guide into delving deep within the world of troubleshooting leveraging the data layer. She very clearly walks you through the process and you’ll have your issue ironed out in no time!

Two Minute Checkup – Google Analytics Default Page

Sometime little things can make HUGE differences in data integrity. What if you could make your data better in just two minutes? Read brilliant article and find out how.

Cross Domain Tracking with Google Tag Manager

Before you get yourself into the weeds with cross domain tracking, ask yourself if you truly need it. If you want to report on completely different hostname URLs into one Google Analytics Web Property, then read on. Dan Wilkerson breaks it down beautifully.

Achievement Unlocked!

Congratulations. You’ve made it to the bottom of this page. Hopefully you’ve had an amazing and informative journey. If you didn’t do so already, go back and read through the section(s) that best speak to you. Let these collections be a springboard to new knowledge and further understanding. Beast Mode… UNLOCKED!


Noteworthy Features of Firebase Analytics

The Google I/O conference is always full of fun announcements, and this year is no different! One announcement that really caught our eye was about Firebase, which is now becoming a “unified app platform”. Leveraging and building on the real-time database, user authentication, and cross-device tools that Firebase already has, this announcement adds analytics, error logging, push notifications, file storage, configuration updates, and AdMob, and AdWords integration.

What is Firebase?

Before we dive into Firebase Analytics, just what is Firebase? and why haven’t we talked about it before?

Firebase was, before this announcement, a real-time database, which means when one user updated a record in the database, that update would be sent out to all connected users, be those users on a website, iOS device, or Android device. There were other features that made working with Firebase awesome from a developer’s perspective, but that was the core of their technology: keeping everyone in sync with minimal delay. Google is now building upon that core technology, and developer friendliness, to offer a whole range of other services targeted at building and running apps.

It’s interesting to see Google launch an app-specific Analytics provider, especially built into such a powerful ecosystem, in addition to building app-tracking solutions into Google Analytics. We’ll be keeping a close eye on Firebase Analytics and how the data in it can be used with Google Analytics to better understand how customers and readers interact with your digital properties.

I’ll quickly cover some of the initially interesting mentions, and then wrap up with how this might affect your current analytics setup.

Noteworthy Features of Firebase Analytics

User-Based Reporting

Readers of this blog are probably familiar with the session-based nature of Google Analytics, and some of the recent user-based reporting tools being built into it. Building on what Google has learned from Google Analytics, Firebase Analytics has been built from the ground up to be user- and event- based, not session- and page/screen view- based. This model is well-suited to how interact with an app, and, being built on Firebase, should allow for good battery performance and low loss of hits.

Audiences

This feature is particularly interesting! The analog of segments in Google Analytics, Audiences are defined by actions that users take. What makes them interesting is that they can be used through the rest of the Firebase platform, enabling audience-specific push notifications and configuration changes to be sent out without having to collate that information separately.

Audiences are also built into the crash reporting functionality of the Firebase platform, allowing cross-referencing and analysis of errors in order to see if specific devices or geographies are more prone than others.

Like Google Analytics segments, Firebase audiences can also be used for remarketing.

Integrations

We’re also excited to explore how Firebase Analytics integrates with Google Tag Manager. Similar to Google Analytics tags, as you announce events within your application, you can add Firebase Analytics tags that are triggered by them. These changes can be made even after your application has been launched.

As a side note, you will be able to have raw events pushed into BigQuery in daily batches, similar to the daily exports Analytics 360 customers have access to. These exports allow deeper dives into your data that is often possible with the API, and allows for machine learning to be used over your raw analytics data. However, this feature only appears to be available for their pay-as-you-go plan, and not the free tier.

How Should You Use Firebase with Google Analytics?

Currently there is no immediate need to modify your existing web-based Google Analytics tracking because of Firebase Analytics. However, since Firebase Analytics is User-based, it may make sense to begin storing user ids in Google Analytics, both for potential future cross referencing, but also all of the benefits that user-based reporting in Google Analytics can bring!

If you’re currently using Firebase, or even the now-old Google Cloud Messaging, it may make sense to explore how to take advantage of the updates to the Firebase platform, including Firebase Analytics. Many of the features of Firebase Analytics are similar to those found in Google Analytics, but with tighter integration into the Firebase platform. As we have more time to examine and use Firebase Analytics, we’ll be sure to post about our experiences and best-practice recommendations. However, the in-app Google Analytics SDKs (Software Development Kits) are still being supported, meaning you can transition by using both Google and Firebase Analytics if you choose to.

Firebase Analytics appears to be designed primarily for apps, and currently, not the web — in fact there is no web-based (JavaScript) SDK for Firebase Analytics, where as there are for other parts of the Firebase Platform, i.e. Messaging, Authentication, Real-Time Database, Storage, and Hosting. If you’re a web-only property, then there isn’t any need to use Firebase Analytics (however you can still take advantage of the rest of the Firebase platform!).


Tackle Ecommerce Strategy with Google Shopping Campaigns

Shopping campaigns are among the most prominent B2C ecommerce uses of the Google AdWords platform. You can build a detailed and affordable ecommerce marketing solution if you take the time to invest in the right technologies and product integrations ahead of campaign launch.

I’m specifically referring to the shopping ads you might see on Google, like in the example below. Let’s take a look at our approach to building and launching these sort of AdWords campaigns.

The Most Common Shopping Campaign Mistake

At the heart of all Shopping campaigns is a Google Merchant Center feed where you upload your products that you would like to use in your campaigns. When creating your Shopping campaign, the default setting is to target your entire product inventory.

This means that any item in your Google Merchant Center shopping feed is eligible to appear in an ad. You are left managing all of your products with one campaign and one ad group. Regardless of the size of your business, managing your products in this way is a sizable challenge because you have little control over how your money is spent.

Steps must be taken to effectively manage toward ecommerce goals. You should sub-divide product groups, use advanced campaign segmentation, and take advantage of inventory filters in your campaigns in order to focus on your most profitable lines of business.

Consider Ecommerce Strategy

Before we go down that road, let’s rethink our process from a broader perspective. Your goal is to always take control over your investment in order to manage toward ecommerce KPIs, such as average margin, average order size, ecommerce conversion rate, shopping cart abandonment rate, and the list goes on. Managing toward these goals is increasingly difficult when you have little control over which products are visible to searchers and at what times.

Stop, take a deep breath, and ask yourself a few questions before diving right into your Shopping campaign build. There is a lot happening behind-the-scenes of your business and many of those concerns can be taken into account if you plan accordingly. The answers to these questions will ultimately determine how you segment, sub-divide, and filter your Google AdWords Shopping campaigns.

Consider how your product categories impact your bottom-line:

  • What are your best selling products?
  • What are your margins on different products and categories?
  • Are your products competitively priced?
  • How competitive is the ad ecosystem for each of your brands?
  • Logistically-speaking, how well do you handle product inventory and fulfillment?
  • Does seasonality affect sales performance?

This step should not be overlooked. Only after answering these questions will you have enough insight to start building toward success.

Customize Google Merchant Center Shopping Feed

Before we get to strategy (I promise we’ll get there) and before we even get to work in Google AdWords, let’s stop for a moment and review our shopping feed for new opportunities. Taking the time to create a detailed shopping feed is the first step to success. After doing so, you will have new targeting at your disposal once you get to the campaign creation stage. This is what makes advanced product sub-division, segmentation, and filtering possible.

You are probably familiar with the common attributes like title, brand, price, ID, condition and so on, but did you know that you can customize your feed to reference many of product-level conditions pointed out above?

Product Type Attribute

The product_type attribute is used to identify product categories based on your internal naming conventions. This is very different from the Google Product Category attribute – google_product_category – which accepts rather complex values predicated by Google’s product taxonomy.

Using the fishing lures example, you might identify these products by simply calling out the product_type value of Fishing Lures > Spinners. This provides you with simple, familiar nomenclature which you can reference later in your AdWords Shopping campaign via product group sub-division and advanced inventory filters.

To put the importance of this concept in perspective, let’s look at Google’s naming convention for the same product category: Sporting Goods > Outdoor Recreation > Fishing > Fishing Tackle > Fishing Baits & Lures.

Not only is the former easier to understand, we can reference it directly in our Shopping campaign later.

Custom Label Attributes

The Google Merchant Center product feed will accept up to five custom attributes for each individual product. These are numbered 0 through 4 as seen below:

custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4

Each custom label represents a user-defined value that can answer one of the questions posed above. For example, we might use custom_label_0 to identify product selling rate or custom_label_1 to identify seasonality or custom_label_2 to identify margin. You are ultimately in control of the custom label definitions and the values they accept (don’t use spaces).

In the fishing lure example I’ve used here, we might even use custom_label_3 to identify the type of fish the lure is designed to catch.

Custom label

Your definition

Suggested values

custom_label_0 SellingRate BestSeller, LowSeller
custom_label_1 Season Winter, Spring, Summer, Fall
custom_label_2 Margin LowMargin, HighMargin
custom_label_3 Fish Type Trout, Bass, Great White, Mermaid

Keep track of your custom label definitions and just remember that each product can only accept one value per custom label. If there is no value to be assigned to specific products, leave the field blank in those instances. We will use these in a few moments.

Excluded Destination Attribute

Another useful GMC feed customization comes by way of channel exclusions. You can entirely prevent products from appearing in shopping results by using the excluded_destination attribute, which accepts the value of “Shopping” by default.

It’s as simple as that.

If you have products with expected costs that outweigh expected revenue, just exclude htem. In other words, we often times use this attribute to identify products not expected to meet ecommerce goals like ROAS.

The Google Merchant Center feed attributes identified above are just some of the ways we build more descriptive product references into our feeds. There are many more opportunities to do so beyond those defined here.

Campaign Tactics for Shopping Ads

Now that you’ve improved the quality of the data provided by your feed with the product attributes above, you can filter your campaigns or sub-divide product groups based on these values. This process isn’t rocket surgery, but you just need to know where to click to find the settings.

Product Group Sub-division

Sub-dividing product groups is the basic approach to building out a Shopping campaign. Doing so allows you to control bids with a higher level granularity. Product groups can be defined with a variety of product attributes from “All products” down to the individual item IDs. If you’ve taken the time to incorporate the custom labels as outlined above, you can also sub-divide down to those user-defined values.

Just click on the pencil icon to start sub-dividing your product categories. Remember: these product categories are dependent upon the values in your Google Merchant Center feed including those custom_label_# and product_type attributes you set above.

Take note of the sub-division options below:

In this example, we segmented by product type but you can choose any attribute from the menu. You can also sub-divide multiple times to drill further and further into the product qualities. This approach, which we would recommend, leaves you with a sophisticated campaign configuration that allows you to control bids at various levels.

Coincidentally, using product sub-division is also the way in which we would create more specific ad groups within a Shopping campaign.

Excluding Individual Products or Groups

We know that we can exclude products directly in the Google Merchant Center feed by using the excluded_destination attribute as explained above. We can also exclude products in the campaign by, interestingly enough, sub-dividing product categories and adjusting the bid of a specific product group.

Here we see three individual products, and we want to exclude one from the campaign entirely based upon its recent performance. Just click on the max. cpc bid as if you were to edit it, then select the “Excluded” option.

Voila! You have removed an item that is negatively affecting your ecommerce performance.

Segment with Inventory Filter

Sub-division is great for taking control of your bidding strategy, but what if we want to divide a larger budget across multiple product categories. To implement a more advanced strategy like this we need to take advantage of our advanced Shopping campaign settings, specifically the custom inventory filter option.

These are somewhat hidden in your Shopping campaign settings. You will find these in your under an expandable link called “Shopping settings (advanced)” that appears near the top of the page.

This is where the real strategic implementation comes into play.

Leveraging this feature allows you to filter the eligible inventory before it even has a chance to make it into the consumer-facing search results and spend your budget. By creating this advanced filter, we can dedicate the remainder of our standard campaign settings – budget, bidding strategy, geo-targeting, day-parting, etc – to a specific segment of our product inventory.

In the example above, I’ve gone incredibly specific with my targeting and I was able to do so because I have the data to reference in the product feed. With this implementation I am confident that:

  • I’m investing purely in the product category I want
  • The products are all new (none used or refurbished)
  • Only our best selling products in this category are eligible to serve
  • Only the products best associated with the spring season’s sales performance are eligible to serve
  • Only the products expected to produce the greatest profit are eligible to serve
  • The products are dedicated to the best kind of fishermen

As it would happen, these qualities provide a solution to many of the ecommerce concerns outlined at the top of this page. Once the campaign launches, our focus would turn toward growing our reach as much as possible and persuading users to add these products to their shopping cart.

Building Your Ecommerce Strategy’s Foundation

Keep all of the aforementioned points in mind as your approach your campaign build or optimization. If planned accordingly, your budget will go much farther than you might expect.

If you know that seasonality plays a particularly strong role in producing meaningful ecommerce results, then make sure to customize your data and implementation to take advantage of that knowledge. If it doesn’t make sense to spend $1 per click on an item that costs the customer $2, then exclude these from appearing in your feed or campaign. If you make 80% of your revenue from your bestselling products, then build a campaign dedicated to these to maximize your results.

Now that all of the pieces are in place and you have a handle on targeting and settings, think about how you might take advantage of these to bolster your Shopping campaign strategy. Perhaps not all of the ecommerce factors outlined throughout here have meaning to your business, but you now understand how to make the most of the targeting options at your disposal.


Google Analytics Shortcuts and Tips to Save Time

When you use Google Analytics as much as we do at LunaMetrics, even small improvements in efficiently using Google Analytics can multiply into more time spent on implementation, analysis, and interpretation. Simply put – spend less time pulling the reports and more time using the reports!

Many of these tips and tricks aren’t new, but they may be new to you!

Keyboard Shortcuts for Google Analytics Reports

If you know me, then you know that I’m a huge proponent of keyboard shortcuts. Those moments you spend transitioning from using your mouse to your keyboard are wasted seconds! Almost every program has shortcuts baked into them, it’s just a matter of seeking them out.

Most people know the basic clipboard shortcuts (CTRL + C = copy, CTRL + V = paste, etc.) and many learn the basic application shortcuts (CTRL + S for save, CTRL + Z for undo, etc.) but it’s time to expand on that knowledge! If you’re on a Mac, just replace CTRL with CMD!

Google Analytics (GA) has keyboard shortcuts to help you do everything from finding specific reports to adjusting the date range. Never knew this? Try hitting the ? inside the interface and see what pops up.

I’ve included the shortcuts here:

General Shortcuts

  • ? – Open keyboard shortcut help
  • h – Search help center (Analytics Support)
  • a – open account panel
  • s or / – Search for a report
  • m – Toggle the left-hand navigation menu
  • shift + d – Go to the default dashboard of the current view

Date Shortcuts

  • d t – Set date range to today
  • d y – Set date range to yesterday
  • d w – Set date range to last week
  • d m – Set date range to last month
  • d 7 – Set date range to last 7 days
  • d 3 0 – Set date range to last 30 days
  • d c – Toggle date comparison mode (to the previous period of whatever you are looking at.
  • d x – Toggle date comparison mode (to the previous year of the period you are looking at)

Give it a shot! My favorites are the d t and d 7. I’ve got some more keyboard shortcuts down below under Browser Tips & Tricks!

We also made a handy cheat sheet that you can print out and attach to your monitor or keep in your drawer. Download it here:

Date Picker Shortcuts

The date picker at the top of the reports is one of the first things you learn about Google Analytics. How do I look at this report, but change the date range that is included?

For the most part, it’s intuitive. You can type in a date range or use the calendar option to scroll through months and select the dates you’d like to include. In addition to the keyboard shortcuts above, here are a few more tips!

Click the Month Name To Select The Whole Month

Boom! Mind blown! It seems obvious to some, but many have never even tried it. So yeah – give it a shot. It’s much quicker than selecting the first and last day of the month.

Typing Might Be Faster

Again we’re back to the keyboard vs mouse debate! Depending on how far apart your Start and End Date are, it might actually be faster to just type in the Start Date, hit tab, then type in the End Date.

The syntax has to match exactly, or GA won’t recognize the date. The format needs to be: mmm dd, yyy. The comma is important! If you type them in the wrong order or mistype it, GA will actually default back to 2005 (the year they acquired Urchin!) This mistake can be quite costly if you have lots of data and it takes a long time to load!

Working With Segments

Adding or removing a Segment will cause GA to go back out to its servers and re-run the report. This means you’re sitting and waiting for everything to finish.

If you have several Segments applied, removing each of them one by one will cause your reports to reload after every change.

Depending on your data and your time range selected, that can be a lot of wasted time!

So here are your tips:

Remove One Segment By Dragging and Dropping

If you only need to remove one segment, then just click on it and drag it away from the Segment bar, and it will remove it. It’s easy, it’s quick, and it gets the job done.

Remove Many Segments with Checkboxes

If you have to remove more than one segment, it’s faster for you to open up the Segment panel and remove them all at the same time. It’s a simple trick but definitely saves time.

Simply click on any of the Segments and the panel will open up. Then, choose the Selected option from the right side of the panel. Now, deselect any Segments that you want to remove and click Apply.

Pulling the Right Data is Easier with Regex

So while most of these tips have been about using the interface, this one is a little different and is applicable in many different places inside of Google Analytics (and Google Tag Manager!)

Regular Expressions. Have you heard about them? If not, this must be your first time to our blog!

Kidding aside, Regular Expressions are truly a way to set yourself apart from the casual Google Analytics user. A brief definition: regular expressions are a way to describe patterns in text using special characters. That doesn’t sound exactly like what we want, so let explain a bit more.

Let’s say you’re looking at your All Pages report inside of Google Analytics and you wanted to hone in on a few specific pages, perhaps your Home, Services, and About Us pages. You could pull the whole report, scroll through to find the pages you need, and jot down the numbers. Or you could load the report, search for Home, then do a new search for Services, then do a new search for About Us.

There’s actually a really easy way to do this with one search in the same report. In all reports in Google Analytics, the table filter box accepts Regular Expressions by default, which means you can just type into that search box a phrase that represents Home OR Services OR About Us.

It would look something like this: ^(/|/services/|/about-us/)$

The easiest Regular Expression character to learn is the |, which simply means OR. There are other characters to signify optional characters, “starts with” and “ends with”, and more!

Want to learn more? We’ve got you covered! I wrote a blog about this a few years ago called A Practical Guide to Getting Started with Regular Expressions (with Sample Data) and we have a great, free ebook available called Regular Expressions for Google Analytics. Take some time to really beef up your Regex skills to really get more out of the Google Analytics interface.

Account Organization

How much time do you spend switching between Properties or Views? If you work in an agency, or manage many website, this might happen frequently.

We recommend using some standard naming conventions to make sure your data is organized and easy for you to find.

For instance, starting your View names with numbers will let you decide how your Views should be sorted on the Admin screen or using the Account Selector in the top right corner.

Default View

To help make sure everyone on your team uses the same View for reporting, don’t forget that you can set your Default View under the Property settings. This will usually be the first View you created, so if you added new Views and Filters, doublecheck that this is set correctly!

Browser Tips and Tricks for Google Analytics

By now, most browsers if not all have tabbed navigation at the top. Use them! You can open multiple tabs at a time, let them all load then come back later and start using them. Here are some tips for using your tabs to the fullest.

Open in New Tab

Once you have a tab open, logged into the right Account/Property/View and the right report loaded, Google Analytics will remember all of that as you load new reports. Use this to your advantage!

Instead of simply changing the report, consider opening a different report in another tab! You can CTRL + Click (CMD + Click for Macs) on a link in most browsers to open it in a new tab. That will start loading in its own tab while you can still use the current report.

Note: This works best for the links in the left-hand navigation panel. If you’re inside of a report and using the drill-down explorer links, you won’t be able to open those easily in a new tab.

Duplicate Tabs

Instead of opening a new report in a different tab, how about the same report? It’s actually really easy to Duplicate that tab in Google Chrome. What does that mean?

It will literally create a new tab that has the same page loaded, but not only that, it will have also preserved your browsing history for that tab. The new tab will be able to go Back and Forward just like the existing tab.

So how do we do it? Most people will right-click on the tab and choose Duplicate, but you can also use the keyboard shortcut ALT + d + Enter! (CMD + L + Enter for Macs!)

Duplicating Tabs is great when you’re in the middle of reporting on something and you notice something that you want to investigate further. You can duplicate your tab, follow your rabbit, and then when you’re finished, you can just close the duplicated tab and pick up where you left off.

Switch Tabs Easily

How about navigating between the tabs? It’s a breeze with keyboard shortcuts! CTRL + Tab will cycle forward through the tabs, and CTRL + Shift + Tab will cycle backward through the tabs. For Macs, this is CMD + Left or CMD + Right. Also, CTRL + (1,2,3,..) will open that specific tab.

Load Less Data

When you’re opening new reports, whether you’re navigating to a new report, opening in a new tab, or duplicating the current tab – remember that the page will load again, going out to Google Analytics and requesting all the same information.

If you’re trying to open a lot of reports, it’s helpful to use smaller date ranges with fewer segments selected! Choose your dates and segments first, before you open all of your reports. Remember that keyboard shortcut for GA, hit d t to quickly change the date range back to today.

Scroll to Top and Bottom

Got a huge report? Did you know that in most browsers, you can hit Home or End to quickly jump to the top or the bottom of the page! Just make sure you click somewhere in the report pane to focus on that section of the site, vs the left-hand navigation pane.

Bookmark Your Reports

If you have a collection of reports that you look at often, remember that you can create Bookmarks or favorites for those!

In Chrome, if you put all of your bookmarks into the same folder – it’s easy to open all of those bookmarks with one click!


There you go – some of our top tricks and tips from people who use Google Analytics every day. This list is by no means exhaustive – if you have additional tips, let me know and we’ll add the best ones to this post!


Ecommerce SEO: The Definitive Guide [2019]

How to Fix Common Technical SEO Issues On Ecommerce Sites

Problem: Too Many Pages

Having thousands of pages on your site can be a technical SEO nightmare. It makes writing unique content for each page a monumental task. Also, the more pages you have, the more likely you’ll struggle with duplicate content issues.

Why It Happens

Some ecommerce sites just have lots and lots of products for sale. Because each of these products require their own page, the site accumulates lots of pages. Also, sometimes each slight variation in the same product (for example 15 different shoe sizes) has its own unique URL, which can bloat your ecommerce site’s total page count.

How to Fix it

First, identify pages that you can delete or noindex… without affecting your bottom line.

In my experience, 80% of an ecommerce site’s sales come from 20% of its products (the ol’ 80/20 principle at work). And around 25% of an ecommerce product pages haven’t generated ANY sales over the last year.

Rather than working to improve these pages, you’re better off simply deleting them, noindexing them, or combining them into a “super page”.

Most ecommerce CMSs (like Shopify) make it easy to find products that haven’t generated any revenue lately. If they haven’t, you can put them into a “maybe delete” list.

But before you actually delete anything, check Google Analytics to make sure these pages aren’t bringing in any traffic.

Analytics – Landing pages

If a page isn’t bringing visitors to your site or putting cash in your pocket, you should ask yourself: “what’s the point of this page?”.

In some cases these “deadweight” pages will make up 5-10% of your site. For others, it can be as many as 50%.

Once you’ve removed excess pages that might be causing problems, it’s time to fix and improve the pages that are left.


Problem: Duplicate Content

Duplicate content is one of the most common ecommerce SEO issues on the planet. And it’s one that can sink your site in Google’s search results (thanks to Google Panda).

Fortunately, with a commitment to unique content on every page of your ecommerce site (and using advanced SEO techniques like canonical tags), you can make duplicate content issues a thing of the past.

Why It Happens

There are a lot of reasons that duplicate content crop up on ecommerce sites.

Here are the three most common reasons.

First, the site creates unique URLs for every version of a product or category page.

For example, if you have a category menu like this…

BestBuy – Categories

…it might create a unique URL for every selection the person makes.

BestBuy – Link

If those URLs gets indexed by Google, it’s going to create A LOT of duplicate content.

This can also happen if slight variations of the same product (for example, different shoe sizes or colors) create unique product page URLs.

Second, we have boilerplate content. This is where you have a snippet of text that appears on multiple pages.

Here’s an example:

Boilerplate content

Of course, it’s perfectly fine to use some of the same content on every page (for example, “At Brian’s Organic Supplements, we use the best ingredients at the best price.”).

But if your boilerplate content gets to be 100+ words it can be seen as duplicate content in the eyes of Google.

Finally, we have copied descriptions. This happens anytime you have the same (or very similar) content on multiple product or category pages.

For example, here’s an example of duplicate content on two different ecommerce product pages…

Product Page #1:

Product description

Product Page #2:

Product description

As you can see, the content on these two pages is almost identical. Not good.

How to Fix it

Your first option is to noindex pages that don’t bring in search engine traffic but are causing duplicate content issues.

For example, if your category filters generate unique URLs, you can noindex those URLs. Problem solved.

Once you’ve noindexed all of the URLs that need to go, it’s time to tap into the canonical tag (“rel=canonical”).

A canonical tag simply tells search engines that certain pages are exact copies or slight variations of the same page. When a search engine sees a canonical tag on a page, they know that they shouldn’t treat it as a unique page.

Use the canonical tag to differentiate between duplicate and original pages

(Not only does canonicalization solve duplicate content issues, but it helps makes your backlinks more valuable. That’s because links that point to several different URLs reroute to a single URL, making those links more powerful).

Pro Tip: Implementing canonical tags can be tricky. That’s why I recommend that you hire an SEO pro with technical SEO expertise to help. But if you prefer to set up canonicals yourself, this guide by Google will help.

Finally, it’s time to write unique content for all of the pages that you haven’t noindexed or set up with canonical URLs.

Yes, this is hard work (especially for an ecommerce site with thousands of pages). But it’s an absolute must if you want to compete against the ecommerce giants (like Amazon) that tend to dominate Google’s first page.

To make the process easier, I recommend creating templates for product and category page descriptions (I’ll have an example template for you in the next section).


Problem: Thin Content

Thin content is another common technical SEO issue that ecommerce sites have to deal with. So even after you solve your duplicate content issues, you might have pages with thin content.

And make no mistake: thin content can derail entire ecommerce SEO campaigns. In fact, eBay lost upwards of 33% of its organic traffic due to a thin content-related Panda penalty.

eBay – Traffic loss

But let’s not focus on the negative. Our data from analyzing 1 million Google search results found that longer content tended to rank above thin content.

Content Total Word Count

Why It Happens

One of the main reasons that ecommerce sites suffer from thin content is that it’s challenging to write lots of unique content about similar products. After all, once you’ve written a description about one running shoe what can you write about 25 others?

While this is a legit concern, it shouldn’t stop you from writing at least 500 words (and preferably 1000+ words) for all of your important category and product pages.

How To Fix It

First, you want to identify pages on your site that have thin content.

Pro Tip: Everyone has a different definition of “thin content”. In my mind, thin content refers to short snippets of content that doesn’t bring any unique value to the table.

You can go through each page on your site one-by-one or use a tool like Raven Tools to find pages that are a bit on the thin side (Raven considers pages with fewer than 250 words as having a “low word count”):

Raven Tools – Word count

Once you’ve identified thin content pages it’s time to bulk them up with high-quality, unique content. Templates make this process go significantly faster.

Here’s an example template for a product page description:

Example template for a product page description

Pro Tip: The more truly unique your content is, the better. That means actually using the products you sell. Write your impressions. Take your own product images. This will make your product descriptions stand out to users and search engines.


Problem: Site Speed

Site speed is one of the few signals that Google has publicly stated they use as part of their algorithm.

But site speed isn’t just important for ecommerce SEO: it also directly impacts your bottom line. Research by Radware found that slow load times can increase shopping cart abandonment by 29.8%.

Why It Happens

Here are the three most common reasons that ecommerce site pages load slowly:

  • Bloated Ecommerce Platforms: Certain ecommerce platforms are inherently slow due to bloated code. And unlike a blogging CMS like WordPress, you can’t just install a plugin and watch your speed improve.
  • Large Image File Sizes: High-res product images are awesome for your customers, but can make your page load like molasses.
  • Slow Hosting and Servers: When it comes to web hosting, you get what you pay for. A slow hosting plan can put the brakes on your site’s max speed.

Fortunately, all three of these site speed issues can be solved somewhat easily.

How to Fix it

  • Upgrade Your Hosting: I can’t recommend specific hosting providers because your decision depends on your preferences and needs (for example, the level of support, pricing, security etc.). But what I can say is that you should spend at least $50/month on your host. If you spend less, your loading speed is likely to suffer.
  • Invest In a CDN: A CDN is one of the fastest (and cheapest) ways to significantly crank up your site’s loading speed. Bonus: a CDN also makes your site more secure from attacks and hacks.
  • Optimize Image File Size with Compression: This is a biggie for ecommerce product pages. Make sure to export images so they’re optimized for the web.

What Can I Do With A Free Account From SEMrush?

What Can I Do With A Free Account From SEMrush?

Many new users to SEMrush ask this question and are not really sure what you can do with the SEMrush software. Obviously, many new users to SEMrush will start out on the free level before deciding to make a purchase on a subscription. But when you first create your free account, it’s important to know exactly what you get access to so that you can utilize your SEMrush account to its fullest potential.