Skip to main content
Gainsight Inc.

Product Mapper FAQs

This article addresses some of the frequently asked questions in Product Mapper.

How to ensure element selectors configured in Gainsight are resilient against UI changes?

An example use case for the question: 

  • Main menu - the tool identifies selector as nth-child(2) = this will cause the tracking to fail if we add another menu before this
  • Safer would be using a combination of element name/id attributes. Any option to configure the tool to prefer a selector or have to provide it manually?

Answer:

Our product prefers a unique selector on the page being used in the following order of preference:

  • Element ID
  • Class
  • Element tag name
  • Href for an element from type a
  • Nth-child
  • A selector with id if it is available. 
  • Unique elements of attributes that can be added to the SDK settings (Administration > SDK Settings > DOM Elements) so that the selector detector uses the elements.
Pages with unique URLs to a test? Can I use a * in the middle of a URL and at the end?

Yes, it works.

Is a search box trackable?

Yes, using Custom Events. You need a developer to help you with this, it is the third option of tracking mentioned in the following:

  1. Tag UI element: clicks, buttons, etc
  2. URL: Link clicks, page views, etc
  3. Custom Events for tracking specific flows: For more information, refer to the Custom Event API article from the Additional Resources section.\\
Are radio buttons trackable?

Yes, radio buttons are trackable using Tag UI Elements.

How do you tag/track a model?

You need to have a CSS Selector inside a Model. Selector becomes more robust with the help of class.

If I don’t name the modules/features with a more robust naming convention, will the customer success team see how they are nested in Gainsight CS? I do anticipate the CS team looking at an individual level.

CS has a productized connector that they are using to pull PX Usage data and currently it is available at a Feature level. If they want it at a Module Level, they can aggregate it within CS using a couple of rules.

Gainsight PX recommends the following options:

  • In PX, build your Product Tree and Hierarchy as needed [some work needed by the engineering team to send the modules and features]
  • In CS, use filters to get at the data you need.
Can we get historical matches if a feature is created after a few months?

Yes, using the backfill feature. This feature helps you fill in all usage data from the date of the PX tag installation in your product.

If I add a new rule or delete a rule within a mapped feature, will that delete historical data for that feature?

If you add a new rule or delete a rule within a mapped feature, it will not delete historical feature usage data. Any changes made to the feature rules will be used in the future, and are also available for backfill.

Note: Features Mapped using UI Text Element are not eligible for Backfill.

Is there a way to find out how many modules and features of my Product are mapped with the Product Mapper?

Yes, navigate to Dashboards.  The Total Activated widget displays the number of modules and features of your product mapped with the Product Mapper since PX was installed in your application. 

Dashboards.png

What if I have multiple links or buttons to the same feature?

Under a single feature you can associate different rules which will work with  the OR condition to match against the feature.

How do I track or trigger based on event properties and number of times  the event was used. If someone uploaded a file with 100 records and I want to track how many times they have done that?
  1. Use custom event to track the upload and pass the name and record number as event property.
  2. Map the custom event into a feature. For instance, you can map all imports into a feature named import. You can also map based on the properties for example creating two feature names: large import, small import and map it to the import custom event and adding a property rule of bigger than/smaller then the record size. 
aptrinsic('track', 'Import', {"name":"my import file", "records":100 ,"Category":"Admin"});
  • Was this article helpful?