Skip to main content

How do I debug my Experiences?

Test and troubleshoot your Chameleon Experiences from the Chrome Extension

Written by Pulkit Agrawal

The Chameleon Debugger is a side panel built into the Chrome Extension. It gives you a real-time view of all your Experiences, so you can quickly understand why something is or isn't showing, test Experiences without changing any settings, and fix issues.

πŸ’¬ If you get stuck, ask Copilot to analyze and troubleshoot Experiences or your installation. It'll help you figure out what's going wrong and how to fix it.

β„Ή The updated Debugger is currently rolling out to all accounts. If you prefer working in the console, the classic debug commands (chmln.debug(), chmln.Snippet.debug()) still remain available. See the Console commands quick reference.


Availability & Usage

πŸ” Available on all plans

πŸ“ Test and troubleshoot Tours, Tooltips, Embeddables, Microsurveys, Launchers

βš™οΈ Use via the Chrome Extension (Debugger) or your browser console (console commands)


How do I open the Debugger?

  1. Click the Chameleon Chrome Extension icon in your browser toolbar.

  2. Click "Open Debugger."

  3. A side panel opens on the right side of your browser.

The Debugger works on any page where Chameleon is installed. If Chameleon isn't detected on the page, the Debugger indicates this. The panel updates automatically when you switch tabs or navigate to a new URL in the same tab.


What does the Debugger show?

Is Chameleon loaded on the page?

The Snippet debug section loads first and confirms whether Chameleon is active before anything else renders.

Information

What it tells you

Load status

Whether chmln.js is installed and running

Profile UID

The user ID Chameleon has identified

Page

The URL you are currently viewing

Install diagnostics

Confirmation that the Chameleon snippet is loaded or any issues blocking Chameleon, e.g., no UID set, identify called twice, snippet not initialized, CSP blocking.

⚠️ If Chameleon is not loaded, only this section renders. The rest of the Debugger won't appear until a loaded state is confirmed.

You can collapse this section to a one-line summary once you've confirmed everything looks good.


Which Experiences are active on this page?

The Experiences list shows all your published Chameleon Experiences, grouped by current status:

  • All Experiences - all Experiences eligible to show on this page

  • Showing now - the Experiences actively displaying

  • Eligible to show - Experiences that passed segmentation but waiting on a trigger (element not yet found, time delay still running, etc.)

  • Won't show - Experiences that are blocked from displaying (and the reason for each)

Use the search bar at the top to find an Experience by name or ID, or collapse the Experience sections.


Why is (or isn't) a specific Experience showing?

Click any Experience in the list to open its detailed view: review the audience, any triggers, or recurrence applied. See what's live, what's eligible to display, and what won't display. Depending on the status, get additional context:

  • βœ… Showing now: see the Step that displays (e.g. 2/4)

  • ❌ Won't show: reason that prevents this Experience from showing (e.g., user is not in the target audience)

  • ⏳ Eligible to show: waiting for the trigger (e.g., user has not interacted with the trigger, element is not yet present on the page)

πŸ‘‰ For every "Won't show" or "Eligible" reason, you'll see a "Next step" with a direct action to fix or adjust so that Experience displays. Here are some common next steps suggestions you may see:

Reason

Next step

User not in segment

Review the user's profile properties, or open the segment to check the rules

URL doesn't match

Update the Experience's URL rules

Element not found

Click "Locate" to verify, or update the trigger element

Rate limited

Adjust the Rate Limits or Exclusions in your account


What the detail view shows:

  1. Triggers: the type and its current state

    • Element Rule: the anchor element and whether it was found. Click "Locate" to run a live element search and see matching HTML

    • Timed / Smart delay: a live countdown of remaining time

    • Custom code trigger: whether the code currently returns truthy

    • URL Rules: the configured rule and whether the current URL matches

  2. Segments: every Segment condition, and whether the current user matches each one. Expand any condition to see the user's actual value compared to the rule, for example, plan = pro βœ… matched (user value: pro) or signup_date < 30d ❌ not matched (user value: 92 days ago)

  3. Recurrence: when the Experience was last shown and when it's next eligible.

  4. Rate Limits: which Rate Limits apply and their current status.

  5. State: current step for Tours, recent dismissal status for other Experience types.

β„Ή The last Experience you opened in the detail view is remembered across page reloads; you won't lose your place mid-testing.


What Chameleon events are firing in real time?

Below all Experiences, see the Live Activity feed that logs every Chameleon event as it fires on the page, with a timestamp and brief description. Events include Tour Step engagement, Microsurvey responses, Banner dismissals, Embeddable clicks, Launcher opens, and Custom Events.

πŸ‘‰ Use Pause/Resume to stop the feed while reading, and Clear to reset it.


What does Chameleon know about this user?

Below the Live Activity, you can check out the Profile section, with the current user's profile in Chameleon:

  • Featured properties: your account's configured display fields appear first

  • All profile properties, searchable

  • Chameleon events: last seen, last campaign, last campaign state, last cleared, last anonymous, last Experience

You can click "Copy profile as JSON" to copy the full profile.


Testing Experiences from the Debugger

The Debugger lets you reset your test state and force-show any Experience directly on a specific page, without Dashboard detours, or risk of misconfiguring something before launch. The Debugger has two features that make testing Experiences faster and less error-prone:

Reset user testing data: available in the Snippet debug section. Clears the user's Experience history server-side (the same action as the Reset button on the Testing page in your Dashboard, but accessible without leaving your page).

πŸ‘‰ Use this when testing Experiences that should only show once, so you don't have to adjust Recurrence as a workaround.

Force show: available at the bottom of any Experience's detail view. Immediately displays the Experience regardless of Segment, Trigger, or other conditions.

πŸ‘‰Use this to preview how an Experience looks in context without publishing it to users or adjusting any settings.


Sharing debug information with Copilot

If you can't resolve an issue from the Debugger on your own, Copilot can help and is available directly from the Debugger in two ways:

  • Debug installation with Copilot: opens Copilot pre-loaded with your current installation context. Use this when the Snippet debug section flags an issue, and you're not sure how to fix it.

  • Copy debug info for support: copies a full JSON snapshot of your current debug state. Paste it into Copilot on your Help page, and it'll diagnose the issue and walk you through a fix.


How to run the Debugger in the browser console

You can access the Chameleon Debugger through your browser's developer console using several methods.

Step 1: Open the Browser Console

🍎 For Chrome on Mac users: Use the keyboard shortcut cmd+opt+J

πŸͺŸ For Chrome on Windows users: Use the keyboard shortcut ctrl+shift+J

You can also:

  1. Right-click on your application page in the browser

  2. Select "Inspect" from the context menu

  3. Click on the "Console" tab in the developer tools

Step 2: Run the Debug Command

Copy and paste the appropriate command:

Check if Chameleon is installed

chmln.Snippet.debug()

Debug all Experiences

chmln.debug()

Debug a specific Experience

chmln.debug("YOUR_EXPERIENCE_ID")

πŸ‘‰ Finding your Experience ID: Open the Experience in your Chameleon Dashboard. The ID is in the URL: https://app.chameleon.io/tours/YOUR_EXPERIENCE_ID


Check if Chameleon is Installed Properly

Use the chmln.Snippet.debug() command to test if Chameleon has been installed correctly and that the snippet is working properly.

When you run chmln.Snippet.debug(), look for positive confirmation messages such as:

  • "Chameleon loaded, User profile loaded"

  • Other successful installation indicators

If this debug message returns a positive result, you can then proceed to use chmln.debug() to test your Chameleon Experience status.

Common Errors and Solutions

❌ "Chameleon not loaded"

Meaning: The Chameleon snippet isn't running on this page.

Solutions:

  1. Verify the snippet is installed in your codebase

  2. Check that the snippet loads on this specific page/route

  3. Look for JavaScript errors that may block execution

❌ "User profile not loaded"

Meaning: No user has been identified to Chameleon.

Solutions:

  1. Verify chmln.identify() is called after login

  2. Check that a valid user ID is being passed

  3. Confirm the identify call happens before the Experience should show


Check the status of all published Experiences

When you run chmln.debug(), you will see a list of all the Experiences that have been published in your account.

Click the arrow > next to an Experience to see details on its display state, what segment is used for the Target Audience, and which step it's on.

β„Ή You can also see the Variant label and ID (if the Tour or Banner is part of an A/B test) or any excluded Segments from the audience.

Debugging a specific Experience

You can debug a specific Experience, by including its ID in your debug call. Such as chmln.debug("60cb861eb6ef93001b8d731e").

You can grab the Experience ID directly from the console from the drop-down menu of the Experiences listed in the console.

Or you may find the Experience ID in the Chameleon Dashboard.

Why doesn't my Experience show up on the list?

The Debugger displays only published Experiences, so missing Experiences typically indicate publishing status issues.

Troubleshooting Missing Experiences

If you don't see an Experience listed, follow these steps:

  1. Open the Experience in the Dashboard to get the Experience ID

  2. Run the command for that specific Experience using chmln.debug("EXPERIENCE_ID")

  3. Check the publishing status - Most likely, the Experience isn't published!

While you're in the dashboard, you can also see the state of your Experience. If you do not see the green "Live" badge next to the title, this also tells you that it isn't published and shown live to other users.


How to Interpret Debugger results in the console

Now that you've gotten the results of your Experience, here's more information about what each message means. If you expect an Experience to display, but it isn't, this will help you figure out how to resolve that.

Error phrase

Explanation

How to resolve

Chameleon not loaded

Chameleon has not been installed or initialized correctly.

Review Chameleon's install documents and ensure both the Chameleon snippet and identify commands are installed correctly.

User profile not loaded

No user has been identified to Chameleon, or the user profile has failed to load.

Review Chameleon's install documents and ensure the identify command is installed correctly.

Chameleon is disabled

Chameleon's elusive setting has been enabled on the Chameleon Snippet.

Check to make sure the elusive setting is enabled for the expected users.

Domain disabled

The current domain has been disabled.

Enable the domain on the domains page.

Chameleon Cleared

Chameleon was initialized, and then chmln.clear() was run, which cleared it from the page.

Talk to your development team to make sure that chmln.clear() is run in your app at the appropriate time.

Something unique went wrong

Something that's not obvious went wrong.

Contact Chameleon Support for more help.

More Messages

  • Current user UID "[uid]" is within the Target Audience, Experience can be displayed to you when all conditions are met and no other Experience is showing.

  • Current user UID "{uid}" is not within the Target Audience, Experience will not be displayed to you.

  • Current user UID "[uid]" started this Experience but is no longer within the Target Audience. After it is exited or completed it will not show again.

  • Control group test being run on this Experience, Current user UID "[uid]" is not in the test group and will not see the Experience.

  • Control group test being run on this Experience, Current user UID "{uid}" is in the test group and can see the Experience when other conditions are met.

  • Current user UID "{uid}" is within the Target Audience, but Control group test being run on this Experience, Current user UID "{uid}" is not in the test group and will not see the Experience.

  • Current user UID "{uid}" is within the Target Audience, Experience can be displayed to you when all conditions are met and no other Experience is showing.

  • Current user UID "{uid}" is in the test group and can see the Experience when other conditions are met.

  • Current user UID "{uid}" is not within the Target Audience, Experience will not be displayed to you.

  • Experience would be able to display here, but is rate limited. (See your Rate Limiting page in the Dashboard, and learn more here).

  • Completed Survey, but finishing extra comments or thank-you.

  • Experience was recently triggered by an action on a previous Experience, short-link URL, or a call from the API.

  • Experience can be manually started by an action on an Experience, short-link URL, or a call from the API.

  • Experience has been Completed.

  • Experience has been Exited.

  • Experience is not displayed but will reappear based on next recurrence setting.

  • Experience has been Exited and will reappear after snooze time period ends.

  • Experience queued to be shown after other Experience(s) finish.

  • Experience\'s URL Rules do not apply to the URL of the current page.

  • Experience\'s selected anchor element is not on the current page.

  • Experience\'s trigger element/icon is either not on the current page or is on the page but has not been interacted with yet.

  • Experience has a Timed Delay set, and that time has not expired yet.

  • Experience requires a selected element to be present on the page, still checking for the element.

  • Experience required a selected element to be present, the time has expired and element was not on the page.

  • Experience requires a selected element to be absent from the page, timer still counting down before checking.

  • Experience requires a selected element to be absent from the page, the time has expired and element was still on the page.

  • [Experience] Title: "[name]" is being displayed on the page.

  • There is no published (aka live) Experience with ID '[uid']. Open the Experience from the Chameleon Dashboard, confirm the ID at the end of the URL, and also that the Experience is live.

  • If you're seeing a Launcher and the status is blank, the Tours inside may be unpublished.

  • Now displaying, no other Experiences can Display.

ℹ️ Note you'll also see if your Experiences are not displaying because of a Smart delay (because the user has interacted with another Chameleon Experience before on the same session, or because of the built-in 60-sec delay) or if it's waiting on the Timed delay to end (and another Experience is displayed instead).

Did this answer your question?