Docs
Troubleshooting
Most issues fall into a handful of shapes. Open the browser console on the page that isn't working — the loader's messages are your fastest signal.
The script isn't running at all
Open DevTools on the customer page and check the Console tab.
- If you see no messages starting with
VeloxScript, the loader script tag isn't firing. Inspect the page source and search for the snippet URL. Missing? Re-paste the snippet from Settings → Install into GHL → Settings → Company → Custom Code → Custom JavaScript and save. - If you see VeloxScript: install token is invalid or revoked, your token was revoked. Generate a new one and replace the snippet.
- If you see detected GHL location “…” is not in this workspace's synced locations, the page you're on belongs to a sub-account VeloxScript hasn't synced yet. RunSettings → Integrations → Re-syncand refresh the page. Only mode=“all” scripts run until the sync completes.
Turn on debug mode
Any time something looks off, append ?debug=1 to the loader URL in your GHL snippet, save, and hard-refresh the customer page:
<script src="https://veloxscript.com/api/loader/wst_abc…xyz.js?debug=1" async fetchpriority="high"></script>
The loader switches to verbose mode and prints each step to the console:
VeloxScript [init] v2.0 bundle loaded— the loader ran at allVeloxScript [init] locationId=<…>— which GHL location was detectedVeloxScript [config] <N> key(s): …— config the loader publishedVeloxScript [done] <N> of <M> script(s) injected— how many matched this pageVeloxScript [skip] Duplicate sp-<id>— the script already ran (e.g. after a SPA route change)
If any of those lines are missing, that's the point the loader is failing at. If you email support, paste the debug console output — it tells us exactly where to look.
?debug=1when you're done. It doesn't leak anything, but it does add a dozen console.log calls per page load.Check the Health tab
On Professional and Agency, every script page has a Healthtab that collects runtime errors captured from customer browsers. When a script throws, the loader beacons the error message, stack, page URL, and GHL location id to your workspace — you don't need to convince a customer to open DevTools and screenshot their console.
The KPI strip at the top shows error counts for the last 24 h / 7 d / 30 d. A sudden spike usually means GHL changed a DOM attribute your selector depends on, or a config value on one location has the wrong shape. Click an error row to expand the stack + page URL + user agent.
See Authoring Scripts → Script error monitoring for the full reference.
The script runs but the wrong thing happens
This is almost always one of three things:
- Wrong CSS selector. GHL's DOM changes over time; a selector that worked last month might not match today. Open DevTools → Elements and verify the element your selector points at. Consider making the selector a config field so you can update without a re-publish.
- Script fires too early. GHL renders most UI client-side after the initial HTML. If your script runs against an element that hasn't mounted yet, it silently does nothing. Wrap in a
MutationObserverorsetInterval:function run() { const el = document.querySelector("img.agency-logo"); if (!el) return; // do the thing } run(); new MutationObserver(run).observe(document.documentElement, { childList: true, subtree: true, attributes: true }); setInterval(run, 1500); - Script has a syntax error. The loader wraps your body in a try/catch so the whole bundle doesn't fail, but your script itself won't run. The console will show
VeloxScript error (sp-<id>): …. Copy the error and fix it in the editor.
Edits aren't showing up in production
The loader bundle is edge-cached for ~30 seconds. After any save (script body, config values, assignment, kill switch), wait up to a minute and hard-refresh the customer page.
If edits still don't propagate after 2 minutes, check the browser Network tab for the/api/loader/<token>.js request. The response headers includex-vercel-cache: HIT (serving from edge cache) or MISS(regenerated). A long-lived HIT after an edit is suspicious — let us know.
I need to stop all scripts NOW
The kill switch in Settings → Workspaceempties every bundle for your workspace immediately. All of your scripts across all sub-accounts stop running within ~30 seconds. Flip it off when you've fixed the issue; no scripts are lost.
Marketplace install didn't include my config values
Marketplace installs copy the schema (what fields exist) but not values. The installer sees your fields with their default values (if you set any) and empty otherwise. Make sure required fields have sensible defaults if the script should work out of the box.
Still stuck?
Email support@veloxscript.com with:
- The workspace URL (
/w/<id>/…) - The script name + ID
- A GHL page URL where it's failing
- A console screenshot showing the
VeloxScriptmessages (or absence thereof)
