How to Tell If a Website Uses Lucky Orange
Lucky Orange combines heatmaps, session recordings and live chat. Detect it via the tools.luckyorange.com/core/lo.js script, the __lo_site_id global and __lotl / _lo_uid cookies.
Lucky Orange is a popular all-in-one conversion tool that bundles heatmaps, session recordings, funnels, surveys and live chat. To tell whether a site uses it, the fastest checks are to look for the tools.luckyorange.com/core/lo.js script or to read the __lo_site_id global in the console. This guide walks through every reliable signal and what the find tells you.
What is Lucky Orange?
Lucky Orange sits in the heatmap and session-replay category alongside Hotjar, Crazy Egg, Microsoft Clarity and Mouseflow, but its distinguishing pitch is breadth at an accessible price: a single, affordable subscription bundles heatmaps, recordings, conversion funnels, on-site surveys and live chat. That makes it especially attractive to small and mid-sized businesses and ecommerce stores that want to understand and convert their traffic without buying several separate tools.
Detecting Lucky Orange therefore tells you something fairly specific: a hands-on, conversion-focused team that values an integrated, budget-friendly toolkit over best-of-breed specialisation.
How Lucky Orange loads and sends data
A Lucky Orange install loads its core library, lo.js, from tools.luckyorange.com/core/lo.js?site-id=<id> (older installs used cdn.luckyorange.com). The site-id query parameter is the numeric account identifier, and the snippet sets a window.__lo_site_id global plus an LO object. As visitors browse, interaction and recording data streams to luckyorange.com endpoints to build heatmaps and replays; if live chat is enabled, additional chat traffic appears.
State is stored in first-party cookies such as __lotl (last touch), _lo_uid (visitor ID) and, when chat is active, __lc.visitor. The site-id in the script URL and the __lo_site_id global are the cleanest signals.
How to tell if a website uses Lucky Orange
1. View the page source. Search for luckyorange or __lo_site_id. You will find the lo.js?site-id=<id> reference and the global assignment.
2. Check the Network tab. Filter for luckyorange. You will see tools.luckyorange.com/core/lo.js?site-id=... load and tracking requests to luckyorange.com. The site-id parameter confirms the account.
3. Use the console. Type __lo_site_id to read the numeric account ID, and inspect the LO object. Both confirm the install.
4. Inspect cookies. Look for __lotl, _lo_uid and (with chat) __lc.visitor.
5. Watch for the chat widget. If Lucky Orange's live chat is enabled, the on-page chat widget is a visible confirmation alongside the technical signals.
What the Lucky Orange signals look like
GET https://tools.luckyorange.com/core/lo.js?site-id=00012345
window.__lo_site_id = 12345
Cookie: _lo_uid = "..."
Cookie: __lotl = "..."
The combination of the lo.js?site-id= script, the __lo_site_id global and the _lo_uid cookie is conclusive.
Lucky Orange versus similar tools — avoiding false positives
Match the exact fingerprint to avoid confusing heatmap tools. Lucky Orange uses tools.luckyorange.com and __lo_site_id; Hotjar uses static.hotjar.com and hj/_hjSettings; Crazy Egg uses script.crazyegg.com and CE2; Microsoft Clarity uses clarity.ms and the clarity global; Mouseflow uses cdn.mouseflow.com and _mfp. Each is distinct. Lucky Orange is frequently installed via a CMS plugin (for example on Shopify or WordPress) or through GTM, so the script may load slightly later — check the live page. If the chat widget is present, do not mistake it for a standalone chat tool; it is part of the Lucky Orange bundle.
How reliable is each Lucky Orange signal?
The lo.js?site-id=<id> request is definitive because the path and parameter are unique to Lucky Orange and embed the account. The __lo_site_id global is equally strong and bonus-rich. The _lo_uid/__lotl cookies are reliable confirmation. A bare mention in a tag manager without the script loading is the weakest signal. Prefer the live request, the global, or the cookies.
What a Lucky Orange install reveals about a company
Lucky Orange's all-in-one, affordable positioning means it skews toward SMBs, solo founders, agencies and ecommerce stores rather than large enterprises. Finding it suggests a pragmatic team that wanted heatmaps, recordings and chat without assembling a multi-tool stack. If the chat feature is active, the company is also doing real-time visitor engagement, which hints at a sales or support motion on the site. For anyone selling CRO services, ecommerce optimisation or marketing tooling to smaller businesses, a Lucky Orange install marks a receptive, optimisation-minded buyer.
Lucky Orange in a modern measurement stack
Because it bundles so much, Lucky Orange often reduces the number of separate tools a small site needs — you may find it doing the job that heatmaps, recordings and chat would otherwise require three vendors for. It usually sits alongside Google Analytics for traffic reporting and, on ecommerce sites, the platform's native analytics (Shopify, WooCommerce). For an auditor, record the site ID, whether chat is enabled, the host CMS or ecommerce platform, and which analytics tool coexists; together these describe a compact, conversion-focused stack typical of a growing small business.
A quick Lucky Orange detection checklist
- Filter the Network tab for
luckyorange; thelo.js?site-id=<id>load is conclusive. - Search the source for
luckyorangeand__lo_site_id. - Read
__lo_site_idin the console and inspect theLOobject. - Check cookies for
_lo_uid,__lotland__lc.visitor. - Note whether the live chat widget is active.
- Confirm the script loads rather than relying on a GTM reference.
Privacy and consent with Lucky Orange
Lucky Orange records sessions and offers live chat, so it touches potentially sensitive data and should be gated behind consent. Lucky Orange supports field masking and exclusion, and its recordings can be configured to obscure form input. When auditing, check whether lo.js loads before or after the cookie banner is actioned: an unconditional load on first paint, with no masking visible around form fields, is a compliance concern in regulated jurisdictions — and, again, a useful indicator of how the team approaches data governance. Because Lucky Orange is so commonly installed through a Shopify or WordPress plugin, the consent integration often depends on the host platform's cookie-consent app, so it is worth noting which CMS is in play and whether its consent tooling actually controls the Lucky Orange tag.
This has a direct bearing on detection accuracy. On a consent-gated ecommerce store, the recorder may not load until analytics cookies are accepted, so a first-load scan can miss it. Accept cookies, reload, and only then conclude. This is the single most common reason an SMB heatmap tool is overlooked in a quick competitive scan.
A quick Lucky Orange confirmation walkthrough
Open the site with developer tools on the Network panel and clear any cookie banner. Filter for luckyorange and reload: look for tools.luckyorange.com/core/lo.js?site-id=<id>. The site-id parameter is your account identifier. Switch to the Console and read __lo_site_id — a numeric value confirms the install and matches the script's site-id. Then check the Application panel for the _lo_uid and __lotl cookies, and __lc.visitor if chat is enabled. If a chat widget appears on the page, that is a visible bonus confirmation. In under two minutes you have the tool, the account ID, and whether chat is active.
When finding Lucky Orange matters most
Lucky Orange skews toward small and mid-sized businesses and ecommerce stores, so its presence is a strong fit signal for anyone selling CRO services, ecommerce optimisation or SMB marketing tools — the buyer has shown they invest in understanding their traffic but has chosen an affordable, all-in-one tool rather than enterprise software. If the live chat feature is active, the company is also doing real-time visitor engagement, which hints at a hands-on sales or support motion you can speak to directly. For competitive research, a Lucky Orange install on a rival's store tells you they are watching session recordings and likely iterating on their funnel, useful context when benchmarking conversion.
How Lucky Orange compares to Hotjar and Microsoft Clarity
When you find Lucky Orange, it helps to place it against the category leaders. Hotjar dominates the mid-market with heatmaps, recordings, surveys and feedback, and a strong free tier. Microsoft Clarity is entirely free with unlimited recordings and heatmaps, which makes any paid alternative a deliberate choice. Lucky Orange's distinct pitch is breadth in one affordable subscription — heatmaps, recordings, funnels, surveys and, crucially, live chat bundled together, where the others would require separate tools or higher tiers.
That bundle is the tell. A team running Lucky Orange has usually decided it wants several capabilities from one budget-friendly vendor rather than assembling a best-of-breed stack — a pattern typical of small businesses, solo founders and lean ecommerce teams. If the live chat component is active, Lucky Orange is also doing a job that would otherwise belong to Intercom, Tidio or Crisp, so do not double-count a separate chat tool. Compared with FullStory or Contentsquare it is far less enterprise-oriented, and compared with Smartlook it is more web-and-SMB focused than cross-platform. For anyone selling to smaller businesses, that positioning makes Lucky Orange a clean signal of a pragmatic, cost-conscious, conversion-minded buyer — and a hint that there is room to upsell more specialised tools as they grow.
Detecting Lucky Orange at scale
One page is a quick console check. To scan a list of ecommerce or SMB sites for heatmap tools, automate it. StackOptic detects Lucky Orange and thousands of other technologies from a real browser, catching plugin- and GTM-injected installs. See how to find out what analytics a website uses and the Lucky Orange profile for more.
Frequently asked questions
What is the fastest way to detect Lucky Orange?
Open the Network tab, reload and filter for 'luckyorange'. You will see lo.js load from tools.luckyorange.com/core/lo.js?site-id=<id> and tracking requests to luckyorange.com. The site-id in the script URL is the definitive fingerprint.
How do I confirm Lucky Orange in the console?
Type __lo_site_id and press Enter to read the numeric account ID set by the install snippet; you can also inspect the LO object. Either confirms Lucky Orange is loaded and tied to a specific account.
What cookies does Lucky Orange set?
Lucky Orange sets first-party cookies including __lotl (last touch), _lo_uid (visitor ID) and chat-related cookies such as __lc.visitor when its live chat is enabled. These are reliable secondary signals.
What does Lucky Orange do?
Lucky Orange is an all-in-one conversion tool combining heatmaps, session recordings, conversion funnels, surveys and live chat. Its bundle of features at an accessible price makes it popular with small businesses and ecommerce stores.
What does it mean if a site uses Lucky Orange?
Lucky Orange typically indicates a small-to-mid-sized business or ecommerce store that wants heatmaps, recordings and chat in one affordable tool. Its presence signals a hands-on team focused on understanding and converting their traffic without enterprise-grade tooling.
Analyse any website with StackOptic
Get the full technology stack, performance, security and SEO report in seconds — free.
Analyse a websiteRelated articles
How to Tell If a Website Uses Heap
Heap (Heap Analytics) autocaptures product events. Detect it via the cdn.heapanalytics.com script, the global heap object, heapanalytics.com beacons and _hp2 cookies.
How to Tell If a Website Uses Foundation
Foundation (by Zurb) is a responsive front-end framework. Detect it via its grid classes (row/columns, grid-x/cell), data-* component attributes and the foundation.css/js files.
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.