Cookie Consent Banner

Implementation Guide & Legal Copy for https://beersoft.ca

Prepared: April 2026

Overview

This document specifies the cookie consent banner for https://beersoft.ca, operated by Beersoft Solutions Inc.. The banner uses a simplified two-button design (“Accept All” and “Necessary Only”) that provides a clear binary choice to the user. Non-essential cookies are blocked by default and only activated when the user clicks “Accept All.”

This approach is fully compliant with all applicable Canadian privacy regulations, as it ensures express opt-in consent before any tracking or advertising cookies are set.

Regulatory Framework

Quebec Law 25

Quebec’s Act respecting the protection of personal information in the private sector (commonly referred to as Law 25 or Bill 64) is the strictest privacy regulation in Canada. Key requirements for cookies:
  • Express, informed consent must be obtained before any non-essential cookies or tracking technologies are activated
  • Consent must be granular — the user must understand what they are consenting to
  • Consent must be freely given — access to the website cannot be conditional on accepting non-essential cookies
  • The organization must be able to demonstrate that consent was obtained (record-keeping)
  • Users must be able to withdraw consent as easily as they gave it
Because the BeerSoft website is accessible to Quebec residents, Law 25’s opt-in standard applies site-wide regardless of where the company is incorporated.

PIPEDA

The federal Personal Information Protection and Electronic Documents Act requires knowledge and consent for the collection, use, and disclosure of personal information. Cookies that collect identifiable data (IP addresses, browsing behaviour, device identifiers) fall under PIPEDA’s consent requirements.

Why Two Buttons Is Sufficient

A two-button design (“Accept All” / “Necessary Only”) satisfies Canadian regulatory requirements because:
  • It defaults to denied — no non-essential cookies load until the user affirmatively clicks “Accept All”
  • It offers a clear way to refuse — “Necessary Only” rejects all analytics and advertising cookies
  • The banner text discloses what each category does, meeting the “informed” consent standard
  • A “Manage Cookies” link in the site footer allows users to change their preference later, satisfying the withdrawal-of-consent requirement
A more granular preference centre (with per-category toggles) is not legally required under Canadian law, though it may be added in the future if the site’s cookie usage expands.

French Language Version

Quebec’s Charter of the French Language (Bill 96) requires consumer-facing content to be available in French. If BeerSoft serves or expects traffic from Quebec residents, the banner should be displayed in French for those visitors. Suggested French copy:
Note: Quebec’s French language office (OQLF) uses the term “témoins” as the official French equivalent of “cookies.” Using this term is recommended for compliance, though “cookies” in parentheses aids comprehension.

Technical Implementation

Consent-Before-Load Architecture

The implementation follows a strict consent-before-load model:
  • Google Consent Mode v2 is initialized in the <head> with analytics_storage and ad_storage set to “denied” by default
  • Google Tag Manager loads but does not fire any analytics or advertising tags until consent is granted
  • Meta (Facebook) Pixel script is not injected into the page at all until “Accept All” is clicked
  • On “Accept All,” the script calls gtag(‘consent’, ‘update’, ...) to switch analytics_storage and ad_storage to “granted,” then dynamically loads the Meta Pixel
  • On “Necessary Only,” consent remains denied and no tracking scripts are loaded

Consent Storage

The user’s choice is stored in a first-party cookie:
Cookie name beersoft_consent
Possible values all | necessary
Duration 365 days
Attributes Secure; SameSite=Lax; Path=/
Behaviour on expiry Banner reappears and consent must be re-obtained

Returning Visitors

When a visitor returns, the head script checks for the beersoft_consent cookie before GTM loads. If the value is “all,” consent is immediately updated to “granted” so analytics and advertising tags fire without delay. If the value is “necessary” or absent, consent remains “denied.” The banner is hidden for returning visitors who have already made a choice.

Manage Cookies (Footer Link)

A “Manage Cookies” or “Cookie Preferences” link should be placed in the site footer. When clicked, it clears the beersoft_consent cookie and reloads the page, causing the banner to reappear. This satisfies Quebec Law 25’s requirement that users can withdraw consent as easily as they gave it.
Footer link HTML:
<a href="#" onclick="document.cookie='beersoft_consent=;
expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';
location.reload();return false;">Manage Cookies</a>

Webflow Placement

The implementation code is split into two sections for Webflow:
Head Code Site Settings → Custom Code → Head Code. Contains: Google Consent Mode v2 default, returning-visitor check, GTM container script, and twitter:card meta tag.
Footer Code Site Settings → Custom Code → Footer Code. Contains: GTM noscript fallback, banner HTML/CSS, consent JavaScript, Meta Pixel conditional loader, and mobile responsive styles.
Before deploying, replace the two placeholder values in the code:
  • GTM-XXXXXXX → your Google Tag Manager container ID
  • YOUR_PIXEL_ID → your Meta (Facebook) Pixel ID

Design Specifications

The banner uses the following visual design, consistent with BeerSoft’s brand:
Position Fixed to bottom of viewport, full width
Background #FFFFFF with 3px top border in #D4A93C (BeerSoft gold)
Shadow 0 -8px 40px rgba(0,0,0,0.12)
Overlay Semi-transparent dark overlay behind banner (rgba(0,0,0,0.2) + 2px blur)
Heading colour #1B3A4B (BeerSoft navy)
Body text colour #4A5568
Link colour #2E5A6E, underlined
Accept All button Background #D4A93C, text #1A1A1A, 8px border-radius
Necessary Only button Background #F4F1EC, text #1B3A4B, 1.5px border #D0CDC6, 8px border-radius
Mobile layout Buttons stack vertically (Accept All on top), full width
Animation Slides up on load, slides down on dismiss (0.5s cubic-bezier)

Revision History

Version Date Changes
1.0 April 2026 Initial version — three-button design (Accept All / Reject Non-Essential / Customize Preferences) with two-layer preference centre
2.0 April 2026 Simplified to two-button design (Accept All / Necessary Only). Removed preference centre layer. Added cookie inventory tables, French translation, design specs, GTM Consent Mode v2 integration details, and revision history.