Connecting products and categories with Google Analytics MCF API Intro

 

How to track specific product purchased by name, id, category or similar and tie the sales to the MCF API data (Multi Channel Funnel)? – as an example:

  • Black T-shirt was bought with this purchase path Organic Search > Paid Search > Social Network inside 5 days with total conversion value of $5 (Like this will ever happen:))

Some additional insight may come up:

  • Track how much time, on average, is needed for a purchase of specific product or a group of products (currently limited to max default lookback window of 30 days – shame – feature request to Google – increase to 90 days or give the ability to set it manually for the MCF API – please).
  • Track if expensive products need a longer conversion path in terms of days and touch points.
  • Track channels which create awareness for a particular group of products and find ideas for scaling sales.

You will hopefully find some delicious insights while you explore this pretty useful connection between CORE and MCF API – just by browsing the dimensions and metrics available from the APIs you’ll pile up some exploration ideas:

  •  CORE API dimensions and metrics – https://developers.google.com/analytics/devguides/reporting/core/dimsmets – please note this page includes the Reporting API v4 dimensions and metrics as well
  • MCF API dimensions and metrics – https://developers.google.com/analytics/devguides/reporting/mcf/dimsmets/

Before getting into details we will be working with CORE API v3 as it is supported in Google Sheets Google Analytics add on. This is an intro article so the idea is to enable access to this data without unneeded tech hassle.

Prerequisites

  1. Working ecommerce implementation
  2. At least some historic data
  3. Access to Google Analytics account / property / view
  4. Some basic Excel / Google Sheets experience

Step 1 Google Sheets setup

Using Google Analytics add on for Google Sheets create the following 2 queries using this procedure …

After you open a new Google Sheets document and installed the GA add on create a new report:

1 create new report GA sheets

Fill in the details for the GA Account / Property / View access (remember use only views with ecommerce enabled (goals may work as well)):

2 define account property view for pulling data

Add the required metrics and dimensions and build the queris for mcf and core API:

3 mcf and core queries

1st query is a MCF API call which uses:
Metrics:

  • mcf:totalConversionValue

Dimensions:

  • mcf:transactionId
  • mcf:conversionDate
  • mcf:basicChannelGroupingPath
  • mcf:pathLengthInInteractionsHistogram
  • mcf:timeLagInDaysHistogram

2nd query is for CORE API (standard reports) where we pull product info:
Metrics:

  • ga:itemRevenue

Dimensions:

  • ga:transactionId
  • ga:productName

Both queries can of course be customised extensively based on the questions you are trying to find answers for.

Note that the max count of results returned from the API is 10 000 if you have more than that you will have to create additional queries yet you will use the Start Index filed in the query set to 10001 and so on – there are existing plugins such as Analytics Edge for Excel which can help with that.

If a transaction can contain multiple products the entire process is a bit different so your main metric becomes item revenue instead of total conversion value. You can in that case add an additional calculation where you would basically do item revenue / transaction revenue and the attribution would be used only if the result would be > 50%. 

Once all is set you can proceed with running the report:

4 run report

The result of running the reports will be two additional Sheets which hold the data for further tasks.

5 reports in sheets

2 Google Sheets String manipulation (adding fields for more granular analysis and pivot options)

Add a new empty sheet (one of the ways):

6 add new sheet

Copy data from MCF report (Dummy MCF sheet) to the empty sheet (the new sheet should be named Reporting) (If transactions contain multiple products you will have to revert the process in terms of first copying data from Dummy Standard):

7 referencing fields in Reporting sheet

You basically reference the cell from a different sheet so it will always refresh once you pull a different data set.

Next sub step is adding some more columns for pivoting purposes (just as ideas – you can always come up with your own columns).

The idea is to come up with the First channel responsible for the sale and then the Penultimate channel. You can also do last and what not yet penultimate is something we do not often analyse but can prove to be valuable (better say the channel before the decision itself).

Case:

  • Conversion path contains the following string …
  • Display > Direct > Paid Search > Organic Search
  • We want to extract Display (First channel) in one cell and Paid Search (Penultimate channel) in a different cell.

We need to create an extraction formula which will go through all the purchase paths (regardless which channels these contain and the number of touch points). Note that the formula will be different based on which dimensions you use (channels, vs adwords campaigns vs source / medium etc.). In your newly created Reporting sheet after you referenced the Dummy MCF sheet cells successfully click on the next empty cell and enter this formula:

8 extract string

The formula for First channel is:
=IFERROR(TRIM(REGEXEXTRACT(C2,”^[a-zA-Z()]+”)),”-“)

The formula for Penultimate channel is:
=IFERROR(TRIM(REGEXEXTRACT(TRIM(REGEXEXTRACT(C2,”[a-zA-Z() ]+ > [a-zA-Z() ]+$”)),”^[a-zA-Z() ]+”)),”-“)

Copy / paste the formulas throughout the rows (remember max rows is by default 10 000). These formulas will not work in Excel though.

3 Tie the Dummy Standard data with the new reporting tab based on transaction Id

In our Reporting tag where we did all our string manipulation we need to fill in on more column – product name in this case (it can be whatever you queried from CORE API – just remember you always need the transaction ID as it serves as a primary key).

Use the free column on the right and name it like Product Name and in the first data row enter the formula which will tie the product name based on transaction Id:

9 vlookup

Formula used to tie product to channel grouping:
=IFERROR(VLOOKUP(A2,’Dummy Standard’!$A$16:C$10015,2,FALSE),”No Product Info”)

The formula:

  • takes the value from the current sheet set in 1st column starting at A2 and
  • finds the same transaction Id value in Dummy Standard sheet
  • in the cell range from A16:C10015 and
  • returns value from the 2nd column from that sheet to our Reporting sheet.

And your data set is ready for pivoting (some reformatting may be required).

4 Pivoting

My advice, as Google Sheets pivoting is a bit limiting, is to export the Reporting sheet to CSV and import all to Excel (much easier to group and what not).

Screenshot_61

Select the data range > Create the pivot table and explore:

10 Pivot start

 

Brand Campaign as measure of Brand awareness

 

This is not another typical blog post about whether it is better or not to advertise for brand words. This post talks about the brand campaign that was used to track “level of brand awareness” for one of our clients. This campaigns was also used to monitor the behaviour & appearance of new competition.

If you want to immediately see results and conclusion of this article – you can skip all this here

When we started with this client it was immediately decided that “brand campaign” will not be taken in calculation of the cost-effectiveness of AdWords campaigns. Of course, brand campaigns have very small CPC, which is why the average monthly investment to cover all brand queries is less than 3% of the total budget. In addition, from time to time we see emergence of new competition which is advertising for client brand keywords.

Main problem of this client is a large number of competition thru AdWords advertising. Besides for his brand keywords, they are also showing their ads for same/similar products. We can say that potential customers are seeing a large number of ads for different brands (competition).

In addition to the fact that competition is quite large, it is also growing very rapidly. Thus, on an annual basis we see growth in the number of competitors from 250% to 300% (see picture below).

Competition grow

We must not forget that in analytics we can no longer see for which keywords users have come to our website (organic, not paid channel). There are certain capabilities via search console (formerly webmastertools) to see the inquiries but not for a very long period of time (also, we recommend to link together analytics and search console).

In short, the facts are:

  • Less than 3% of the total monthly budget is necessary for brand campaign
  • Competition is showing their ads for best products as well as for our brand
  • 200-300% annual growth in the number of competition
  • Insufficient data in Analytics

Because of all the above facts, it was decided that brand campaign will be an indicator of own “branding level”. The concept is quite simple – if there is a decrease in number of searches for brand queries then brand awareness decreases, if there is an increase in number of searches for brand queries then brand awareness is growing. This is rather simple way of “measuring” – but, due to its simplicity it is just perfect if you want to immediately see the results (of your marketing efforts).

Before we look at some of the results it is necessary to note that adwords brand campaign is not the only “source” on the basis of which we are deciding on the level of brand awareness. It was one of the indicators.

 

Results of Brand campaign

 

The picture below shows us the number of impressions during the last two years (for a brand campaign). We will use this chart to show you certain information about brand awareness and competition activity.

2 years Impressions

We shall look at impressions rather than clicks (although they are very closely related and have the same leaps and falls during observed months). It is very important that for a Brand campaign we have impression share as close to 100%. At the same time, we also do not have any lost impressions due to restricted budget or due to low ad positions.

Lost rank IS

In the upper chart we can see the first period of a few months where we had about 99.5% Impression Share but also at the same time we had lost IS due to rank (very small – about 0.5%). This is a sign that for our brand (keywords) there were competitor ads. After these few months (figure 1 in the picture) competition have calmed down.

Of course, we have quite raised our bids on our brand words, so it’s very likely that their CPC was quite big because of that. However, it is clear that they continued to advertise for our brand keywords (lost IS due to rank was never 0%).

Then came a sudden jump (number 2 in picture above) in lost IS due to rank. In that month we have seen the arrival of new competitors that have started to advertise for client brand.

Rise of CPC

For very short period of time we have seen an CPC increase of nearly 90% on our own ads/keywords because of these new competitors. After certain interventions in our campaign (raising the bids) their ads have dropped below first position.

Once again we see a big drop (of search impression share) at the end of the 3rd period. What we have noticed is that again there has been a large arrival of completely new competitors. These competitors have begun increasingly targeting our own brand keywords.

In this way, thru Brand campaign, we can very quickly and easily see when the competitors are advertising for our brand words, when new competitors emerge and so on.

Note: Our impression share for the whole period was over 99% and lost IS due rank was below 1%. From time to time we have still lowered our own bid (on our brand keywords) because we’ve seen that in return it reduces CPC while still keeping the first position of our ad. In addition, as shown in the image below,  we can see that the competition was advertising all of the time for our brand words.

Average position

Note: our bid to “our brand terms” was very high due to the situation in this segment (number of competitors). We were sometimes shocked to see how much money is competition willing to spend on clicks for someone else’s brand!

Automated rules

Tip: you can easily make automated rules to email you when your “brand terms” are not in first position – in that way you instantly see what your competition is doing 😉

 

Different types of campaigns and their reflection on number of impressions

 

Let’s go back to our impressions and what we can see when we had different types of campaigns (non-brand) active or paused.

First period of campaigns

During the first period (number 1), we had active display campaigns (besides web pages we had also specifically targeted Youtube placement) – we saw tremendous growth of impressions (for brand search terms). During the 2nd period we had active display campaigns BUT without targeting youtube placement. We see that there has been a slight decrease in number of impressions.

In 3rd period we once again had active youtube display campaigns. We immediately saw noticeable jump in the number of impressions.

Percentage of impressions

We can see that we had 20% less impressions during 2nd period. After activating youtube placements we had saw rise but it was still below 1st period levels (92%).

Note: Products sold by the customer are not seasonal – they are used throughout the whole year. Activation of specific types of campaign is clearly visible/related on the graph. If it came to seasonality then we would not see this kind of results (ups and downs) that correspond to the activation of specific types of campaigns.

Impressions second period

It is interesting that we have seen the greatest number of impressions when the client decided to advertise on TV (number 1). Also at that time we had active display and YouTube campaigns. During this period he had the most searches for brand queries in last 2 years.

But, it is also interesting to compare the 2nd period to 3rd period. The difference is that during the 2nd period we had active display campaigns, while during the 3rd period we had active only search campaigns. We can see a big drop of impressions during this 3rd period (in which we did not have an active display campaigns). After that period, we have again activated the display campaigns and although the improvement is obvious – it was not to the extent that was expected.

Note: we have warn the client of drop in number of impressions and that this is sign that his brand awareness is falling down. We have advised him to keep his display campaigns active all the time but he did not want to spend additional budget on it.

 

Brand campaign as measure of brand awareness – yes or no

 

Final results

Unfortunately, there is apparent decline in number of searches (impressios) for “brand” words when there are no active display campaigns. Here we can conclude that it is necessary to have a display (branding) campaign active all the time – because the competition is also constantly growing.

Therefore, it is necessary to constantly “keep” high level of brand awareness. It is necessary to keep high awareness levels of brand “existence” in potential buyers of your products/services.

We can see a lot based on the brand campaign. We can see how the different type of campaigns affected the brand awareness (number of impressions). In addition, we can see the behaviour of the competition (if competitors are advertising for your brand – you must have a brand campaign).

Obvious answer to question “can we use brand campaign as measure of brand awareness?” is – yes, we can.

But, we are not talking that brand campaign should always serve to measure “brand awareness”. We have some clients where such campaigns are not required (for branding purposes or for profit purposes) – it all depends from client to client.

We recommend testing the “brand” campaigns and measure results in order to make the right decision on the merits of “Brand” campaign.

Quick tips to evaluate AdWords based on Profit in Google Analytics

In this article I will try to explain 2 methods which allow a more ‘accurate’ base of evaluating AdWords efforts. Word of caution we are still in the last non direct model so once you do any of the 2 methods revert back to MCF reports in order to see the cross campaign AdWords influence.

Profit using Calculated metrics

In this case we will use the dreaded on average the client has a 10% margin and in addition the client pays a fee of 15% on top of Adwords spend. The end result is something in line with Net Profit = (Revenue * 0.1) – (AdWords spend * 1.15)  – note that this is by no means an accurate representation of your profits yet it is definitely a step closer than for instance basing all on ROAS (reasons why not ROAS are nicely described here  – http://online-behavior.com/analytics/campaign-profit-measurement).

Prerequisites:

  1. Ecommerce tracking
  2. AdWords and Analytics are connected
  3. Understand this is only applicable where your margin is evenly distributed through your entire assortment (no big outliers allowed:))

Step 1 

Go to view settings > Calculated metrics:Calculated metrics

Create a new metric using this formula (name it however you want but use Currency for formatting):

{{Product Revenue}} * 0.1 – {{Cost}} * 1.15

Where 0.1 is Gross Profit based on 10% margin and Cost is based on a 15% fee.

There is no step 2:) 

Well there actually is but it is just creating a Custom report where you use the newly created metric. If you like the idea of having these calculated metrics in your reports there are some others you can easily add:

  • Profit per transaction (Currency) – ( {{Product Revenue}} * 0.1 – {{Cost}} * 1.15 ) / {{Transactions}}
  • POAS (Percentage or Currency) – ( {{Product Revenue}} * 0.1 – {{Cost}} * 1.15 ) / {{Cost}} * 1.15

Important! – you need to decide if you are going to use Revenue or product revenue as the ingredients are different for almost each GA ecommerce implementation. Revenue may have shipping, taxes and similar inside yet product revenue may have only a fraction of it. 

The downside of using calculated metrics is # of Calculated metrics available (5 per view for standard) and these can only be used (currently) inside non standard reports.

The end result is usually a custom report:

Screen Shot 2016-02-22 at 23.08.02

You may notice a clear difference when looking at ROAS and a clear profit metric – much much easier to scan the report – IMHO.

Profit using data import

MAJOR UPDATE – thanks to Yehoshua Coren!

When using Enhanced ecommerce if you use data import and widen on product level you need to do some additional implementation steps in order to stop inflating the custom metric Value. By default this would happen:

Product Click Event > custom metric would be set to the value from the data import table
Product Add To cart > custom metric would be set to the value from the data import table
And so on – so each EE event passed to GA would increase the total product profit continuously (unfortunately this is how EE works).

So before you do any import your dataLayer pushes would need to contain the custom metric with the value of 0 – note the metric index number!:

'metric3': 0

For all non purchase event hits such as product impressions:

dataLayer.push({
'event': 'trackImpressions',
'ecommerce': {
'impressions': [
{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'list': 'Search Results',
'position': 1,
'metric3': 0
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'list': 'Search Results',
'position': 2,
'metric3': 0
}]
}
});

For the purchase event ‘metric3’: 0 should be deleted!

As vaguely mentioned in the first method – using data import can and should be used if there are high margin deviations inside your product inventory.  The basis for this method is product id / sku. Importing per product profits make this method much more reliable in terms of end result – the calculated metric Profit (custom metric) – AdWords spend (Cost). As an additional benefit the Cost is not only applied from AdWords but also from all Cost Data Import sources as well (Facebook, Yandex and similar).

In standard Analytics Profit import works for processing time data widening – in short when a transaction containing products gets recorded in GA and if the scheme for widening exists (data import) each hit gets widened with a Custom metric / dimension of your choice. In this case we are using Product Data Import type which uses product scoped dimensions and metrics – and we need to use Enhanced Ecommerce.

Step 1 – Custom metric

One of the differences between  Custom and Calculated metrics is that Calculated ones are defined on view level and Custom ones on property level.

Define the Gross profit Custom metric in the GA admin:

Custom metric product scope

Step 2 – Create the data import data set 

Just make sure you choose Product Data Import and use the following settings:

Product DataImport screen

We need to widen the product info with the Gross profit metric we will import using a .csv file and we are using product SKU as the primary key – SELECT NO FOR OVERWRITE HIT DATA:

Once you have this solved you need to get the data from your business system and export the data set in a csv file containing, in this case, only two columns of info:

csv data import

Upload the data either from the GA interface or using the API.

Screen Shot 2016-02-22 at 22.57.45Screen Shot 2016-02-22 at 22.58.00

Screen Shot 2016-02-22 at 22.58.17

Step 3 – create the calculated metric(s)

This procedure is the same as in the initial calculated metrics method only. Instead of Revenue / Product Revenue we will use the Gross profit Custom metric instead.

  • Net Profit (Currency) – {{Gross profit}} – {{Cost}} * 1.15
  • Profit per transaction (Currency) – ( {{Gross profit}} – {{Cost}} * 1.15 ) / {{Transactions}}
  • POAS (Percentage or Currency) – ( {{Gross profit}} – {{Cost}} * 1.15 ) / {{Cost}} * 1.15

The application of these metrics is completely the same as seen in the first method – create a custom reports or pull all data out and use some 3rd party tool to do additional analysis and visualizations.

Customer Match – target email users using Google AdWords

In this blog post, we will describe important tips related to the initial set up of email lists in AdWords remarketing. Also, we will show initial results of Customer Match campaign for one of our clients, and the opportunities provided by such targeting.

 

Customer Match allows you to use a list of email addresses in the remarketing list.

Examples of email addresses collecting:
• collected email addresses from a customer who purchased products from your website
• collected email addresses from a customer  who registered on the website, applications or newsletters
• collected email addresses from a customer  who registered for the loyalty program, on the website or in physical stores.

Tip: try differentiating the list in a similar way as a way in which you have collected email addresses (website, newsletters, applications, brick & mortar) – that is, if you have a sufficient number of individual emails in each list. In future, if needed, you can target them differently.

 

The procedure of setting up a customer email list are detailed described on Google Support, so, we will keep on real examples and important facts.

All email list should be stored in a CSV format. It is important to check all email addresses for empty space(s) before or after, uppercase, and such. Google recognizes the difference between uppercase/lowercase letters and empty space (such mistakes often happens when users are using mobile phones). After checking and fixing email addresses, you are increasing the possibility of accepted email addresses. Since we reviewed all of our email addresses (for empty spaces, case sensitive, and obvious mistakes in writing), as picture shows, the format of email addresses was accepted 100%.

After checking our email lists in CSV was accepted 100% format of emails

From this customer match (email) list, Google is using only emails of users who are also logged into the Google Account (with that same email). That does not mean that these emails are exclusive to Gmail domain. However, in our experience, about 90% of accepted emails in the list are Gmails.

 

In our example, we used about 24,000 emails, of which Google accepted (found matching) for nearly 16,000 emails. It is 66% of all available emails.

You need at least 1,000 approved emails in one list to create the campaign, but we recommend a list of at least 10,000 approved emails. Google can serve ads on Google Search, Gmail or Youtube, only to users who are logged in Google account. Otherwise, a campaign might generate a very small number of ad impressions and clicks.

Of course, do not forget to exclude customer lists in all regular campaigns that contain the same target (keywords, Gmail, Youtube) to prevent double targeting.

 

Results of the Customer Match campaigns

The results are related to the period of 8 days, with 20,300 approved emails. We created seven search campaigns and one GSP campaign. Campaigns are created with the same settings and targeting as well as “regular” campaign.

 

Results of the Results of Customer Match campaigns

 

Campaigns achieved 459 clicks with average CTR of 17.61%, which is 40.51% improvement in CTR compared to the regular campaigns.

It is also important to note that 50.88% impressions and 68.63% clicks are coming from mobile devices. In comparison with the regular campaign, a percentage of impressions on mobile devices is 36.67% and 46.33% clicks.

Since users generally stay logged in to their Google account on their mobile devices, these results are not surprising. Therefore, it is important to have a well-optimized mobile web page, and, of course, a sufficient number of accepted emails.

 

User behavior from Analytics account

 

According to the data about user behavior from Analytics account, it can be seen that the bounce rate of 28.91% is very low, with 8.10 average number of pages per session. Compared to the regular campaign, bounce rate decreased by 22.8%, while the average number of pages per session increased by 9.65%.

 

Customer Match campaigns in comparison to regular campaigns

 

In this period, Customer match campaigns generated an 117% higher ROAS (return on ad spend), although it achieved a significantly lower nominal number of transactions.

Through GSP campaign, you can reach a larger volume of impressions compared to the search campaigns. Considering that users need to log in to their Google account to see their Gmail account, GSP campaign is showing higher impressions of ads. Therefore, we recommend (in the case of a small number of collected email address) to first start with the GSP Customer match campaign.

In our testing, GSP campaigns achieved the best results in comparison to other Customer Match campaign (12.18% Gmail clicks to website CTR compared to 3.55%), however, do not forget that the GSP campaigns are type of display advertising.

 

In conclusion, although Customer match requires a very large email list, which generates a relatively small number of ads impressions,  it’s worth to advertise through remarketing campaigns with targeted customer email list.

It is also possible to test:
• advertising specific actions intended for customers in the loyalty program,
• sharing of specific action for offline stores,
• special offers of new products, lines, brands, etc.,
• the opening of new physical stores with geographic targeting

So, follow our blog and our social accounts, where we will publish new tests and new possibilities offered by Google AdWords.

Site Speed reports in Google Analytics

A small refresher course in how you deal with site speed reports and page timings in particular. As Google announced site speed to be one of the ranking factors the issue got more ‘real’ – a wast number of articles show the importance of site speed and its effect on the business outcome (a recent one by Stéphane Hamel shows some numbers – link) yet the most important thing is the end user which may or may not like slow loading pages.

This article will present 2 simple things:

  1. Technical manipulation of the site speed measurement
  2. Averages suck – drill down

How to set the site speed feature for Google Analytics (Page timings)

Some basic facts:

  1. Site speed info is sent without any additional GA code needed
  2. Site speed info is sent with pageview hits
  3. Site speed sample can be increased reduced with additional code
  4. Default site speed sample size is described here

The implementation part if you want to manipulate the sample size is quite easy as you only need to slightly adapt the basic GA tracking code (info on the siteSpeedSampleRate field):

ga('create', 'UA-XXXX-Y', 'auto', {'siteSpeedSampleRate': 50});

Note that the values expected are 0-100. The default value, without any code adaptation, is 1%.

With GTM it is even easier to do this. It also allows you to be flexible if you want to determine for which part(s) of the site you actually want to see a larger sample – more important parts of the site.

For instance if you by any chance use dynamic remarketing there already is a variable present which you can freely use such as ecomm_pagetype which provides info on the page type viewed (conversionintent, searchresults, category, product etc.).

A simple example of how to set siteSpeedSampleRate in GTM

This example is based on the assumption you already have dynamic remarketing variable present on the site (if not you can always create a customJS variable and set the siteSpeedSampleRate based on Page URL or similar).

Variable 1 – fetch the ecom_pagetype value (example based on dataLayer)

Screen Shot 2016-02-12 at 09.29.34

Variable 2 – set the siteSpeedSampleRate based on value from ecomm_pagetype variable

Screen Shot 2016-02-12 at 09.31.07

Just to explain a bit we set the input values as expected strings from the ecomm_pagetype variable and set the output as values used for the siteSpeedSampleRate field – a lookup table variable is used in this case. And one additional thing if the variable does match any of the explicitly defined strings we set the default value to 1 (you can freely change this to any number you prefer (0-100)). By doing this you effectively increase the chance the timing hit will indeed be sent.

The Google Analytics Pageview Tag – one and only in this case 

Screen Shot 2016-02-12 at 09.32.30

The only thing you need to set inside your main Pageview tag is the Fields to set part – Field Name: siteSpeedSampleRate and Value: {{util – siteSpeedSampleRate}} (or any other variable name you set). Publish.

The results

Nicely described here –  https://support.google.com/analytics/answer/2383341?hl=en&ref_topic=1282106.

The averages suck part

With page timings be very very careful when analysing data as for some pages the sample can be so small it can easily lead you to wrong conclusions.

A small example on data collected from this blog. When looking at Behavior > Site Speed > Page Timings report there will probably be pages which are above or below average for a metric such as avg. page load time.

Screen Shot 2016-02-12 at 09.49.28

Issue detected? Of course you would need to check if that page has an obvious reason as it can be resource heavy so try not to compare to average but with similar pages (page types – use Content Grouping!). A very simple approach to continue detecting the reason if nothing obvious is found – secondary dimension. Just click on the page in question inside the table report and add a secondary dimension which will reveal the context – as an initial idea try Country, Device Category, Browser or similar. For example:

Screen Shot 2016-02-12 at 10.00.03

Yes, our site on mobile sucks. But do not be hasty in making such decisions – always use an additional segmentation to prove this hypothesis. So lets see the issue with an another Secondary dimension:

Screen Shot 2016-02-12 at 10.05.49

Now you can definitely see  there are some outliers (in a sucky small sample of data) which affect the average heavily which can defeat any initial hypothesis we created.

Standard reports will only get you so far. For more in depth look at the issue create a Custom report which will allow for a more granular look at the data and some more metrics (more appropriate). Create something like this – custom report link where it is much easier to find the ‘real’ culprit and act on it.

 

 

 

How to set up Google Analytics and Google Tag Manager code in WordPress

WordPress is an open source content management system, it is easy to use and  there is a large selection of templates and plugins. WordPress is the most popular and most used CMS system. According to research, WordPress occupies almost 60% of the CMS market. In total of all web sites, WordPress is active on 25% of the market. On the other hand, it is important to have a Google Analytics implemented on your website because it is one of the basic tools to monitor user behavior and you can measure the success of your marketing activities on the Internet.

 

Since many websites use WordPress, this blog post will show you how to set up Google Analytics and Google Tag Manager codes on WordPress website.

First of all, you need to find and copy Analytics code. Log in into your Google Analytics account, click on the top of the bar on Admin. In the middle column (Property) click on Tracking Info and then on Tracking code. There you will find Analytics code that you need to copy on your website.

Google analytics code

There are many ways in which you can implement Google Analytics code in WordPress, but we will explain the two easiest and least painful ways, which allow the installation of code in the <head> tag, just as Google proposes:

1. Using a plugin – there is a lot of plugins that let you implement Analytics to WordPress site. But one of the easiest method is using the Insert Headers and Footers plugin.

For start, install and activate the plugin. Once you activate it, click on the left side on Settings and then on the Insert Headers and Footers. In the Scripts in Header field you need to paste Analytics code. After that, just click on blue button Save and you are done!

wordpress-plugin-insert-analytics-code

 

2. Directly in the code – WordPress contains Editor, which allows us to modify the code, which means we can actually implement Analytics code without using the plugin.

So, on the left side, click on Appearence and then on Editor. On the right hand of the Editor, find the file called Theme Header (header.php) and click on it. In the code find </head> tag, just paste Analytics code right before the closing </head> tag and click on blue button Update File.

analytics-code-insert-in-wordpress-header

These are two easiest ways to install Analytics code on your WordPress site.

Implementing Google Tag Manager code

Implementing Google Tag Manager code works in the same way as the installation of Analytics code in second step. Google recommends that the GTM code needs to be placed immediately after the opening <body> tag, so its better paste it directly into the code. So you need to go to Editor (Appearence->Editor), on the right side, find the file Theme Header (header.php) and click on it. In that file, find opening <body> tag and paste GTM code after it.

google-tag-manager-code-insert-in-wordpress

 

If you want, you can use plugin too. One of the best plugins is Duracell’s Tomi Google Tag Manager for WordPress. But be careful, some plugins implement GTM code in footer or header.

 

If the process isn’t entirely clear or you have difficulties with the implementation, we recommend to seek help from your developer.