Upcoming LunaMetrics Seminars
Seattle, Nov 3-7 New York City, Nov 17-21 Washington DC, Dec 1-5 Los Angeles - Anaheim, Dec 8-12

Google Tag Manager Basics: Links and Clicks

blog-gtm-basics

While Google Tag Manager touts itself as a code free alternative to website development, sometimes a knowledge of basic web mechanics (and a little bit of code!) can help make your setup go much easier!

Whether or not you’ve started using the new version of GTM, this post will help explain how to target clicks on specific html elements like links, images, or buttons. Read More…

Using Latent Dirichlet Allocation to Brainstorm New Content

blog-LDA

I recently had a problem with my client – I ran out of things to write about. The client, a chimney sweep, has been with our company for 3 years and in that time we have written every article under the sun informing people about chimneys, the issues they cause, potential hazards, and optimal solutions. All of that writing has worked and worked well. We have seen over 100% traffic increases YoY. The challenge now is to keep that momentum.

Brainstorming sessions weren’t working. They looked more like a list of accomplishments than of new ideas. Each new idea seemed like we were slightly changing an already successful article written in the past. I wanted something new and I wanted to make sure it was tied to a strategy. Tell me if this sounds familiar!

So I internalized the problem. I let it smolder and waited for the answer. Then while reflecting on the effects of website architecture and content consolidation, topic modeling popped into my head. If I could scrape the content we’ve already written and throw it into an Latent Dirichlet Allocation (LDA) model I could let the algorithm do the brainstorming for me.

For those of you unfamiliar with Latent Dirichlet Allocation  it is:

“a generative model that allows sets of observations to be explained by unobserved groups that explain why some parts of the data are similar. For example, if observations are words collected into documents, it posits that each document is a mixture of a small number of topics and that each word’s creation is attributable to one of the document’s topics.” -Wikipedia

All that basically say is that there are a lot of articles on a website, each of those articles is related to a topic of some sort, by using LDA we can programmatically determine what the main topics of a website are. (If you want to see a great visualization of LDA at work on 100,000 Wikipedia articles, check this out.)

So, by applying LDA to our previously written articles, we can hopefully find areas to write about that will help my client be seen as more authoritative in certain topics.

So I got to researching. The two tools I found which allowed me to quickly test this idea were a content scraper by Kimono and a Topic Modeling Tool I found on code.google.com.

Scrape Content With Kimono

Kimono has an easy to use web application that uses a Chrome extension to train the scraper to pull certain types of data from a page. You are then able to give Kimono a list of URLs that have similar content and have it return a CSV of all the information you need.

Training Kimono is easy; data selection works similar to the magnifying glass feature of many web dev tools. For my purposes I was only interested in the header tag text and body content. (Kimono does much more than this, I recommend you check them out). Kimono’s video about extracting data will give you a better idea of how easy this is. When it’s done Kimono gives you a CSV file you can use in the topic modeling tool.

Compile a Lists of URLs with Screaming Frog

Next I needed a list of URLs for Kimono to scrape. Screaming Frog was the easy solution for this. I had Screaming Frog pull a list of articles from the clients blog, then I plugged those into Kimono. You could also use the page path report from Google Analytics.

Here is what that process looks like:

Map Topics With This GUI Topic Modeling Tool

Many of the topic modeling tools out there require some coding knowledge. However, I was able to find this Topic Modeling Tool housed on code.google.com. The development of this program was funded by the Institute of Museum and Library Services to Yale University, the University of Michigan, and the University of California, Irvine.

The institute’s mission is to create strong libraries and museums that connect people to information and ideas. My mission is to understand how strong my clients content library is and how I can connect them with more people. Perfect match.

Download the program, then:
1. Upload the CSV file from Kimono into the ‘Select Input File or Dir’ field.
2. Select your output directory.
3. Pick the number of topics you would like to have it produce. 10-20 should be fine.
4. If you’re feeling like a badass you can change the advanced settings. More on that below.
5. Click Learn Topics.

topic-modeling-program
Main Topic Modeling Interface
topic-modeling-program-advanced
Advanced Settings Interface

 

Advanced Options
Besides the basic options provided in the first window, there are more advanced parameters that can be set by clicking the Advanced button.
badass_neil-degrasse-tyson

Remove stopwords – If checked, remove a list of “stop words” from the text.

Stopword file – Read “stop words” from a file, one per line. Default is Mallet’s list of standard English stopwords.

Preserve case – If checked, do not force all strings to lowercase.

No. of iterations – The number of iterations of Gibbs sampling to run.
Default is:
– For T500 default iterations = 1000
– Else default iterations = 2*T
Suggestion: Feel free to use the default setting for number of iterations. If you run for more iterations, the topic coherence *may* improve.

No. of topic words printed – The number of most probable words to print for each topic after model estimation. Default is print top-10 words. Typical range is top-10 to top-20 words.

Topic proportion threshold – Do not print topics with proportions less than this threshold value. Good suggested value is 5%. You may want to increase this threshold for shorter documents.

Analyze The Output

The output of this raw data is a list of keywords organized into rows, each row representing a topic. To make analysis easier I transposed these rows into columns. Now I put my marketer hat on and manually highlighted every word in these topics that directly related to services, products, or the industry. That looks something like this:

topic-modeling-spreadsheet

main-topics-topic-modelingOnce I identified the keywords that most closely related to the client’s industry and offering, I eyeballed several themes that theses keywords could fall under. I found themes related to Repair, Fire, Safety, Building, Home, Environmental, and Cleaning.

Once I had this list, I looked back through each topic column and added the themes I felt best matched the words above each LDA topic. That gave me a range at the top of my LDA topics which I could sum using a countif function in Excel. The result is something to the right.

Obviously this last part is far from scientific. The only thing remotely scientific about this is using Latent Dirichlet Allocation to organize words into topics. However it does provide value. This is a real model rooted in math; I used actual blog content not a list of keywords that came from a brainstorming session and Ubersuggest, and with a little intuition I got an idea of the strengths and weaknesses of my clients blog content.

Cleaning is a very important part of what my client does, yet it does not have much of a presence in this analysis. I have my next blog topic!

Something To Consider

LDA and topic modeling have been around for 11 years now and most search related articles about the topic appear between 2010 and 2012. I am unsure why that is as all of my efforts have been put toward testing the model. Moving forward I will be digging a little deeper to make sure this is something worth perusing. If it is, you can expect me to report on a more scientific application, along with results, in the future.

Bringing Google Analytics Data into Google Sheets

blog-google-add-on

If you’re reading our blog, the chances are pretty favorable that you’ve used Google Analytics at some point. Maybe you’ve used it to check on basic metrics like overall pageviews and sessions from time to time, or maybe you’ve performed more in-depth reporting with filters, advanced segments and custom dimensions.

You’ve clicked, scrolled and explored using the date range calendar, the left navigation menu and the tables and graphs showing your data. All of this within the Google Analytics interface, because that’s where the data lives and that’s where the data stays. Right?

Not so! In this post, I’ll introduce you to a really easy method (seriously) to make automated reports completely within Google Sheets using the Google Analytics add-on. If you’ve ever caught yourself manually typing numbers into spreadsheet cells for web reporting, this is one solution to automatically get the numbers you need into your reports.

Read More…

The ABCs of Content – 26 Ways to Always Be Creating

typesetter image - the abcs of content

In the lexicon of modern marketing, “content marketing” has become a rather popular phrase to bandy about. And it seems like everyone wants to sell you their foolproof recipe for success.

Today, I’m playing that game. My ridiculous line of buzzword-edition Marketing Magnetic Poetry is, “High ROI content marketing is a product of efficiency, synergy, and multi-tasking.” And my “secret sauce” to content creation is:

Always Be Creating content.

This is no secret to true master bloggers and content marketers; they’re 24/7 creators. I don’t include myself in such company, but the better I get at it, the better the return I see on time spent.

Read More…

Goals & Funnels in Google Analytics: Confusion and Workarounds

blog-goal-funnels

Goals are one of the most important things you can establish in your Google Analytics account, but you also need to understand what you’re looking at, so that you don’t jump to the wrong conclusions.

“Hey our email where we sent out a picture of manatees wearing men’s suits really did well! We should run more of those!”

How are our Google AdWords campaigns performing in getting people to come to our ecommerce store to buy our clothes? How does adding an extra page in our checkout funnel affect overall conversion? These are all things that goals can help answer.

There’s a lot of confusion around Goals and Funnels, so I hope to answer some common questions here, provide some (not so great) workarounds, and end with my recommendation for Google. Let’s use an example an ecommerce website which has three store sections (men’s clothes, women’s clothes, and children’s clothes).

Confusing Thing #1: Goal Completions are not related to Goal Funnels

goals are the same

“Why do all my goals have the same number of completions? Why aren’t they working?”

When you set up a URL Destination goal, such as a purchase confirmation page, that’s the page that will generate how many times that goal was complete. Maybe for our ecommerce website we’ll set up three different goals with three different funnels, one starting with a required step on the Men’s store, and one with a required step on the Women’s store, etc… Yet when we look at the Goal Conversion Rate or the Completions they will all be identical.

goal setup example

That’s because on our site we have a single page (/thanks-for-your-purchase) which every purchase finishes on. The funnel itself, even though we’ve clicked the first step being required, doesn’t matter at all to the goal completion itself. All that matters is “Did the user hit the URL Destination page listed?” That’s it.

Potential Workaround – URL Parameters

Are you able to pass information breaking up your conversions to the final conversion page? Maybe you can put a parameter on the URL that makes /purchase-complete?shop=mens different from /purchase-complete?shop=womens? If so, you’ll be able to create specific goals based on those parameters, and see different goal conversion rates for your men’s, women’s, and children’s shops.

You could even pass a variety of information and create different goals based on the product itself.

too many parameters

“What’s the conversion rate on non-waterproof blue men’s coats?”

The Problem With This Workaround

This breaks down pretty quickly unfortunately. It remains session based, so what if someone visited the men’s store, and then purchased from the women’s store? Would that get passed on? What if they’re not buying one product, but multiple? What if you have multiple portals that sell men’s gear, and want to distinguish them? Suddenly you have a slew of parameters that effectively become the user’s session history of every page they hit, and that’s just not an effective solution.

If you’re doing something simple, the workaround probably works. Start adding complexity and you are back to square one.

Another Workaround – Custom Dimensions

Alternatively, you could set a custom dimension in Universal Analytics on specific pages, and have them be session based. So if someone hits the children’s portal, you set a session level custom dimension for “children’s” and then have a view that filters for JUST that value in the custom dimension. Then when you duplicate the goal within the view, you’ll be seeing only conversions with that specific custom dimension value.

The Problem With This Workaround

What happens when someone hits the women’s portal page next, does it use a second custom dimension, or overwrite the one you’re using? If you have a small site, you could get away with this, but otherwise you’ll quickly run out of custom dimensions that could be used for much better things. Or maybe you have multiple ways into the funnel, and skip those pages entirely. Once again, if you have a very simple site, you can probably make it work, but it breaks down under complexity.

Confusing Thing #2: The Funnel Conversion Rate is not the Goal Conversion Rate

funnel conversion is different from goals

So the goal completions are the same, but those aren’t the Funnel Conversion Rate. The Funnel Conversion Rate can be found inside the Funnel Visualization report page under Conversions>Goals. There you can see how many times the goal was completed along with that Funnel Conversion Rate.

The Goal Conversion Rate is tied simply to the final URL Destination, and doesn’t care about the funnel. The Funnel Conversion Rate is JUST the percentage of people who completed the goal who entered the goal somewhere. If someone didn’t ever touch any of those steps, they’re not counted.

This is partly what leads to the funnel conversion rates being so much higher than goal rates. The goal might have a 0.5% conversion rate, but the funnel conversion rate might be 50%.

We don’t need a workaround

The funnel conversion rate is what it is. It’s just important to understand that it’s NOT a goal conversion rate that includes the funnel, but something specific to the number of people who entered that funnel, rather than the total number of people who hit the website. It’s a good metric, even if we can’t access it ANYWHERE but on the funnel visualization.

Confusing Thing #3: The Funnel Numbers Are a Lie

Hey but at least we know that people hit all those steps in the funnel right? Sadly no. Ever see a funnel that has 100% of the people moving through several steps along the way? One reason might be because these numbers are “backfilled”. The first step is required, so if Google Analytics sees you hitting a later step, it will assume you hit those earlier funnel steps. It then fills in the numbers for the previous steps assuming that there was some error that caused them to not see those hits.

So did 100% of the people really see that personal information page and pass through to the credit card processing page? Or did nobody? The Funnel numbers themselves can be lying to you.

For more information how this works, refer back to some of our previous articles: Funnel Problems in Google Analytics or Google Analytics Goal Flow: How Visitors Really Move Through Your Funnel.

We don’t need a workaround

Like #2 there’s not much we can do here, besides be aware of it. Probably the best thing we can do is use this knowledge to be very careful about how we construct our goals, and if we see weird things like 100% users passing through several stages, we might want to look at editing the goal, or checking the actual user flow on the page, to confirm that things are working. Just don’t ever assume that the numbers are 100% accurate.

Confusing Thing #4: You Can’t Segment Goal Funnels

Are you interested in just looking at how the organic traffic is performing in your funnels, rather than all traffic? Well, unfortunately, you can’t use segments in the Funnel Visualization. If you have a Custom Segment applied while looking at one report, you might get confused when you switch over to the Funnel Visualization and lose the ability to segment. So let’s say you really wanted to look at only sessions where a visitor saw that new banner with the manatee wearing a suit picture on the home page. Sorry, that segment won’t work, and you are forced to look at 100% of the traffic to that view in the funnel.

Potential Workaround – Using Multiple Views

The best thing you can do here is leverage your views. If you want to see your goal funnels for just organic traffic, then you should create an organic traffic view, and share your goal within it. That way the funnel visualization and conversion rate within the organic view will show just those goal and funnel conversion rates for that segment.

The Problem With This Workaround

If you are doing something like firing an event on your home page manatee banner image, and have been segmenting based on that, you’ll need to change how it’s handled. You could use a similar custom dimension session scope solution like with the first confusing thing, but that leads to the additional problems listed above like running out of custom dimensions.

In addition, views are only populated going forward. Want to know what your organic funnel conversion rate was last month? Well this solution won’t help you. You’re just not going to get that number easily.

Proposal to Google Analytics #1: Goal Override

overwrite goal conversion

My proposal to help solve some of these problems is basically to have Google Analytics create a Goal Override on the Goal itself.  A toggle which lets the Goal Conversion Rate be affected by the funnel itself.

Instead of reporting on the percentage of people who visited the WEBSITE who hit the URL Destination page, it would be the percentage of the total visitors who hit all the REQUIRED STEPS in the FUNNEL and also hit the URL Destination Page.

This way your Goals could be much more specific to a pattern of activity, rather than a single event.

Proposal to Google Analytics #2: Required/Optional/Disallowed Steps

I would like to be able to set a toggle on each step in a funnel, which would define that step as required, optional, or disallowed.  If the step is optional, no need to forcibly backfill it. If the step is required, and a person doesn’t hit that step, they don’t convert the goal. If the step is disallowed, and they hit that step, then they don’t convert that goal.

An example would be a funnel where you want to look at the conversion rate of those that were brand new customers, so you want to require the new account creation page, meanwhile in another goal for existing users you want to DISALLOW that page, so if someone hits the new account creation page, it should be left out of the goal.

Proposal to Google Analytics #3: Segments on Goals

I would like to segment goals within the Goal setup itself. For instance I would like to be able to go into an essentially unfiltered view, and create a goal and as part of the goal define that the Source/Medium needs to be google/organic. That way I could create a “Google Organic Conversions” goal in a view, without necessarily having that view be ONLY Google Organic visitors.

It would simply only restrict the conversion on that goal to the person’s source/medium (or other dimensions like say Country or Region, or multiple variations) rather than simple behavior.

TL;DR

Goals and Funnels can have confusing aspects, and when you really dig into them they sometimes can’t do what you want them to do. There are potential workarounds, but nothing that is perfect. I have few proposals for how Google Analytics could improve Goals and the Goal Funnels, but I’m sure I’m not the only one. If you’ve got a great workaround or suggestion for how to fix some of these common issues, leave them in the comments!

Breaking: Google Tag Manager Refresh – 6 Things You Need to Know

blog-gtm-refresh-2

As you may have heard, Google Tag Manager has a new interface. You can read the official announcement, but we’ve got 6 of the most important takeaways below. Read More…

Prep Your PPC for the Holidays

paid-search-holidays

It’s that time of year again. We’re only a few short weeks away from the official start of the holiday season. Are your PPC accounts prepared? Check out these quick tips to jumpstart your online sales to this quarter. Read More…

Data Layer Forensics: Ecommerce Edition

DataLayerForensics-Ecommerce-blog

Troubleshoot ecommerce analytics by taking a “data snapshot” the moment tracking occurs. Use our code and handy checklist to detect hard-to-find issues.

Something is wrong with your ecommerce analytics data, but you’re not sure exactly what. You’ve checked the tracking code and it looks fine. That means the problem is probably coming from the server side.

Server side code takes transaction details — like products, quantity, and price — and places them where your analytics tracking code can read them.

If the transaction details don’t make sense, you’ll have problems such as transaction revenue with no products, or products with no revenue. If some details are malformed or missing, the tracking code may fail entirely. Read More…

Ten Years Later

10-years-later-blog
Click to Expand

The year was 2004, and I was unemployed.

So I networked, networked, networked, and then I wanted to thank all those people who took time out to have coffee with me. Often, I heard myself saying, “Why don’t you let me evaluate your web analytics?” Most of those companies had some crummy server-side analytics, and somehow I found insight in all those metrics.

Gradually, I found a business for myself and landed a few gigs. I was an early user of Google Analytics, and I kept trying to figure out how to make this interesting tool more powerful. What is that setVar thing, I kept wondering, and what is so regular about those expressions?

Even though I really didn’t understand why _udn should be equal to none, I still knew more about analytics than I did about SEO. So I hired my first search employee, Taylor Pratt, in 2006. By March 2007, I had written enough about Regular Expressions that Google asked our company – all two of us – to become a Google Analytics Certified Partner. I found out that we had been listed on the Google Analytics Partner page when Sirius/XM called us for GA consulting.

Read More…

Use Content Marketing ROI (or lack thereof) to Stop Blogging

blog-stopblogging

The odds are that my company’s marketing manager is scowling at me right now. Heck, the odds are that your company’s marketing manager is scowling at me right now. Why? Content marketing is tough to measure, yet essential to so many businesses. But someone needs to say it: Not every organization should have a blog.

Gasp!

The industry might take away my SEO license for saying that. After all, it is in our job description to be champions of content and all things that lead to more successful digital marketing. Unfortunately, too many people write too many blog posts simply for the sake of blogging, like an offering made without question to the God of Content Marketing. Read More…