How to track the usage of Tableau Dashboards via URL Actions

Today a colleague of mine (who I kindly call my Tableau apprentice) asked me the following question:

“do you know if it’s possible to analyze clicks in a Tableau Dashboard?”

My immediate inner thought was… What?!? So I responded:

“I don’t think so :(“

But then a neuro synapse was made in my brain (meaning, I connected the dots) and I replied seconds after…


And then I shared with her my very dumb #TableauTriviaToday viz on Tableau Public. Why? Because that viz allows collecting data in a Google Form/Sheet after an action is executed in a Tableau Dashboard… so it was pretty close to what she was asking. You can find how I built the app here, here and here.

The missing part on the requirement was to identify who is clicking in the dashboard. For that we can use the USERNAME() function in Tableau. Once the viz is published to our org Tableau Server, the USERNAME() function will get the user ID of the user that is acting on the dashboard. With that in mind we build a quick proof of concept:

1 | Creating a very simple worksheet and add User ID field on Detail

2 | Create a very simple Dashboard and place this sheet on it

3 | Follow the instructions of I shared on the post building a data collection app in Tableau to define the Google Form/Sheet structure to receive the data.

4 | Float a Web Object in your dashboard. Then set it to be placed out of the Dashboard canvas.

5 | Define the URL Action in the Dashboard. In this case I will be passing the Sub-Category name and the User ID. This means, every time a user clicks on this worksheet I will receive that transaction in the Google Sheet. Here is how the URL field will be filled:<Sub-Category>&entry.1125763212=<User ID>

Here is the URL Action screen. Note that I am making it a SELECT action that will open the link in the Web Object I placed in the Dashboard:

And that’s it. Now, every time any user clicks in a Sub-Category, I will be getting the datetime of the transaction, the Sub-Category label and the User ID that initiated the request. All that will be happening in the “background” as the Web Object sits outside the Dashboard canvas. Therefore it won’t disrupt the user navigation in the dashboard.

This is pretty much similar to what is possible to do with Google Analytics events. Of course GA will give you much more details about the user (for example, location, brower, OS, etc) but for these were not necessary in this use case. All information we need about the User ID is already in Active Directory so we can blend the Google Sheets data with the user info in AD to add more value to the collected data.

I hope this pretty simple procedure can help dashboard designers to know more how their dashboards are being used, what are the areas that are more clicked, which are your power users, etc.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s