How to Solve Facebook Link Clicks VS Google Analytics Sessions Discrepancy

If you've ever worked with a nobjective: Traffic campaigns in Facebook, then you must have noticed the wide discrepancy between Facebook Link Clicks and your sessions in Google Analytics. Here's the search result for this topic: https://www.google.ae/search?q=facebook+link+clicks+vs+google+analytics+sessions&dcr=0&source=lnms&sa=X&ved=0ahUKEwiO7b6X9_rWAhVIuBoKHS7XDs8Q_AUICSgA&biw=1517&bih=681&dpr=0.9

Clicks and sessions metrics are different in the sense that Facebook would count a link click when the link is clicked on while GA would count it as a session when the GA tag loads. Even after factoring the difference in definition, multiple clicks from one person, closing site before page loads or failure of JS load on the website , the difference was usually very high with clicks being 2-3X number of sessions.

There are two solutions to address this:

A. Run conversion based campaign where the conversion event is a PageView. This will optimize the ads for this PageView from Facebook pixel. This cool idea was detailed in a post [at least when I stumbled upon it] by Vernon Johnson on 3Q Digital's blog. I really liked this approach as it added a layer of accountability for the ad [show ad to users who are likely to view the page]. 

https://3qdigital.com/blog/never-run-facebook-traffic-campaign#.WdKf1n6FabY.twitter

B. Run objective: traffic campaigns and optimize ad sets for landing page views. This is a relatively new feature in Facebook ads. 

The default option is link clicks [we'll deliver your ads to the right people to help you get the most link clicks from your ad to a destination]. Right under it, we have landing page views [we'll deliver your ads to people who are more likely to click on your ad's link AND load the landing page]. The second part is crucial. click and load the page. I think Facebook brought this bidding option to help address Facebook link clicks vs (Google) Analytics discrepancy. I'm currently running a traffic based campaign with this setting and the variance between these two metrics is very narrow - at least from early results. 

If you haven't tested this feature yet, give it a try and then compare the data from both platforms. Hopefully, this will help in your campaigns as well. 

Do you think there's a better option to reduce this discrepancy? Let me know via comments. 

 

How to add UTM parameters via Google Tag Manager

This post is based on a recent "situation" I had where the utm values we attached to a referrer link were not getting passed when the site loaded.

Background: Site 1 has a referrer link to Site 2. The link to site 2 is an anchor tagged link [that should automatically scroll/anchor down to the section that we want to link to].

The original UTM tagged link was: www.site2.com/folder1/page1#anchortag?utm_source=site-1&utm_medium=referrer&utm_campaign=campaign-name

The UTM values from this link were not showing up in Google Analytics Real-Time. My first reaction was to remove the UTM and work with this limitation [at least while a solution is figured out]. Headed down to GTM forum, posted about it and sure enough, Simo Ahava helped [again] here. The correct syntax for the UTM should have the anchor tag after the UTMs. So: www.siteB.com/folder1/page1?utm_source=site-1&utm_medium=referrer&utm_campaign=campaign-name#anchortag

So, what if we didn't have access to Site1's HTML code but wanted to add UTM values via Google Tag Manager. 

Trigger: First, we need a trigger that listens for a referrer where it contains the link from Site 1. The Referrer variable does exactly that and here, we can have a referrer equals, a regex or one of the one ones. In this example [from my own blog], have used the referrer trigger where the referrer link was [http://analyticslog.com/blog/should-you-promote-a-facebook-video-post-for-views-or-engagement-cpv-vs-cpe-bidding]

GTM REferrer Variable.JPG

Tag: We have two options here as we can use the campaign fields OR use the location field.

Method#1 / Campaign field: In this method, we can create a GA settings variable with the fields, campaignName / campaignSource / campaignMedium fields being hard coded values for this example. 

GA pageview variable UTM value.JPG

Once the tag is created, it just needs to be associated with the trigger. Here's the traffic in GA Real-Time.

utm values.JPG

 

Method#2: Location field.

I had to ask Simo for more details on this one. The location field is the Page URL, we only add the UTM values to the Page URL value. This is how the GA variable looks. Location field is the UTM tagged link.

GA pageview variable UTM value Location Method.JPG

and here's the traffic in GA Real-Time with source 'test-location-field'

GA pageview variable UTM value Location Method.JPG

Both methods do the exact same task but method #1 [campaign fields] is easier to spot when going through Google Analytics variables in GTM.

 

Here's a link to the Google Tag Manager product forum thread for the same topic: https://productforums.google.com/forum/?utm_medium=email&utm_source=footer#!msg/tag-manager/v7U7L0MEqQ0/JcG6YEO9AAAJ

Happy tagging!

 

 

 

 

Should you promote a Facebook video post for views or engagement?

There's a pretty good chance that you landed on this blog post via search. I hope this post helps you think through your options.

Let's get down to business - you have a video post and are considering whether to promote it by bidding for Cost Per View [CPV] or Cost Per Engagement [CPE]? Which one would be more beneficial?

TL;DR - It's contextual and depends on what's the full picture.

Full answer - Read on.

Before we (...I) talk about these bidding models, let's quickly recap on what these bid types will do:

A CPV bidding will show your content to users who are more likely to watch the content. By watching the content, it means 3 second views [or higher]. The default bid is for 3 second views. This can be changed to 10 second views [likely to get higher video retention rate metrics]. 

A CPE bidding will show your content to users who are more likely to like, comment or share your content. 

Facebook engagement bidding.JPG

So far, so good. So, if you were to promote a video post for engagement, would the Cost Per Engagement data include likes, comments and shares only? Nope! It includes 3 second views. I've answered this in more detail in another blog post, titled difference in engagement rate between Facebook ads and Facebook Insights. In Facebook Ads, for a video post, the vast majority of engagements will be made up of 3 second views. 

Ok, now that we know what's the data behind the numbers, we'll also need to rethink of the objective behind the content? If the purpose is to drive engagement, then an engagement bidding is a better solution while a CPV bidding might be a better solution if the content doesn't share too much info for users to engage [e.g. teaser content].

The full value of content: Here's where you'll need to pull up your Ad Manager data , switch the columns to video engagement to see the quartile distribution of views, add columns [post engagements, objective] and download the data.

Facebook ads custom columns video engagement.JPG

Now all you need to do is load up a pivot the data in Excel, create calculated metrics for:

  • 25% retention rate [25% completed views / 3 sec views]
  • 50% retention rate [50% completed views / 3 sec views]
  • 75% retention rate [75% completed views / 3 sec views]
  • 100% retention rate [100% completed views / 3 sec views]
  • Cost Per 25% completed views
  • Cost per 50% completed views
  • Cost per 75% completed views
  • Cost per 100% completed views as columns
  • Cost Per Engagement 

with your objective [engagement vs views] in rows.

What you will you most probably find? 

Putting all the above calculated metrics as columns should show you a clearer picture on what's the full value of your promotion. You'll most definitely see lower CPV and CPEs for view based bidding [even CPEs as engagements includes 3 sec views]. The CPE method should bring up higher retention rates [across the 25%-100% quartiles] because with this bidding, it is being shown to users more likely to engage and by that definition, spend more time with the content.

So, if a video post promoted by engagement bidding has a:

  • 2X higher CPV [3 sec] compared to video posts promoted by CPV bidding
  • 3X higher 75% retention rate [and you'd want users to stay as long as possible]
  • And generating a sizable chunk of likes, comments and shares and the true Cost Per Like, Comment and Share [not CPE, which is inclusive of 3 sec views] comes to only 1.5X

You're getting better value out of the CPE bidding. In the end, it comes down to what you want to achieve. As long as you understand the data behind the high level numbers and what's driving it [CPV, CPE], you'll be in a better position to choose between these two bid types. 

Did you find this post helpful? Did you try this exercise on your ad manager data and found some interesting results? Please share via comments. 

P.S. You can apply the same method to Instagram as well. Just breakdown your data by platform and you now both, Facebook and Instagram data.

How To Generate Word Cloud From Search Terms Report In Power BI

There's lots of features being added in Power BI and custom visuals are one cool area to check. 

The data we're gonna use for Power BI is from Google Merchandise Store's Google Analytics>Behavior>Search terms report [Jan 01, 2017-Sep 19, 2017].

Download the Excel/CSV version and load the file in Power BI [or connect to GA API].

Once in, head to Visualizations > ... > Search from store > Type in 'word cloud'.

 

Load your Search term as the Category and Total Unique Searches under values.

You should now see the keyword cloud loaded with the size of the keyword representing the number of searches. Hover over any of the keyword to view the total unique searches as a data label.

 

How to find out if fans of a facebook page also like another page of the brand

Here's a situation that might happen to a bid brand where Facebook pages overlap and fans might join one or more pages, thinking that they're on the right page OR

They might be interested in two completely different product pages provided by the same brand.

Finding out audience insights about these pages can show details about either of these pages , but not together. Facebook Ad Manager allows one to check the overlap between two audiences. Knowing this can help you decide on ad set targeting, remarketing or exclusions. What you'll need for this:

1. Access to the pages you want to check. 

2. Access to a Facebook Ad Manager account that is connected to these pages [allowing you to create ads for these pages if you wanted to].

Sign in to Facebook Ad Manager and head to the 'Audiences' tab.

Go to create audience > Saved audience.

To create your audience, in terms of demographics, you need to enter at least one location. If you want to show overlap for all countries, just paste a list of all countries and Facebook will match the country names. You can then decide on the age/gender/language and interest targeting options to decide depending on your requirements. 

The last bit is about connections targeting. Scroll to the bottom and choose connections targeting> Fans of > Name of the page 1. Similarly, create the saved audience for other pages [you can choose up to 5 audiences to check on overlap].

Head back to the main Audiences tab and select the audiences you want to compare > Click Actions > Show audience overlap.

Once you select the pages, you can now see in the above screenshot that 4.5 K users [5% of page 1 fans] are also fans of page 2. 

Knowing the overlap can help multi-page brands in a few ways:

  • Understand if they want to move fans from one regional page to another.
  • Show specific content to users who might meet more specific requirements.
  • Help with co-branding campaigns.

That's it for this blog post. Till next time.

 

How To Fire DoubleClick Counter Tags For Multiple Countries/Languages More Efficiently In GTM

This post is a combination of my two threads opened on Google Tag Manager forum. Both were answered by Simo Ahava and explains how to do this [Always helpful!].

So we have a multi country/lang website that has DoubleClick counter tags on it [6 countries/up to 3 languages - EN/AR/FR]. With DoubleClick tags created specifically for each market/lang, creating individual triggers for each lang/market can make GTM triggers/tags section look messy. More importantly, if the 6 countries were now expanded to 10-20 countries, would you continue creating 1 trigger per DC tag? hmmm, nope!

Here's an example of the DC tags structure for just AE/EN site

 

The DoubleClick counter tags are setup to fire on brochure downloads. An example of a trigger would be:

if page path matches regex /ae/en/

         and click url matches regex /brochure.pdf

then fire DoubleClick tag corresponding to Brochure Download for this particular market + lang.

Here's how the DC tag would look like in GTM.

 

Step 1: Getting the country name and language of the page being accessed.

Here's my first thread on GTM forum asking about how to scoop the country name / lang from the page path and store it as a variable: https://productforums.google.com/forum/#!topic/tag-manager/nCgNpdRhaR4;context-place=topicsearchin/tag-manager/authorid$3AAPn2wQcoU-Azf0LsKlh6uHfYaSXH0hjoRDDwomZ0MCRNUL9Z7--q74gHU6hcPyRk3OS93PLJsUtZ%7Csort:date%7Cspell:false

Simo's respone to this was to create two JS variables:

JS variable to scoop country name:

function() {

  return document.location.pathname.split('/')[1];

}

JS Variable to scoop language:

function() {

  return document.location.pathname.split('/')[2];

}

Since the url taxonomy is www.site.com/countrycode/langcode/page.html  or www.site.com/ae/en/page.html, using document.location.pathname.split finds the first /and then saves the value (in this case, 'ae' as a string). The second JS variable finds the next '/' in the url and saves it as 'en' - again as a string.

 

So, having the country name and language currently being viewed as variable values takes care of the parameter - when to fire which tag.

Step2: Associating the right DoubleClick tag for each market/lang. 

Here's the second thread

https://productforums.google.com/forum/#!topic/tag-manager/DHlRuPMj_3s;context-place=topicsearchin/tag-manager/authorid$3AAPn2wQcoU-Azf0LsKlh6uHfYaSXH0hjoRDDwomZ0MCRNUL9Z7--q74gHU6hcPyRk3OS93PLJsUtZ%7Csort:date%7Cspell:false

In this particular DC tag example, the advertiser ID was common for all sites, only type= and cat= parameters changed between individual DC tags. Creating one JS variable for each dynamic value, we would have 6 JS variables,

  1. Brochure download type JS variable.
  2. Brochure download cat JS variable.
  3. Tel clicks type JS variable.
  4. Tel clicks cat JS variable.
  5. Emails sent type JS variable.
  6. Emails sent cat JS variable.

 

Example, brochure download type= JS variable.

function() {

  var country = {{country variable}};
  var language = {{language variable}};

  if (country === 'ae' && language === 'en') return 'type=string value for ae/en DC tag';

  if (country === 'ae' && language === 'ar') return ...;

  return undefined;

}

In the above JS variable, the var country and language were solved in the first part of the thread. That's why in this variable, we've used a dynamic value of {{country variable}}...in the following lines, the script then checks if the values pulled in country/language variables matches both conditions. IF yes, return a type= string value that's specific to the particular DC tag.

Once this is done, you can go to the Brochure Download DC tag in GTM and in the Group tag string (type=) parameter, enter the dynamic tag value {{Brochure download type value}}, same for Activity tag (cat=) parameter, {{Brochure download cat value}}.

Something like this:

 

Hope this post makes it easier for others. Big thanks to Simo for answering these questions on GTM forum.

 

 

Facebook Ads Is Now Flagging Videos That Contain Too Much Text

Back in April, WeRSM reported on Facbeook relaxing the 20% text in image rule to give more flexibility to designers. The new rule gave much needed freedom to creative folks by bucketing the image into either of these four categories:

  • Image text: OK: You ad's image contains little or no text. This is the preferred image style. 
  • Image text: Low: Your ad may reach fewer people because there's too much text.
  • Image text: Medium: You ad's reach may be much lower
  • Image text: High: Your ad may not run

https://www.facebook.com/business/help/980593475366490

Coming back to videos, I just noticed this notification for a video ad.

Clicking on 'Heavy Text in Image' opens up this notification with the guidance link taking users back to the Facebook help link posted in this article.

This is really important to advertisers for a couple of reasons:

  • 85% of Facebook video plays are on mute. Videos need to be created for the 'silent generation'. Content should be short, easy to consume and understandable even on mute. 
  • Knowing the above figure, this opens to a discussion around how much text/captioning should be included in the video to facilitate consumption of key message(s) while balancing Facebook's guidance around including text.

Have you noticed this notification for any of your videos? How has this impacted the Cost Per Objective for such ads compared to non-flagged ads?

-adil