How can I track user adoption of my Workshop application?

I’m having a Workshop application I’m releasing to a set of end users.
I want to check if the app is actually used, to make sure the features I’m developing are actually relevant for the end users.

How can I know if my Workshop application is used a lot ? Can I track or get a sense of the metrics around the usage of my application ? Can I know if my application is used more ? Less ?

4 Likes

hi Vincent, exposing user adoption of a particular Workshop application is on our roadmap.

Right now the best option to understand the usage is to use the “Usage” reporting in Ontology Manager. If you navigate to an object type that’s specific to a particular dashboard in the Ontology Manager, in the Usage tab you will see:

  • number of unique users over time
  • number of reads
  • number of writes corresponding to how many edits were performed

If there is no object type that’s specific for a given Workshop application, we recommend creating an new Object Type that would act as a “tracking pixel” for a given dashboard, while we work on a first class solution for usage tracking for Workshop applications.

Is there anything at all you can share re: a timeline for this feature? Months, Quarters, Years?

Additionally, it is my understanding that the best current solution for tracking individual feature usage (e.g. interaction with a specific button or element in a Workshop application) is via logging and then export to a 3rd party SIEM or potentially building a report manually within Palantir. Is that accurate?

Yes, relying on Action Logs or creating custom objects that correspond to an action submission is the best way to track those.

Like you mentioned those logs/objects can be analyzed in Palantir or exported to an external system.

In terms of timelines, our road-map is to start working on the solution this quarter.

Is it possible to extract browser user agent, user location, etc. using currently currently available tooling?

I created Foundry Analytics Foundations to allow tracking user agent, geo-targeting, etc. Currently, I use Slate to do this. You can read about if you do a google search for “Foundry Analytics Foundations” (I can’t post links). I hope to publish this to the marketplace once DevOps is enabled in the developer stack. Ideally, the product team will deliver something like GA4 for Foundry. But for now, hopefully this approach can get you unstuck.

4 Likes

Following up on the different posts above, for instance, one can do:

  • Setup an Object to store information
  • Setup an Action to create an object instance (with timestamp + some information)
  • Create a slate app where the action form is prefilled and the Slate configured to trigger the action on load
  • Embed the Slate app like a “tracking pixel” as highlighted above.

In Slate, in order to configure this, you can create an Event like the below:


The Action form needs to be ready to submit, in order to be submitted, hence triggering only “when the form is ready” is better than when “slate is ready” (which might not mean the Action form is).

As an alternative:

console.log("Slate ready, will wait 5 seconds")
await new Promise(resolve => {
    setTimeout(() => {
      resolve('5 seconds have passed');
    }, 5000);
  });
console.log("waited 5 sec and submitted, triggering the action !")

The wait will be necessary as the Action form might validate some things (the user is authorized to submit the action, etc.) and is just an alternative way to make sure Slate doesn’t try to trigger the Action too early.

3 Likes

Hi. This is amazing.
A question: How do you collect the user info like browser, timezone, location and session id?
How you get the information in order to send it to slate?
@VincentF
@CodeStrap

For browser you can use the navigator global.

navigator.userAgent
...
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'

Then you can parse the user agent string in your pipelines. You can also get screen information with:

const {availWidth, availHeight} = screen

Geolocation can be tracked server side in the collector endpoint, but you may need to use an external service to inject the headers or use an npm package. For example, AWS CloudFront can inject Geolocation headers into requests. But this is more relevant for use cases outside of Foundry like NextJS application that are using the OSDK. Since every user in Foundry is authenticated I can infer their location based on userId.

1 Like

Did you deploy your solution using Templates? As I see the Marketplace doesn’t support deploying Slate apps

Slate is supported by marketplace:
https://www.palantir.com/docs/foundry/foundry-devops/supported-resources/

1 Like

Not yet, as Foundry DevOps was only recently enabled in developer stacks. I plan to release it over the weekend.

@CodeStrap Thank you so much!
So if I hold on with this till next week, I will be able to use Marketplace to deploy the Slate solution on my Production organization?

Unfortunately, I am still waiting on support to enable Foundry Dev Ops. I do not know when it will be enabled, but hopefully soon. I’ll post here once I have the package available for install.

1 Like

I’m told I will be able to export this out Friday as a zip archive, which you can then import into the marketplace using the upload option. Please note this will be distributed under MIT License with no expressed or implied warranty.

1 Like

Thanks you so much. Appreciated

1 Like

I got access to DevOps. Will post a link here once the archive is published.

1 Like

Apologies on the delay here. I hit a major roadblock when packaging the marketplace app. It turns out that Slate with OSDK is not supported in marketplace. See below screenshot. I won’t be able to distribute this app until that support is added. I will file a support ticket now but this is likely something that is going to take Palantir a while to roll out.

2 Likes