Add a cookie compliance banner in Shopify
Cookie HTML banner saved as snippet in snippets/cookie-banner.liquid
:
<style> #cookies-banner { display: none; justify-content: center; align-items: center; padding: 1em; position: fixed; bottom: 0px; width: 100%; background: #fff; border-top: 1px solid #dcdcdc; } </style> <div id="cookies-banner"> <span>This website uses cookies to ensure you get the best experience on our website.</span> <button style="margin-left: 1em;" onclick="handleDecline()">Decline</button> <button style="margin-left: 1em;" onclick="handleAccept()">Accept</button> </div> <script> function getBannerEl() { return document.getElementById('cookies-banner'); } function hideBanner(res) { getBannerEl().style.display = 'none'; } function showBanner() { getBannerEl().style.display = 'block'; } function handleAccept(e) { window.Shopify.customerPrivacy.setTrackingConsent(true, hideBanner); document.addEventListener('trackingConsentAccepted',function() { console.log('trackingConsentAccepted event fired'); }); } function handleDecline() { window.Shopify.customerPrivacy.setTrackingConsent(false,hideBanner); } function initCookieBanner() { const userCanBeTracked = window.Shopify.customerPrivacy.userCanBeTracked(); const userTrackingConsent = window.Shopify.customerPrivacy.getTrackingConsent(); if(!userCanBeTracked && userTrackingConsent === 'no_interaction') { showBanner(); } } window.Shopify.loadFeatures([ { name: 'consent-tracking-api', version: '0.1', } ], function(error) { if (error) { throw error; } initCookieBanner(); }); </script>
Include the snippet on all pages, you should include the snippet in your main layout, which is commonly theme.liquid
.
<body class="{{ template.name }}"> <!-- theme.liquid content --> {% render 'cookie-banner' %} </body>