Functional Cookies Configuration – Intercom, Zendesk, Chat Widgets

Functional cookies enable enhanced features and personalization that improve user experience but aren’t strictly necessary for basic website operation. These cookies remember user preferences, enable interactive features like live chat and video players, and personalize content based on previous interactions. While functional cookies enhance usability significantly, they typically require user consent under privacy regulations because they track behavior and preferences over time.

This comprehensive guide explains what qualifies as a functional cookie, how to configure the functional cookies category in DigiConsent, and how to integrate popular functional tools like live chat widgets, help desk solutions, and interactive features while respecting user consent choices.

Understanding Functional Cookies

Functional cookies sit in a middle ground between necessary and optional, providing valuable features without being strictly essential.

What Functional Cookies Do

Functional cookies enable a wide range of enhanced features:

Live Chat and Support:

  • Remember chat conversations across sessions
  • Recognize returning users to continue previous conversations
  • Store user preferences for chat availability
  • Enable proactive chat triggers based on behavior
  • Examples: Intercom, Zendesk Chat, Drift, LiveChat

Personalization and Preferences:

  • Remember language or region selection
  • Store theme preferences (dark mode, font size)
  • Save display preferences (grid vs. list view)
  • Retain filter and sort settings
  • Remember recently viewed items

Media and Interactive Content:

  • Video player settings and progress tracking
  • Audio player volume and playback position
  • Interactive map settings and preferences
  • Embedded content functionality

Social Features:

  • Social sharing buttons that respect privacy
  • Comment system preferences
  • Community forum settings
  • Social login convenience features (not authentication itself)

Functional vs. Necessary: The Key Distinction

The critical question is: “Can the website function without this cookie?” If yes, it’s functional, not necessary.

Functional (requires consent):

  • Chat widget that helps but isn’t the only support option
  • Dark mode toggle that improves experience but isn’t essential
  • Video player preferences that enhance convenience
  • “Remember me” login that saves time but isn’t required

Necessary (no consent required):

  • Session authentication cookies for logged-in users
  • Shopping cart contents in e-commerce
  • Security and anti-fraud cookies
  • Load balancing for site delivery

If users can complete their goal without the cookie (even if less conveniently), it’s functional.

Legal Requirements for Functional Cookies

Under GDPR and ePrivacy regulations:

  • Explicit consent required: Users must actively opt-in
  • Clear information: Users need to understand what functional cookies do
  • Genuine choice: Declining functional cookies must not break essential site features
  • Easy withdrawal: Users must be able to change their mind easily

Some jurisdictions allow functional cookies under “legitimate interest,” but this is risky and requires careful legal assessment. The safer approach is requiring explicit consent.

Configuring the Functional Category in DigiConsent

Set up the functional cookies category to manage consent for all enhancement features.

Category Settings

  1. Navigate to DigiConsent > Settings > Cookie Categories
  2. Find the Functional Cookies category
  3. Ensure Always Enabled is OFF (users must be able to decline)
  4. Configure the Category Name (“Functional Cookies” or “Preference Cookies”)
  5. Write a clear Category Description
  6. Set Default State to denied for GDPR compliance

Writing the Functional Category Description

Your description should explain how functional cookies enhance the user experience. Example:

“Functional cookies enable enhanced functionality and personalization, such as live chat support, video playback, remembering your preferences (like language or theme), and providing interactive features. These cookies may be set by us or by third-party services we’ve added to our pages. Some features of our website may not work if you decline these cookies, but core functionality will remain available.”

Key elements to include:

  • What enhanced features functional cookies enable
  • Examples of features (chat, preferences, media)
  • That declining may limit some features but won’t break the site
  • That some cookies may be from third-party services
  • Positive framing (what users gain by accepting)

Setting Up Live Chat Widgets

Live chat is one of the most common functional cookie use cases. These tools help users get support but aren’t essential for browsing your site.

Intercom Setup

Intercom provides live chat, help center, and customer messaging functionality.

  1. Navigate to DigiConsent > Settings > Functional Cookies
  2. Click Add Script
  3. Paste your Intercom installation code:
<script>
  window.intercomSettings = {
    api_base: "https://api-iam.intercom.io",
    app_id: "YOUR_APP_ID"
  };
</script>
<script>
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/YOUR_APP_ID';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(document.readyState==='complete'){l();}else if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();
</script>
  1. Replace YOUR_APP_ID with your actual Intercom App ID
  2. Save the script
  3. Intercom will only load when users accept functional cookies

Intercom Identity Verification:

If you use Intercom with logged-in users, you may also need to add user identification code. Add this separately to the functional category or include it conditionally in your theme.

Zendesk Chat Setup

Zendesk Chat (formerly Zopim) provides live chat support functionality.

  1. Go to Functional Cookies category
  2. Add script:
<script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=YOUR_WIDGET_KEY"></script>
  1. Replace YOUR_WIDGET_KEY with your Zendesk widget key
  2. Save

Drift Chat Setup

Drift provides conversational marketing and sales chat.

<script>
!function() {
  var t = window.driftt = window.drift = window.driftt || [];
  if (!t.init) {
    if (t.invoked) return void (window.console && console.error && console.error("Drift snippet included twice."));
    t.invoked = !0, t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on" ], 
    t.factory = function(e) {
      return function() {
        var n = Array.prototype.slice.call(arguments);
        return n.unshift(e), t.push(n), t;
      };
    }, t.methods.forEach(function(e) {
      t[e] = t.factory(e);
    }), t.load = function(t) {
      var e = 3e5, n = Math.ceil(new Date() / e) * e, o = document.createElement("script");
      o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://js.driftt.com/include/" + n + "/" + t + ".js";
      var i = document.getElementsByTagName("script")[0];
      i.parentNode.insertBefore(o, i);
    };
  }
}();
drift.SNIPPET_VERSION = '0.3.1';
drift.load('YOUR_DRIFT_ID');
</script>

Add to functional category with your Drift ID.

LiveChat Setup

LiveChat provides customer service chat functionality.

<script>
  window.__lc = window.__lc || {};
  window.__lc.license = YOUR_LICENSE_NUMBER;
  ;(function(n,t,c){function i(n){return e._h?e._h.apply(null,n):e._q.push(n)}var e={_q:[],_h:null,_v:"2.0",on:function(){i(["on",c.call(arguments)])},once:function(){i(["once",c.call(arguments)])},off:function(){i(["off",c.call(arguments)])},get:function(){if(!e._h)throw new Error("[LiveChatWidget] You can't use getters before load.");return i(["get",c.call(arguments)])},call:function(){i(["call",c.call(arguments)])},init:function(){var n=t.createElement("script");n.async=!0,n.type="text/javascript",n.src="https://cdn.livechatinc.com/tracking.js",t.head.appendChild(n)}};!n.__lc.asyncInit&&e.init(),n.LiveChatWidget=n.LiveChatWidget||e}(window,document,[].slice))
</script>

Add to functional category with your LiveChat license number.

Setting Up Help Desk and Support Tools

Zendesk Widget

The full Zendesk support widget (not just chat) provides help center access and ticket submission.

<script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=YOUR_KEY"></script>

Add to functional cookies category.

Help Scout Beacon

Help Scout Beacon provides embedded help documentation and messaging.

<script>!function(e,t,n){function a(){var e=t.getElementsByTagName("script")[0],n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="https://beacon-v2.helpscout.net",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],"complete"===t.readyState)return a();e.attachEvent?e.attachEvent("onload",a):e.addEventListener("load",a,!1)}(window,document,window.Beacon||function(){});</script>
<script>window.Beacon('init', 'YOUR_BEACON_ID')</script>

Add to functional category with your Beacon ID.

Setting Up Video Players

Video players often set cookies to remember user preferences and playback position.

YouTube Embeds

Standard YouTube embeds track users. Use privacy-enhanced mode or block until consent:

Privacy-Enhanced Embed:

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/VIDEO_ID" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Note the youtube-nocookie.com domain. This reduces tracking but may still set some cookies.

Consent-Gated YouTube:

For standard YouTube embeds, add them to functional cookies category so they only load after consent. You can use placeholder images that are replaced with actual embeds upon consent.

Vimeo Embeds

Vimeo is generally more privacy-friendly but still sets cookies for preferences.

<iframe src="https://player.vimeo.com/video/VIDEO_ID?dnt=1" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>

The ?dnt=1 parameter enables “Do Not Track” mode. Still, add to functional category for full compliance.

Wistia Player

Wistia is a video hosting platform popular for business and marketing videos.

<script src="https://fast.wistia.com/embed/medias/VIDEO_ID.jsonp" async></script>
<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
<div class="wistia_embed wistia_async_VIDEO_ID" style="height:360px;width:640px"></div>

Add Wistia scripts to functional cookies if they track user behavior or preferences.

Setting Up Personalization Features

Language/Region Selection

Cookies that remember language or region preferences fall into a gray area:

Conservative approach (recommended): Classify as functional and request consent

Aggressive approach: Classify as necessary (some argue it’s essential for multilingual sites)

The safer approach is functional category with consent, but this means first-time visitors see a default language. Use browser language detection as a fallback.

Dark Mode Toggle

Theme preference cookies are clearly functional, not necessary:

<script>
// Only set theme preference cookie if functional consent granted
if (hasConsentForFunctional) {
  document.cookie = "theme=dark; path=/; max-age=31536000";
}
</script>

Without consent, use sessionStorage or default to browser preference (prefers-color-scheme media query) which doesn’t require consent.

Setting Up Interactive Maps

Google Maps Embeds

Google Maps embeds can set cookies for preferences and tracking:

<iframe src="https://www.google.com/maps/embed?pb=YOUR_EMBED_CODE" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>

Add Google Maps embeds to functional cookies, or use a static map image with a link to open Google Maps separately (which doesn’t require consent).

Mapbox

Mapbox provides interactive mapping solutions:

<script src='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js'></script>
<link href='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css' rel='stylesheet' />

Add to functional category if the map tracks user interactions or sets cookies.

Social Features and Embeds

Social Sharing Buttons

Social sharing buttons come in two varieties:

Tracking buttons (require consent): Official buttons from social networks that load their JavaScript and track users

Privacy-friendly buttons (no consent needed): Simple links that don’t load social network scripts until clicked

Example privacy-friendly share button:

<a href="https://twitter.com/intent/tweet?url=YOUR_URL&text=YOUR_TEXT" target="_blank">Share on Twitter</a>

This doesn’t load Twitter’s tracking JavaScript, so no consent is required. If you use official social widgets that load tracking scripts, add them to functional cookies.

Social Media Feeds

Embedded social feeds (Twitter timeline, Instagram feed, Facebook page plugin) track users:

<!-- Twitter Timeline -->
<a class="twitter-timeline" href="https://twitter.com/YourUsername">Tweets by YourUsername</a> 
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Add these to functional cookies category. Consider using static screenshots with links to the actual social profiles as a consent-free alternative.

Advanced Functional Cookie Scenarios

Conditional Loading Based on Consent

Some tools benefit from conditional loading rather than script blocking:

<script>
// Check if functional consent granted
if (typeof DigiConsent !== 'undefined' && DigiConsent.hasConsent('functional')) {
  // Load chat widget
  loadIntercom();
} else {
  // Show alternative (email contact, help center link)
  showAlternativeSupport();
}
</script>

This approach provides graceful degradation when users decline functional cookies.

Placeholder Content for Consent-Gated Features

Show placeholders for features that require consent:

<div class="video-placeholder" data-consent-type="functional">
  <p>This video requires functional cookies to play.</p>
  <button onclick="DigiConsent.showPreferences()">Update Cookie Preferences</button>
</div>

When consent is granted, replace the placeholder with the actual video embed. This is more user-friendly than blank spaces.

Testing Functional Cookie Implementation

Test thoroughly to ensure functional features respect consent:

  1. Clear all cookies and cache
  2. Visit site without accepting cookies
  3. Verify chat widget doesn’t load
  4. Check that video embeds don’t load or show placeholders
  5. Confirm no functional cookies in DevTools
  6. Test that core functionality works (browsing, reading, basic navigation)
  7. Accept functional cookies
  8. Verify chat widget appears and works
  9. Check video embeds load correctly
  10. Test preference cookies save correctly
  11. Verify functional cookies appear in DevTools

Common Issues and Solutions

Issue: Chat widget loads before consent

  • Check for duplicate installations (plugin + manual code)
  • Verify script is in functional category, not necessary
  • Look for chat widget installed directly in theme files
  • Check WordPress plugins that might load chat independently

Issue: Videos don’t load after consent

  • Check browser console for errors
  • Verify embed code is complete and correct
  • Try reloading page after giving consent
  • Check if video embeds are cached in browser

Issue: Preferences not saving

  • Verify functional consent is actually granted
  • Check that preference-setting code only runs with consent
  • Test in browser with cookies enabled
  • Ensure cookie domain and path are correct

Best Practices for Functional Cookies

  • Provide alternatives: Offer email/phone support when users decline chat cookies
  • Use privacy-enhanced options: YouTube-nocookie, Vimeo dnt=1, etc.
  • Show placeholders: Explain what features require consent rather than showing blank space
  • Don’t block essential features: If something is truly essential, it’s not functional—it’s necessary
  • Be selective: Only add truly useful features to functional category
  • Test without consent: Ensure site remains usable when functional cookies are declined
  • Document features: List all functional features in your cookie policy
  • Regular audits: Remove features you’re no longer using
  • Consider consent impact: If a feature is critical for user satisfaction, evaluate whether it’s truly optional

Functional Cookies Configuration Checklist

  • Functional cookies category is consent-required (not always enabled)
  • Clear description explains enhanced features and personalization
  • Live chat widget(s) added to category (Intercom, Zendesk, Drift, etc.)
  • Video player embeds categorized correctly
  • Social embeds and widgets added if tracking
  • Map embeds added if they set cookies
  • Personalization features (theme, language) added
  • No functional scripts in necessary category
  • No truly essential features in functional category
  • Tested without consent—core functionality works
  • Tested with consent—all features load correctly
  • Placeholders shown for consent-gated features
  • Alternative support options available (email, help center)
  • Privacy policy lists all functional cookies and services
  • Documentation maintained for compliance

Functional cookies bridge the gap between basic functionality and enhanced user experience. By properly configuring the functional category in DigiConsent, ensuring features degrade gracefully when declined, and providing clear information about what users gain by accepting, you create an honest, user-respecting implementation that enhances experience for those who opt in while maintaining usability for those who don’t.