Features
Audience: developers & AI agents · Scope: standalone feature docs — one focused doc each, for features too small to warrant their own System folder · Last reviewed: 2026-07-20
TL;DR — Single-doc features live here. Bigger, multi-component capabilities get their own System folder instead (e.g. Quote Follow-Up, Pipedrive).
Features
| Doc | What it covers |
|---|---|
| tracking.md | Unified front-end analytics / conversion tracking — a Tracking Manager fans one call out to Meta Pixel / GA4 / Pinterest adapters; the tags load via GTM; everything is gated on Cookiebot (the CMP). |
| product-html-embed.md | Per-product HTML embed — an admin uploads an .html file on the product edit screen; it renders in a sandboxed iframe (CSP sandbox, opaque origin) below the Tech Specs section of that product's configurator page, above the configurator, auto-resizing via a height-only postMessage channel. Stored as a file in the private store (non-.html extension). |
| customer-groups-and-visibility.md | The site's access model — every user is in exactly one customer group, which carries currency, price visibility, checkout/quote permissions, group discounts and agent status; five xref_*_group tables then gate which products, news, brochures, powerpoints and diagrams exist for that group at all. |
| acoustic-calculator.md | The public reverberation calculator — the site owns the form, the validation and the reference data (three JSON files uploaded via settings, not DB rows); the maths runs on a private Google Cloud endpoint called with an identity token whose audience is the endpoint URL. Nothing is persisted. |
| chatbot.md | The public AI chat widget — a thin proxy that attaches a Google identity token and forwards the message plus client-supplied history to a private Cloud endpoint. Nothing is persisted. It shares its endpoint setting with the acoustic calculator, and the task is unauthenticated and unthrottled. |
| discontinued-products.md | Retiring a product — bc_discontinued removes it from every browse and quote surface while keeping its spec sheet reachable on a public archive page; the product URL renders a stub instead of the configurator. The family-level flag behaves differently and does not cascade. |
| branch-cleanup.md | The Branch Cleanup admin page — a soft-deleted branch is skipped by every later import, so its RSM data freezes and follow-up nudges for its users' quotes route to a former RSM. The page is the worklist that fixes it: reassign users per-branch to an active branch (the actual fix), or disable their account at the Joomla level (#__users.block + session kill). Clearing a branch lets the next import hard-delete it. |