GHL Logo Switcher
Bulk-swap logos across multiple GHL sub-accounts using the HighLevel API.
← All tools
White-label the sidebar per sub-account.
This tool generates a JavaScript snippet that automatically swaps the GoHighLevel sidebar logo based on which sub-account location is active - perfect for agencies running multiple client brands.
Used when no location mapping is found.
Add your sub-account Location IDs and the logo URL each should show.
<script>
/* ============================================================
Josh's Sub-Account Logo Switcher for GoHighLevel
Generated at: 2026-08-10
============================================================ */
(() => {
"use strict";
/** 1️⃣ Map: sub-account (location) ID → custom logo URL */
const MAP = {
"<location_id>": "<logo_url>"
};
/** 2️⃣ Default agency logo (used when no mapping found) */
const DEFAULT_LOGO = "<default_agency_url>";
/** 3️⃣ Sidebar logo selector (used in GHL's current UI) */
const SEL = "#sidebar-v2 .agency-logo-container img";
let lastId = "";
const getId = () => {
const parts = location.pathname.split("/");
const i = parts.indexOf("location");
return i > -1 ? parts[i + 1] : null;
};
function apply() {
const id = getId();
if (!id || id === lastId) return;
lastId = id;
const url = MAP[id] || DEFAULT_LOGO;
let tries = 0;
const t = setInterval(() => {
const img = document.querySelector(SEL);
if (img) {
img.src = url;
img.removeAttribute("srcset");
clearInterval(t);
} else if (++tries > 120) {
clearInterval(t);
}
}, 100);
}
const ps = history.pushState, rs = history.replaceState;
const onNav = () => setTimeout(apply, 0);
history.pushState = function () { ps.apply(this, arguments); onNav(); };
history.replaceState = function () { rs.apply(this, arguments); onNav(); };
window.addEventListener("popstate", onNav);
new MutationObserver(onNav).observe(document.documentElement, { childList: true, subtree: true });
apply();
})();
</script>Paste this into your GHL agency Custom Code section.
GoHighLevel logo switcher - common questions
Whitelabel the HighLevel logo per sub-account
HighLevel lets you set one agency logo, but agencies that resell to multiple brands often want each sub-account to show its own. This generator produces a small custom-code snippet that swaps the logo based on the location currently open.
The snippet watches URL changes rather than a specific CSS class, so it keeps working through most HighLevel interface updates. Paste it into agency settings under custom code, and every sub-account you mapped shows the right brand.
Host the logo files somewhere stable and public - a CDN, your own site, or HighLevel media storage - and use https URLs so browsers do not block them.