Category: google analytics

For a long time, I considered standard Google Analytics reports to be the best way to get useful insights. From time to time, I struggled with sampling, limitations, and weird results, but I didn’t see a way around it—until I discovered Google Analytics 360 and raw data exports into Google BigQuery. After a few hours […]

For a long time, I considered standard Google Analytics reports to be the best way to get useful insights. From time to time, I struggled with sampling, limitations, and weird results, but I didn’t see a way around it—until I discovered Google Analytics 360 and raw data exports into Google BigQuery.

After a few hours playing around with SQL, I was already able to deliver insights I never could have with aggregated Google Analytics reports. Since that day, I’ve been exploring how raw data can be a web analyst’s best friend.

Now that more and more tools allow you to access raw data—and cloud storage has become more powerful—web analysts should shift focus, too.

In this article, I will:

Introduce you to the differences between raw and aggregated data;

Show you what to expect out of this new access;

Demonstrate how you can get your hands on this data (cheaply);

Give you practical examples with BigQuery to apply to your favorite dataset.

What’s the difference between raw and aggregated data in Google Analytics?

Google Analytics, in the free version, provides only aggregated data. That means you can’t get all information pageview by pageview, event by event. Obviously, you can get a lot of information through the User Explorer report, but this is limited, not scalable, and not downloadable.

For regular use, aggregated data is usually enough. After all, most questions we answer are pretty basic:

The problem with aggregated data is that, well, it’s aggregated—you’re mixing together a bunch of user behavior, sometimes hiding the most interesting facts.

Let’s take a simple example with pages per session. Say you have two sources with six sessions each that have the following number of pages per session:

Source A: 1; 1; 2; 2; 2; 10;

Source B: 2; 2; 3; 3; 4; 4.

Looking at the raw data, you can see that if you omit the statistical outlier of 10 pages, Source A has far less engagement. However, if you check only average data, it’s the same as Source B: 3 pages. (The median would be different.)

So why isn’t this more granular approach the default for Google Analytics? Because of calculation costs. When you provide only sampled, aggregated data, you don’t need to go through millions of rows on every report. It makes sense that the free version of Google Analytics doesn’t provide free advanced calculations.

Now, they can bill you based on actual data usage in BigQuery. And, as web analysts, we need to be fully aware of exactly what you get for that investment.

A pricing table for BigQuery usage.

What can you get out of raw data?

Now that you see the limitations of aggregated data, let’s walk through a few use cases for raw data:

1. Event timing

One thing that’s seriously missing from Google Analytics? Timing. There’s no simple way to know the actual time interval between an add-to-cart and a purchase, whether within the same session or not.

Of course, you can store some timings in a cookie and do your own calculations. But this feels like reinventing the wheel—Google Analytics is supposed to have collected this data already!

With raw data analysis, you can easily get the precise timing of an event for a given user and compare it to another event for the same user. For a larger analysis, you can aggregate data any way you decide: average, median, percentile distribution, or some advanced statistical model.

Isn’t it important to know that 20% of your users convert within 2 minutes and 10% take more than 7 days? Don’t you think you should communicate differently with these two groups of visitors?

You can calculate a more accurate conversion rate as you can get transaction information even for users who didn’t trigger Google Analytics on the confirmation page (e.g., ad blockers prevent tags from firing, bank services don’t redirect, confirmation pages take too long to load, etc.).

As long as you can export your CRM data with a unique lead ID (e.g., client ID, SHA-256 hashed email, generated ID, etc.), it’s fairly easy to pair that data with a Google Analytics client ID and calculate conversion rates (not just lead-generation rates) for your campaigns.

For multi-channel analysis, you may have to do a more advanced query, but the good news is that you have total control over how it’s calculated.

Offline events. Online businesses are impacted by the offline context—holidays, weather, strikes, or a deadly virus forcing half the world into a lockdown.

In Google Analytics, there’s no way to add a custom dimension to a specific date range. Annotations are for the user interface, not calculations.

However, wouldn’t it be nice to know the impact of holidays on your business? If you sell globally, wouldn’t you want to know which countries’ sales are most impacted by bank holidays?

Obviously, for such analysis you would have to gather information in a data-readable format. But once it’s done, you have a world full of relevant information to share.

Ads, crawlers, logs—you name it. Once you get used to storing all your data in the same warehouse and running join analyses with analytics data, you can let your wildest data-dreams come true:

Does longer content perform better? A proper crawler (e.g., Screaming Frog) could allow you to compare pageviews and content length.

Are crawl anomalies affecting SEO? By storing your log data in BigQuery, you can check for correlations between Googlebot’s visits and changes to search performance.

What’s the real ROI of your marketing? Set up your own attribution calculations to measure the return on ad spend across all ad platforms.

Tools to get raw analytics data

Now that you’re aware of the benefits of raw analytics data, I’ll show you a few ways to get that data into a data warehouse.

Google Analytics 360

If you’re rich/lucky enough to get your hands on Google Analytics 360, you get an export of raw data to Google BigQuery right out of the box.

All information, including enhanced ecommerce, is exported. Every row represents a session, and you get to play with a lot of dimensions and metrics.

Google Analytics App+Web and Firebase

Very good news—you can now export to Google BigQuery for the web even though you’re not paying for 360. Indeed, Firebase, the core of Google Analytics App+Web, allows exports to Google BigQuery.

To do it, you just have to switch to Blaze invoicing, which has a pay-as-you-go scheme. For a large website, you may have to monitor your budget, but for most sites you pay only a few dollars per month (even zero if you have a small website).

Every row represents an event, which includes a screen/pageview. You have to get used to the very specific way that Firebase presents the data; it’s different than what you’re used to in Google Analytics.

Still, this is a solution I totally recommend to start working with raw data.

Other free tools: Yandex.Metrica and Matomo

I haven’t tried every tool. Most paid tools offer a raw data export. I would like to mention two free tools, however, that also have this option.

Yandex.Metrica is 100% free and provides raw data through their logs API.

Matomo is an open-source analytics tool that may need to be installed on your own server—you get raw data right in your database.

Data pipeline

Another way to get Google Analytics right into a data warehouse is to use a pipeline. OWOX BI has a pretty solid pipeline from Google Analytics to BigQuery. It works through a custom task in Google Analytics. It basically copies Google Analytics’ entire payload to their own endpoint.

If you’re savvy enough, you can also create your own endpoint using cloud functions or log analysis. I recommend two articles to inspire you:

How to build a GTM monitor by Simo Ahava. You’ll learn about sending data to BigQuery using Cloud Functions. The limitations are 100,000 rows per second integrated in BigQuery. If you’re above that, you may have to batch hits from some logs.

Results and conclusion

The more articles a user reads about culture and opinion, the more likely they are to be interested in a subscription. On the other hand, lifestyle and sports sections are less likely to lead to subscriptions.

Cohort analysis with Firebase

Goal of the analysis: How do users behave after the first install? When is it the best time to attract users who will come back regularly?

Results and conclusion

month

september_cohort

october_cohort

november_cohort

december_cohort

201909

2228

2

3

4

201910

436

2233

3

7

201911

264

369

2076

2

201912

256

247

370

2057

202001

196

177

261

412

202002

151

158

179

229

202003

222

188

201

241

Users who first opened the app in September and December seem to have the highest recurring usage.

Query on BigQuery

WITH cohorte_september
AS
(
WITH
userAS
(
SELECT DISTINCT user_pseudo_id AS user
FROM `j-aime-lire-store-app.analytics_194275554.events_*`
WHERE
_table_suffix between '20190901' AND '20190930'
AND
event_name="first_open"
)
SELECT sessions, month
FROM
(
(SELECT COUNT(DISTINCT user_pseudo_id) AS sessions,"201909" AS month
FROM `j-aime-lire-store-app.analytics_194275554.events_*`
WHERE
_table_suffix between '20190901' AND '20190930'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
UNION ALL
(SELECT COUNT(DISTINCT user_pseudo_id),"201910"
FROM `j-aime-lire-store-app.analytics_194275554.events_*`
WHERE
_table_suffix between '20191001' AND '20191031'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201911"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191101' AND '20191130'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201912"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191201' AND '20191231'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202001"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200101' AND '20200131'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202002"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200201' AND '20200229'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202003"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200301' AND '20200331'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
)
ORDER BY month ASC
),
#october
cohorte_october AS
(
WITH
user_october AS
(
SELECT DISTINCT user_pseudo_id AS user
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191001' AND '20191031'
AND
event_name="first_open"
)
SELECT sessions, month
FROM
(
(SELECT COUNT(DISTINCT user_pseudo_id) AS sessions,"201909" AS month
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20190901' AND '20190930'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_october )
)
UNION ALL
(SELECT COUNT(DISTINCT user_pseudo_id),"201910"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191001' AND '20191031'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_october )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201911"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191101' AND '20191130'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_october )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201912"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191201' AND '20191231'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_october )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202001"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200101' AND '20200131'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_october )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202002"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200201' AND '20200229'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_october )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202003"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200301' AND '20200331'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user_september)
)
)
ORDER BY month ASC
),
#november
cohorte_november AS
(
WITH
user AS
(
SELECT DISTINCT user_pseudo_id AS user
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191101' AND '20191130'
AND
event_name="first_open"
)
SELECT sessions, month
FROM
(
(SELECT COUNT(DISTINCT user_pseudo_id) AS sessions,"201909" AS month
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20190901' AND '20190930'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(SELECT COUNT(DISTINCT user_pseudo_id),"201910"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191001' AND '20191031'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201911"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191101' AND '20191130'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201912"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191201' AND '20191231'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202001"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200101' AND '20200131'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202002"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200201' AND '20200229'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202003"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200301' AND '20200331'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
)
ORDER BY month ASC
),
#decembre
cohorte_decembre AS
(
WITH
user AS
(
SELECT DISTINCT user_pseudo_id AS user
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191201' AND '20191231'
AND
event_name="first_open"
)
SELECT sessions, month
FROM
(
(SELECT COUNT(DISTINCT user_pseudo_id) AS sessions,"201909" AS month
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20190901' AND '20190930'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(SELECT COUNT(DISTINCT user_pseudo_id),"201910"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191001' AND '20191031'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201911"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191101' AND '20191130'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"201912"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20191201' AND '20191231'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202001"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200101' AND '20200131'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202002"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200201' AND '20200229'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
UNION ALL
(
SELECT COUNT(DISTINCT user_pseudo_id),"202003"
FROM `my-app.analytics_123456789.events_*`
WHERE
_table_suffix between '20200301' AND '20200331'
AND event_name="session_start"
AND user_pseudo_id IN (SELECT user FROM user )
)
)
ORDER BY month ASC
)
SELECT cohorte_september.sessions AS september_cohort,
cohorte_october.sessions AS october_cohort,
cohorte_november.sessions AS november_cohort,
cohort_december.sessions AS december_cohort,
month
FROM cohort_september
JOIN cohort_october USING (month)
JOIN cohort_november USING (month)
JOIN cohort_december USING (month)
ORDER BY month ASC

Conclusion

In the next few months, Google App+Web will certainly become the new standard. This will come with more integrations between the Google Marketing Platform and Google Cloud Platform, especially BigQuery. If your SQL skills are a little rusty, I strongly advise you to get a refresh and play around with some demo data.

With easy access to raw data, quick and efficient calculations, and powerful data visualization, advanced digital analytics is becoming more and more mature. The future of all this is probably tighter integration with other business data.

Some have been telling us for ages that business intelligence and digital analytics should work together. Slowly but surely, it’s becoming a reality.

Google Analytics stands apart in a league of its own as the best tool for understanding your web traffic and conversions. Yet, as the best tool, it can be confusing and overwhelming to figure out. In this article, we first look at how you set up an account in Google Analytics, and then we look […]

Once inside Google Analytics, name your account with your company name, website name and provide your website’s URL.

Google will then provide you with tracking code. You’ll want to copy this code and insert it into all of the pages of your website. You can either add it yourself to your html code, or if you’re using WordPress, use a plugin to do it for you.

Give it a few days before you start looking at reports.

Now that you’ve got the set up done, let’s dive into the advanced tips.

Set Up Goals

You want to track your conversions, so you will use conversion goals to measure them.

Setting up goals allows you to dig deep into the performance of your website. You’ll learn if your website visitors are actually doing what you want them to do.

To set up your goals, we recommend using the SMART method.

Specific

Measurable

Achievable

Relevant

Time based

You want to be extra sure that your goals are measurable.

So, the first thing you want to do is decide the action that defines a specific conversion on your website. Google Analytics then uses your goals to track the conversion. Once the goal is achieved, the conversion is logged.

Some examples of goals include:

Purchase

Newsletter sign up

Online registration

Information request

Download

Next, you want to either create or decide on a destination page. For example, if you want your user to sign up for your newsletter (this is the goal), then the destination page would be the thank you page they land on after completing the task.

Yet, if your conversion rate is low, you need to change something on your website. It could be the image, headline, text, call to action, colors, etc. A low conversion rate means you aren’t meeting the needs of your customers.

It’s ideal when you see your goal conversion rate continue to increase over time. This means you’ve refined your landing pages for the best conversion rates.

Next, take a look at your Goal Completions. This number shows you exactly how many website visitors converted. This is a tangible number you can use in your marketing reports.

Third, you want to look at the Goal Value. This is very simple – it’s the monetary value of your conversions.

Conversions are great, but the Goal Value number tells you what each of those conversions is worth to you monetarily.

Understand Your Audience

Now, we’re going to touch on how to evaluate your audience in Google Analytics. Why is this important?

It lets you know if you’re reaching the right people in the right way. You’ll learn things about your website visitors such as:

Age

Gender

Location

Interests

Browsers

Mobile Devices

On the left-hand side in Google Analytics, you’ll see the category for your Audience. Open each of these sections, paying special attention to Demographics and Geo.

Get familiar with your Acquisition report as well. This report shows you how your website visitors arrived on your site.

This helps you know if it was email, social media, organic or pay-per-click.

Discovering the data in these reports helps you learn what works best for driving traffic to your website to help you increase your goal conversions.

Your audience reports can also tell you how many page views your website had. For example, if a visitor landed on your site and visited five pages, you can see where he went.

You can also view the number of new and returning visitors.

Think about your website goals. Are you after new or returning visitors? This is where you’ll see if you’re meeting your goals.

Take a look at your visitor flow as well. This helps you see where people came from.

To Conclude

In this guide, we’ve touched on just a few of the many things Google Analytics has to offer.

Once you’ve set up Google Analytics on your website, you have access to an abundance of information.

You want to use that information to make changes and additions to your website so you can continue to improve your conversion rate.

You’ll find it relatively easy to set up Google Analytics and view your first set of simple reports.

We do encourage you to get started with Goals as they can really help you gauge your conversion rate. Use our advanced tips to get started and stick with it.

The more you use Google Analytics, the more comfortable with it you’ll become.

Are you ready to squeeze more profit out of your website by tracking your conversions in Google Analytics? That’s terrific! We’re here to help you optimize your website so it works fluidly for your website visitors. In fact, we promise you we’ll do just that.

With our guarantee, you can rest assured we will increase your profits through landing page optimization.

If you’re ready to work with the leader in landing pages and conversion rate optimization, contact us today.

We’ll provide you with our FREE site performance analysis so we can work on your landing page conversion rates.

Google Analytics isn’t just for knowing how much traffic your website is getting, your top pages, and how your traffic sources and marketing efforts are performing. Nope. There is an even better use for it!…

Google Analytics isn’t just for knowing how much traffic your website is getting, your top pages, and how your traffic sources and marketing efforts are performing. Nope. There is an even better use for it!

It’s also really important to use it to help improve your website – so it converts many more visitors into sales, leads or subscribers. But unfortunately Google Analytics can be a little daunting at times, particularly with seemingly endless reports to check out and analyze. Where should you start for best results?

To help you make sense of this, I’ve created a list of the best Google Analytics (GA) reports so you can quickly gain more insights into your website performance and what needs improving most. I have also recently included a video of me walking you through these great reports. Let’s get started…

The best Google Analytics reports to improve your website

Update: Watch a video of me guiding you through these key Google Analytics reports

Last year I created a premium video about these best Google Analytics reports. It was originally part of a paid membership but I have decided to now include it on this article for everyone to watch for free. In this video you will also learn how to create a Google Analytics dashboard for these reports. Enjoy!

Check the landing pages report for pages with high bounce rates and low conversion rates
Your top landing pages (entry pages) are crucial to optimize because they often get very high levels of traffic, and are the first pages your visitors see on your website. If visitors don’t find what they are looking for or are confused, they will leave your website often within just 5 seconds!

To improve your website with this report, pull up the your landing pages report for the last 30 days (found under ‘Behavior > Site Content > Landing pages’). Then see which pages out of the top 10 have highest bounce rate (over 50% is high) and which have lower than website average goal conversion rate (both indicated below in yellow) – these are indicators of poorly performing pages on your website.

Then optimize these poor page performers first – improving headlines, benefits, imagery and call-to-action buttons are some of the best ways to do this. Optimizing these helps increase visitor engagement and increases the chances of them converting for your key website goals. You should also ensure you show your unique value proposition more prominently on them.

Analyze your Funnel Visualization report for high-drop off rates and optimizeIt doesn’t matter how good your website is if visitors struggle to get through your checkout or sign-up flow pages. To understand how well your visitors complete that process, its vital you check your Funnel Visualization report. On this report (found under ‘Conversions > Goals > Funnel Visualization’) you can see how many visitors get through each page of your funnel (like your billing page), and which pages are most problematic – even where they go if they go to another page.

You need to pay great attention to any pages with a high drop off rate (more than 40%) and optimize those first – adding security seals and risk reducers, reducing distractions like header navigation, and improving error handling often work well. Improving these pages will greatly increase your conversion rate, and therefore your sales or signups.

Note: Obviously you will need to have made sure you have setup your goals for your website adequately, including adding key pages in your goal flows. Here is a great guide on setting goals up.

Check your traffic overview report for poor performing traffic sourcesImproving the quality and quantity of your traffic has huge impact on your website conversion rates, sales or leads, and its vital you gain insights into traffic performance and optimize the major sources.

To help you gain greater insights into this, pull up the ‘Channels’ report as Google calls it (found under ‘Acquisition > Channels) and check which of your top 10 traffic sources (channels) have high bounce rates (over 50%), or a goal conversion rate that is much lower than your website average. This is particularly important to do for any source that you are paying for like paid search or display advertising, as you will need to optimize these quickly to reduce your wasted spending.

You should also look for traffic sources that seem low or missing from the top 10 channels. For example, you may find your email traffic source isn’t as high as you had hoped for or isn’t converting well, so you should optimize your email marketing campaigns as soon as possible.

Note: You may even find your email marketing campaigns are not being attributed correctly to the email traffic channel, which can be fixed by using campaign tracking codes for your emails. I highly recommend doing this to monitor the success of your email marketing efforts.

Discover insights from your organic search ‘not provided’ keywords

You have probably noticed that when you look at your top organic search keywords report that a very high percentage of them are ‘not provided’. This is because users are often logged in to Google when they search and they won’t share their keywords with you for privacy reasons.

Instead of just giving up, you can actually gain insights about what these ‘not provided’ keywords are likely to be. You can do this by finding out which landing pages are most often arrived on from keyword searches. Simply go to Acquisition > Search Console > Landing Pages, and then filter the report for top ‘clicks’ (click on that column header). This shows you which pages visitors are most often seeing when they arrive via keywords. You will then often be able to infer which of your keywords relate to these pages (especially when you cross reference it with your keywords that are provided in your organic search keywords report).

For example, my top organic search landing page is actually this article you are reading, and when I look at my top keywords searches, I see that ‘best google analytics reports’ shows up in my top 10 search keywords, so that is likely to be the keyword that drives me the most traffic. This organic search landing pages report also shows other very useful metrics like conversion rate for goals, so you can also infer how well your keywords are converting – something that no other SEO tool can tell you either.

Use the mobile overview report for tablet/mobile insights
Mobile traffic is bigger than ever before, often accounting for over 40% of total website traffic depending on your type of website – and these visitors have very different needs due to smaller screen sizes, and often convert much lower than regular website traffic.

To understand your mobile traffic, and its performance, you need to check your ‘mobile overview’ report (found under Audience > Mobile > Overview). Here you need to see just how high your traffic levels are for both mobile and tablet devices, and see what the conversion rate for each is. If conversion rate is much lower for any, you need to check your website on that device for key issues and fix them immediately – in particular ensure you have a mobile optimized version of your website.

Note that mobile conversion rates are often lower than desktop conversion rates because these visitors are often just browsing when they are not at home and not ready to purchase or sign up, but anything under 0.50% mobile conversion rate is considered very low.

Check the exit pages report to find problematic pagesYou also need to find out which pages are most often causing your visitors to leave (called an ‘exit’ page) – and improve and optimize those too.

To find these top exit pages, check your ‘exit pages’ report (found under ‘Behavior > Site Content > Exit Pages). In particular look for any pages that shouldn’t be in the top 10, and try to figure out why so many people exit your site on them. Also look for pages with especially high exit rate (over 50%), as this often indicates problems. I recommend that you also use Hotjar to gain insights into why visitors are leaving on these pages.

A few ways to improve these top exit pages is by using and optimizing call-to-action buttons at the end of them (the wording and style of them in particular), and try using exit intent popups to show a great incentive (discounts/free guides etc) before visitors leave your website.

Analyze the top pages report for key missing pages and high exit ratesYour top pages report can contain some real gems for insights – and not just what your top 10 pages currently are. You can find this report under Behavior > Site Content > All Pages.

First check if any of your top pages have high exit rates (over 50%) and optimize those as soon as possible. You should also to check if any pages relating to your key goals seem missing from this report or have low traffic. For example, perhaps few people are visiting your important ‘why us’ or benefits page – making links more prominent to these pages will hopefully drive more traffic to them and increase the sales or leads coming from them.

Check the browser report for poor conversion rate performers
Your webpages can sometimes look slightly different or even break in some browsers (often due to small differences in how browsers show CSS code). This can unknowingly cause you many lost sales or leads.

To make sure this isn’t negatively impacting your website, you need to regular check the ‘Browser & OS’ report (found under ‘Audience > Technology) and make sure your conversion rates aren’t much lower for any browsers. If you see ones on this report that are much lower, you should go ahead and check for technical problems like CSS rendering issues and fix them immediately.

These are the simpler reports, there’s many advanced ones too

These are just some of the simpler Google Analytics reports that will help you improve your website. Here are a couple of the many more advanced ones to learn about:

Using the ‘Converters’ visitor segment to figure out the behavior of people who convert for your main website goals (sales/leads etc).

Using the ‘Site Search’ report to find pages causing most amount of internal searches (indicates visitors not finding what they need).

If you are interested in learning more about these advanced GA reports, simply comment and let me know.

Content Grouping is a useful feature that let’s you group your website or app content together and view aggregate metrics for each group. This is particularly useful if you have a lot of content to analyze. Rolling up your content, based on your specific business structure, is very helpful when creating dashboards and other custom […]

Content Grouping is a useful feature that let’s you group your website or app content together and view aggregate metrics for each group. This is particularly useful if you have a lot of content to analyze. Rolling up your content, based on your specific business structure, is very helpful when creating dashboards and other custom reports.

In this post I’ll talk about how to actually use the data and walk through some examples for various business types.

Standard GA Reports

Your content groupings are available in Google Analytics behavior reports. Navigate to the Behavior > Site Content > All Pages report. Notice at the top of the data table there is a selector for the primary dimension. This drop down list all of the content groupings that you added to Google Analytics.

Use the selector to choose a specific content grouping in your Google Analytics Content reports.

This selector also exists in the navigation flow, so rather than viewing how users move from page to page, you can view how users move between the different types of content on your site.

You can also use your content groupings in the Navigation Summary report.

Very handy for understanding the behavior of users!

It also exists in many other content reports, like the Landing Pages report and the Site Speed Page Timings report.

But who uses the standard reports these days? :) Analysis driven organisations use Custom Reports and Dashboards. Let’s look at how you can use content groupings in both features.

Custom Reports & Dashboards with Content Groupings

When you create a content grouping, Google Analytics will create a dimension for each content grouping.

Remember, a content grouping contains a number of groups, and each group can contain a number of pages or screens.

This means that the values for the content grouping dimension will be all of the content groups that you created within that grouping.

You can create up to five content groupings in Google Analytics, therefore you could have five new dimensions, one for each content grouping.

Use the content grouping dimensions just like you would any other dimension. Here’s a simple custom report that shows some a potential content grouping for a blog.

You can use your content groupings in a Google Analytics custom report.

Then, when you look at the report, you’ll see something like this:

When you add a content grouping to a Google Analytics custom report, the data will be aggregated based on content group.

Note: I added this custom report to the Google Analytics solutions gallery. You can add it directly to your account here.

You can also use the content grouping dimension in your dashboards. Here is a very simple example using the page value metric and the content grouping dimension.

You can also use the Content Grouping dimension in a Google Analytics Custom Dashboard.

That’s really all there is to using content grouping in Google Analytics custom reports and custom dashboards. No go and give it a try!

One other note – the content grouping dimensions are hit level dimensions. This means that you can only use them with hit level metrics, like pageview, time on page, etc. You can not use them with session level metrics, like conversion rate, or revenue per visit.

Content Grouping Strategies

To really take advantage of content groupings you need to plan your content grouping carefully. You need to understand how your organization wants to analyze this data. So let’s look at a how different types of businesses might use content grouping.

Ecommerce: Patagonia.com

Patagonia sells outdoor equipment for men, women and children. They’re known for their ethos that you should travel “fast and light” when in the outdoors – take only what you need. They’re also known for their environmental advocacy. They incorporate both of these messages into their marketing stories.

Effectively breaking down the content structure could help each department at Patagonia better understand their marketing initiatives and site optimization efforts.

So how might we create a content grouping strategy based on their business?

Google Analytics Content Grouping can be used to organize the content on an ecommerce website.

Product pages: I would start by grouping all product pages together. It’s really important to understand what percentage of your users are making it to product pages. If people don’t look at product pages then they usually can’t buy something. And I’d take it one step further – group product pages by product line. I’d also be sure to differentiate category pages from the generic product pages.

You can mimic your product architecture with your content groupings.

Special selling tools:One cool feature that the Patagonia site has is the ‘kit builder’. This is a tool that let’s a customer build the best clothing combination for different conditions or activities. This is another section that could really use it’s own content group.

Special shopping tools can be categorized in their own group.

Checkout pages: Next I’d group all checkout pages together. These are all the pages in your checkout process. The percentage of people that see checkout pages might be very small, but I like to put these pages in their own group. They’re not product related, and they’re not marketing related. So they need their own group.

Account management pages: Many ecommerce sites let customers manage account settings, check the status of their order, manage returns, etc. I would lump all of these pages together in an Account Management group.

Marketing pages: Now we get into a large chunk of the content – marketing pages. Patagonia has a lot of information about their brand, and initiatives. Rather than lump all of this together as just Marketing pages, I would actually break all of this up into groups based on the different initiatives.

In the case of Patagonia I would use all of these different groups that you can see in the navigation.

Use a Google Analytics Content Grouping to categories marketing pages.

Support pages: Business is all about relationships – and that’s represented by different types of support content. We can create a support group that containing any materials related to support. Again, you can create sub-groups for different types of support content (product support, order support, etc.)

Error pages: I like to group all error pages into a single group, then I can drill into the group and view the specific errors. This group can contain all different kinds of errors, depending on your personal preference. It could be technical errors, like 404 or 502 errors. Or it could be more functional errors, like when a user adds an incorrect credit card number during their purchase.

Software as a Service: Mailchimp.com

Mailchimp is a popular service that helps businesses manage their email marketing initiatives. Like all SaaS sites it’s primarily divided into two sections: a marketing section and an application section. The content grouping will mimic this general structure of content.

Product marketing pages: If people are going to sign up for the Mailchimp service then they need to know about the features! Product marketing page are pages dedicated to product information, this includes information about price, features, etc.

For a SaaS site, create groups for different kinds of marketing content.

In addition to specific product information, there’s also a lot of thought leadership material to help drive marketing.

Marketing content pages: These pages are non-product marketing pages that help you demonstrate your thought leadership. It may be blog pages, or other content. In our example of mailchimp.com, there might be multiple groups. For example, they have a blog, but they also have a ton of research about email marketing. I would put this material in a marketing content group. Or even better, in the Reports group!

I would create a Google Analytics content group for the research reports on the MailChimp site.

Application pages: The other side to a SaaS site is the actual application. This is the section of the site where you log in and actually use the product. Like the marketing pages, there can be many different types of application pages. Let’s go back to our example of Mailchimp.com. I would break down the content based on product features.

Perhaps we could use the application navigation as a template for the content structure.

You can create different groups for each part of the online application.

Account management pages: Here’s another example of grouping different parts of the application together. We could easily group together the pages that control account management. And you can see from the image above that there are sections of the app dedicated to other functionality – all should be grouped accordingly.

Error pages: Like other types of sites it’s a good idea to group all error pages together. See the ecommerce section above for more details. These groups can be both website errors or application errors – like a login error page.

Gaming Application: Clash of Clans

We all use our mobile devices for incredibly important things, like waging medieval warfare on other clans! HA! Anyone out there like Clash of the Clans?

You can categorize app content using Google Analytics Content Groupings.

In reality, gaming apps are very similar to other business models – like publishing and commerce. Some games generate revenue from in-game ads while others up-sell users on features, like new levels. Some do both. We can group games content together just like we do ecommerce.

Game level screens: Most of the content for a game is probably level based. We can replicate this base structure in Google Analytics. If you’re a fan of Clash of the Clans then you there are other parts to the game in addition to levels. There are attack screens, chat windows, etc. All of these screens can be added to groups to roll-up the data.

Ecommerce screens: These screens are used to sell the user on pay features. In the case of Clash of Clans you can buy more gems, which can then be used to purchase other items, like more armies!

I would put all ecommerce app screens into a separate content group.

Configuration screens: Most apps have a configuration section. This is where the user can change everything from the language, to colors, etc.

Error screens: Last but not least we have error screens. Again, these can be technical app errors or functional errors, like login issues.

For Publishers: MarketingLand.com

Let’s face it, content grouping was made for the publishing industry! They’re the ones that have to organize thousands of pages of content. I don’t want to dwell on publishing too much, but let’s take a look at MarketingLand.com, a popular destination for anyone working in the digital marketing world.

But now, if you’re a publisher, you can also use content groupings to organize the data about your content. This provides one more way to roll up data for analysis.

Content Category: Almost all publishers group content by category – and now this can be done with the content grouping feature.

Publishers can create content groups based on the organization of their content.

Some publishing sites organize content in other ways, like by author or publication date. I would suggest creating content groups for topic categorization, and custom dimensions for any secondary organization (author, date, etc.)

Account pages: Some publishers, like the New York Times, offer a premium membership service. This is not the case with MarketingLand.com. But, if it did have a member’s section, you could group all of those pages together.

Error pages: Do I need to go over this again :)

I hope this post provides some inspiration for how you might use Content Grouping for your business. Ultimately how you organize your content groupings will be based on your organization. There is no right or wrong – just use a structure that is useful.

Today everyone is creating content – lots and lots of content. Measuring that content can be a challenge given the sheer volume that’s out there. That’s where Google Analytics Content Grouping can help. This feature let’s you categorize your content based on your own business rules. Then, rather than view your data based on page […]

Today everyone is creating content – lots and lots of content. Measuring that content can be a challenge given the sheer volume that’s out there. That’s where Google Analytics Content Grouping can help.

This feature let’s you categorize your content based on your own business rules. Then, rather than view your data based on page URL or screen name, you can view based on your specific groups.

In this post I’m going to talk about how content grouping works and how you set it up.

Key Vocabulary: Groupings and Groups

There is a little terminology we need to cover before we get into the setup: groupings and groups.

You can create multiple content groupings in Google Analytics.

Within a grouping you can create multiple content groups.

A group is a collection of content. It could be pages in a certain section of your website. Or it might be screens from a certain part of your app. It can be just about anything.

You can create multiple content groupings in Google Analytics and switch between them in the reports.

Here’s an example. For my blog I created a grouping called Blog Content Categories.

Within that grouping I create a number of groups to categorize the different types of content on my blog. There’s a group for posts, a group for about me pages, a group for error pages, etc. In the configuration I created a rule that puts each page in a group based on the structure of the URL.

You can view your content data based on groups, rather than URL, screen name or title.

Any item that is not added to a group will appear in the (not set) content group.

It’s important to know that there is not one specific report where you access this data. When you create a grouping it’s literally becomes a new dimension of data. You choose to view that dimension in almost all of the content reports.

Let’s take a look at how you actually create a grouping and groups.

Creating Groupings & Groups

Google Analytics does not automatically create content groupings – you must configure the tool to do that. Navigate to the settings for a specific view and choose Content Groupings.

Content Grouping is a view level setting.

Here you will see a list of all your groupings. You can choose to create a new group or edit an existing group.

Here’s a list of your Google Analytics content groupings. You can add or edit groupings here.

There are three methods you can use to create a content group – let’s take a look at each.

Tracking Code Method

This method requires you to add a small piece of code to each page on your site or in your app. The code will literally set the name of the content group when the page or screen renders. Here’s how the code would look for Universal Analytics:
ga('create', 'UA-XXXXXXXX-Y', 'example.com');
ga('set', 'contentGroup5', 'Group Name');
ga('send', 'pageview');

The code for a content group is similar to the code for a custom dimension. You can set 5 content groups using the tracking code. Each group is associated with a number, one through five, as shown in the example above.

Basically this method let’s you suck in the group name, via code, from some other system. It might be a CMS, a data layer, or just the HTML of the page.

The key is that you somehow add the name of the group to the Google Analytics code.

Pros: Using the tracking code method you can use code to automatically adjust to changes in your content and new content groups.

Cons: It requires IT involvement to set up. But once it’s configured very little IT support.

I should also mention that content grouping is coming to Google Tag Manager. This will provide another way to programmatically set the content group – so stay tuned.

Extraction Method

The extraction method extracts (get it) the name of your content groups from an existing dimension of data. The idea is that you use a regular expression to parse the dimension and automatically extract the name of your group.

For example, the name of your content groups might be in the page title, like this:

Your website might use the name of the content in the Page Title or Screen Name dimension.

I would need to specify that my group name is in the Page Title dimension, and then provide a regular expression that extracts the appropriate value.

The content grouping extract method will automatically pull the name for a content group from a dimension of data.

For those of you that do not use regular expression, the value in the parenthesis will automatically be extracted. Google Analytics will then use the value as the group name.

You can see that this one rule will work for every product page on my site – as long as they are well formatted.

Pros: No coding involved. Flexible collection.

Cons: You might need to update your regular expressions when you add new content to your site or app. Specifically something that does not match your existing rules. Believe me – updating settings SUCKS. People forget to do it all the time.

In you’re new to regular expressions check out this reg ex tutorial in the Google Analytics help center.

Rules Method

The rules method is almost exactly like the extract method. The ONLY difference is that you have to MANUALLY name the group. The value for the name is not automatically pulled from a dimension of data.

The content grouping extract method will automatically pull the name for a content group from a dimension of data.

Like the extract method you can create rules based on different dimensions of data- the page title, page url or the screen name. If the dimension value matches the rule then the content is added to the group.

Pros: No coding. Don’t need to know regular expressions.

Cons: You need to remember to update your rules when you add new content or if your site urls or app screen names change. Again – updating your analytics settings SUCKS. People forget to do it all the time.

Which method should you use?

That’s a tough question. Personally, I think page category is a critical piece of data that should be added to a page data layer. If you take this approach then using the tracking code method is very scalable.

I also like the extract method. It’s very flexible and reliable – as long as you have processes in place to maintain your implementation :)

Important things to know

Ok, so here are a few very important things to know.

You can use all three methods for creating groups within the same content grouping.

The grouping logic is applied to your data sequentially. That means that Google Analytics first applies the tracking code method first. Then it applies the extraction method. And finally it applies the rules method. You can use all three methods for your implementation.

When a page or screen matches a rule it is added to that group.

A page or screen can only be in ONE content group at a time! That means that an page or screen can only belong to one group at a time.

And finally, content groups are NOT applied to historical data. They are only applied from the moment you configure the feature.

A Best Practice

Because Google Analytics applies all grouping methods to your data, it is possible to use a combination of grouping methods.

But, because they they are applied SEQUENTIALLY, it’s a good idea to put your very specific grouping rules first, followed by your general rules. This way the later, general rules will catch anything that slips through the early, specific rules.

All three content grouping methods are applied to each piece of content. They are applied sequentially.

It’s really, really important to try and get your groups right the first time. While you can edit your groups, there is no way to change the data that has already been processed.

Make sure you test your groups first before announcing them to your entire team.

It’s also a good idea to add an annotation to Google Analytics so everyone knows when the data was added.

Ok, I think that’s it for how to implement this feature.

Don’t worry – I’ll explain how to use content groups in a couple of days.

There are lots of different ways to put data in Google Analytics. You can collect data from a website with JavaScript. You can collect data from an app using an SDK (Android or iOS). Or you can collect data from any network connected device using the measurement protocol. But there’s another way to add data […]

There are lots of different ways to put data in Google Analytics. You can collect data from a website with JavaScript. You can collect data from an app using an SDK (Android or iOS). Or you can collect data from any network connected device using the measurement protocol.

But there’s another way to add data to Google Analytics – you can import data using a feature called Dimension Widening.

You can add data to Google Analytics a number of ways – including Dimension Widening.

With Dimension widening you can import additional dimensions and metrics directly into Google Analytics via a CSV upload or programmatically import data via an API.

Let’s take a look at how you might use Dimension Widening to augment the data in your account, and ultimately do better analysis.

Why Add More Data?

Analytics is more valuable when you can align the tool more closely with your business strategies and tactics. Adding additional data, like customer history, content publishing information, advertising cost data, etc. can help provide context to your data, thus making it easier to gauge performance and identify opportunities for improvements.

Adding additional data can also streamline your reporting (yes, basic reporting still happens) by consolidating all of your data in a single system that everyone has access to.

That’s where Dimension Widening comes in.

It is a mechanism to move data into Google Analytics.

How Dimension Widening works

You can upload two types of data to Google Analytics: Dimensions and Metrics.

A dimension is an attribute of a user or the sessions she creates.

A metric counts something – like time, money, clicks, etc.

When you use Dimension Widening you are uploading values for one or more dimensions or metrics.

You can upload values for existing dimensions/metrics or you can upload values for new dimensions/metrics that do not exist in Google Analytics.

When Google Analytics process the data it will join your custom data to the the existing data using something called a key.

The key binds your data, the data uploaded in a CSV file or sent programatically, to the Google Analytics data. When Google processes the custom data it will look at the value for the key, and then try to find the same value in the Google Analytics data.

If Google Analytics finds a matching keys then it will take the data in that row of the custom data and pull it into Google Analytics.

The key links your custom data to the data in Google Analytics.

There are four basic steps to configuring Dimensioning Widening.

1. Identifying the data you want to import.

Step one is really simple, identify the data that you want to add to Google Analytics.

Remember, you can import a value for any dimension or metric that currently exists in Google Analytics. OR you can import values for custom dimensions and custom metrics that are not normally found in GA – more on this below.

When choosing the data you want to import ask yourself this – what data to I need to understand the behavior of my users? How can I make my analytics life easier by consolidating data in Google Analytics?

You also need to define your key. This is obviously critical. If you can’t define a key then you can’t import data.

2. Create the schema in Google Analytics.

Once you define your key and the dimensions/metrics you want to import it’s time to add the schema to Google Analytics. Think of this step as telling Google Analytics how to interpret the CSV file (or data feed) that you will import.

Choose a property in the admin section, then choose Data import and Dimension Widening.

The Dimension Widening settings are in the Data Import section of a property.

To begin you need to name the data set you will import. You can actually upload multiple data sets (more on this later), so make sure you name it something very descriptive, like “Campaign Data” or “Content Information”.

Then choose the view where you would like the data applied.

Every data set must have a name, and you must specify which views to apply the data to.

TIP: Dimension widening will permanently change the data in a reporting view! It’s a good idea to test your dimension widening on a TEST view before applying it to your main reporting view.

Now add the schema. First, add the key that you’ve defined for your data.

Next, specify the dimensions and metrics that you want to add.

You must enter a schema into Google Analytics. Add the key along with the dimensions you would like to widen.

Here’s something cool – as you choose your key and dimensions Google Analytics will automatically show you the column headings that you will need to add to your CSV file.

As you add your schema Google Analytics will provide the column headers for your CSV file.

Notice that they’re not the names that appear in the drop down boxes. They’re the dimension/metric names that are used in the API. Fear not – you don’t need to understand what they mean.

3. Build your CSV file.

Once you finish defining your schema choose save.

You’ll be presented with two options: get more details of your CSV file OR get an API key to upload your data programatically. Let’s focus on the Get Schema option.

Once you define your dimension widening schema you can download a CSV template or get an API key.

Click the Get Schema button.

This window contains some really useful information. First, a list of the column headers that you need to add to your CSV file. This includes your key and all the other dimensions that you are adding to Google Analytics.

There’s also a way to download a CSV template for your specific data. The template is just an Excel file with the headers added to the first row.

Google Analytics will provide the column headers for your CSV and provide a CSV template that you can fill with your data.

4. Upload your CSV file or Send Data via API

Remember, there are two ways to add your data – via an API or manually via a file upload process. Let’s focus on the later – the file upload.

This isn’t too complicated, just click upload :) Once the file is uploaded Google Analytics will widen your data as it is processed.

You can check on the processing of your data using the Refresh button.

NOTE: when you use Dimension Widening the data you import is NOT applied to historical data. Your data is only applied going forward.

I find that GA can process the file very fast (minutes). You may want to refresh your list often to determine if the new data has been added.

That’s it! That’s the basic process.

But you probably want to use Dimension Widening to import custom data, not data that’s already in Google Analytics. Let’s take a look at how to do that.

How to add Custom Data

You can also add custom dimensions and custom metrics to Google Analytics via dimension widening. The process is almost exactly the same. The only difference is that you must first define your custom dimensions or metrics in the Google Analytics admin section.

To upload a dimension or metric that does not exist in Google Analytics you must first define those custom dimensions or metrics.

There’s not a lot of configuration here. Just give your dimension a name and choose a scope.

NOTE: You can only widen between dimensions and metrics of same scope. For example, you can’t widen from user scope Key to Hit scope dimensions. Check out this (somewhat old) article on Custom Variables to learn more about scope.

That’s it. Now you can choose these custom dimensions (or metrics) when you add your schema for Dimension Widening.

Once you define a custom piece of data it will be available in the Custom Data schema interface.

Then create your CSV file with the correct headers and upload your data.

An Example: Uploading simple publisher data

Let’s say I’m a publisher. I want to add the publication year, author for each article. My key to join my data with GA data is the URL of each page. I already defined two custom dimensions, one for page publication year and one for page author.

I’m going to define my data schema in Google Analytics.

Defining a custom data in your dimensions widening schema.

Now I build my CSV file using the correct headers for my key and dimensions that I would like to widen.

A sample CSV file with custom dimensions.

Next I upload my file…

And finally, I have data in my custom dimensions. Here I can see the data in a Custom Report.

Custom Dimensions can be used in a Custom Report, Unified segment or other customization features.

Best Practices for Managing CSV files

You might want to widen your data based on multiple keys. For example, you might want to widen your product data (using the product ID as a key) and your campaign data (using campaign name as a key).

In this case you’ll need to define two different schemas and upload two different CSV files. Make sure you name them something logical!

Another thing to consider is when to update your CSV files.

For example, let’s say that you’re a publisher, and you’re uploading new data about your content. But you’re publishing new content every day. And probably multiple times a day. You would need to upload a new CSV file every time you publish content. This is too manual. In case you probably want to consider a programmatic solution.

Use the CSV file for things that do not change often. Use the API for things that change a lot!

What about JavaScript and real-time collection?

Given my previous example, you may be asking yourself, “can’t I just collect custom data in real-time using JavaScript?”

Absolutely!

You could do something fancy, like add the data to a data layer, then pull it into some custom dimensions. No problem!

The point is that you don’t always have the time or the IT resource to implement the data collection. Even if you use a cool technology like tag management, it may be that the data you want to add comes from an isolated system. And that it would take too much effort to transport the data from it’s home all the way to the web server.

Dimension widening can be seen as a somewhat faster, less IT intensive way of joining your data together.

Things to be aware of…

Ok, a few things that you need to be aware of when using Dimension widening.

1. Your data is NOT applied to historical data. Your data is only applied going forward.

2. You can NOT widen on ALL dimensions. You can NOT widen on the following dimensions:

custom variables

product dimensions and metrics

campaign dimensions

time-based dimensions (hour, minute, etc)

geo-dimensions (country, city, etc)

3. If you would like to expand your dimensions and populate Custom Dimensions you MUST use Universal Analytics. The reason is that Custom Dimensions only exist in Universal Analytics. They do not exist in the previous version of Google Analytics.

4. You can not change a schema once it has been entered into Google Analytics. You must delete the schema and then define your new schema.

I know some of these caveats may seem limiting, but remember, this is just the initial version. I know the team is working hard to expand the functionality.

Do you think you will use Dimension widening? If so how? Feel free to share your examples below!