Troubleshooting
Fixes for the common problems: the tag isn't detected, rules don't fire, content flickers, conversions are missing or a CSP blocks it.
Most problems show up in the browser console. Add data-debug="true" to the tag, reload, and look for lines that start with [GeoEngage].
The tag isn't detected
- Load a page after saving. The tag reports only when someone loads a page, and a page cache or CDN can keep serving the old HTML for a while. Clear it.
- Check the live page. View your live page's source and search for
data-api-key. If it isn't there, the change wasn't published.
- Check the key. The
data-api-key value has to match the site's key under Sites.
- Check your plan on site builders. Webflow and Wix only run custom code on the published site, on a paid plan. Squarespace needs a plan that includes code injection.
- Check consent mode. With
data-require-consent="true", nothing is sent until a visitor accepts the consent banner.
- Try a private window. A browser extension that blocks trackers can stop the tag for you, and only for you.
- Check the Network tab. In your browser's developer tools,
ge.js should load without errors. A failed or blocked request points to the URL, an ad blocker or a Content Security Policy.
In the console, window.GeoEngage?.version returns a version number once the widget has loaded.
A rule doesn't show
- Is it published? Rules reach your site only once published. In the rule editor, Save & Publish puts your latest changes live; if it says visitors still see an older version, the rule has unpublished edits.
- Is it switched on? Check its toggle in the Rules list.
- Do you match it? Conditions are checked against you as a visitor. A VPN changes your location, and First Visit only matches your first session on the site.
- Has it already shown? A rule set to show once per session, once ever or until dismissed won't show to you again once it has.
- Is your site running a holdout? Visitors in the holdout group see no rules at all, so the rest can be compared against them. Check Tracking Config → Holdout, and see testing your own site.
- Is consent mode waiting? In consent mode, no rule except the compliance banner runs before the visitor accepts.
With data-debug="true", the console shows each rule as it's checked.
Content flickers before a rule changes it
Visitors briefly see your original page, then the change.
- Move the tag up. It belongs in
<head>, above your content, not at the end of <body>.
- Remove
async and defer. Both let the page paint before the widget runs.
- Don't use a tag manager. Google Tag Manager and similar tools inject tags asynchronously.
- Exclude it from optimizers. Performance plugins that delay, defer or combine JavaScript need this tag excluded; see WordPress.
A visitor's very first page view can still show a change as it happens. The widget learns which elements to hide from the rules it ran on an earlier page view, and on the first one there isn't an earlier page view yet. From the second page view on, those elements stay hidden until the change is applied.
Conversions don't show up
- Is
trackConversion being called? Nothing calls it for you: add GeoEngage.trackConversion() where the conversion happens. (Page visit, element click and form submit goals are the ones that need no code.) trackEvent doesn't count: its events appear under Custom Events, never in a goal.
- Does the call come after the tag?
trackConversion can be called as soon as the tag has run, even on a page that converts as it loads, such as an order confirmation. A script that runs before the tag finds no GeoEngage; see Calling the API.
- Does a goal claim it? Reports only count conversions that a goal claims. Create a Conversion from code or Revenue goal whose event name matches the name you pass. In Events Explorer, a conversion no goal claims is marked as such.
A Content Security Policy blocks the widget
If your site sends a Content-Security-Policy header, the console reports Refused to load the script or Refused to connect, followed by the blocked URL. Allow:
- the host in the tag's
src under script-src
- each GeoEngage URL the console reports as blocked, under
connect-src
Try things without touching your site
When you're signed in, Test Sandbox in the dashboard loads the widget with one of your sites' keys, so you can try rules and the JavaScript API before they go anywhere near your live site.