How Can I Track User Interactions (UTM Parameters) from the Extension Warehouse?

Hi SketchUp Community,

I’ve recently published my extension on the Extension Warehouse, and I’m trying to figure out a way to track user interactions, particularly when users click the Install button on the Extension Warehouse page. Specifically, I want to capture UTM parameters (e.g., from Google Ads, social media, or other marketing campaigns) so I can track the source of traffic leading to the download.

Here’s the scenario:

  1. Website: Users visit my website and download the extension. I’ve set up tracking there, so UTM parameters are captured on my site.

  2. Extension Warehouse: Now that the extension is live on the Extension Warehouse, I would like to track clicks on the Install button or any other install-related events directly from the Extension Warehouse page.

The Question:

  • Is there a way to capture UTM parameters or trigger an event (like a backend call) when a user clicks on the Install button on the Extension Warehouse page?

  • If this isn’t possible, what’s the best method to track installs or visits coming from the Extension Warehouse, without relying on external landing pages?

I’m looking for suggestions, best practices, or any ideas that could help me track the source of traffic and installs in a meaningful way from the Extension Warehouse.

Thanks in advance for your help!

2 Likes

I’m afraid it’s not possible. Please update your profile, License type, Operating System, etc. It’s useful in order to be helped.

1 Like

One possibility might be to have a routine that runs ONCE upon first run of your extension, that asks the user where they heard of the extension, if the extension subfolder has an “extension_info.txt” file.
These files are specific to the Extension Warehouse and are transparently inserted into the RBZ archive when deployed to the EW. Meaning that an RBZ from anywhere else will not have this txt file.

So using an AppObserver and it’s #onExtensionsLoaded callback, you could check for a first run flag using Sketchup::read_default (or perhaps a JSON file your extension writes,) and if the flag does not exist then open a HTML form in a dialog.

  • The key here is to NOT interrupt the application startup and extension load cycle with modal window(s) the stop the load. You can use UI.start_timer to add a delay.

Your only other option would be to create separate RBZ archives for each marketing campaign that has hard-coded data in the RBZ like a @campaign variable within the code.

This would be extra work as each RBZ would need to be individually signed through the signing portal.

2 Likes

Great! Thats really helpful. I’ll look into it.

Yeah I’ll update my profile.