Setting up a new client often means 30, 50 or 100 custom fields, and HighLevel's settings page makes you create them one at a time. If you want to bulk create custom fields in GoHighLevel, you have two native routes (snapshots and the API) and a few planning steps that save you from cleanup later. This guide covers all of it.
Plan the field list first
Whatever method you use, a short planning pass prevents most of the mess we see in inherited sub-accounts.
- Pick the object for each field. Contact or opportunity. HighLevel doesn't let you switch a field's object after creation.
- Pick the type. Text, large text, number, monetary, date, phone, dropdown (single or multiple), checkbox, radio, file upload and so on. The type can't be changed later either.
- Write final names. The key is generated from the name, so "Monthly Rev (new)" becomes an awkward key you'll be typing for years.
- Group by folder. Decide folders now, like Application, Documentation and Submissions.
- List options for choice fields. Dropdown, checkbox and radio fields need their options.
- Check what already exists. Compare against the current field list so you don't create duplicates. Our compare guide covers how.
A simple sheet with columns for name, object, type, folder and options is enough.
Creating fields one at a time (the baseline)
For reference, here's the native path for a single field, as of October 2026:
- Go to Settings, then Custom Fields.
- Choose the object at the top.
- On the Fields tab, click to create a field.
- Pick the type, enter the name, choose a folder and add options if needed.
- Check the live preview and save.
That's roughly a minute per field once you're fast. Fifty fields is most of an hour, and choice fields with long option lists take longer.
How to bulk create custom fields in GoHighLevel natively
Option 1: Snapshots
If you already have a sub-account with the right fields, a snapshot is the cleanest route. Build the fields once in a template sub-account, create a snapshot, and load it into each new client. The fields arrive with the same names and keys every time.
The limits: you still have to build the template by hand once, and snapshots bring everything else in the template too. Several agencies on HighLevel's ideas board also report that fields imported through snapshots can be hard to edit or delete afterward, so keep the template clean.
Option 2: The Custom Fields API
For a one-off bulk build, the API is the most direct. With a token that has locations/customFields.write:
POST https://services.leadconnectorhq.com/locations/{locationId}/customFields
Authorization: Bearer <token>
Version: 2021-07-28
Content-Type: application/json
{ "name": "Monthly Revenue", "dataType": "MONETORY", "model": "contact" }
A few notes from building this ourselves:
modeliscontactoropportunity.dataTypeuses HighLevel's API names, such asTEXT,LARGE_TEXT,NUMERICAL,MONETORY(that spelling is HighLevel's),DATE,PHONE,SINGLE_OPTIONS,MULTIPLE_OPTIONS,CHECKBOX,RADIOandFILE_UPLOAD.- Choice fields take an
optionsarray. - To put the field in a folder, pass the folder's ID as
parentId. - The response includes the generated
fieldKey, so save it. - Space your requests out. HighLevel documents a burst limit of 100 API requests per 10 seconds.
Loop over your planning sheet with a script, a Make or Zapier scenario, or Postman's collection runner. The Private Integration token for a single sub-account is covered in our token guide.
A sample planning sheet
Here's what a few rows look like for a funding broker's application folder:
| Name | Object | Type | Folder | Options |
|---|---|---|---|---|
| Business Start Date | Contact | Date | Application | |
| Monthly Revenue | Contact | Monetary | Application | |
| Industry | Contact | Dropdown (single) | Application | Construction, Retail, Trucking, Restaurant |
| Bank Statement 1 | Contact | File upload | Documentation | |
| Lenders | Opportunity | Checkbox | Submissions | Lender A, Lender B, Lender C |
Whichever method you choose, this sheet becomes your documentation. Add a column for the generated key once the fields exist, and you have the reference your workflow builders will ask for.
After the build: checks worth doing
- Open Settings, then Custom Fields and spot-check types and folders.
- Copy the generated keys into your build doc. You'll need them for forms, workflows and webhooks.
- Test one form submission end to end so you know the fields are mapped.
- Alphabetize or tidy folders if the list is long. See organizing custom field folders.
Where the native way gets slow
Snapshots are great for repeatable builds but don't help with a client's one-off list. The API works but asks you to write and maintain a script, look up folder IDs, and handle duplicates and rate limits yourself. Clicking through Settings is the fallback, and that's the afternoon everyone wants back.
How Sub-Account Manager handles it
Sub-Account Manager's bulk field creator is the paste-a-list version of the API method:
- Connect your agency once, or one sub-account with a token.
- Pick the sub-account, the object and a folder.
- Paste your field names, one per line, and set a type for each. Add options for choice fields.
- Dry-run it to see what will be created.
- Build. Fields that already exist with the same name are skipped and shown in the report.
Contact and opportunity fields can be created in one run, and every run ends with the field keys and merge tags, ready to copy or download as CSV. If you need to add options to a choice field later, the dropdown option manager handles that without opening each field.
If you build one sub-account a quarter, the API or a snapshot is plenty. If onboarding is weekly, pasting a list is the faster habit.
Questions
Can you bulk create custom fields in GoHighLevel?
Not from the Custom Fields settings page, which creates one field at a time. The native ways to add many at once are loading a snapshot that already contains them, or calling the Custom Fields API in a loop.
How is the custom field key created?
When you create a field through the location Custom Fields endpoint, HighLevel generates the key from the field name. Plan your names before you build so the keys come out clean.
What happens if I create a field that already exists?
HighLevel can end up with two similar fields, often with a numbered key. Check the existing list first, or use a tool that skips fields that already exist.