The GoHighLevel practice of Yotomations LLCAI development, custom software and websites at yotomations.com
New to GHL? Start here

How do I delete unused custom fields in GoHighLevel without breaking anything?

GoHighLevel has no bulk delete for custom fields yet. Here is the routine we use on inherited accounts to remove dead fields without breaking workflows.

A man sitting in front of a laptop computer
By Yaakov (Koby) Oranski, Certified GoHighLevel Admin and Partner | | 6 min read

Short answer: GoHighLevel has no bulk delete for custom fields today. You delete them one at a time under Settings, Custom Fields, or through the API from a list you have already reviewed. The safe routine is to export your contacts, find where each candidate field is used, rename it, wait about 30 days, confirm nothing has written to it, then delete. A mass delete request is on HighLevel's ideas board with the status planned, which is a label and not a release date.

Safe custom field cleanupSAFE CUSTOM FIELD CLEANUPField inventoryEvery field, exported withits fill countUsage checkForms, workflows,templates, funnelsData checkExport contacts, countfilled valuesQuarantineRename with ZZ_ prefix,move to a folderDeleteOne by one or by API after30 quiet daysStill referencedFix the reference or keepthe fieldnot referencedempty or staleno new valuesfound a referenceNothing is deleted until a second export proves that no workflow, form or integration is still writing to the field.

What GoHighLevel lets you do with custom fields today

Custom fields live at the sub-account level. You create, rename, group into folders and delete them from Settings, Custom Fields. Every delete is a single action on a single field, which is fine when you have twenty fields and painful when an inherited account has several hundred.

The request to fix this is called Be able to mass delete unused custom fields. On September 30, 2026 the ideas board showed 893 votes, 103 comments and the status planned. Planned is HighLevel's own label. It does not promise a date, and we are not guessing at one.

So if someone handed you an account with years of dead fields, the choice today is to live with them or clean them up by hand with a process that does not cause an outage.

Why deleting a custom field can break things

A custom field is not just a column. It is referenced by other parts of the account, and those references do not always warn you when the field disappears.

  • Forms and surveys that map an answer into the field. After a delete, the answer has nowhere to land.
  • Workflow conditions and update actions that read or write the field. An If/Else branch that checks a missing field can route everyone down the wrong path.
  • Email and SMS templates with the field's merge tag in the body. A message can go out with a blank where the value used to be.
  • Funnels, websites and calendars with form elements tied to the field.
  • Outside tools such as an n8n scenario, a Zapier zap or a field-service app that pushes values into the field by its key.

The values stored on your contacts go with the field, so the delete cannot be undone from inside GoHighLevel. That combination is why we never delete on a hunch. It is the same lesson as in stopping clients from breaking workflows after handoff: a small edit in the wrong place can change what a workflow sends.

The five-step routine we use on inherited accounts

On the account we inherited with 160 workflows, 242 tags and six pipelines, the custom fields were in the same state as everything else. Nobody knew which ones mattered. This is the order we work in, and it fits inside the wider 90-minute audit checklist.

  1. Inventory. List every custom field with its name, key and folder. Copy it into a spreadsheet and add three columns: filled count, where used, decision.
  2. Export contacts. Export all contacts to CSV with custom fields included. Keep the file. This is your backup and your first count of how many contacts have a value in each field.
  3. Check usage. For each field with a low or zero fill count, search the forms, surveys, workflows, templates and funnels that could reference it. Write what you find in the spreadsheet.
  4. Quarantine. Rename each candidate with a prefix like ZZ_REVIEW and today's date, and move it into a folder called Quarantine. The key does not change, so merge tags and mappings keep working. Anything that still touches the field is now easy to spot in a picker, because the name stands out.
  5. Wait, then re-export. After about 30 days, export again and compare counts. A field whose filled count went up is still being written to by a form, a workflow or an outside tool. Leave those alone and trace the source. Delete the rest.

The second export is the step people skip, and it is the one that catches the integration nobody remembers.

What to do with each kind of field you find

What you foundWhat to do
Empty, not referenced anywhereQuarantine, wait, delete
Filled on old contacts only, not referencedKeep the export as the record, quarantine, delete
Duplicate of a field in active use (two versions of Lead Source)Move the values to the good field first, repoint forms and workflows, then quarantine the duplicate
Referenced in an inactive workflowDecide whether the workflow itself is dead; clean up the workflow first
Count rose during the waitSomething still writes to it; find the source before any delete
Used by an outside appAsk the owner of that integration; do not guess

Bulk cleanup with the API and n8n

Once you have a reviewed list of field IDs marked for deletion, clicking through each one is the slow part. The HighLevel API has endpoints for listing and deleting custom fields at the location level, so a short n8n workflow can read your approved sheet and delete each ID in turn, logging the result. Check the current API documentation for the scopes and the exact endpoint, because HighLevel changes these.

Two rules keep this safe. The script deletes only IDs that appear on the reviewed sheet, never everything matching a pattern. And it runs after the 30-day quarantine, not before. If you are not comfortable with webhooks and API keys, this is the part worth handing off, because a script with the wrong list does a lot of damage quickly.

Stop the pile from growing back

Dead fields pile up because nobody owns the naming. Pick a convention before the next build: one prefix per source system, no two fields for the same idea, and a short note in the field's description saying what writes to it. On agency accounts that clone a snapshot into many sub-accounts, this matters even more, since one bad field multiplies across every location. We cover the rollout side in snapshot updates across sub-accounts.

What to do when native bulk delete ships

If HighLevel releases mass delete, keep the parts of this routine that protect you: the contact export, the usage check and the quarantine wait. A faster delete button does not tell you which fields are safe. Retire the n8n deletion script and the manual clicking, and keep the inventory spreadsheet as a record of what was removed and when.

What we would do first

We would run the inventory and usage check on the whole account, not just the fields, because dead custom fields usually travel with dead tags, dead workflows and pipelines nobody opens. That is the work in our GoHighLevel account audit, which starts at $497 and ends with a written list of what to keep, fix and remove. If you want to see where your account stands first, the GoHighLevel health check is free. Yotomations is independent, and GoHighLevel is a trademark of HighLevel Inc.

Yaakov (Koby) Oranski

Yaakov (Koby) Oranski, Founder and CEO of Yotomations

Certified GoHighLevel Admin and Partner. Koby designs CRM migrations, two-way integrations, billing systems and AI agents for service businesses, and writes from the engagements described on this site.

Published

Frequently asked

Can you bulk delete custom fields in GoHighLevel?

Not from the settings screen as of today. You delete each field individually, or you script the deletions through the HighLevel API using a list you have already reviewed. A mass delete request is on the ideas board with the status planned.

What happens to contact data when I delete a custom field in GoHighLevel?

The field and the values stored in it are removed from your contacts. That is why you export contacts to a spreadsheet first, so you can restore a value by hand if someone turns out to need it.

How do I know if a custom field is still used in a workflow?

Open the workflows, forms, surveys, templates and funnels that could touch it and look for the field in conditions, update actions and merge tags. On a large account, compare two contact exports about a month apart: if a field's filled count went up, something is still writing to it.

Is it a problem to just leave hundreds of unused custom fields?

It will not break anything, but it slows every person who builds in the account. Every field picker, filter and workflow action has to be scrolled through, and people start creating duplicates because they cannot find the original.

Keep reading

Is this happening in your account?

Book a 30-minute call. We look at the account live and tell you what is broken, what we would fix first and what it would cost.

No pitch deck. We look at your current setup and tell you what we would do and what it would cost.

Need more than GoHighLevel? Yotomations, our parent company, also builds AI agents, custom software and websites.