GHL Custom Values — The Playbook Most Operators Skip
Custom values are the most overlooked primitive in GoHighLevel. What they do, the rule of three that decides when to use one, and the four ways operators get them wrong.
Forget the workflow builder for a second. The most underused thing in your GoHighLevel account isn’t an automation, a trigger, or an AI feature — it’s a text box in Settings that a lot of operators have never opened.
Custom values. They don’t appear on the contact record. They don’t show up in a pipeline. They generate no dashboard widget and no notification. Which is exactly why they get skipped, and exactly why the accounts that skip them turn into find-and-replace nightmares about eight months in.
This is the short version of what they are, when to reach for one, and the four ways operators get them wrong.
The primitive that doesn’t live on the contact
A custom value is an account-wide constant — one value, set once in Settings, referenced anywhere you can type text.
That’s the whole concept. The reason it confuses people is that GoHighLevel’s other two data primitives both live on the contact, and custom values don’t. Tags sit on the contact and describe state. Custom fields sit on the contact and store data. Custom values sit in account settings and store a string that’s identical for every contact you’ll ever have.
You reference one with {{custom_values.booking_link}} inside an email, an SMS, a workflow step, a funnel page. GoHighLevel swaps in whatever the value currently holds at send time.
If the three-way distinction is still fuzzy, the tags vs custom fields vs custom values decision tree walks the whole framework. The one-line version: tags for state, custom fields for data, custom values for constants.
The rule of three
Here’s the diagnostic question that settles almost every case:
Does this piece of text appear in three or more templates or workflows, and could it conceivably change someday?
Both halves have to be true. If yes, make it a custom value. If either half is no, just type it.
“Could it conceivably change” is the half people underweight. Your booking link feels permanent right up until you rebuild your calendar. Your business address feels permanent right up until you move. Your offer name feels permanent right up until marketing decides “Strategy Session” should have been “Discovery Call” all along.
You’ve probably already got two or three of these sitting hardcoded in a dozen templates. Most operators do.
The swap that takes ten seconds
Here’s the version I ran on this site’s own GoHighLevel account, which is small enough to be honest about and specific enough to be useful.
The OP Skills location runs on three custom values: the lead-magnet PDF URL, the affiliate link, and the reply-to email address. All three are referenced across a five-email nurture sequence.
At the end of July, the affiliate reference changed — opghl became ssf. Every email in that sequence points at that link.
I open Settings, click Custom Values, edit one row, save. Total elapsed time: under a minute. Every email in the sequence — including the ones already queued to fire for contacts mid-sequence — now carries the correct link.
That’s a small example. Five templates, not fifty. But the arithmetic scales in a direction that should worry you: if that same link had been pasted directly into each email, it’s five manual edits, five chances to miss one, and no way to know you missed one until a commission doesn’t land. Multiply by an account with thirty templates and you can see the shape of the problem without me having to dramatise it.
Four ways operators get this wrong
The failure modes are consistent, and none of them announce themselves.
Hardcoding the booking link
The single most common one. It works fine — until you rebuild the calendar. Then it's a find-and-replace across every template you've ever written.
Using a value where a field belongs
Someone stores "client industry" as a custom value. It works for one contact and is wrong for every other. Per-contact data is always a field.
Creating them and never using them
The value exists in Settings. The templates still have the string typed out. A custom value nobody references is decoration.
Naming them unreadably
value_2, link3, new_one_final. Six months later nobody — including you — knows which is which.
The naming one deserves a sentence of its own, because it’s the one that compounds quietly. Name them the way you’d name a variable you expect a stranger to read: booking_link, office_address, email_signature. Lowercase, underscores, no version numbers. If a VA has to guess what a value holds, the naming failed.
The five worth setting up this afternoon
If you’re starting from a bare account, these five cover most of what a working setup needs:
- Booking link — the URL people click to schedule. Changes every time you rebuild a calendar.
- Business address — appears in your email footer for compliance reasons, and it’s exactly the thing that changes when you move.
- Email signature — your name, title, and contact block. One edit when your title changes.
- Primary offer name — “Strategy Session” today, something else after the next positioning meeting.
- Brand or sub-account name — the one that matters most if you’re white-labelling anything.
That’s it. Five values, maybe fifteen minutes of setup, and you’ve eliminated the majority of the find-and-replace work that a rebrand would otherwise create.
Bear with me on the next bit, because this is where it stops being a tidiness exercise and starts being money.
Where this gets expensive — SaaS Mode
If you’re reselling GoHighLevel, custom values stop being an account-hygiene concern and become a provisioning concern.
Every snapshot you clone into a new client sub-account inherits the custom-value structure you built into it. Build the snapshot properly and client onboarding becomes: clone, fill in five values, done. Build it sloppily — the booking link typed directly into nine templates — and every single client deployment inherits nine manual edits.
At three clients that’s an annoyance. At forty it’s a part-time job you didn’t hire for. The SaaS Mode reseller model lives or dies on how little manual work each new sub-account requires, and the custom-value layer is a meaningful chunk of that number.
Worth knowing before you commit to the plan tier, too — the real cost of running GoHighLevel looks different when onboarding takes twenty minutes instead of two hours.
Where to start
Open Settings → Custom Values in whatever account you’re in right now. Look at what’s there.
Then open your three most-used email templates and read them for repeated strings. Any URL, address, or brand name that appears in all three is a custom value you haven’t made yet. Make it, swap the references, and you’re done in under half an hour.
The text box in Settings nobody opens is the one that decides whether your next rebrand costs you ten seconds or a lost weekend. Go open it.
Free PDF · No signup tricks
Free: The GHL Snapshot Library
7 battle-tested GoHighLevel workflows you can steal today. No fluff, no upsell.
Delivered to your inbox in 60 seconds. Unsubscribe anytime.
Keep reading