Affiliate disclosure: This page contains affiliate links. If you sign up through them we may earn a commission at no extra cost to you.
TL;DR — Custom fields store per-contact data GoHighLevel doesn't track by default (policy number, membership tier, move-in date). Create them at Settings → Custom Fields, choose a type (text/number/date/dropdown/checkbox/file), and they become available as merge tags in messages, fields on forms, and conditions in workflows. Different from tags (on/off labels) and from custom values (account-wide constants, not per-contact). Use folders + naming conventions once the list grows.
What are custom fields?
Custom fields hold contact-specific data GoHighLevel doesn't track out of the box. A gym might add "Membership Tier"; an insurance agency might add "Policy Number" and "Renewal Date"; a real estate agent might add "Budget Range" and "Preferred Area." Unlike tags, which are simple on/off labels, custom fields carry an actual value per contact that you can display, insert into messages, or act on.
How to create one
- Go to Settings → Custom Fields (available at the sub-account or agency level).
- Choose the object it applies to: Contact, Opportunity, or Company.
- Pick a field type: single line text, number, date, dropdown/select, checkbox, radio, or file upload.
- Name it clearly and save — it's immediately available on contact records, in the form/survey builder, and as a merge field.
Custom fields vs custom values
| Custom fields | Custom values | |
|---|---|---|
| Scope | Per-contact (varies by person) | Account-wide (same for everyone) |
| Example | Policy Expiry Date, Membership Tier | Business phone number, booking link |
| Use case | Personalization, segmentation, workflow logic | Reusable constants across every message/funnel |
Both insert into messages the same way, via merge tags — the difference is whether the value changes per contact (field) or stays fixed (value). Mixing them up is a common early setup mistake.
Using fields to trigger workflows
This is where custom fields earn their keep. A workflow can branch or fire based on a field's value: only send a renewal reminder if "Policy Expiry Date" is within 30 days, route a lead to a different pipeline stage based on a "Budget Range" dropdown captured on a form, or personalize a message with "{{contact.membership_tier}}" instead of writing a generic blast. Fields turn static data into active automation logic, the same way tag triggers do for behavioral signals.
Keep the field list usable: group related fields into folders (by industry snapshot, by form, by use case) and apply a naming convention as the list grows — the same discipline recommended for tags. An unorganized field list with 80+ entries and no structure becomes a liability fast, especially across multiple sub-accounts or a resold snapshot.
Try GoHighLevel Free →30-day trial · custom fields + workflows + CRM in one platform
Frequently asked questions
What are custom fields?
Per-contact data GoHighLevel doesn't track by default — policy numbers, membership tiers, dates. Different from tags (on/off labels).
How do I create one?
Settings → Custom Fields → choose Contact/Opportunity/Company → pick a type → name and save.
Custom fields vs custom values?
Fields vary per contact; values are account-wide constants (like your phone number) reused everywhere.
Can fields trigger workflows?
Yes — branch or fire workflows based on a field's value, like a renewal date or a form dropdown answer.
Is there a field limit?
No published hard cap, but use folders + naming conventions once the list grows or it becomes unmanageable.