White-Label Brand Identity for GHL — Logo, Google Fonts & Brand Palette Automation
Per-location logos, app-wide Google Fonts, and a brand palette that regenerates every theme's “Your Brand” variant at compile time — so one edit rebrands every location at once.
<2 min
Full client rebrand
1 write
Agency-wide refresh
S3
Guarded uploads
The challenge
What made this hard
Real white-labeling is more than a logo in the corner. Each client wanted their typeface, their colors, their logo at the right size — and the agency wanted to set brand colors once, not repaint every theme by hand each time a client refreshed their brand.
The solution
How I built it
A branding layer built so a full rebrand is a single write, not a migration:
Logo Changer
Per-location sidebar logo with S3-backed uploads (size-capped, keyed under the verified company — never a caller-supplied path) and height/width controls.
Font Changer
Swap the entire UI to any Google Font, loaded and applied app-wide with sensible fallback stacks.
Brand Palette
The clever one — agencies save brand colors once, and every theme's “Your Brand” variant regenerates from the palette at compile time rather than copying colors into stored variables. Change the brand, and every location on a brand variant repaints everywhere at once.
Under the hood
Technical highlights
The brand-variant flag travels with each theme doc; compilation resolves live palette values on every CDN build. Combined with delta storage, “rebrand the agency” becomes a single write followed by automatic cache invalidation across all locations. The upload pipeline rejects oversized or foreign files server-side.
"Setting our brand colors once and watching every theme repaint itself is genuinely magic. Logos, fonts, palette — a full client rebrand now takes me under two minutes instead of a whole afternoon. The uploads are locked down properly too, which my developer really appreciated. It's exactly the polished, engineered feel we were paying for." — Daniel Weiss, Co-Founder, Studio Kline. Rated 5 out of 5. Reviewed March 2025.