chmln.identify(user.id, { company: { uid: account.id } }) and that you have installed with chmln.on("app:navigate", opts => { ... })
Your Saas Product likely has the concept of Users, Accounts and a variety of things (content) that Users can create. Each item
has a set of Users (i.e. members of an Account) that have access to the content they create.
Here is some sample data that we will work off. Imagine that your SaaS product is called Dashy (app.dashy.run) where Users create metric-based Dashboards.
When a User has access to a Dashboard they will see it in their list of Dashboards on https://app.dashy.run/dashboards
- By default, Dashboard are only available/visible to the creator of the Dashboard.
- A Dashboard can be published/shared to all Users of the Account
- A Dashboard can be published/shared specific Users
Sample Data in the Dashy database
Users
| ID | Account ID | Name | [Notes] |
|---|---|---|---|
134 | d3fa1 | Jane | On the same Account as John |
137 | f2d3a | John | On the same Account as Jane |
139 | f2d3a | Alice | Only User on this Account |
Accounts
| ID | Name | [Notes] |
|---|---|---|
d3fa1 | Jexar | 2 Users are: Jane and John |
f2d3a | Apex | 1 User is: Alice |
Dashboards
| ID | Account ID | User ID | User name | Title | [Notes] |
|---|---|---|---|---|---|
413 | d3fa1 | 134 | Jane | Q3 Northstar metrics | |
435 | d3fa1 | 134 | Jane | Product usage - Power users | |
476 | d3fa1 | 137 | John | Website/Ads metrics 2029-03 | |
498 | f2d3a | 139 | Alice | FY29 Financial reports |
Lifecycle of content (CRUD)
- Create: Add content to HelpBar example ↓
- Read: skip because the content doesn’t change
- Update: Conditionally update with important changes example ↓
- Delete: Remove content from HelpBar example ↓
Create: Add this content to HelpBar
- Jane creates a Dashboard called Q3 Northstar metrics it’s visible only to Jane.
- John creates a Dashboard called Website/Ads metrics 2029-03 it’s visible only to John AND Jane but not to new Users who join Jexar (since it’s visible explicitly to Users
134and137). - Alice creates a Dashboard called FY29 Financial reports it’s visible to all Users who join Apex (since it’s visible to Account
f2d3a).
- Pull the
SEARCH_GROUP_IDfrom the URL for the Chameleon SearchGroup that you want to add this content to (e.g.https://app.chameleon.io/helpbar/edit/content/654001081b27ac5e6ae5a08e) - Send a
uidthat will be stable for the life of this content.dashboard-413in this example; you use this to update / delete. - In this example we use
profile_uidsas an array of 1 item, Jane, because only 1 User should have access to search for this. - Use 1 SearchActions in
actionswithkind=navigate. When clicked in the HelpBar the page will receive a callback intochmln.on("app:navigate", (opts) => { /* opts.to will be "/dashboards/413" */ }).
CMD+k in your product and searches via HelpBar for “metrics” it will display 2 results, “Q3 Northstar metrics” and “Website/Ads metrics 2029-03”.
When John hits CMD+k in your product and searches via HelpBar for “metrics” it will display 1 result, “Website/Ads metrics 2029-03”.
When Alice hits CMD+k in your product and searches via HelpBar for “metrics” it will display 1 result, “Website/Ads metrics 2029-03”.
Update: Conditionally update with important changes
When Jane updates the title and adds a note about how to use this Dashboard. Note: this content will retain its other state such as actions, visibility etc.company_uids will allow
any User on the given Account access to search for this content
CMD+k in your product and search via HelpBar for “metrics” they will both have one result, “Q3 Northstar metrics - final”.

