Brown-Forman
Herradura is our first Brown-Forman brand on P1, but it won’t be the last. Brown-Forman runs dozens of liquor brands, and several of the systems a brand site needs (age verification, cookie consent, lead-capture forms, a retail locator) are the same regardless of which brand you’re building. This section plans those out once, so the next brand site doesn’t start from zero.
Everything under this section is grounded in the live herradura.com site itself (our actual target, currently running on WordPress and being rebuilt on P1) and cross-checked against jackdaniels.com, another Brown-Forman brand already in production on a different stack. Rather than guess at Brown-Forman’s compliance requirements, we inspected what each site actually ships: form fields, network requests, loaded scripts, vendor integrations. Where the two sites genuinely differ (retail locator, DOB-per-form vs. site-wide gate), we document both and say so explicitly rather than picking one silently. Where a page says “confirmed,” it means we verified it directly against a real site, not that we assumed it.
What’s here
- Compliance & Consent: Age Gate (site-wide age verification, modeled on herradura.com and compared against jackdaniels.com’s real differences) and Cookie Consent (OneTrust) (confirmed on both brand sites).
- Web Forms & Salesforce: Contact, Subscribe, and Unsubscribe forms, and the Salesforce CRM integration behind them.
- Products Template: a P1 Template plan for individual product pages.
- Cocktails Template: a P1 Template plan for cocktail recipe pages, including how they reference back to Products.
- Retail Locator: Herradura appears to use a custom Google Maps-based “where to buy” widget, not the third-party Dotter service Jack Daniel’s runs (both documented, since they’re genuinely different builds).
- Book a Tour (Visit Us): Herradura’s distillery-tour booking feature, built on Xola.
A few related gaps turned out to be P1 platform gaps rather than Brown-Forman-specific ones, so they’re documented at the top level instead, even though the evidence for them comes from our Brown-Forman work: Managing the Header & Footer, Form Builder, Email Delivery, and Localization.
Shared approach: small, focused packages
Age gate, cookie consent, and the Salesforce form handling are all genuinely cross-brand concerns, not Herradura-specific. Rather than one large “Brown-Forman kit” package, the plan is a handful of small, independently versioned packages, each doing one job, published to the same private registry as any other internal dependency:
| Package | Responsibility |
|---|---|
@brown-forman/p1-age-gate | Site-wide age verification overlay |
@brown-forman/p1-onetrust | OneTrust cookie consent integration |
@brown-forman/p1-salesforce-forms | Contact/Subscribe/Unsubscribe form handling + Salesforce proxy |
@brown-forman/p1-retail-locator | “Where to Buy” retail locator widget |
Scoped to @brown-forman rather than @prolific-digital deliberately: these are
Brown-Forman’s assets, meant to outlive any single agency engagement and to be
installable by any team working on any Brown-Forman brand site, not tied to us as the
vendor who happened to build them first.
Each brand site takes these as real dependencies and supplies its own config (OneTrust domain-script ID, Salesforce org credentials, Dotter app ID, brand copy/logo) via env vars and component props; the integration code itself doesn’t get rewritten per brand.
Brand sites also depend on the @prolific-digital-scoped packages proposed on
Form Builder and
Email Delivery; those are
scoped away from @brown-forman since they’re general P1 tooling, not Brown-Forman
assets, even though Brown-Forman sites are the first to use them.
Products and Cocktails aren’t packages; they’re P1 Templates (Content Types). Template metadata (name, label, description, URL pattern) can be scripted via the Templates API, but the actual component layout is editor-authored only: there’s no code-first way to define a template’s structure the way you would a WordPress CPT or a Drupal content type. See Templates for the confirmed mechanics. Each brand site still builds its own template in the editor; the field shape documented here is the reference to build from.