Cookie consent and privacy (v20)
> Customer-facing KB content for help.velaro.com. New article for v20 (velaro-messaging). > Updated 2026-06.
Summary
Velaro v20 automatically detects your cookie consent platform and loads the chat widget only when the visitor has granted the appropriate consent. No extra configuration is required beyond adding one attribute to your embed snippet.
---
How it works out of the box
Add data-consent-mode="auto" to your Velaro embed script tag:
<script
src="https://cdn.velaro.com/messenger/embed.js"
data-site-id="YOUR_SITE_ID"
data-consent-mode="auto"
async
></script>
With consentMode: auto, Velaro:
- Detects which consent platform is on the page (OneTrust, Cookiebot, Osano, Termly, or
Usercentrics).
- Listens for the visitor's consent decision.
- Loads the full chat widget automatically the moment the visitor grants Functional consent —
no page reload, no click required.
- If no consent platform is detected within 10 seconds, the widget loads normally.
Before Functional consent is granted: zero cookies are written and no visitor is identified. The widget simply waits.
---
CMP-by-CMP consent category
| CMP | Category that triggers Velaro to load |
|---|---|
| OneTrust | Functional — C0003 |
| Cookiebot / Usercentrics | Preferences |
| Osano | STORAGE |
| Termly | Performance / Functionality |
| Usercentrics (named service) | Velaro (add as a service in your Usercentrics config) |
Azure load-balancing cookies (ARRAffinity, ARRAffinitySameSite on api-visitor-us-east.velaro.com) should be classified as Strictly Necessary / Required in all CMPs — they carry no personal data and are session-only.
---
Consent modes
| Mode | Behavior |
|---|---|
auto | Detects your CMP and loads on functional consent grant. Recommended. |
defer | Widget loads when the visitor clicks the chat button — the click is treated as consent. |
require | Widget loads only when your code calls the provided resolve callback. Use this to wire a custom consent flow. |
none | No consent gating — widget loads immediately. Use only where no CMP is present. |
---
Showing chat to every visitor (click-to-load)
If you want a chat button visible to all visitors — including those who decline Functional cookies — use defer mode:
<script
src="https://cdn.velaro.com/messenger/embed.js"
data-site-id="YOUR_SITE_ID"
data-consent-mode="defer"
async
></script>
The chat button appears for everyone. Clicking it is the visitor actively requesting chat, so the full widget loads at that point regardless of cookie preferences. No tracking or cookies occur before the click.
---
Manual consent wiring (require mode)
If you manage consent in your own code and want to tell Velaro exactly when to load:
// In your embed snippet
window.__velaro = {
consentMode: 'require',
onConsentRequired: function(resolve) {
// Call resolve() whenever your consent logic grants functional consent
myConsentSystem.onFunctionalGranted(function() {
resolve({ functional: true, analytics: true });
});
}
};
---
How to classify Velaro in your CMP
The widget is a Functional service. No visitor is identified and no tracking cookie is written until the visitor opens chat. The classification:
- Widget → Functional / Preferences (see table above per CMP)
ARRAffinity/ARRAffinitySameSite→ Strictly Necessary / Required
---
Need help?
Contact Velaro support to confirm your CMP setup or switch consent modes.
Was this article helpful?