New SEO reports for Google Analytics

In this article I’ll use the SEO filter, made by Andé Scholten, to make some new interesting SEO reports in Google Analytics. I realized that the data, provided by the filter, had given me some new opportunities. It wasn’t possible in Google Analytics to get good SEO related reports. The reports I did get were these:

  • An overview of keywords during a specific period and (after clicking) the landings page on which visitors landed after clicking on the Google result.
  • An overview of the ‘Entrance Keywords’ of a specific page.

I wanted more and figured the SEO filter from André would give me the information I needed. The filter linked webpages to the Google result page (where 0 is the first page, 10 the second page, etc). A very nice filer, but I wanted more!

The reports I have made will give you the following information:

  • An overview of all the keywords and the Google rank over a certain period.
  • An overview of a given specific keyword and the page Google rank during a certain period.
  • An overview of the pages, found by Google, for a specific keyword and the Google rank during a certain period.


seo-keyword_-kinderboek-google-analytics seo-keyword_-kinderboek-pages-google-analytics
Click on the images for a better view.

The screenshots in this article are taken from the Google Analytics account of Top Kinderboek, a Dutch e-commerce bookstore with books for children.

Now how did I get all these beautiful reports?
Follow these steps and you’ll get them! But be prepared: start by making a new profile.

Step 1: Make a new profile

Step 2: Make a filter that only includes organic traffic in the profile
Step 3: Make a filter that only includes Google traffic in the profile
Step 4: Make a filter that gives every Referrer a ‘start’ value (parameter)
The ‘start’ value tells us on which page in Google the link to your website was clicked by the person who searched. The first result page in Google doesn’t contain a ‘start’ value. So I use a filter to connect a ‘start’ value to each Referer. This way each Referer contains a ‘start’ value and some Referers contain several start values. For those Referers Google will grab the first start value in the next filter (see Step 5).

Step 5: Add Andre’s custom made SEO filter to your profile
Step 6: Wait for data…

Congratulations! You have now set up your profile. This profile contains only organic traffic from Google and fills the ‘User Defined’ value with the ‘start’ value.

Your profile is ready to go; time for segmentation!

One of the beautiful things about Google Analytics is the possibility to make segments. You can compare different segments over a specified time period. Unfortunately it’s only possible to compare a maximum of three segments at the same time and Analytics adds the ‘all visits’ segment to your report when you want to compare two or three segments. It is however possible to make some nice reports. Using the User Defined value (see Step 5) I made two segments:

Segment 1: The search result is on the first result page in Google
Segment 2: The search result is on the second page or further in Google

This is how I made those segments
Click on ‘Advanced Segments’ in ‘Settings’ and click on ‘+ create new custom segment’. Here you can make your own segments. In the following images you can see how you set up these two segments.
serp-1-advanced-segment-google-analyticsSegment 1: The search result is on the first result page in Google

serp-2-advanced-segment-google-analyticsSegment 2: The search result is on the second page or further in Google

Congratulations! You now have two segments. Now you can make a segment for each Google result page. This gives you more detailed information about the position of your keywords in Google.

See your segments in the Google Analytics reports
You now have the perfect profile with two segments. It’s time to make the segments visible in the reports. Click on ‘Advanced Segments’ as shown in the following image.

When you add the segments to the standard reports then you’ll get a good overview of the SEO performance of your site during a specific period. I’ve show some examples of these reports at the beginning of this article but there are far more to explore!

Using these segments will give you a better insight into the value of SEO for your website. For Zoek Kinderboek the link on the first result page in Google is far more valuable than all other result pages. The difference between the amount of traffic from page one (and the difference in bounce rate and time on site) compared to all the other result pages is enormous. These reports can have additional value when combined with the regular SEO reports that rank keywords. These new reports give a good overview of your presence in Google´s results, how much traffic (and sales) this presence generates and what the behavior is of the people who searches.

Good luck with making these segments and I´d be happy to hear about your experience and to receive your feedback.

Update 9 February 2009
In my reports the User Defined Value is often ‘(not set)’. The second segment will include this traffic. I don’t know why the User Defined Value can be ‘(not set)’. Does anyone know? Google refers to ‘anonymous users segment results’ (in the User Guide). But, for the time being, I’ll change the second segment, so the User Defined Value (not set), will not be a part of the second segment. But… how? The segmentation filter does not return any values:

Tags: runs on the Genesis Framework

Genesis theme frameworkThe Genesis Framework empowers you to quickly and easily build incredible websites with WordPress. Whether you're a novice or advanced developer, Genesis provides you with the secure and search-engine-optimized foundation that takes WordPress to places you never thought it could go.

Read our Genesis review or get Genesis now!

53 Responses

  1. Terry RichardsBy Terry Richards on 5 February, 2009

    Whoa I just set these filters up I can’t wait for the data.

  2. Jean-Paul HornBy Jean-Paul Horn on 5 February, 2009

    WOW! Really extensive article. Thanks for the write up. Will definitely set this up tonight!

  3. D&GBy D&G on 6 February, 2009

    Thanks for the write up Joost, I just set one site up for this, and can’t wait for traffic to generate some data!

    • Joost de ValkBy Joost de Valk on 6 February, 2009

      It’s actually Reinout who wrote this, but very glad you like it!

  4. Tony StoccoBy Tony Stocco on 6 February, 2009

    Fantastic. I’ll be setting this up as well. Thank you, thank you!

  5. GeorgeBy George on 6 February, 2009

    You have done it once again Joost, you never seem to disappoint!

    • Joost de ValkBy Joost de Valk on 6 February, 2009

      This time the credits are actually for Reinout, but it is great content, I agree :)

  6. just GuidoBy just Guido on 6 February, 2009

    Should André’s and Reinout’s filters be used ‘simultaneously’, or will Reinout’s do what André’s does and more, i.e. can Reinout’s replace Andre’s version completely?

    • Reinout WolfertBy Reinout Wolfert on 6 February, 2009

      Both filters uses the ‘User Defined’ field, so that will be a problem. The filter I made fills this field only with the ‘start’ value and André’s filters fills this field with the keyword and the ‘start value’. So, the segments I made will not work with the output of André’s filter. André’s filter gives directly an overview of the pages and their position. The filter I made gives only the positions, so you are able to combine this information (make correlations) with all the other data in Google Analytics.

  7. Bjorn van der NeutBy Bjorn van der Neut on 6 February, 2009

    Little extra information on the part of “It’s time to make the segments visible in the reports. ”
    First go to “Visitors” -> “User Defined” and on that page click on “All Visits”. There you can check both the checkboxes and give it a name.

  8. Chung Bey LuenBy Chung Bey Luen on 6 February, 2009

    Wow, very imporessed. I’m going to give it a try!

  9. WilkenBy Wilken on 7 February, 2009

    Until now, i’m still confuse to use google analitycs, i’m just use standar report, but thanks for this articles, next time i will try it

  10. Wil ReynoldsBy Wil Reynolds on 7 February, 2009

    You did it again! man! Thank you so much for all you share bro, I mean this is just GREAT stuff.

  11. Jeff DiLavoreBy Jeff DiLavore on 7 February, 2009

    What a wonderful piece of detailed manual. Google has lots of hidden gems, and surely unearthed one few of the most important ones.
    I hope you keep doing the same on your other posts Joost.

  12. Amílcar TavaresBy Amílcar Tavares on 7 February, 2009

    Thank you for this great tutorial!

    I’d already implemented it and I’m waiting for data. My question is: How to do an SEO reports for Google Analytics related to the RSS? Did already wrote an tutorial about that? I’d searched your blog but there is too many results.

    Once more: thanks!

  13. Jeroen de MirandaBy Jeroen de Miranda on 8 February, 2009

    Thanks for the post; I can’t wait to see the results!

  14. Jon PayneBy Jon Payne on 8 February, 2009

    Many thanks! I set it up and am just awaiting data as everyone else. Good stuff here.

  15. Mike BelascoBy Mike Belasco on 9 February, 2009

    How will this work if a user clicks on a local 10 pack listing instead of a true organic result? What happens?


    • Reinout WolfertBy Reinout Wolfert on 9 February, 2009

      It will (mostly) work the same way.

      But: There is a difference between Google (English) and Google (Dutch – the one I use). The fact is that all the URL’s in Google (English) uses ’302 Found’ redirects to link from the result page (organic as local 10) to the web page:

      Google (Dutch) uses direct URL’s (no redirect) for the organic results and for the local 10 pack Google links to Google Maps:

      So there’s also a difference by measuring the traffic.

      At the moment I’m doing a research at all the different ways of redirecting and linking. I’ll keep you posted at :)

  16. NeilBy Neil on 9 February, 2009

    This will help me see how my SEO campaign is progressing. This is great

  17. PradipBy Pradip on 12 February, 2009

    Thanks, thats a fantastic analytics tip. Going to try it out now!

  18. pietroBy pietro on 13 February, 2009

    Dang, great article Reinout.

    I had a little trouble setting up the segments and was wondering if you had any thoughts. I received this message when doing it:

    Missing expression for comparison.

    Thanks again for the awesome stuff… I’ll be spreading the word.

  19. Bryan OwensBy Bryan Owens on 14 February, 2009


    Regarding the “not set” value, I don’t have an answer for why the rank/position isn’t recorded, but I have a hypothesis about why your “(not set)” segmentation filter returns zero visits…

    If the rank/position is not recorded, the underlying data field remains NULL, and what we see as (not set) is only how the user interface renders a NULL value. For the filter to work it would need the ability to search for records where the value IS NULL.

    This theory is supported by related weirdness I’ve seen from Andre’s original setup (the one that returns keyword + rank/position in the user defined value).

    1) Show Traffic Sources >> Keyword report
    2) Refine by some keyword that appears in the list (meaning it’s definitely recorded in the normal keyword field)
    3) Switch to User Defined Value dimension. Instead of user defined value showing keyword and rank/position, it’s “not set”.

    In cases where keyword *is* defined and rank/position *is not* defined, the user defined value returns “not set” rather than “keyword + (not set)” because in SQL an operation involving a NULL field will generally produce a NULL result.

    My guess is a bug or inherent limitation in Google’s system prevents the rank/position from being passed in some cases. Maybe this has something to do with SearchWiki / personalized search results?

    • Bryan OwensBy Bryan Owens on 14 February, 2009


      It appears my theory about NULL fields was correct. You can isolate the NULL rank/position values using regex “^.” (without quotes)

      Example, on the SERP p2+ advanced segment, in addition to the User Defined Value greater than or equal to 10 statement, add an AND statement where UDV matches regex “^.” In effect this is “UDV >=10 AND UDV IS NOT NULL.” Apparently without the second statement the NULLs are included by default when using greater than / less than.

      As far as *why* the rank/position values are missing, I now suspect it’s related to return visits vs. new visits, but need more data to confirm.

      • Reinout WolfertBy Reinout Wolfert on 15 February, 2009

        Hi Bryan,

        Thanx for all the information. I’ve tested it, and my outcomes are not completely correct.

        I added the AND statement (UDV does not match reg exp ^.).
        I made a segment with only the NULL data (UDV does not match reg exp ^.).
        I use the segment in the reports (report: Visitors – UDV).
        There the amount of visits of (not set) must be equal to the segment UDV (not set) – (does not match reg exp ^.)
        But they aren’t eqaul…

        As shown in this image:
        The difference is, in my profile, only for the positions 0, 10, 20 and (not set)

        I think you’re close to the solution of the ‘problem’, but there must be more! :D

        Kind regards and thanks for your help!

      • Bryan OwensBy Bryan Owens on 16 February, 2009

        Some initial thoughts on what could cause the disparity…

        I’ve seen a few cases where the referral data contains “(page: 0)” rather than “(page: )”, “(page: 10)”, etc. Maybe this is affecting your custom filter outputs? Any idea what “(page: 0)” means? I assume it’s SERP p1, but haven’t tried to confirm. There are only a handful of them.

        Also, if you have any pages that use the _setVar function (such as to exclude internal traffic), it assigns a value to the UDV field. See

        You should also know we’re sort of comparing apples to oranges. I did create your setup a couple of days ago, but don’t have enough traffic to get much data quickly.

        I also took your advanced segment idea and applied it to an existing profile that used Andre’s original setup, but using regex to create the advanced segments. You could try the same thing, and it would allow you to retain more of the source data in the UDV field, and maybe get a better idea of what’s causing the issues.

        My advanced segments:

        SERP p1
        UDV matches regex \(page: 0?\)
        Again, this assumes that “(page: 0)” = “(page: )”, but I could be wrong.

        SERP p2+
        UDV matches regex \(page: (..|…)\)
        UDV matches regex ^.

      • Bryan OwensBy Bryan Owens on 16 February, 2009

        Oops, with this particular arrangement the final “UDV matches regex ^.” shouldn’t be required.

        It’s a holdover from the >=10 segment we already discussed.

  20. Reviewme.UsBy Reviewme.Us on 15 February, 2009

    nice article, thanks

  21. MarkusBy Markus on 15 February, 2009

    Wondering how this might work if I’m in N. America but monitoring UK stats…

  22. MBy M on 15 February, 2009

    Is there a way to make a filter that does second page poaching ?

    • Reinout WolfertBy Reinout Wolfert on 18 February, 2009


      The reports can definitely be used to get ‘second page poaching’ insights. You can connect the search term, the Google SE Result Page (Google SERP) to the landingpage and see how much traffic (and sales) this combination makes.

      When a search term rises from page 2 to page 1, you’ll see the effect in your Google Analytics reports. Based on this results you can ‘predict’ the outcomes of other rising (from page 2 to 1) search terms. So you can make (business) cases for your SEO optimization work. It’s worth it!

      The only thing you can’t see are the real rankings (the real positions as 11 or 12). This information can be provided by tools as Advanced Web Ranking.

  23. Bjorn van der NeutBy Bjorn van der Neut on 19 February, 2009

    The link to Advanced Web Ranking does not work.

    • Reinout WolfertBy Reinout Wolfert on 19 February, 2009

      It’s working again. Thanks for your reaction!: Advanced Web Ranking

      And the tip of the day (if you’re working on a mac): download the free trial, never shut your mac down, and you can use it forever!

  24. jameBy jame on 9 March, 2009

    I like it this is a nice article.I am new visitor,I think it provide us a lot of information.

  25. MussieShoreBy MussieShore on 12 March, 2009

    Great writeup! It is in depth and amazingly effective to see these segments.

  26. KristiBy Kristi on 31 March, 2009

    I have had these set up for 2 weeks now, but all my user values are coming in (not set). I see you made an update on your post about this being a problem. Have you managed to workk out why this is happening?

  27. Nikki RaeBy Nikki Rae on 2 April, 2009


    I’ve just been shown this on an account. Well done! I am very impressed and will use it for definite.

    Nikki Rae

  28. DragosBy Dragos on 14 April, 2009

    Great post, i had just implemented this on a new profile for my website…waiting for results now. I wonder…is it possible to set this for a specific language, to filter the results given by (as an example) as a referrer?

  29. amanBy aman on 17 April, 2009

    Thanks many many thanks I will try this in my site

  30. TrondBy Trond on 19 April, 2009

    Hi there! I’ve been working in the SEO industry since 1999 and I’m always looking for good sources for SEO reporting. It would be very nice to follow you and your website in the future. You have been bookmarked :-)

    Best Regards,
    Trond v/

  31. SEO Basic GuideBy SEO Basic Guide on 24 May, 2009

    Thanks a lot for the info. That’s really, really nice I did not know that before and it would be nice if there are more similar posts about using google analytics


  32. OnlyLux.netBy on 10 August, 2009


  33. African SunBy African Sun on 2 November, 2009

    Thanks for the advice to set up a filter! However I too get the “Not Set” value all the time, especially when trying to view the top entrance keywords for the month. Still not sure what it could mean!


  1. New SEO reports for Google Analytics…

    In this article I’ll use the SEO filter, made by Andé Scholten, to make some new interesting SEO reports in Google Analytics. I realized that the data, provided by the filter, had given me some new opportunities. It wasn’t possible in Google Analy…