Track SEO Organic Rankings with Google Analytics

In April 2009, Google announced that they were making some changes to how the referral URL would look like on their search engines.

One of the key information that’s provided here is the listing’s organic ranking (cd parameter). This can be found in the referral URL property (or document.referrer when referring to the DOM).

It’s been more than 1.5 years since the announcement so I figured that the gradual roll out would be almost complete (I still see instances of the old referral URL being used though) so I decided to implement a filter for Google Analytics that will pull in the organic ranking data and show it in the keyword reports.

Before we get into it, there’s something important to know about the cd parameter. Traditionally in SEO, we’ve always known the SERPs to contain 10 organic listings (as shown below).

Google Tradional SERP

However, since the inception of universal search, Google has continuously added a myriad of listing types (in addition to the traditional ones) to the SERPs such as images, videos, news and places.

As a result, this has changed the way we look at organic rankings and this is how Google reports on organic rankings through the cd parameter. Below is an illustration of how the cd parameter reports the organic rankings on the SERPs.

Google SERP Universal

This means that getting an organic ranking of > 10 does not necessarily mean it is not on the first page so you should be aware of it.

Now, onto the Google Analytics filter to implement this.

Implementation of this feature requires 2 advanced filters that need to be in a specific order.

Filter 1: This filter will extract the ranking data from the cd parameter and store it temporarily into custom field 1.

GA Filter 1

Filter 2: This filter will then extract the data from custom field 1 and rewrite the campaign’s keyword filter field by appending the organic ranking data to the pre-existing campaign keyword data.

Note: This will overwrite your keyword filter field. If you wish to preserve the original format, I would then suggest you implement these filters in a new profile.

GA Filter 2

Filter 1 must be above filter 2 in the filter manager in order for this to work. Otherwise custom field 1 will have no data for filter 2 since it is only assigned a value from filter 1.

This is the result of how it looks like in your keyword reports. You can see that each organic keyword that drove traffic to your site now has organic ranking data next to it.

GA Keyword Report

It is important to understand that when you see an organic ranking > 10 in your keyword reports, it does not necessarily mean that it is not on the first page. The best way to check this is to do a manual search and see whether your listing is outside of the first page or is on the first page but with many other listing types.

Or you could look into a software solution to automate this.

How is this helpful?

With this data right at your fingertips, you can now:

  • Analyse the keywords drives conversions to your site and see how well they rank on the SERPs.
  • Analyse over time how different positions on the SERPs affect your traffic/conversions. It is pretty normal for organic rankings to fluctuate slightly.So assume that you’re normally #X for certain keywords, analyse how a drop or an increase in organic rankings affect your traffic/conversions.
  • Analyse over time your portfolio of keywords. How many keywords are on the first page? Your aim is to get your percentage of keywords on the first page as close to 100% as possible. Even better, number 1.

So go ahead and build a business case to focus and invest in those keywords by improving their organic rankings knowing that they bring in traffic and conversions.

Happy analysing :)

15 Comments on "Track SEO Organic Rankings with Google Analytics"

  1. Hi Danny, thank you for the post! As Joan above, when following this method, only about 1/2 of all they keyword data actually reports ranking. Any idea what to look for to get it 100% ?


  2. Thank you so much Danny for sharing this post. It is really opened up some possiblitlies not to mention not having to waste any money just to track SERP rackings.


  3. Good article. I implemented the filters but found some keywords coming from organic medium with no ranking/position next to the keywords. Can you please advise? Thanks!


  4. Hey – this is a great article. I can’t seem to find the filter option in Google Analytics though. Would you please explain where I can get to that screen?



  5. Danny-

    I’ve been using this in our GA for about a week or so. It works great…. when the cd= parameter exists! :(

    The problem is I’m seeing a TON of traffic coming through without the cd= that is NOT adwords traffic. (Adwords/SEM click traffic seems to always have the /aclk parameter and also lacks the cd parameter.)

    Example without the rank parameter:,DKUS:2006-41,DKUS:en&q=query%20here

    I’m seeing almost a 9:1 difference. In other words my SERP google analytics profile only accounts for about 1/9th of the actual organic (non-paid) traffic.

    I wonder why google isn’t including the “cd=” querystring all the time(?).

    Are you seeing this issue as well?



    1. Hi Starsky,

      I haven’t had the chance to look at my server logs yet to check the cd parameter but I’ve been informed by a twitter follower that he’s experiencing around 38% of Google traffic that has the cd parameter in it.

      Regarding Adwords traffic, I don’t think the cd parameter exists there – only for organic traffic. Yeah, I wonder why as well that Google doesn’t roll out the cd parameter completely.


      1. After I posted I did a bit more digging. I *think* it has something to do with the google ajax/instant search. I read somewhere that the cd param may only be available from that and not from other google search mediums.

        Regardless it’s nice to see how people are searching for to find you.

        I ended up setting up 3 extra profiles in Google Analytics:
        1. SERP (when cd Param is available)

        2. Organic (when I didn’t see the aclk in referrer – this includes searches from the above report as well)

        3. AdWords (when the aclk parameter IS present indicating a paid ad)

        It may not catch all search traffic but combined, it’s a nice set of reports.

        #3 report is nice because unlike GA’s default reports it allows you to see how people found you (the exact phrase) as opposed to the google adwords BROAD match phrase they charged you for. Hope that made sense..



        1. Hmm that’s bizarre. The cd parameter was implemented a long time before Google Instant came about.

          Yeah #3 report makes sense. In fact, I wrote a blog post about it some time ago – Basically it adds what people searched for in the keyword reports instead of your Adwords bid term.

          FYI – you can avoid using the aclk parameter filter by ensuring auto tagging is enabled in Adwords. This will append a gclid parameter to the destination URL of your ads and will integrate nicely with Google Analytics as it will recognise the traffic as google/cpc and also have campaign information with it.


  6. Thanks for the post Danny. I learned something here, but for all other keyword tracking, what software do you recommend? I use SEOMoz, and haven’t really tried any others.



  7. Wow Danny, you write some great stuff here! Thanks very much. I like this info about tracking SERP ranking in GA. Pretty incredible implementation.

    @TechGuyLikesZen (Joshua Guffey)


Leave a Reply

Your email address will not be published. Required fields are marked *