Debugging & Preview Mode

Console Logging

The tracking script has built-in logging that you can enable via URL query parameters:

https://example.com?convert_log_level=debug

Log Levels

LevelParameterWhat You See
Infoconvert_log_level=infoHigh-level flow: which experiences processed, goals evaluated, integrations fired
Debugconvert_log_level=debugDetailed output: rule evaluation results, cookie operations, DOM changes applied

Example Debug Output

Convert [0.012s] Workflow.run() Processing request
Convert [0.013s] Workflow.run() Processing visitor
Convert [0.015s] Segments.getDefault() Setting browser: CH
Convert [0.016s] Segments.process() Processing segment #100123
Convert [0.018s] Workflow.run() Processing locations
Convert [0.020s] Experiences.process() Processing experience 100456
Convert [0.022s] Experiences.runExperience() Audience rules matched
Convert [0.024s] Experiences.runExperience() Bucketing visitor into variation 100789
Convert [0.026s] Render.applyChanges() Applying 3 changes
Convert [0.030s] Render.showBody() Showing page contents
Convert [0.032s] Goals.process() Setting up goal listeners

Preview Mode

Preview mode lets you see any experience variation without being tracked or needing to match targeting rules.

Activating Preview

Use the preview link from the Convert app, or construct it manually:

https://example.com?convert_action=convert_vpreview&convert_e=100456&convert_v=100789
ParameterPurpose
convert_action=convert_vpreviewEnable preview mode
convert_e={experienceId}Which experience to preview
convert_v={variationId}Which variation to show

What Preview Mode Does

  • Skips audience rules — The experience shows regardless of targeting
  • Skips location rules — Works on any page
  • Disables tracking — No bucketing events or conversion data sent
  • Disables integrations — No data sent to GA, Mixpanel, etc.
  • Fetches live config — Loads the latest experience config (including draft/paused experiences)

Force Variation

Force a specific variation with tracking enabled (useful for QA):

https://example.com?_conv_eforce=100456.100789

Multiple experiences:

https://example.com?_conv_eforce=100456.100789,100457.100790

Unlike preview mode, forced variations:

  • Do send tracking events
  • Do require location matching
  • Do require audience matching
  • Override the bucketing algorithm's variation selection

Disabling the Script

Disable the tracking script entirely for the current page:

https://example.com?convert_disable=true

Disable tracking events only (experiences still display):

https://example.com?_conv_prevent_tracking=true

Anti-Flicker Timeout

Adjust how long the page body stays hidden while waiting for variations to apply:

https://example.com?convert_dom_timeout=3000

Default is 2500ms. If the script hasn't finished processing by this timeout, the page is shown regardless.

You can also prevent the anti-flicker overlay entirely by setting a global variable before the tracking script loads:

<script>window._conv_prevent_bodyhide = true;</script>

Checking Visitor State

In the browser console, inspect the current state:

// Active experiences and variations
convert.currentData.experiences

// Visitor's segments
convert.getVisitorSegments()

// Geo data
convert.getUserData()

// Check a specific cookie
convert.getCookie('_conv_v')

Common Troubleshooting

SymptomWhat to Check
Experience not showingEnable debug logging, check audience and location rule evaluation results
Wrong variation displayedCheck _conv_eforce or preview params in URL; inspect convert.currentData.experiences
Goals not triggeringVerify visitor is bucketed (convert.currentData.experiences); check goal rules in debug log
Flicker visibleCheck anti-flicker timing; ensure script is in <head>; check NitroPack or similar optimisers
Script not loadingCheck browser console for network errors; verify CSP allows the CDN domain
SPA pages not workingCheck _conv_disable_spa_optimizations isn't set; verify URL changes in debug log