e-satisfaction

Troubleshooting

Most install problems come down to a handful of causes, and almost all of them are settings rather than code. This page lists the issues you're most likely to hit and gives each one a short checklist to work through. Start at the top of the relevant section and stop as soon as something fixes it.

The box or widget doesn't show

If a floating box or classic box survey isn't appearing, check these in order:

  • Is the survey active? A paused survey won't show. If you're testing on a phone, confirm it's also active on mobile — that's a separate toggle on Web integration.
  • Is the page's domain allowed? The widget only displays on the allowed domains you've whitelisted. If the current domain isn't on the list, nothing shows.
  • Is a cap suppressing it? A frequency or delay cap may be holding the survey back for this visitor or this session. Review the caps on Web integration.
  • Is the script actually loading? Confirm the install snippet is in the page <head> with the correct workspace ID, and check your browser's network tab for the integration script request.

Allowed domains is the usual culprit

If the script loads but nothing appears, the page's domain almost always isn't on the allowed list. Check that first before digging deeper.

The library is blocked by a Content Security Policy

If your website sets a Content Security Policy (CSP), the browser can block the e-satisfaction library from loading or running — even when your snippet is perfectly correct. The tell-tale sign is a CSP error in the browser console naming the directive that stopped a request.

Allow the e-satisfaction collection domains in the relevant directives of your policy:

  • script-src — allow https://collection.e-satisfaction.com so the library can load (and https://cdn.e-satisfaction.com too if you use the CX Badge).
  • connect-src — allow https://collection.e-satisfaction.com so the library can send and receive survey data.
  • img-src and style-src — allow the same domains so the survey renders with its images and styling (a strict policy may also need to permit inline styles).
  • frame-src — allow https://collection.e-satisfaction.com if your survey is shown inside a frame.

Let the console guide you

A CSP block always reports exactly which directive stopped the request. Add the e-satisfaction domain to that directive, reload, and check the console again — repeat until the errors clear.

It shows on one domain but not another

The widget only appears on the exact hosts in your allowed domains list, and the most common trap is the www variant. If your site answers on both example.com and www.example.com, a widget allowed only for example.com won't show on www.example.com — and the other way around.

  • Add every variant visitors actually use — list both example.com and www.example.com if both resolve to your site.
  • Mind subdomains. shop.example.com is a different host from example.com; add each subdomain that should run the widget.
  • Don't forget staging and preview domains. A widget that works in production can be silently blocked on a preview or *.myshopify.com-style URL that isn't on the list.

Match what the address bar shows

Whatever host appears in the browser's address bar when the survey should show is the host that must be on your allowed-domains list — copy it exactly, www and all.

Something between the browser and e-satisfaction is blocking it

Sometimes the library never gets the chance to load, because something in the visitor's environment blocks it:

  • Ad blockers and privacy extensions — uBlock Origin, Brave Shields and similar tools can block the script or its requests, so those visitors never see the survey.
  • Browser tracking protection — Safari's Intelligent Tracking Prevention and Firefox's Enhanced Tracking Protection can do the same.
  • Corporate networks — a company firewall, proxy or web filter may block collection.e-satisfaction.com, so the survey won't load on that network.

This is usually the visitor's environment rather than your installation. To confirm, test in a clean browser profile with no extensions, and on a different network. For corporate environments, ask IT to allow collection.e-satisfaction.com.

If you load e-satisfaction through a consent manager (such as OneTrust or Cookiebot) or a Google Tag Manager consent category, the library won't run until the visitor accepts the category it's assigned to.

  • Place e-satisfaction in the right consent category and make sure it loads after consent is granted.
  • If you installed through Google Tag Manager, also confirm the tag's trigger actually fired and that you published the container.

The widget loads but you can't see it

If the script loads cleanly but the survey still isn't visible, it may be rendering somewhere you can't see it:

  • Hidden behind another element — a sticky header, a cookie banner, or another floating widget (like a live-chat bubble) sitting on top of it.
  • A z-index or CSS conflict on your site is covering it.
  • Off-screen or mis-positioned — adjust the position, or for an embed, the target selector.

Mind your other floating widgets

If you run a live-chat or support bubble in the same corner, give the two different positions so they don't overlap or hide each other.

The snippet is installed more than once

Duplicate widgets, flickering, or odd behaviour usually mean the snippet is on the page twice — for example pasted into your theme and added through Google Tag Manager, or duplicated across templates. Keep exactly one installation per page, with a single workspace ID.

Another error on the page stops it from running

A JavaScript error elsewhere on the page can halt execution before the library finishes loading.

  • Open the browser console and resolve any errors that fire before the integration script.
  • If you push context with updateMetadata, call it after the library has loaded — calling it too early can quietly do nothing.

It doesn't appear in automated tests

Testing tools — Lighthouse, Playwright, headless Chrome — and bot filtering may not render the widget, so "it's broken in my test" is often a false alarm. Confirm in a real browser before assuming the install is wrong.

An embedded survey doesn't show

An embed survey renders into a CSS selector you set on Web integration. For it to appear:

  • The target element must exist on the page when collection loads. If the selector you configured doesn't match anything at load time — because it's rendered later, or the selector is wrong — there's nowhere for the survey to render.
  • Double-check the selector matches exactly what's on the page, including casing and any prefix like # or ..

Render order matters for embeds

If your store or app builds the target element dynamically, make sure it's in the DOM before collection runs — otherwise the embed has no anchor to attach to.

Metadata isn't tracked

If responses are coming in but the context you pushed isn't attached:

  • Define the fields first. The field has to exist in the dashboard (Admin → Data & AI) before you push it. Names that aren't defined are dropped.
  • Match names exactly. The names you push must match the defined names character-for-character.
  • Push in time. Call updateMetadata before or while the survey is shown — not after the respondent has finished.
  • Mind the questionnaire ID. It's case-sensitive — copy it exactly from the dashboard; Abc123 and abc123 are different surveys.

A follow-up message or sequence doesn't fire

If an on-site survey works but an email, SMS, or Viber follow-up never goes out:

  • Is it active? Confirm the pipeline or sequence is switched on.
  • Do the conditions match? Check the routing rules and conditions actually match the recipients you expect — a condition on metadata that isn't being pushed will quietly exclude everyone.
  • Is there a valid contact? Each recipient needs a valid contact identifier for the channel — an email address for email, a phone number for SMS or Viber. Recipients without one can't be reached.

Trace it backwards

When a follow-up doesn't fire, work from the recipient outward: confirm the recipient has a valid contact, then that the conditions include them, then that the pipeline or sequence is active.