Custom value blank in a GoHighLevel email or text? How to fix it
By SHAJ Studio. Checked against HighLevel's help center and tested in a test account in October 2026.
The short answer
A custom value shows blank when nothing is stored in it for that sub-account. Open Settings, then Custom Values and fill in the empty ones. To show fallback text in an email when a value is empty, put an if/else around the tag (see How to add a fallback below).
What a blank custom value does
A custom value is a piece of text you store once in a sub-account, such as your opening hours, a booking link or an offer. You drop it into messages with a merge tag. If the value is empty when the message is sent, the tag is replaced with nothing. The message still goes out, with a gap where the value should be: "Book now at ." or "Open until ." HighLevel's help center describes the same for any merge field with no saved data. In our test, an email written in Conversations with "Hours: [{{ custom_values.hours_of_operation }}] end" and an empty value arrived as "Hours: [] end", with no warning before sending.
Why a custom value is empty
- It was created and never filled in. The name exists in the list, but the value was left empty.
- A snapshot was loaded. In our test, loading a snapshot into an existing sub-account did not fill in a custom value that was already there and empty. HighLevel reported "No conflicts found" and the value stayed empty. We did not test a new sub-account created from a snapshot, so check its custom values too.
- The tag names a value that does not exist. A merge tag that points at a custom value that was deleted or never created has nothing to fill it.
- It holds placeholder text. A value that still says something like "Your offer here" is not blank, but it goes out just as wrong.
Find it by hand in HighLevel
- Open the sub-account, then Settings, then Custom Values.
- Go down the list and look for rows with nothing in the value column. Look for placeholder text at the same time.
- Fill in each value that your messages use. Open the three-dot menu next to it and choose Edit. If your account shows the newer layout, edit it in the table.
- Find out which values matter: open your email templates and workflows and look for merge tags that start with
custom_values. - To show fallback text when a value is empty, wrap the tag in an if/else (see How to add a fallback below). In our test, the custom value picker in a Conversations email had no fallback option.
- Send a test email to yourself and read it in your inbox before it goes to anyone else.
HighLevel's article on fallback text describes emails and does not mention texts. For texts, the safe fix is a filled-in value.
How to add a fallback in an email
In our test, in an email written in Conversations, this worked. Type it into the email body:
{{#if custom_values.hours_of_operation}}{{custom_values.hours_of_operation}}{{else}}our office hours{{/if}}
With the value empty, the email arrived as "Hours: [our office hours] end". Replace hours_of_operation with the name of your own custom value and our office hours with the text you want shown.
Do not write {{ custom_values.x | default: "..." }}. In our test the send failed with a template parser error and nothing was sent.
Not tested: texts, workflow emails, templates and campaign emails. Send yourself a test first.
Stop it happening again
- Keep a short list of the custom values your templates and workflows use. Fill every one when you create a sub-account.
- After you load a snapshot into any sub-account, new or existing, check Settings, then Custom Values before any workflow can send.
- In our test, loading a snapshot again did not fill custom values that were already empty in an existing sub-account, so check each sub-account.
- Check again when you add a template or change an offer.
Catch it across every sub-account
By hand, this works for one sub-account. For an agency with many, Watchtower checks every sub-account each day and shows empty or placeholder custom values on its dashboard, with a Fix link that opens the sub-account and the exact setting where one exists. A morning email lists what changed. It is read-only: it never changes anything in a client account. See what that email looks like in the sample digest. Or read how Watchtower works.
Questions
Why does my custom value show blank in an email?
Nothing is stored in it for that sub-account when the message is sent. Open Settings, then Custom Values and fill it in.
Can I set a fallback for a custom value in an email?
Yes, with an if/else around the tag. In our test, in a Conversations email, it showed the fallback text when the value was empty. The custom value picker had no fallback option, and a "| default:" fallback made the send fail. We did not test texts, workflow emails, templates or campaign emails. See How to add a fallback above for the exact line.
Does a snapshot copy what is typed into a custom value?
In our test, no. Loading a snapshot into an existing sub-account left an empty custom value empty, and HighLevel reported "No conflicts found". We did not test a new sub-account created from a snapshot, so check its custom values.
How do I find empty custom values across all my clients?
By hand, open each sub-account and go through its custom values. Watchtower does this for every sub-account each day and shows the empty ones on its dashboard, with a morning email of what changed.