Custom fieldsCleanupData hygiene

Delete Unused Custom Fields in GoHighLevel: Cleanup Guide

How to find duplicate and unused custom fields in GoHighLevel, check what depends on them, back up the data, delete safely, and audit many sub-accounts.

Most sub-accounts that have been live for a year carry dozens of custom fields nobody uses, plus a few duplicates that hold the same data under different names. Deleting them is simple. Deleting the wrong one is not, because the delete is hard to reverse.

This guide covers a safe order of operations in GoHighLevel itself, then what to do when you have to repeat it across many sub-accounts.

Why custom fields pile up

Duplicates and dead fields tend to come from the same few places:

Clutter has a cost. Reps scroll past dead fields on every contact record, merge tag pickers get longer, and a wrong pick sends a blank into a text or email.

Step 1: Pull a full list of fields

In the sub-account, open Settings and go to Custom Fields. As of October 2026, HighLevel's docs describe this page with a Fields tab to view and manage fields, a Folders tab for folders, and column sorting to find fields faster.

Sort by name first. Near-identical names sit next to each other, which is the quickest way to spot duplicates by eye. Then write down, for every field you suspect, its name, its field key, its type and its folder.

If you want a deeper look at how keys work, see how to find a custom field key in GoHighLevel.

Step 2: Identify duplicates

Two fields are real duplicates only if they hold the same kind of data. Check these before you call it:

  1. Same meaning? "Budget" and "Project Budget" probably match. "Budget" and "Budget Approved" do not.
  2. Same type? A text field and a dropdown for the same question are duplicates in purpose but not in structure, so merging them means moving data.
  3. Which one has the data? Keep the field that contacts actually use. Make a smart list with a condition on each field (an "is not empty" style filter) and compare the counts.
  4. Which one is referenced? The field wired into your workflows and forms is usually the keeper, even if it has the worse name.

Don't confuse custom fields with custom values. Custom values are account-wide constants, not per-contact data, and they're cleaned up separately. See custom values vs. custom fields.

Step 3: Check what depends on each field

This step prevents most cleanup disasters. Before deleting a field, look in each place it can be used:

I haven't found a single native screen that lists every place a field is used, so this is a manual check. For a handful of fields that's fine. For hundreds it's the slow part.

Step 4: Back up before you delete

HighLevel's help docs warn that deleting a custom field from the form builder removes it from all forms, surveys, and contacts where it was used. Another guide puts it more bluntly: there is no undo button. Treat deletion as permanent.

Before you delete a field that holds data:

  1. Export the contacts with that field's column included, using the contacts export.
  2. Save the list of field names, keys and types you're about to remove. If you ever have to recreate a field, you'll need the key.
  3. For duplicates, copy the data into the field you're keeping first, using a CSV import or a workflow, then confirm the counts match.

Step 5: Delete the fields

For one field, go back to Settings, then Custom Fields, and use the field's delete option. Confirm the warning.

For many fields, check for a checkbox selection and a Bulk Actions menu on the Custom Fields page. HighLevel's docs say you can select multiple custom fields using the checkbox menu and use the Bulk Actions menu to edit, delete, or move them into a different folder. That passage sits in the opportunity custom fields guide, and older community threads describe the delete option disappearing when several fields were selected. Behavior has changed over time, so test with one or two fields before you queue up a big batch.

Through the API, there's a delete endpoint for a single field: DELETE /locations/:locationId/customFields/:id. That suits scripted cleanups, and you can authenticate with a Private Integration Token for one sub-account. Script it only after you've built a reviewed list of IDs, since the API doesn't ask whether you're sure.

If a field you're keeping is messy rather than dead, move it instead of deleting it. Folders exist to group related fields to keep contact and opportunity records tidy. See organizing custom field folders in GoHighLevel.

Where the native way gets slow

The cleanup itself is quick. The audit is not.

Where Field Finder fits

Field Finder is the audit step, not the delete step. It's one of the six RGS Tools, built by a white-label GoHighLevel agency for its own sub-accounts first.

You still make the deletion decisions, and the deletes happen in GoHighLevel. Field Finder is $29/month per agency with unlimited sub-accounts, a 7-day free trial and cancel any time. You can connect the whole agency with a marketplace-app install, or a single sub-account with a Private Integration Token. RGS Tools isn't affiliated with HighLevel Inc.

A safe cleanup order

Field status What to do
Empty, no references Delete after noting the key
Has data, duplicate of a better field Copy data over, verify, then delete
Has data, no references Export, then decide with the client
Referenced in a workflow or form Fix the references first, then reconsider
Messy but needed Rename or move it to a folder

Work through the first row first. It's the lowest-risk pass and usually removes the most clutter.

Questions

Can I undo a deleted custom field in GoHighLevel?

Plan on no. HighLevel's own docs warn that deleting a field removes it from the forms, surveys and contacts where it was used. Export the data and note the field key before you delete anything.

Can you bulk delete custom fields in GoHighLevel?

HighLevel's help docs describe selecting several custom fields with checkboxes and using a Bulk Actions menu to delete or move them. The menu has changed over time, so check what your sub-account shows as of October 2026. The API also has a delete endpoint for a single field.

How do I know if a custom field is unused?

Check three things: whether any contacts have data in it, whether any workflows, forms, surveys or templates reference it, and whether a smart list filters on it. A field with no data and no references is a safe candidate.

Why do I have duplicate custom fields in a sub-account?

Usually from loading snapshots, importing contacts, or creating fields on the fly in the form builder. Each source can add a field that already exists under a slightly different name.

Features in this guide

Field Browser

Every custom field in a sub-account with its key, ID and merge tag, searchable and copyable in one click.

Sub-account Compare

Shows every field that exists in one sub-account but not the other, and any key whose type changed.

CSV Export

Exports any sub-account's fields and custom values to a CSV with keys, merge tags, IDs, types and options.

Keep reading

Field Finder

How to Compare Custom Fields Between GoHighLevel Sub-Accounts

Three ways to compare custom fields between sub-accounts in GoHighLevel, what to look for besides missing fields, and how to keep snapshots in sync.

4 min read
Field Finder

How to Find a Custom Field Key in GoHighLevel

Where GoHighLevel shows custom field keys and merge tags, how to copy them without typos, and a faster way for agencies running many sub-accounts.

5 min read
Field Finder

GoHighLevel Private Integration Token Guide: Setup and Scopes

A practical GoHighLevel Private Integration token guide: where to create one, how to pick scopes, how to call the API with it, and how to rotate it safely.

5 min read
All 6 tools, all 34 features: $149/month

Every tool above plus everything we release next. $302/month bought separately. 7 days free, cancel any time.

Start the bundle free