Track User Adoption: Salesforce Classic vs. Lightning

 • 
This post originally appeared on The Accidental Admins. It is being republished with permission from the author, Tom, who is a Salesforce Consultant at Spark.Orange.

As more orgs rollout lightning to their users, admins have been looking for a method to track adoption. Up until now, the best way to track this information is using a package from Salesforce Labs: https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EFmsRUAT

It provides only a few metrics (as seen below) that center on who is using Lightning, but it’s based on a preferred UI metric vs. the actual work being done each interface.

While answering a question in the Answer Community over the weekend, I found a more detailed way to track Lightning usage using the $User.ThemeUI global constant. This process takes a little bit of setup, but it’s quick and will allow admins to track all targeted edits in their org to see who is using Classic or Lightning the most.

Step 1: Create Tracking Object

Create an object. I called mine Change Log.  Text name, allow reporting.

Add the following fields:

User(Lookup)

Object (text)

User Interface (text)

Classic (formula – checkbox) = IF(User_Interface__c=’Theme3′, True, False)

Lightning (Formula – checkbox) = IF(User_Interface__c=’Theme4d‘, True, False)

 

Step 2: Create Process Builders

Create a Process Builder for each object you want to track.  I would suggest picking 4 or 5 for the key objects that your Lightning users should be interacting with. Also, note that you will want to deactivate these processes when doing mass data uploads, using a tool like the Org Switch would be easiest: https://sfswitch.herokuapp.com/

For your Process Builders, select the object you want to track, set to evaluate when created or edited, and no criteria needed, just fire the Process Builder.

Set your create record like below – define your record name as Record.ID &’ – ‘&Text(Now()) or some other format you prefer. Define the object, set the user to LastModifiedBy ID, and define the User Interface using the $User.UITheme global variable.

*You may want to include criteria like ‘User.Profile not equal to System Administrator’ so only non-admin users are tracked.

Whenever a change is made on that object, a change log will be created, capturing the targeted information.

You can now track the % of usage by object or user.