Compliance & Consent
Two gates every Brown-Forman brand site runs before a visitor reaches real content. Different legal triggers, same shape: a client-side overlay that blocks interaction without withholding the underlying page from crawlers or the initial HTML response. Grouped here because the build pattern is shared, not because they’re the same requirement.
- Age Gate: legal-drinking-age verification, required before any liquor-brand content is meaningfully accessible.
- Cookie Consent (OneTrust): privacy/ cookie-law consent management, gating analytics and embedded content by consent category.
Both are confirmed against the live herradura.com and jackdaniels.com sites, not guessed; see each page for the specific evidence. Where the two brands genuinely differ (age gate persistence behavior, per-brand OneTrust project IDs), both pages document it rather than picking one silently.
Why these are grouped, not merged
Age verification and cookie consent are legally and functionally distinct: different
regulations, different default states (a visitor can decline cookies and keep
browsing; a visitor can’t decline age verification and keep browsing), different
persistence rules. They stay as two separate packages
(@brown-forman/p1-age-gate, @brown-forman/p1-onetrust) for exactly that reason.
What they share is architectural: both are root-layout overlays that block
interaction, not routes, and both must never withhold server-rendered content from
the initial response; see each page’s own “how the reference site actually does it”
section for the specific evidence behind that constraint.