Documentation
Everything you need to get GHLThemer running on your GoHighLevel pages — from installation to advanced customization.
Quick Start
GHLThemer works by delivering a CSS file to your GHL pages via a tiny 2-line embed script. No GHL API, no OAuth — just CSS. You can be live in under 5 minutes.
Create an account
Add a client
Add a site
Design your theme
Paste the embed code into GHL
Installing the Embed Code
The embed code is two script tags. The first sets your site token; the second loads the GHLThemer script.
<script>window.__THEME_SITE__ = 'YOUR_SITE_TOKEN';</script>
<script src="https://ghlthemer.com/theme.js"></script>Replace YOUR_SITE_TOKEN with the token shown on your site card. You can also click the token chip to copy it directly.
Where to paste it in GoHighLevel
- Open GoHighLevel and go to your Funnel or Website.
- Click Settings (gear icon at the top).
- Scroll to Custom Code → paste into the Head Tracking Code box.
- Save and reload your funnel page — the theme is now live.
How the script works
When a visitor loads your GHL page, theme.js:
- Temporarily hides the page (prevents style flash).
- Fetches your compiled CSS from
ghlthemer.com/api/css/[token]. - Injects it into the page as a
<style>tag. - Shows the page — all within milliseconds.
A built-in 3-second safety timeout ensures your GHL page always renders even if GHLThemer is temporarily unreachable.
Multiple sites per client
Each site has its own token. If a client has multiple funnels, add a separate site for each one. They all share the same theme — designed once in the Theme Editor.
Theme Editor Reference
The Theme Editor is where you design your client's look. Changes are compiled into CSS on save and delivered to all sites under that client within 30 seconds.
Colors
| Field | Description |
|---|---|
| primary_color | Main brand color — buttons, links, accents. |
| secondary_color | Supporting color for secondary elements. |
| background_color | Page background. |
| text_color | Body text color. |
| navbar_bg | Navigation bar background. |
| navbar_text | Navigation bar text and icon color. |
| button_text_color | Text color inside buttons. |
| input_border_color | Border color on form input fields. |
| link_hover_color | Color applied to links on hover. |
Typography
| Field | Description |
|---|---|
| heading_font | Google Font name for headings (h1–h6). |
| body_font | Google Font name for body text and paragraphs. |
| font_weight | Default font weight (400, 500, 600, 700). |
Layout
| Field | Description |
|---|---|
| border_radius | Corner rounding: none, sm, md, lg, full. |
| button_style | Button shape preset: solid, outline, ghost. |
| section_padding | Spacing above/below page sections. |
Custom CSS
The built-in CSS editor (powered by CodeMirror) lets you write arbitrary CSS that gets appended after all auto-generated styles. Use it for overrides that the theme fields don't cover.
CSS Priority order (highest wins):
- CSS variables from theme fields
- Auto-generated styles
- Global patch (applied by GHLThemer admin across all users)
- Your custom CSS
- Emergency CSS (highest priority override)
CSS Snippets
The Snippets panel offers 20+ pre-built CSS blocks grouped by category (forms, buttons, navbar, etc.). Toggle any snippet on to add it to your theme instantly — no manual typing required.
Theme History
Every time you save, a snapshot is stored. The History drawer (clock icon) shows your last 10 saves — click Restore on any entry to roll back without losing your current version.
Agency & White-label
The Agency plan is built for teams managing themes across multiple GHL accounts. It adds team collaboration, a client portal, and white-label branding.
Team Members
Agency owners can invite up to 5 team members from Dashboard → Team. Each member gets their own login and can manage clients and themes under the shared workspace. The agency owner is responsible for all activity by their team.
Client Portal
You can grant your end-clients access to a white-labelled portal where they can view and (optionally) edit their own theme. Portal access is managed per-client from the client detail page.
Portal permission levels:
- View only — client can see their theme but not change it.
- Can edit — client can modify colors, fonts, and custom CSS.
- Can view theme — granular toggle for specific sections.
White-label Branding
The client portal presents GHLThemer under your own branding — your logo, your domain, your company name. Clients never see the GHLThemer name unless you choose to show it.
Plans & Limits
GHLThemer offers four plans. Each plan enforces limits on the number of clients, sites per client, and access to advanced features.
| Field | Description |
|---|---|
| Free | Limited clients & sites. No custom CSS editor. Good for evaluating. |
| Basic | More clients and sites. Custom CSS enabled. |
| Pro | Higher limits, analytics dashboard, theme history. |
| Agency | Unlimited clients & sites, team members (up to 5), client portal, white-label. |
For current pricing and exact limits, see the Pricing page.
Free Trial
New accounts get a 7-day free trial of all Pro features automatically — no credit card required. After the trial, the account reverts to the Free plan unless you upgrade. Day 5, 6, and 7 reminder emails are sent so you have time to decide.
Payment Options
International payments are processed by LemonSqueezy. Pakistan-based payments are processed by Safepay. Your payment gateway is selected automatically based on your country at signup.
Troubleshooting
Theme is not loading on my GHL page
- Confirm the embed code is in the Head Tracking Code section, not the body.
- Check the site token in the first script tag matches exactly what's shown in your GHLThemer site card.
- Open your browser DevTools → Network tab → filter for
api/cssand confirm the request returns 200. - Make sure you saved your theme in the editor at least once.
I see a white flash before the page loads
- The embed must be in the head, not the body. If it's in the body, the page renders before the script runs.
- Verify no other scripts on the page are delaying execution.
My custom CSS is not applying
- GHL pages often use high-specificity selectors. Add
!importantto rules that are being overridden. - Use browser DevTools to inspect which rule is winning and match or increase specificity.
Theme shows old styles after I save
The CSS endpoint caches for 30 seconds. Hard refresh your GHL page (Ctrl+Shift+R or Cmd+Shift+R) or wait 30 seconds and reload normally.
My plan features are not unlocked after payment
- Wait 1–2 minutes for the payment webhook to process.
- Refresh the billing page — it will show your active plan.
- If still on the wrong plan after 5 minutes, open a support ticket from the dashboard.
Portal invite email was not received
- Ask your client to check their spam folder.
- Confirm the email address is correct in the portal invite dialog.
- You can re-send the invite from the portal management page.
FAQ
Is GHLThemer an official GoHighLevel product?
No. GHLThemer is an independent product and is not affiliated with, endorsed by, or a marketplace application of HighLevel Inc. It works by injecting CSS — no GHL API access or OAuth is used.
Does GHLThemer require access to my GHL account?
No. GHLThemer never asks for your GHL credentials, API key, or OAuth token. The only thing that touches your GHL account is the 2-line embed code you paste yourself.
What happens if GHLThemer is temporarily down?
The theme.js script has a built-in 3-second safety timeout. If GHLThemer cannot be reached, the script cancels and your GHL page loads normally — without any theme, but without breaking either. We target 99.9% uptime for the CSS delivery endpoint.
Can I use one theme across multiple GHL funnels?
Yes. All sites under a client share the same theme. Add a site for each funnel or page group and paste the embed code with each site's unique token. When you update the theme, all sites update simultaneously.
Can I cancel my subscription at any time?
Yes. Cancel any time from the Billing page in your dashboard. Your plan stays active until the end of the current billing period, then reverts to Free. No cancellation fees.
Is my data safe?
All data is stored in Supabase (PostgreSQL) with row-level security enforced at the database layer. Every user can only access their own data. No GHL credentials are ever stored.
I have a question not answered here.
Open a support ticket from your dashboard (log in first) or email us at support@ghlthemer.com.