A lead submits a form, but your team still has to ask which service they need. Another customer has two projects, and both budgets end up in the same place.
GoHighLevel custom fields help you store business-specific information where your team can use it. A useful setup starts with deciding what each answer means, which record owns it, and what should happen next.
This guide covers seven setup steps, a practical service-interest example, and checks for forms, workflows, and personalized messages.

Table of Contents
What Are GoHighLevel Custom Fields?
GoHighLevel custom fields store information beyond standard details such as name, email, and phone.
Examples include a person’s preferred contact method, a project’s budget, or a requested service. Supported uses depend on the field’s object and type.
Think of a custom field as a clearly labeled place for an answer. Creating that place does not fill it with data or decide how your team should use it.
Set Up GoHighLevel Custom Fields in 7 Steps
1. Start with the Decision the Field Will Support
Write down the question and the action it should inform.
For example:
“Which service interests this contact, so the team can prepare the right follow-up?”
That is more useful than adding a field called “Extra Information.”
For every proposed field, decide:
- Who supplies the answer?
- Who checks or updates it?
- Which process uses it?
- What should happen when it is blank?
Start with a small set. A field nobody maintains can make a record look complete while giving the team unreliable information.
2. Choose Contact or Opportunity
Contact fields belong to a person. Opportunity fields belong to a particular deal.
| Information | Suggested object | Reason |
|---|---|---|
| Preferred contact method | Contact | Describes the person’s preference |
| Current service interest | Contact | Suitable when tracking one current intake preference |
| Project budget | Opportunity | Can differ between deals |
| Target project start date | Opportunity | Relates to a particular project |
These are planning examples, not required defaults.
Imagine one customer discussing a website rebuild and a separate CRM project. If you store both project budgets in one contact field, the single stored value cannot clearly represent both deals.
HighLevel states that a field’s object cannot be switched after creation. If you choose the wrong object, create a field under the correct one. See its custom field usage guide.
Choose the object before creating your GoHighLevel custom fields.
3. Select a Field Type That Matches the Answer
Choose structured choices when answers should be consistent, and text when a fixed set of options would not fit.
| Answer you need | Suggested field type |
|---|---|
| One service from a defined list | Single-select dropdown |
| Several services | Multi-select dropdown |
| Short reference or description | Single line |
| Longer explanation | Multi line |
| Quantity | Number |
| Currency amount | Monetary |
| A specific date | Date Picker |
For an illustrative Service Interest dropdown, your options might be CRM Setup, Workflow Repair, and Funnel Build.
Avoid using a free-text box when staff need to filter by a small, controlled list. Answers such as “workflow,” “automation repair,” and “fix workflows” may describe similar needs but require extra interpretation.
Use language your customers and team understand. A field should make the next decision easier.
4. Create and Organize the Field
Open the correct sub-account.
- Go to Settings → Custom Fields.
- Select the intended object.
- Open Fields and search for an equivalent existing field.
- Choose Create field or the add-field control shown.
- Select the field type.
- Enter a clear name and configure its options.
- Choose a suitable folder and review the preview.
- Select Create custom field or Save.
Use a folder such as Lead Qualification to group related GoHighLevel custom fields.
Check the generated field key before referencing it elsewhere. Do not assume a key from another account matches this one.
HighLevel’s custom field management guide covers field creation, types, folders, and keys.
5. Collect the Answer Through a Form
For this example, create Service Interest as a Contact field.
Open Sites → Forms → Builder and edit the intended form. Use Add Object Fields to find the existing field and add it to the form.
Confirm that you selected the correct object and field, especially if similar names exist.
Review the visible label and choices, then save the form. HighLevel’s form and survey field guide explains adding and editing fields.
Submit the actual published form using a contact you control. Open the resulting contact record and check the saved answer.
For GoHighLevel custom fields, a form looking correct is only the first check. The answer also needs to reach the intended record.
If the information belongs to a deal, plan how it will reach the appropriate opportunity. Do not assume that a contact-field answer automatically populates an opportunity field.
6. Use the Stored Value in a Workflow
Once the form saves the answer correctly, decide how the workflow should use it.
For the Service Interest example, an If/Else action could route contacts into these illustrative paths:
| Stored answer | Example next action |
|---|---|
| CRM Setup | Notify the team responsible for CRM consultations |
| Workflow Repair | Prepare a workflow review task |
| Funnel Build | Notify the funnel specialist |
| Blank or unmatched | Create a clarification task |
Select the actual field and supported comparison operator in the condition editor. Choose dropdown options from the available controls rather than guessing their internal identifiers.
HighLevel’s If/Else guide explains routing based on stored information.
If the workflow needs to write a contact field, use Update Contact Field. Its update action replaces the stored value when that step runs; its clear action removes a custom field’s value. See the official Update Contact Field guide.
Do not overwrite a submitted answer with a fixed default before the branch reads it.
7. Test the Complete Process
Test GoHighLevel custom fields from the point of collection through the final action.
| Test | Expected result |
|---|---|
| Submit each service option | The selected answer appears on the intended contact |
| Inspect the workflow | The contact follows the matching branch |
| Leave an optional answer blank | The clarification path handles it |
| Submit another answer for the same contact | The observed update behavior matches your intended process |
| Check a personalized message | The correct stored value appears |
| Test without a stored value | The message remains understandable |
Use test records and communication details you control.
Check more than one answer. Testing only CRM Setup does not establish that Workflow Repair or the blank case works.
If the same person can make several simultaneous inquiries, review whether a contact-level field is sufficient. The test should reflect how your business actually handles repeat customers.
GoHighLevel Custom Fields vs. Custom Values
These features solve different problems.
| Feature | Stores | Example |
|---|---|---|
| Custom field | Information associated with an individual record | A contact’s service interest |
| Custom value | Reusable information that stays consistent wherever referenced | Your support email or main booking URL |
Use a custom field when the answer can differ between records. Use a custom value for shared information you want to reuse.
HighLevel’s Custom Values guide explains the distinction.
For example, the customer’s requested service belongs in a field. Your standard support link can be a custom value.
Keeping these roles clear helps prevent customer-specific information from being treated as a shared business setting.
Use GoHighLevel Custom Fields in Messages
Insert the field using the editor’s Merge Field or Custom Value picker.
Choose the actual field rather than manually typing a token based on its display name. A valid-looking token can still produce no useful result if the stored value or required record context is unavailable.
HighLevel’s merge field guide explains field insertion and context.
Here is an illustrative internal notification:
Subject: New inquiry — [Service Interest]
Contact: [Contact Name]
Requested service: [Service Interest]
Next action: Review the inquiry and prepare the relevant consultation.
The square brackets are placeholders. Replace them with supported fields from the picker.
For a customer message, review the whole sentence:
“Thank you for your interest in [Service Interest].”
If the field is blank, that wording becomes awkward. Handle the missing-value case with appropriate fallback copy or a separate workflow path supported by your setup.
Common GoHighLevel Custom Fields Mistakes
Creating Several Fields for the Same Information
“Service Needed,” “Service Interest,” and “Requested Service” can become three competing sources.
Search before creating a field. Agree on which one the form, staff, filters, and workflow will use.
Storing Deal Details on the Person Without Planning for Repeat Business
A single contact field may be suitable for one current preference. It can be confusing when the customer has several active projects.
Decide which information needs to remain separate for each deal.
Changing Fields Without Checking Dependencies
Before renaming, replacing, clearing, or deleting a field, review where it is used.
Check forms, messages, integrations, saved filters, and workflows. Update the affected process deliberately and test it again.
Collecting Answers That Do Not Change Anything
Every extra question asks the customer or staff member for effort.
Keep fields that support a decision, a service requirement, or a useful record. Remove unnecessary questions from the intake process after reviewing their purpose.
Frequently Asked Questions
Can I Change a Contact Field into an Opportunity Field?
HighLevel says the field’s object cannot be changed after creation. Create the correct field and plan any necessary data migration and dependency updates.
Why Is My Field Missing from a Form or Workflow?
Check its object and field type, then confirm the feature supports them. Also verify that you are working in the correct sub-account.
Can a Workflow Update GoHighLevel Custom Fields?
Yes. Update Contact Field can write supported contact fields. For deal information, use the appropriate opportunity action and identify the intended opportunity.
Why Is a Custom Field Blank in My Message?
Check that the selected record has a value, the token references the intended field, and the message has the required record context.
Need Help Setting Up Your Custom Fields?
If you want help planning GoHighLevel custom fields, contact HL Xperts to discuss your records, forms, and follow-up process.
To organize contacts using the information you collect, read GoHighLevel Smart Lists: 6 Easy Setup Steps.





