Tech Stack Guides

How to Tell If a Website Uses Crisp

Crisp is a developer-friendly, affordable live-chat and messaging tool. Detect it via the client.crisp.chat/l.js script, the window.$crisp object and the CRISP_WEBSITE_ID value.

StackOptic Research Team26 May 20267 min read
Detecting Crisp via the client.crisp.chat script, the $crisp object and CRISP_WEBSITE_ID

Crisp is an affordable, developer-friendly live-chat and messaging tool that is especially popular with startups, SaaS products and small businesses. To tell whether a site uses it, the quickest answer is to type $crisp into the console — Crisp defines a global by that name — or to look for the script client.crisp.chat/l.js and the CRISP_WEBSITE_ID variable. This guide covers every reliable signal, the messaging architecture behind them, the similar tools to rule out, and what a Crisp install tells you about the size, technical bent and priorities of the business behind the site.

What is Crisp?

Crisp, founded in 2015, is a customer-messaging platform offering live chat, a shared inbox, chatbots, a knowledge base and multichannel messaging (email, social, WhatsApp) at a flat, affordable price. Its appeal is value and developer-friendliness: transparent pricing, a clean API and SDKs, and a feature set that punches above its cost. That has made it a favourite of startups, indie SaaS, technical founders and small businesses that want capable messaging without the per-seat enterprise pricing of larger tools. What sets Crisp apart in practice is how much it packs into a low, predictable price: a shared team inbox that unifies chat, email, WhatsApp, Messenger and more; a chatbot and campaign builder; a help centre and status page; and a genuinely good API and set of SDKs that let developers wire the widget into their product. For a technical founder, that API-first design and flat pricing are exactly the appeal — Crisp behaves like infrastructure they can build on rather than a closed widget, which is why it recurs across early-stage, engineering-led teams who would rather integrate a tool cleanly than pay per agent for a heavier platform.

For detection, the key context is that Crisp signals a cost-conscious, often technical small team that values multichannel messaging and a shared inbox. Its on-site footprint is a single, consistent embed from crisp.chat, with a distinctive global and website ID, making it easy to recognise. Because it is API-friendly, you may also see Crisp controlled programmatically via its $crisp command queue.

How Crisp loads and runs

A Crisp install sets the global window.CRISP_WEBSITE_ID to the account's website ID (a UUID) and defines the global window.$crisp command queue (an array used to control the widget, e.g. $crisp.push(['do', 'chat:open'])). It then loads the widget script from client.crisp.chat/l.js. Once running, the widget renders the chat launcher and connects to client.relay.crisp.chat over websockets for real-time messaging, loading assets from image.crisp.chat and related crisp.chat hosts, and maintaining the conversation through Crisp cookies and storage.

The website ID in CRISP_WEBSITE_ID is the public account identifier — it tells the widget which Crisp account it belongs to — so capturing it confirms Crisp and identifies the account. Knowing this flow — the CRISP_WEBSITE_ID variable, the $crisp global, the client.crisp.chat/l.js script, and client.relay.crisp.chat websocket traffic — makes detection straightforward.

How to tell if a website uses Crisp

Confirm at least one strong signal.

1. Use the console. Type $crisp and press Enter. A returned array/object confirms Crisp is loaded. Typing CRISP_WEBSITE_ID returns the account's website ID.

2. View the source. Search for crisp. The CRISP_WEBSITE_ID assignment and the client.crisp.chat/l.js script are usually visible.

3. Check the Network tab. Filter for crisp. You will see the widget load from client.crisp.chat, assets from image.crisp.chat, and websocket traffic to client.relay.crisp.chat.

4. Look for the launcher. Crisp's chat launcher is the visible front end; opening it shows Crisp's messaging UI.

5. Read the website ID. The CRISP_WEBSITE_ID UUID identifies the specific Crisp account.

What the Crisp signals look like

window.$crisp = [];
window.CRISP_WEBSITE_ID = "12ab34cd-56ef-78gh-90ij-klmnopqrstuv";
(function(){ var d=document,s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; ... })();
WS wss://client.relay.crisp.chat/...   ;   GET https://image.crisp.chat/...

The combination of the $crisp global, the CRISP_WEBSITE_ID variable, and the client.crisp.chat/l.js script is conclusive.

Crisp versus other chat tools — avoiding false positives

Match the host to keep messaging tools distinct. Crisp uses crisp.chat and the $crisp global; Tidio uses code.tidio.co and tidioChatApi; Intercom uses intercom.io and Intercom; Tawk.to uses embed.tawk.to and Tawk_API; LiveChat uses cdn.livechatinc.com. Each is distinct. As always, the chat bubble's appearance does not identify the vendor — confirm with the host or global. The CRISP_WEBSITE_ID UUID is an unambiguous Crisp fingerprint. Since Crisp is developer-friendly and sometimes integrated via its API or SDK, you may see it controlled programmatically, but the $crisp global and client.crisp.chat host remain the reliable signals.

How reliable is each Crisp signal?

The $crisp global and the CRISP_WEBSITE_ID variable are definitive, and the website ID identifies the account. The client.crisp.chat/l.js script and client.relay.crisp.chat websocket traffic are conclusive. The launcher is suggestive but should be confirmed with the host or global. The weakest situation is a site that loads Crisp conditionally (for certain pages or after consent), so check key pages. As a rule, the $crisp global or the client.crisp.chat script settles it.

What a Crisp install reveals about a business

Finding Crisp signals a cost-conscious, often technical small team — a startup, indie SaaS, technical founder or small business — that wants capable, multichannel messaging without enterprise pricing. Crisp's developer-friendly, value-oriented positioning means its users tend to be pragmatic and price-aware, frequently early-stage. The features in evidence (a knowledge base, chatbots, multichannel) indicate how the team uses it. If you sell to startups and SMBs — developer tools, SaaS, support or AI-chat products — a Crisp user is a reachable, engagement-minded small team, often technical. Because Crisp is affordable and consolidates messaging channels, its presence also suggests a lean operation handling customer conversations directly rather than via a large support team.

What finding Crisp means for sales, agencies and competitive research

For sales and prospecting, Crisp marks a startup or small business that values messaging and good value — a fit for early-stage SaaS tools, developer products, and support or AI-chat upgrades. Its developer-friendly nature suggests a technical buyer.

For agencies and consultants, finding Crisp tells you the client engages customers via chat affordably and may be open to optimising flows, adding chatbots, or integrating messaging with the product and marketing tools as it scales.

For competitive and market research, Crisp adoption indicates a lean, value-oriented, often technical operation. Spotting a competitor on Crisp suggests an early-stage or cost-conscious team, useful context when benchmarking maturity and resourcing.

Crisp in the wider startup stack

Crisp typically sits within a lean startup or small-SaaS stack. Expect a modern web app and marketing site, product analytics (often a free or low-cost tier), an affordable email tool, and Crisp as the messaging-and-support layer. Because Crisp is multichannel and includes a knowledge base and chatbots, an early-stage team may rely on it as their entire customer-communication stack. For an auditor, the valuable details are the website ID, which Crisp features are in use (knowledge base, chatbots, multichannel), and the surrounding product and marketing tools; together these characterise a lean, often technical small business and the tools that would support its growth.

A quick Crisp confirmation walkthrough

Open the site with developer tools on the Console panel and type $crisp — a returned array/object confirms Crisp; type CRISP_WEBSITE_ID to read the website ID. Switch to the Network tab, filter for crisp, and confirm the widget load from client.crisp.chat/l.js and websocket traffic to client.relay.crisp.chat. View the source for the CRISP_WEBSITE_ID assignment. Look for the chat launcher and open it to see Crisp's UI. The $crisp global or the client.crisp.chat script confirms Crisp and the website ID identifies the account.

A quick Crisp detection checklist

  • Type $crisp (and CRISP_WEBSITE_ID) in the console — conclusive.
  • Look for the client.crisp.chat/l.js script in the source.
  • Filter the Network tab for crisp; client.relay.crisp.chat websockets confirm it.
  • Read the CRISP_WEBSITE_ID UUID to identify the account.
  • Check key pages if Crisp loads conditionally.
  • Confirm the vendor via host/global, not the chat bubble's appearance.

Detecting Crisp at scale

Checking one site is quick, but finding every chat-tool user across a list — to prospect startups and small SaaS — calls for automation. StackOptic detects live-chat and messaging tools and thousands of other technologies from a real browser, capturing the widget and the surrounding startup stack, so you can map on-site chat adoption across an entire market in one pass. Combined with the framework, analytics and other developer tools each site runs, that turns a Crisp detection into a clear read on a lean, technical team and the products that would genuinely help it, rather than a bare data point. For related reading, see our guide to detecting chat and live-chat tools on a website and the other customer-support tools StackOptic detects.

Frequently asked questions

What is the fastest way to detect Crisp?

Type $crisp in the browser console. Crisp defines a global window.$crisp array/object; a returned value confirms it. You can also view the source for the client.crisp.chat/l.js script and the CRISP_WEBSITE_ID variable, both definitive signals.

What is CRISP_WEBSITE_ID?

window.CRISP_WEBSITE_ID is the variable Crisp's snippet sets to the account's website ID (a UUID). It tells the widget which Crisp account it belongs to. Finding CRISP_WEBSITE_ID confirms Crisp and identifies the specific account.

What is $crisp?

window.$crisp is the global command queue/object Crisp exposes to control the chat widget — pushing commands like $crisp.push(['do', 'chat:open']). Typing $crisp in the console and getting an array/object back confirms Crisp is loaded and active.

What domains does Crisp use?

Crisp loads its widget from client.crisp.chat/l.js and connects to client.relay.crisp.chat over websockets for real-time messaging, with assets on image.crisp.chat and related crisp.chat hosts. Requests to crisp.chat domains confirm a live Crisp install.

What does it mean if a site uses Crisp?

Crisp is an affordable, developer-friendly live-chat and messaging tool popular with startups, SaaS and small businesses. Finding it signals a cost-conscious, often technical small team that wants multichannel messaging and a shared inbox without enterprise pricing.

Analyse any website with StackOptic

Get the full technology stack, performance, security and SEO report in seconds — free.

Analyse a website

Related articles