White-label

GHL Logo Switcher

Bulk-swap logos across multiple GHL sub-accounts using the HighLevel API.

← All tools
How the GHL sidebar logo swaps per sub-account
Dynamic logo switching

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.

1Default agency logo URL

Used when no location mapping is found.

2Location mappings

Add your sub-account Location IDs and the logo URL each should show.

3Generated code
generated-script.js
<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.

FAQ

GoHighLevel logo switcher - common questions

It's a free tool that generates a small JavaScript snippet you paste into your GoHighLevel agency custom code. The snippet reads the current sub-account (location) ID from the URL and swaps the sidebar logo to a different image for each client you map.

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.