How Gainsight uses Global Context

  • 7 March 2024
  • 3 replies

Userlevel 2
Badge +3

We report on our products too! As a SaaS company, it’s important for us to understand how users experience our software, both along business and product metrics. I’d say it’s pretty great luck that we have a product within that suite geared towards understanding… well… exactly that!

Like any other tech company, our reporting needs have changed over time. PX has a wonderful set of features that allow us to tackle a dynamic set of questions. Read on to see how we used one of those features - Global Context - to track the progress of a major company initiative. 


Background: Gainsight CS began as a program built on top of Salesforce; while great for a young tech company, this became very expensive as we grew, so we built a new standalone system called NXT. NXT has its own domain - "" - and is independent of Salesforce. For the last few years, we've been migrating legacy customers from the original Salesforce edition to the new NXT one via our Upgrades program. 

At one point there were three ways in which a customer might access Gainsight CS (depending on when they signed with us): Gainsight NXT via its "" domain, Gainsight NXT via an SFDC iframe (Salesforce edition), and the legacy Salesforce-hosted Gainsight CS. 


Goal: Use PX to understand how Gainsight usage is distributed across the three potential hosts, with the intent of monitoring progress on the Upgrades migration project. 


Approach: Set Global Context metadata on each page of Gainsight CS such that for every event (feature usage, session initialization, page view, Engagement view, custom event) we can identify the host on which the event was recorded. The features are the same across all three editions, but it's important for us to know if a feature was accessed via our NXT edition vs. the SFDC Legacy one. 


Result: In the screenshot below, you can see a Query Builder report of feature usage on the Scorecard admin page grouped by the Global Context attribute hostType. This tells me from which host our admins are configuring or updating their scorecards. The majority of usage comes from our NXT (gainsight) host, which is expected. Some usage comes from salesforce, which makes sense given that some users access Gainsight NXT via a tab in Salesforce. The important thing, however, is that the last scorecard usage event from our legacy system (sfdc_old) was recorded in mid January, which aligns with the completion of our last customer migration! 


Query Builder report of Scorecard usage by host

I can also use Global Context to filter my Query Builder report. For example, perhaps I'd want to understand what the most commonly used features are when NXT is accessed from its standalone system or via the Salesforce tab. My guess is that the top ten features would actually be different for each hostType, given that we likely have different personas (AMs and sales reps, for example) accessing NXT via Salesforce, vs. CSMs using the dedicated NXT domain. 


A Query that returns top feature usage in Gainsight NXT for our external customers

What does this mean for you? Let's say your customers can have multiple Production tenants of your product, and you have some questions about usage across those tenants. It doesn’t make sense to track each one as its own account because they all roll up to a single customer, so how do we differentiate between tenants? By using Global Context, of course!

By adding a Global Context attribute like tenantId to each page of your product, you open up a wealth of reporting options. Here are just a few: 

  1. Show me the top features used by a particular tenant (filter feature usage by tenant ID)
  2. Show me the most active tenants (sessions group by tenant ID)
  3. Show me which tenants are power users of a particular feature (feature usage grouped by tenant ID)
  4. Show me a list of all the tenant associated to a specific customer (filter by account id and group by tenant ID)
  5. Show me which of one customer's tenants are most or least active (filter by account id and group by tenant ID - same as above!)
  6. Send an Engagement to a specific set of tenants (Engagement segmented by tenant ID)

And there are many, many more. The world is really your oyster with a feature like Global Context. Go forth and experiment! Answer some business questions! Mine your product for insights, and have a great time doing it! 


You embracing the power of Global Context in PX


3 replies

Userlevel 5

@broghanzwack - That’s an interesting use for Global Context.  Besides metrics, do you also use Global Context in audience rules (for engagements or KC bots)?

Userlevel 6
Badge +2

Great post @broghanzwack!


@mmarques I do not think we do currently, but we surely could. It sounds like you may be doing some of that yourself, which is awesome!


Once it has been properly implemented in your application by your development team, PX Global Context can be extremely useful in PX Analytics filters (slice and dice), Engagement Audience Logic, Knowledge Center Bot (KC Bot) Audience Logic,  KC Bot Recommendations, and PX Segment (real-time) Audience Logic.  


As a little background ...

Once the PX Tag code is installed and a user has successfully been identified, PX will immediately start tracking many events…

  • Sessions/Visits
  • Page Views/Loads
  • Click/Tap Events
  • Feature Events
  • Engagements Events
  • KC Bot Events
  • Custom Events

Global Context allows the inclusion of additional metadata with all these tracked Events … it does not stand alone.  Global Context is most often used to track additional properties on these Events, outside of the current PX User/Account attributes, that can/will change for a user from day to day, week to week, month to month, and even during their currently tracked PX session.


Some examples of Global Context that we see our customers implement are below, but they really can be anything that your team needs to enhance/improve your Analytics, Engagements, and KC Bots use cases.

  • Application Version (e.g. major version, minor version)
  • License Id
  • Build # / Edition
  • Project Id / Type / Date
  • Associated Accounts / Users 
  • Page Content Summary (e.g. reports=6, widgets=12, custom=2)
  • Feature Flags (e.g. advancedFeatures = featureX)
  • Support Ticket #
  • Is user impersonation (e.g. true/false)
  • Application Mode (e.g. dark, light)


I hope this helps!


Happy PX-ing!!!

Userlevel 5

@link_black - We do.  Similar to other customers, we have global context for version #. This is great for making sure that the new release announcement gets triggered appropriately.