PII Viewer for Google Analytics

PII Viewer for Google Analytics is a Google Chrome extension which allows you to map the user ID stored in Google Analytics to locally stored personally identifiable information (PII) such as name and email address.

Mailchimp in GA - with PII

How it works

Sending personally identifiable information (PII) to Google Analytics is strictly prohibited, but sending a unique user ID is in a custom dimension is permitted. This extension allows you to map the user ID stored in Google Analytics to locally stored PII such as name and email address.

Rather than building your own custom integration to map this data together, you can simply reference a locally stored CSV file (or use the in-built Mailchimp integration) and let this Chrome extension do the hard work. This means that you full comply with the Google Analytics privacy policy, but get to understand your visitor data.

PII Viewer for Google Analytics now supports identifying users in Behaviour Flow and Mailchimp integration.



Compliance with Google Analytics Terms of Service

This extension uses PII which is locally stored only, therefore this extension is fully compliant with the Google Analytics Terms of Service.

Contacts at Google have confirmed that the extension is compliant with the terms of service.

If you found this Chrome extension useful, why not say thanks by buying me a pot of tea to contribute to its maintenance. I don’t do coffee.

  • Pingback: Digital Analytics Week In Review - 25 April 2014 - Data Runs Deep()

  • http://philamery.com Phil Amery

    David, this is a very useful tool (extension) you built
    I’m more than confident that many of us in digital marketing will take advantage of all the benefits this tool can offer, a cheaper alternative compared to more robust but paid softwares/applications
    PS: I’ll mention your extension in a study I’m currently working on, will let you know when published/available

    • http://davidsimpson.me/ David Simpson

      Thanks Phil. It’s great to hear that this is being made use of by others too. I’ve tried to make this as simple to understand and use as possible. Feedback of any kind is always most welcome.

  • Chandra Bhatt

    This is very useful write up. We recently started using GA and I was just searching for what all benefits user id feature can provide us and hit your website. Really great piece of Chrome extension to match pseudo user-id to user id and related data. Just wanted to say thanks to you!

  • Dan Gang

    Thanks David it seems you develop very useful tool.
    I have a question to you. I am interested in tracking my Facebook custom audience users. Specifically, we need to associate to each of our users their clicks on ads during various campaigns – assuming clicking on ads lead to our web pages from Facebook site. Can we use your tool to get the information and store per each user what ads s/he clicked?

    Thanks in advance – Dan

    • http://davidsimpson.me/ David Simpson

      Provided the click from each ad has a unique ID that can be attributed to a particular user, and you can get the unique ID out of the advertising platform, then yes it’s possible.

      As an example, you should take a look at the new Mailchimp integration for PII Viewer. I’ve written a tutorial on how to do something very similar on this post – Displaying Mailchimp subscribers in Google Analytics

  • Pingback: Displaying Mailchimp subscribers in Google Analytics()

  • http://www.afponline.org Galina Kozachenko

    does this extension work with Unviersal Analytics. I am reading that Google does not allow the extraction of UserID via the Universal Analytics API. Am I wrong? How do you get around this, if at all?

  • Joe Dube

    Thank you developing this plugin, and for the tutorial on how to get it working with analytic! I will hopefully being using this extensively.

    Everything is working great for me with smaller lists, as soon as I try to import a big list (70,000 users) it doesn’t work. It looks like the mailchimp API times out. When I try using a csv it crashes the browser.

    Any tips on how to get a bigger list working?

    • http://davidsimpson.me/ David Simpson

      Hmm. Big lists are likely quite a problem for this. For big lists to work, the plugin would likely need recoding to use SQLite rather than chrome.storage. Alternatively, I could try changing the extension to have unlimitedStorage permission. I’m not sure how well this would behave in your case though.

  • Joe Dube

    Thank you for the quick reply.
    If you update the extension to have unlimitedStorage, I will happily be the guinea pig who tests performance.
    Maybe an option to import a SQL database can be included in future integrations?

    • http://davidsimpson.me/ David Simpson

      Damn, unlimitedStorage isn’t possible with the current setup as it doesn’t work with wildcard subdomains like I’m using for the Mailchimp integration.

      • Scott Morrison

        Has a solution been found for this? I also have a rather large list that keeps crashing with the Mailchimp API. Any suggestions? Thanks!

  • Purushoth

    Hi David,
    Thanks for the awesome chrome plugin its helping a lot. I am facing some issues with tool tips that is shown while hovering “custom user id”. The tool tip got stuck in the screen and its never disappearing. Please look into these issue.

    • cube

      Yes, nice plugin, but I see this as well. The tooltip endures even after it loses focus. Any idea when this will be fixed?

      • http://davidsimpson.me/ David Simpson

        I’ve got this fixed in the next release. See the issue.

  • Purushoth

    Hi David,
    Thanks for this useful chrome add-on, it’s really handy. But one quirky issue i am facing while hovering on custom user id column the tool tip which is showing user information not getting disappear and getting stacked up in the screen. Please fix this issue.

  • http://www.2mlab.com Alessandro

    Hello, this is great!
    What’s the reason for using a custom dimension rather than the User ID feature?

    • http://davidsimpson.me/ David Simpson

      User ID is not exposed in the Google Analytics interface (or anywhere). Rather it is used for consolidating cross device usage. A custom dimension is an easy workaround to this problem.

  • http://none-helpingafriend Jen

    Do you know if PII is permitted if someone sets their public facing profile to use a username like lisa_smith (obviously is PII) and the only way it makes it into GA Is if someone views that url /profiles/123-lisa_smith? Is having /profiles/123-lisa_smith appear in the Behavior section in GA permitted or no?


    • http://davidsimpson.me/ David Simpson

      If that URL is available for all users rather than just the logged in user, then it’s likely fine.

      If I browse to /profiles/123-lisa_smith and see here profile, I cannot be identified by a 3rd party as the user browsing the site. If however, the URL is only available to that person, then you are sending their PII to Google Analytics, so would need to prevent that URL from being sent to Google Analytics.

  • Jen

    Thanks David. That makes sense.

  • Justin Atkinson

    Hey David,

    Just wanted to say thanks for this great tool.

    I was able to leverage the information you provided and the newest version of Google Tag Manager to get this to work for tracking HubSpot users.

    Really appreciate the guidance.



    • http://davidsimpson.me/ David Simpson

      Justin, that’s great. I need to get up to speed on GTM as you’re not the first to ask me about it.

      I’m in the middle of a new update for PII Viewer that will allow 10,000s of users to be imported. Up until now, I’ve used chrome storage, but that has it’s limits. “Soon”, I’ll have swapped that out for IndexedDB, which will be a big improvement for “power users”.

      • Justin Atkinson

        Hey David,
        That sounds great! I will definitely take advantage of the larger import numbers.
        Also, let me know if at some point you want to learn more about the HubSpot integration. I’d be happy to share/walk you through what was done via GTM.

        Thanks again,

  • danhdung

    Thanks you, you make my job easier now.

  • Avron

    David, looks like a great tool.

    However, I’m not seeing the PII Viewer for Google Analytics in my chrome browser (extension is installed, and no errors showing in console). Tried Incognito as well in case anything was blocking it, but no luck.

    Any thoughts?

    • http://davidsimpson.me/ David Simpson

      Are you using Google Analytics at http://www.google.com/analytics or analytics.google.com/analytics ? If its the former, you’re good. For the latter, I need to update the extension for the updated domain name.

      • Avron

        Thanks David, that did it.

  • Eric

    Hi David,

    Do you have an email address where I can contact you?

  • Luke

    Hello David,
    Did you ever get around to updating the GA domain. Seems analytics.google.com is the only domain now and the plugin isn’t injecting the username.

    • http://davidsimpson.me/ David Simpson

      Hmm. Which version are you using? v0.0.11 should work ok.

  • Luke

    My mistake :( Data Mapping ID column setting was not defined. Must have been rest when I imported new data.
    Thanks for the quick reply and the great plugin!

  • Dmytro

    Hello, looks very interesting.

    Why extension asks for permission to access “google.com” ?

    • http://davidsimpson.me/ David Simpson

      This is because it’s adding information onto the Google Analytics user interface, which is located on the google.com domain.

  • http://quintly.com Pritam

    Hi David, I don’t get the toolbar that you have at the end of the Page

  • Melissa

    Hi there – great plug in!

    Is there a file size limit for the import? My csv is 6.5MB large and wont show after it says its been successfully imported on the bottom (the green prompt). So I cant map my data.

    Thank you!

    • http://davidsimpson.me/ David Simpson

      Right now, there probably is. 6.5MB is probably too big.

      I have a story to update the extension to use IndexedDB instead which will solve the problem. I can’t give aan ETA I’m afraid though as paid work is getting in the way of this development.