The client logs everything it reports to the browser console, prefixed with [Entase API]. Open the console first.
The checkout opens as a pop-up instead of a panel
The usual cause, in the order worth checking:
- The domain is not a trusted origin. Add it in Settings → Integrations, matching the
www.prefix your site actually serves — see Integrations and checkout customization. - The page is not served over HTTPS. Inline checkout is never used on an insecure page.
- No publishable key. Without
pkthe client cannot check whether inline checkout is allowed, so it stays with a pop-up. book()ran too early. The permission check is asynchronous, and the mode is pop-up until it answers. A checkout opened automatically on page load can outrun it — see Checkout modes.connect-srcis blocked by your Content Security Policy, so the check never completes. The console will show the blocked request.
entase.getCheckoutMode() reports the resolved mode and is the quickest way to tell configuration problems from timing ones.
"Pane checkout mode enabled for localhost"
Expected during development. The client assumes pane mode on localhost and 127.0.0.1 so you can build against the inline layout, and warns because that assumption says nothing about production. Add your real domain to trusted origins before you ship.
The pop-up is blocked
Browsers only allow a window to open during a user gesture. Call book() synchronously inside the click handler, not after an await, a fetch or a setTimeout. See Checkout modes.
The panel opens empty
The checkout iframe was blocked. Allow https://www.entase.com in your frame-src Content Security Policy directive — see Installing the client.
"Entase is not defined"
The script had not finished loading when your code ran. This happens when client.js is loaded with async or defer, or placed after the script that uses it. Wait for the entase:ready event — see Installing the client.
"Trying to book an event after the Client has been destroyed"
destroy() was called on the instance and it can no longer be used. In a single-page application this usually means a component tore down its client while a shared reference stayed in place. Create a new instance for the new view.
"Entase frame initialization failed. Container not found."
Embed widget only. The obj code in the configuration does not match any element on the page. The container's id must be entase_ followed by the same code, and it must exist in the DOM before the widget initializes — check for a typo, or for a container rendered later by your own scripts.
Only the last event listener runs
on() keeps one callback per event name, and registering a second replaces the first. Register once and fan out from inside that callback — see Events.
The pop-up opens on the wrong screen
The centre point is calculated when the instance is created and is not updated when the visitor moves the browser window. Recalculate it before booking with setTopWindowCenter() — see Methods reference.
Tracking parameters are missing from orders
The standalone client does not read your page's URL. Forward the parameters yourself into tprm — see Tracking and consent. Note that setTracking() replaces the whole object rather than merging into it, so a later call can silently drop earlier parameters.