Track Rankings for all major search engines in Analytics – Guide for Dummies
- Bing / Yahoo
Get live results of your rankings by tracking them through Google analytics.
Before we start I must say that only Google gives you the full data (when Google provides it). All other search engines only supply the page number :(, but this still can be very useful information. I will start with Google then Search powered by Google at the end all other search engines.
We will start with Google, who give the most accurate data but sometimes only half of it (taking into account “not provided”).
Because we don’t want to touch the main profile we will create a new profile for tracking rankings.
- Go in to the “Admin” area
- Click on “New Profile”
- Give the new profile a name like Google Rankings, click on “Create Profile”. This should take you back to the main admin page.
- Click on “Filters” and on “+ New Filter”
- Now create a filter that only lets the organic traffic in to the New Profile.
- Now create a filter that only lets organic traffic from Google in to the New Profile. You can call it Only Google. Choose Include from the radio buttons, then from Filter Field Campaign Source, for Filter Pattern enter google and for Case Sensitive choose No.
- After we filtered out all traffic that is not organic and that is not Google we can get to capturing the ranking of each phrase. This means another filter, but this one is a little more complicated. We need to use more advanced settings and some regex (regular expressions) to capture the ranking of the phrase.We will call this filter “Capture Rankings”, for this filter we need to actively choose “Custom filter” and the “Advanced” option (the “Advanced” option will only appear after choosing “Custom filter”)Fill in the fields as fallowing:
- Field A -> Extract A: choose “Campaign Term”. Enter in the next box: (.*)
- Field B -> Extract B: choose Referral. Enter in the next box: (\?|&)cd=\d
- Output To -> Constructor choose “User Defined” (last one in the list). Enter in the next box: $A1 – ranks: $B2
Explanation: what did we do in this filter? (You do not need to read this; it will work also if you don’t understand how we did it, but I recommend you do try to understand the process)
- Field A -> Extract (.*)
- Field B -> Extract B (\?|&)cd=(\d*)
- Output To -> Constructor $A1 – ranks: $B2
In row #1 we are capturing the search term the user searched. This does not need anything fancy because analytics always extracts this data.
In row #2 we are extracting the position of the result clicked on. The url we get when clicking on a Google result looks like http://www.google.com/url?sa=t&rct=j&q=lucky%20boost&source=web&cd=2&ved=0CFAQFjAB&url=http%3A%2F%2Fluckyboost.com%2Flong-tail-link-building%2F&ei=Bpq6T7ebKYWa8QO6xLzNCg&usg=AFQjCNGTz74gbpwJjqj09kPc7mKhg4RFPA
The search term lucky boost the position of the result I clicked on #2
Explanation of the regex:
(\?|&) – look for a “?” or “&”
cd= – that is followed by the letters “cd=”
(\d*) \d means must be a number, capture only 1 digit, so we add the * that tells it capture as long as there is a number
Row #3 tells Google Analytics to insert in to “User Defined Value” (more about this later) the search term – ranks: position number.
- Make sure the filters are in the proper orderIf your filters are not in this order click on Assign Filter Order and order them properly. If they won’t be in the proper order you will get many more values of “(not set)” in your data.
- The results we get look like this (you need to add a secondary dimension to the organic traffic report)
- Now we will create a custom report so we can have a report with keywords and rankings without any (not set) or (not provided) interfering.Remember the custom report is in the new profile we created, not in the main profile of your site.
- I called the report My Google Rankings and the tab Rankings you may call it as you please.
- You want to choose a flat table so you can see more information for each row.
- Dimensions – choose “User Defined Value” this is where the value you created in the advanced filter is saved.
- I recommend adding in to the metrics section: Visits, Pages/Visit, Avg. Visit Duration, % New Visits and Bounce Rate so it will look like a standard report in analytics but whatever you prefer will work.
- So you won’t get rows with useless data (in the ranking situation it is useless but there are other reports it can be helpful data) we will add a Filter. Choose Exclude then find the User Defined Value in the green box, next drop down pick Regex and then enter in to the last box (not set)|(not provided). Click on save and you are done.
You can also past this url in to your browser when your singed in to Google Analytics and it will import the report for you. Report URL – https://www.google.com/analytics/web/permalink?type=custom_report&uid=lbSMwwYhTR64_nD9S-pp7A
You must remember that sometimes there can be more than 10 results on the first page so even if you get an entry from your brand name (assuming you rank first place) it can be anywhere from 1-7 if you have site links. Same goes if there are local results above your ranking; your position can be above 10 but you are still on the first page!
Search powered by Google
Many companies create income by using search results powered by Google. Usually they will change your landing page or install a plugin that will send you to a Google search through with their ID. If the user will click on an ad then they get part of the revenue. You can see an example at http://isearch.avg.com/.
The big question is can we track rankings of searches done through a third party?
Just like all of these types of questions the answer is: it depends. It depends on whether or not these details are supplied by the third party. So some supply the information like Conduit (http://search.conduit.com) or Incredimail (http://mystart.incredimail.com/).
For Conduit you need to track the parameter “SearchSource=” and for Incredimail the parameter of the rankings is “cid=”.
Other services such as AVG or Babylon don’t supply the information.
So unless you get a lot of traffic from one of the third party companies that supply the rankings I would not spend time capturing the rankings with a separate report. You can add the parameters to the regex we entered in stage # 7 but then you won’t know if it is traffic from Google or from a third party using Google.
All other search engines
Just like we created a new profile for Google now we need to create a new profile for all other search engines.
I’m going to follow the same stage numbers.
Repeat stages 1-4 but in stage 3 give your profile a different name like “Other SE”. Stage 5 we already did so when we press on new filter choose Apply existing Filter to Profile and pick Only organic.
- Now create a filter that only lets organic traffic from yahoo, bing, ask, baidu and yandex in to the New Profile. You can call it Other SE.Just instead of google in Filter Pattern enter (yahoo|bing|ask|baidu|yandex). This is regex sayin: accept any one of the following: yahoo, bing, ask, baidu or yandex.
- Now all we have is organic traffic from the mentioned search engines in the filter, so we can go on to capturing the page number the user was on when they clicked on our result.We will call this filter “Capture SE Rankings”, choose “Custom filter” and the “Advanced” optionFill in the fields as fallowing:
- Field A -> Extract A: choose “Campaign Term” and (.*)
- Field B -> Extract B: choose Referral and (\?|&)(page|b|first|p|pn)=([\d]+)
- Output To -> Constructor choose “User Defined” and $A1 – paginate: $B3
Explanation: everything should be clear to you except Field B -> Extract B (if not you must have skipped the explanation before)
This row catches the page the result was on. Just like Google had a long and ugly url so too the other search engines provide something similar, so we need to adjust the filter to match the parameters that are provided now.
(\?|&) – look for a “?” or “&”
(page|b|first|pn|p)= – that is followed by “page” or “b” or “first” or “p” or “pn” and has an equal sign “=” after it.
(\d*) \d means must be a number, capture only 1 digit, so we add the * that tells it capture as long as there are numbers.
Why do we need so many different options? The answer is simple: each search engine passes the parameter in a different way.
- page – Ask
- b – Yahoo
- first – Bing
- pn – Baidu
- p – Yandex
Do not change the order – it can mess up your results!
- Make sure the filters are in the proper order
- The results we get look like this (you need to add a secondary dimension to the organic report with Primary Dimension: Source)
Report URL – https://www.google.com/analytics/web/permalink?type=custom_report&uid=UN2YGKiiT0ij6xC2LYoMZA
The results that don’t have a number mean that the result was on the first page. If you do find a number 1 it means that the user went to page 2 and then came back to the first search result page.
- Ask –1..2..3..
- Yahoo – 1…11…21…
- Bing – 1…11…21…
- Baidu – 0…10…20…
- Yandex – 1..2..3..
- Now we will create a custom report to provide the resultsFollow the instructions as for the Google custom report, just give the report a different name like Paginating of Searches and there is no need to filter out (not set)|(not provided).
For those of you who want to go fancy, you can create a custom report for each search engine, all you need to do is add filter that includes Source and matches a search engine’s name like Bing.
Enjoy tracking all this new information!
A big thank you to Mark Ginsberg of www.marksginsberg.com for editing the post.