You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Crisp's $crisp JS SDK exposes a substantially larger surface than our wrapper covers — we are missing all $crisp.is/$crisp.get getters, several do:*/set:*/config:* commands, ~half the lifecycle events, and all of safeMode / cookieDomain / cookieExpire / sessionMerge runtime config.
load() registers a message:received listener with an empty body and the comment "unread counter triggers via message:received/chat:opened — approximation" — replace with the documented get:chat:unread:count getter plus the chat:opened event so onUnreadCountChange is exact instead of approximate (src/providers/crisp.ts:96–101) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/
do:helpdesk:* admin/operator-only operations (per task instructions; visitor-facing do:helpdesk:search/article:open/query are still flagged above).
Multi-region (Crisp.eu vs default) — Crisp's documented loader endpoint is the single global https://client.crisp.chat/l.js; no separate EU host is documented in the public SDK reference.
Private mode beyond safeMode — not surfaced in the public docs reviewed.
Summary
Crisp's
$crispJS SDK exposes a substantially larger surface than our wrapper covers — we are missing all$crisp.is/$crisp.getgetters, severaldo:*/set:*/config:*commands, ~half the lifecycle events, and all ofsafeMode/cookieDomain/cookieExpire/sessionMergeruntime config.Gaps found
Missing API surface
do:chat:open/do:chat:close/do:chat:toggleexposed as discrete methods (we only shipshow/hide, which conflatechat:show+chat:open) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:message:send(programmatic visitor message) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:message:show(local operator message) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:message:read(mark all read) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:message:thread:start/do:message:thread:end— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:helpdesk:search/do:helpdesk:article:open/do:helpdesk:query— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:trigger:run— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:bot:scenario:run— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/do:overlay:open/do:overlay:close— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/set:user:avatar(we set email/nickname/phone but not avatar) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/set:session:segments— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/set:message:text(prefill input) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/is:chat:opened/is:chat:closed/is:chat:visible/is:chat:hidden/is:chat:small/is:chat:largegetters — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/is:session:ongoing— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/is:website:available— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/is:overlay:opened/is:overlay:closed— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/get:session:identifier(needed for backend correlation; today our wrapper has no way to expose Crisp's session id) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/session-continuity/get:session:data(read-back of attributes) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/get:chat:unread:count(synchronous unread; would let us replace the "approximation" comment inload()) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/get:message:text,get:user:email,get:user:phone,get:user:nickname,get:user:avatar,get:user:company— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/Events not bridged
chat:opened(onlychat:closedis hooked; needed for proper unread reset) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/chat:initiated(first interaction) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/message:sent(visitor outbound) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/message:compose:sent/message:compose:received(typing indicators) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/helpdesk:queried— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/user:email:changed/user:phone:changed/user:nickname:changed/user:avatar:changed(would letonIdentityChangereflect Crisp-side edits) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/website:availability:changed— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/Config options not exposed
safeMode(suppresses SDK errors; documentedCrisp.setSafeMode(true)/configure({ safeMode })) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/npm/CRISP_COOKIE_DOMAIN(cookie domain restriction) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/cookie-policies/CRISP_COOKIE_EXPIRE(custom session lifetime, default 6 months) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/cookie-policies/sessionMergeruntime option — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/npm/lockMaximized/lockFullviewruntime options — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/npm/config:position:reverse,config:color:theme,config:color:mode(light/dark/auto),config:layout:theme,config:tile,config:container:index,config:sound:mute,config:availability:tooltip,config:hide:vacation,config:hide:on:away,config:hide:on:mobile,config:show:operator:count— https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/localeis only honored atload()time viaCRISP_RUNTIME_CONFIG; noreconfigure-less path) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/language-customization/Deprecations in our current code
load()registers amessage:receivedlistener with an empty body and the comment "unread counter triggers via message:received/chat:opened — approximation" — replace with the documentedget:chat:unread:countgetter plus thechat:openedevent soonUnreadCountChangeis exact instead of approximate (src/providers/crisp.ts:96–101) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/load()registers achat:closedlistener with body "leave hooks for facade wrappers" — either wire it through or drop the dead push (src/providers/crisp.ts:102–108) — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/show()pushes bothchat:showandchat:openunconditionally — split intoshow/openso callers that only want to restore visibility don't force-open the panel — https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/dollar-crisp/Intentionally out of scope
do:helpdesk:*admin/operator-only operations (per task instructions; visitor-facingdo:helpdesk:search/article:open/queryare still flagged above).Crisp.euvs default) — Crisp's documented loader endpoint is the single globalhttps://client.crisp.chat/l.js; no separate EU host is documented in the public SDK reference.safeMode— not surfaced in the public docs reviewed.Sources