On ten of 12 sites with a cookie banner, the chat widget loaded before the visitor chose

We opened the websites of 25 live chat vendors with a fresh browser and touched nothing. What their own widget loaded, stored and sent before any click, and whether it waited for the cookie banner. Eleven of 19 sent the full page address, query string included.

The muro team

muro.chat

Published
Reading time
12 min
On ten of 12 sites with a cookie banner, the chat widget loaded before the visitor chose
On this page

A chat widget is a script from another company running on your page. Whatever it stores in the visitor's browser, and whatever it sends home, is your responsibility as the publisher: the French regulator has fined sites for what embedded tools did, not the companies that made the tools. So we asked a simple question. What does a chat widget do before the visitor has clicked anything?

To give every widget its best case, we tested each one on its maker's own website, where the people who built it chose the configuration. 25 vendors, a fresh browser each time, 3 passes on 10 October 2026.

10 of 12

sites with accept and refuse buttons loaded the widget before the visitor chose

11 of 19

widgets sent the full page address, query string included, to the vendor

17 of 17

widgets that loaded on arrival wrote something to the browser before any click

400 days

lifetime of the longest cookie a widget set (LiveChat, Olark and Zoho SalesIQ)

How we tested

  • A fresh browser. Google Chrome in headless mode, a new empty profile for every visit, French time zone and an English locale, from a connection in France.
  • A marker in the address. Each page was opened with a fake password-reset token and a fake email address in its query string, the kind of thing real sites carry in links from emails. We then searched every widget request, request body and WebSocket message for that marker.
  • No clicks. We waited 15 seconds after the page loaded and recorded what the widget had loaded, stored and sent. Then, where there was a consent banner, we clicked "accept" and waited again.
  • What counts as the widget. A request belongs to the widget if it goes to the vendor's widget servers, if a widget script started it, or if it comes from inside a widget frame. Everything else on the page, including the site's own analytics, is left out.

Twelve of the sites where we saw the widget showed a consent banner with accept and refuse (or manage) buttons. On ten of them the widget loaded, connected and wrote to the browser while the banner was still unanswered.

Sites with a consent banner: did the widget wait for a choice?
VendorWidget before any choiceRequestsStored before any choice
IntercomLoaded163 cookies (up to 270 days), 1 localStorage key
CrispLoaded161 cookie (up to 182 days), 4 localStorage keys
TidioLoaded81 localStorage key
HubSpotLoaded311 localStorage key
GorgiasLoaded307 localStorage keys, 4 sessionStorage keys
Zoho SalesIQWaited for "accept"0Nothing
SmartsuppLoaded111 localStorage key
HelpCrunchLoaded1310 localStorage keys
JivoChatLoaded138 localStorage keys
ChatwootWaited for "accept"2Nothing
Lime Connect (Userlike)Loaded141 cookie (up to 365 days), 1 localStorage key, 1 sessionStorage key
muro (ours)Loaded42 localStorage keys

"Requests" counts the widget requests made before any click (median of 3 passes). Zoho SalesIQ and Chatwoot made a couple of tiny loader requests at most and loaded the chat only after "accept".

Zoho SalesIQ and Chatwoot were the exceptions, and we checked them again: in a separate visit where we clicked "refuse", and in another where we scrolled and moved the mouse without answering the banner, their widget never loaded. That is what waiting for consent looks like.

Whether a widget needs consent at all is a legal question we covered separately: the EU rule and the French regulator's reading of it. In short, storage that is strictly necessary for a service the visitor asked for is exempt, and the CNIL considers a chat identifier exempt when it is written at the moment the visitor opens the chat.

“In order to ensure the technical continuity of the chatbot or to keep a history of the conversation across the different pages of the site on which it is present, a cookie is frequently placed and read on the user's terminal. Such an action is governed by Article 82 of the French Data Protection Act, on which the CNIL has published guidelines and recommendations. Two options are open to the chatbot operator: either the operator wishes to be able to place a cookie before the chatbot is activated. In that case it must obtain the user's prior consent, which must be free, specific, informed and unambiguous; or the cookie is placed only when the user activates the chatbot (for example, by clicking on the conversation window displayed beforehand, or by clicking on a button explicitly triggering the opening of the chatbot). It is then 'strictly necessary for the provision of an online communication service at the user's express request' and therefore does not require the user's consent to be obtained. This exemption can be relied on only if the tracker is used solely to provide the chatbot: any other purpose attached to it will require the user's consent.”
Section « Comment gérer le dépôt de cookie nécessaire au chatbot ? », CNIL, « Chatbots : les conseils de la CNIL pour respecter les droits des personnes », page datée du 19 février 2021 (our translation from French)

The page address, query string included

Eleven of the 19 widgets sent the full address of the page, marker included, to the vendor before the visitor did anything. The query string is the part after the "?": on real sites it holds password-reset tokens, email addresses from newsletter links, order numbers and campaign tags.

Widgets that sent the page address with its query string
VendorSent throughSent to
Intercomrequest bodyapi-iam.intercom.io
CrispWebSocket messageclient.relay.crisp.chat
TidioWebSocket messagesocket.tidio.co
LiveChatrequest URL, WebSocket messageapi.livechatinc.com
tawk.torequest body, WebSocket messageva.tawk.to, vs.tawk.to
HubSpotrequest URL, request bodyapp.hubspot.com, exceptions.hubspot.com
Olarkrequest bodyvisitor.olark.com
Zoho SalesIQWebSocket message, WebSocket URLvts.zohopublic.eu
SmartsuppWebSocket messagewebsocket-visitors.smartsupp.com
JivoChatWebSocket messagevi-jvs.jivosite.com
Re:amazerequest URL, WebSocket messagereamaze.reamaze.com, reamaze.reamaze.io, ws.reamaze.com

A transmission is not proof of storage: we can see what leaves the browser, not what the vendor keeps. Hosts written vs. or vi-jvs. vary from one visit to the next.

The other eight did not send the marker in anything we could inspect: Help Scout, Gorgias, HelpCrunch, Chatwoot, Lime Connect (Userlike), Chatra, Chaport and muro. We measured each site as its owner had configured it; a widget's settings can change what it sends.

What they store, and for how long

Eight widgets set a cookie before any click, and nine more wrote to localStorage without a cookie, which the same EU rule covers. The longest cookie lifetime we saw was 400 days.

Longest-lived cookie set by the widget

Days until expiry, as set by the widget on the vendor's own site. Before any click unless marked otherwise.

LiveChat
400 d
Olark
400 d
Zoho SalesIQ
400 d
Chatwoot
365 d
Lime Connect (Userlike)
365 d
Chatra
365 d
Chaport
360 d
Intercom
270 d
Crisp
182 d
tawk.to
180 d
View as table
Longest-lived cookie set by the widgetNote
LiveChat400 d
Olark400 d
Zoho SalesIQ400 dSet after the click on "accept".
Chatwoot365 dSet after the click on "accept".
Lime Connect (Userlike)365 d
Chatra365 d
Chaport360 d
Intercom270 d
Crisp182 d
tawk.to180 d

Source: Cookies matching each vendor's naming pattern, crawl of 10 October 2026. Compiled by muro.

Everything the widget wrote to the browser
VendorWhenWritten by the widget
IntercomBefore any click3 cookies (up to 270 days), 1 localStorage key
CrispBefore any click1 cookie (up to 182 days), 4 localStorage keys
TidioBefore any click1 localStorage key
LiveChatBefore any click2 cookies (up to 400 days), 4 localStorage keys
tawk.toBefore any click3 cookies (up to 180 days), 2 localStorage keys
HubSpotBefore any click1 localStorage key
OlarkBefore any click4 cookies (up to 400 days), 13 localStorage keys
Help ScoutBefore any click1 localStorage key
GorgiasBefore any click7 localStorage keys, 4 sessionStorage keys
Zoho SalesIQAfter "accept"4 cookies (up to 400 days), 2 localStorage keys
SmartsuppBefore any click1 localStorage key
HelpCrunchBefore any click10 localStorage keys
JivoChatBefore any click8 localStorage keys
ChatwootAfter "accept"2 cookies (up to 365 days), 6 localStorage keys
Lime Connect (Userlike)Before any click1 cookie (up to 365 days), 1 localStorage key, 1 sessionStorage key
ChatraBefore any click1 cookie (up to 365 days), 3 localStorage keys
Re:amazeBefore any click5 localStorage keys, 2 sessionStorage keys
ChaportBefore any click1 cookie (up to 360 days), 5 localStorage keys
muro (ours)Before any click2 localStorage keys

Only cookies and keys that match each widget's own naming pattern are counted (for example intercom-, crisp-client, twk_, __lc_, Chatra., muro_). The site's other trackers are not in this table.

Widgets that bring other companies with them

Three widgets pulled in services from outside the vendor's own infrastructure: HubSpot loaded Google reCAPTCHA, Olark loaded OpenAI and Re:amaze loaded Google Analytics. Each one is another company the visitor's browser contacts as soon as the widget loads.

Where we could not see the widget

On five sites the vendor's own chat widget did not load in our visits: Zendesk, Drift (Salesloft), Brevo, Front and Pure Chat. Some of these companies run a different chat tool on their marketing site; in an exploratory pass, front.com loaded a widget from Qualified and salesloft.com one from 1mind. Freshworks (Freshchat) answered our browser with an error on all three passes.

What to do on your own site

  1. Open your site in a private window and look before you click. Your browser's developer tools show what the widget loads and stores while your banner is still on screen.
  2. Load the widget after consent, or only when the visitor clicks the chat button. Consent tools can usually hold a script until "accept"; a click-to-load button avoids storing anything before the visitor asks.
  3. Keep secrets out of URLs. Tokens and email addresses in query strings end up wherever the full address is sent. Ask your vendor whether it can send the path only.
  4. Ask for the cookie and storage list. Names, lifetimes and purposes belong in your cookie policy, and the vendor should give them to you.

For transparency about our own product: muro is in this test, measured on go-to-agency.com, the site of the agency that builds it. In its default mode it is one of the ten that load before the banner is answered: 4 requests, 11 kB, 2 localStorage keys and no cookie, and it sent the page path without the query string. Its lazy mode, which we did not measure here, shows the button only and reads, writes and sends nothing until the visitor opens the chat.

Method and limits

  • Vendor sites, vendor settings. Each widget was measured on its maker's website with the maker's configuration. On your site the same widget can behave differently depending on its settings.
  • One place, one day. All visits came from France on 10 October 2026, 3 passes per site, figures are medians. Results were identical across passes except for JivoChat, whose site loaded on one pass of three.
  • Completeness. Widgets that live in an iframe from the vendor's domain run in a separate browser process by default; we disabled site isolation so their requests were captured, and compared our capture with an independent count from the browser automation library. They matched within one request on every site.
  • What "sent" means. We found the marker in a request URL, a request body or a WebSocket message going to the vendor. We cannot see what happens to it on the server.
  • Banners. We classified each banner from screenshots of every pass. "Accept" was clicked automatically; the follow-up refusal and interaction tests covered the two widgets that waited.
  • Not a legal assessment. Whether a given behaviour needs consent depends on its purpose and on national law. This benchmark records what happens, not whether it is lawful.

The full request log, one row per request attributed to a widget across all passes, is available as a second CSV file. The same crawl gave us the weight of each widget: the median chat widget weighs over half a megabyte.

Sources

  1. 1CNIL, Chatbots: les conseils de la CNIL pour respecter les droits des personnes (accessed 2026-10-10)
  2. 2EDPB, Guidelines 2/2023 on Technical Scope of Art. 5(3) of ePrivacy Directive, version 2.0 (accessed 2026-10-10)
  3. 3Directive 2002/58/EC (ePrivacy Directive), Article 5(3) (accessed 2026-10-10)
  4. 4Intercom: page measured (accessed 2026-10-10)
  5. 5Zendesk: page measured (accessed 2026-10-10)
  6. 6Crisp: page measured (accessed 2026-10-10)
  7. 7Tidio: page measured (accessed 2026-10-10)
  8. 8LiveChat: page measured (accessed 2026-10-10)
  9. 9tawk.to: page measured (accessed 2026-10-10)
  10. 10HubSpot: page measured (accessed 2026-10-10)
  11. 11Freshworks (Freshchat): page measured (accessed 2026-10-10)
  12. 12Drift (Salesloft): page measured (accessed 2026-10-10)
  13. 13Olark: page measured (accessed 2026-10-10)
  14. 14Help Scout: page measured (accessed 2026-10-10)
  15. 15Gorgias: page measured (accessed 2026-10-10)
  16. 16Zoho SalesIQ: page measured (accessed 2026-10-10)
  17. 17Smartsupp: page measured (accessed 2026-10-10)
  18. 18HelpCrunch: page measured (accessed 2026-10-10)
  19. 19JivoChat: page measured (accessed 2026-10-10)
  20. 20Chatwoot: page measured (accessed 2026-10-10)
  21. 21Lime Connect (Userlike): page measured (accessed 2026-10-10)
  22. 22Brevo: page measured (accessed 2026-10-10)
  23. 23Chatra: page measured (accessed 2026-10-10)
  24. 24Front: page measured (accessed 2026-10-10)
  25. 25Re:amaze: page measured (accessed 2026-10-10)
  26. 26Pure Chat: page measured (accessed 2026-10-10)
  27. 27Chaport: page measured (accessed 2026-10-10)
  28. 28muro: page measured (accessed 2026-10-10)
  • research
  • privacy
  • cookies
  • consent
  • chat-widget
  • benchmark

Written by The muro team. A question, or a mistake we should fix? Write to [email protected], a person reads every message.

Questions people ask

Do chat widgets set cookies before consent?

On the vendors' own websites, 8 of the 17 widgets that loaded on arrival set a cookie before any click, and 17 wrote something to the browser (cookie or localStorage). Zoho SalesIQ and Chatwoot waited for the visitor to accept cookies.

Which chat widgets wait for cookie consent?

In our test, Zoho SalesIQ and Chatwoot: their widget loaded only after "accept", and not after a refusal or after scrolling with the banner unanswered. On 10 of 12 sites with a consent banner, the widget loaded before the visitor chose.

Do chat widgets send the page URL to the vendor?

11 of the 19 widgets we observed sent the full page address, query string included, to their servers before any click, through request URLs, request bodies or WebSocket messages.

Is localStorage covered by cookie consent rules?

Yes. The EU rule covers storing or reading information on the visitor's device, whatever the technology. The European Data Protection Board says so explicitly in its 2024 guidelines.

One inbox for the chat on every site you run.

muro is live chat hosted in Germany, with an AI that answers from your docs and hands the hard questions to you, at one flat price. Try both sides in the live demo, read the pricing, or see how muro compares.