Book errata – 3rd edition

A small number of typos have come to my attention with the 3rd edition of Advanced Web Metrics. These will be corrected in the next re-print (due end of May). However I wanted to list them here for people to be aware of. Please let me know (by adding a comment here) if you find others.

  • Ch 7, page 254 – Figure 7.15

Figure 7.15 illustrates a hostname differentiation filter. The “Field B” and “Output To” have no option selected, and only show a dash -. They should instead read “Request URI”. Replacement image shown below.

With thanks to Eric Erlebacher of for pointing this out.

Replacement Figure 7.15. Click for full size.

Click for full size


  • Ch 8, page 298 – Excluding labeled visitors

On page 298 I refer to the value (label) of “Dynamic IP”. But in Figure 8.15 I show the Filter Pattern as “dynamic” only. The filter pattern should be “Dynamic IP”. [ FYI – Using only dynamic will still work as the filters work by apply a regex match. ]

With thanks to Joe Seidler of for pointing this out.


  • Ch 8, page 309 – Segmenting Social Network Visits

On page 309 Figure 8.28 shows the Medium containing “social media”. But in the paragraph under the figure I state the medium is set to “social network”. These should of course match (you can chose any preferred text). For clarity, the text will be changed to “social media”.

Again thanks to Joe Seidler of for pointing this out.


  • Ch 9, page 341 – Differentiating PPC Network Partners

On page 341 for Differentiating PPC Network Partners, step 1 references “Custom Field 1”, but the image examples show “Custom Field 2” being used. In fact, the name of the custom field is not important – you just need to select one of them (two to choose from). That said, I want it to be as clear as possible in the book. I have therefore revised the images for Figure 9.20 below.

With thanks to Steve Grush of for pointing this out.

Replacement Figures 9.20a and b. Click for full size.

Replacement Figure 9.20a. Click for full size.  Replacement Figure 9.20b. Click for full size.


**Updated: 23-May-2012

  • Ch 6, page 176 – Back Up: Keeping a local copy of your data

In the GATC code of this page, an extra underscore character has crept in at the end of the second line. This should be removed. So the corrected line is:

var _gaq = _gaq || [];


With thanks to Cloga Chen (China) for pointing this out.


  • Ch 7, page 221 – What to do when a third-party does not allow tracking

In the Track the Purchaser’s Intent section, the onClick code is incorrect. The correct code is:

Continue to Purchase

With thanks to Cloga Chen (China) for pointing this out.


  • Ch 10, page 372/3 – Benchmark Considerations

At the bottom of the page I provide a variety of ways calculating e-commerce conversion rates:

The number of conversions × total number of visits to the website
The number of conversions × total number of visitors to the website
The number of conversions × total number of visits that add to cart
The number of conversions × total number of visitors who add to cart

These should use / (i.e. divided by) not × (multiplied by)…!

Again many thanks to Cloga Chen (China) for his eagle eyes spotting this.


  • Ch 9, page 336 – Tracking Error Pages and Broken Links

The code to track error pages via a virtual URL contains an extra unwanted single quote. Remove the last single quote. For example:

_gaq.push(['_trackPageview','/error 404/']);

Thanks to Bamon Bello (Thailand) for bringing this to my attention via the LinkedIn Group.

Looking for a keynote speaker, or wish to hire Brian…?

If you are an organisation wishing to hire me and my team, please view the Contact page. I am based in Sweden and advise organisations in Europe as well as North America.

You May Also Like…

Sayonara Universal Analytics

Sayonara Universal Analytics

My first Google Analytics data point was 15th May 2005 for UA-20024. If you are of a certain age, that may sound off...


  1. Jurgen D.

    Hi Brian,

    With regards to “Excluding Labeled Visitors” using Custom Variables.

    If the method you outlined in the book doesn’t work, could you direct me to a method which does work to exclude visitors on a per user basis? Do you have a link to an article?

    Thanks in advance.

    • Brian Clifton

      @Jurgen – using _setVar stil works but don’t use it if you already have scope=1 CVs.

      An alternative is to ensure all the visitors you wish to exclude visit a certain page during each of their visits. Then use an Advanced Segment to include or exclude these. The caveat is that *only* your specific visitor group views this page. That can work for example if all staff visitors from the local network are redirected to a fixed landing page that no outside visitor can access.


  2. Jeff Chan

    Hi Brian, Cha 7, Page 242, “Unique Events Are Incremented by Unique Actions. Any additional interaction with the same action name for that user’s visit will not contribute to the unique event calculation for that particular action.” I did a test and the result is not like what you said. It did contribute to the unique event calculation. Did GA change the calculation method for unique evnets.

    • Brian Clifton

      @Jeff – this still works as I describe in Ch7.

  3. Brian Clifton

    @Rob – You are correct in that the deprecated _setVar function is currently the *only* way to do this – as I describe in the 1st and 2nd editions. HOWEVER, using this with _setCustomVar has problems if you also have a defined custom variable with a visitor scope i.e. scope scope=1. The reason is that the cookie used to store these variables (__utmv) will be overwritten in the wrong format – hence why it is deprecated.

    If you are not using any other custom variables with scope = 1, then you should be ok, but to be honest I would avoid this method completely.

    Further explanation
    Page 298 was written in the anticipation of custom variables being able to be used as filter fields for profile filters. As you have noted, this did not come to fruition! That said, I do expect it to happen at some point…

  4. Jurgen D.

    I have the same problem as Rob, Brian.

    Could you clarify how to solve this?


  5. Rob H.

    Hi Brian,
    Regarding “Ch 8, page 298 – Excluding labeled visitors”, I believe the book states that one can filter visitors by labeling them with the _setCustomVar tag. However, I have had trouble implementing this technique and it appears most articles / blogs state that you have to use the deprecated _setVar tag for this type of filtering and that GA doesn’t yet allow filtering using _setCustomVar. Can you clarify? Thanks a lot.

  6. Jeff Chan

    Thanks for your explanation. I mean, in Page 548,\?(id|pid)=[^&]*, there is a negative class in this regex expression, so \?(id|pid)=[^&] will do the same job as \?(id|pid)=[^&]*. Using this example to illustrate the using rule of * is not that good. But if there is no nagative class, your example is OK.

  7. Jeff Chan

    Hi Brian, Appendix A Page 548,\?(id|pid)=[^&]*, the asterisk(*) doesn’t work like what you discribed in the book.I think you can remove it in the regex expression.
    In the book:Note the use of the negative class to stop the regex match.
    That is, this regex will match all characters after id= or pid= that do not contain &. An asterisk is used (*) to also match zero occurrences of & so that even if there is no second query parameter present, as per the
    first URI, the regex will still match.

    • Brian Clifton

      @Jeff – if you do not use the * then only the first character after the = sign will be matched e.g. for:


      without *, only pid=1 is matched. with * pid=123 is matched.

  8. Jeff Chan

    Hi Brian, Ch 4, Figure 4.1 says there are unlimited accounts for a Google Login, but in fact you can only add up to 25 accounts for a Google Login. Of course you can transfer the authority of more accounts to one Google Login, but you did not mention it in the figure.Is it a mistake?

    • Brian Clifton

      @Jeff – Your Google Account can have access to unlimited GA accounts. However you are correct in that within a single GA account you can create upto 25 new accounts. So the tip is, use another account to create your next 25 accounts and then ensure your original/main Google account is added as the admin. That way everything is managed by a single account.

      I must admit its a little confusing, but I hope that make sense.

  9. Jirka Wetter

    Well, it is sad. I can’t believe such basic feature is not available for e-books. So I will wait till May/June.

    Thank you for your reply.

  10. Brian Clifton

    Jirka: I had to ask the Wiley Production Manager, and here is what he had to say:

    When we update ebooks, there is no mechanism for notifying people who have purchased it. I don’t believe, either, there is a way to tell on the e-tailers’ sites that a book has been corrected at some point. So, I believe that if you bought it before it was corrected, you’re stuck with the version containing the errors. If you bought it after the corrections were made, you get the corrected version.

    Such is the state of publishing in the 21st century…!

  11. Jirka

    What is the situation about Kindle edition? Can I buy it now or it is better to wait till May? Or Kindle updates automaticaly the book which is already bought?


Submit a Comment

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share This