# How to find unused Salesforce fields, and prove they are safe to remove.

> Finding unused fields with SyncOnAI 360 means reading the dependency graph for references from code, automation, validation and layouts, checking live how many records hold a value, and calling a field unused only when the evidence is complete. Removal then ships as a proposal with checks, validation and approval.

Source: https://synconai360.com/use-cases/unused-fields

## Key facts

- **0**: Fields called unused without complete evidence
- **Live**: Record counts per field
- **1**: Proposal path for removal
- **Every**: Unknown result explained

## Why unused fields never get deleted

Every org has hundreds of fields that look unused. Nobody deletes them, because a field that looks unused might feed an integration, a report or a Flow nobody remembers.

- **Unprovable.** No reference in Setup is not proof of no use.
- **Data still there.** A field nobody references may still hold years of data.
- **Field limits.** Objects approach their field limits while dead fields stay.
- **Slower changes.** Every new change has to work around clutter.

## How do you know a Salesforce field is really unused?

SyncOnAI 360 calls a field unused only when the source needed to prove it was read. If some code or automation could not be read, such as hidden managed package source, the result is unknown, with the reason.

That means the list of unused fields is one you can act on, and the unknowns tell you exactly what to check by hand.

- Unused only with complete evidence
- Unknown, with the reason
- A list you can act on

## How do you check whether a field still holds data?

Ask how many records have the field populated, and the query runs live against the org. A field with no references but thousands of populated records needs a decision about the data before it goes.

Records are never stored by SyncOnAI 360.

- Live population counts
- Data decisions before removal
- Records never stored

## Where does field sprawl show up?

The audit flags field sprawl on objects and custom fields without descriptions, and technical debt detection finds similar fields that may duplicate each other, explaining what looks alike.

Each finding carries an effort band and cost, so cleanup can be planned and priced.

- Field sprawl flagged
- Similar fields detected
- Cleanup priced

## How do you remove fields safely?

Removal is a proposal with named checks, its blast radius and a validation against the org, approved by a second admin for production. Deploy to a sandbox first.

Rollback restores recorded metadata but cannot bring back deleted data, so the data decision comes first.

- Checked, validated removal
- Sandbox first
- Data decided before deletion

## Which fields does the Salesforce audit flag?

The audit's fields and data quality section flags fields nobody writes and fields with no references, alongside field sprawl on objects and custom fields without descriptions. Each finding carries its evidence, a severity and an estimated cost to clean up.

A check only runs when the data it needs was collected; a skipped check says so, and missing data is never reported as a pass.

- Fields nobody writes
- Fields with no references
- Skipped checks stated

## Can your own AI tools help with field cleanup?

Yes. Claude, Cursor and other MCP clients can look up a field and everything that depends on it through the read-only connection, with the same coverage statement on every answer.

That lets a developer check a field from the editor, while the removal itself still goes through a proposal in SyncOnAI 360.

- Dependency lookups from Claude or Cursor
- Same coverage statement
- Removal still governed

## How to clean up unused fields

1. **List.** Find fields with no references and the unknowns.
2. **Check data.** Count populated records live.
3. **Decide.** Archive or accept the data loss.
4. **Remove.** Ship the removal as a checked proposal.

## Field cleanup, guessed versus proven

| Without | With SyncOnAI 360 |
|---|---|
| No reference in Setup, probably unused | Unused only with complete evidence |
| Data forgotten | Populated records counted live |
| Nobody dares delete | A list you can act on |
| Deletion straight in production | Checked, approved proposals |

## Before you delete a Salesforce field

- [ ] Confirm the field has no references and that its result is unused, not unknown.
- [ ] Resolve every unknown by checking the unreadable source it names.
- [ ] Count how many records hold a value in the field.
- [ ] Decide whether that data needs archiving before removal.
- [ ] Check with the owners of integrations that might read the field.
- [ ] Remove the field in a sandbox first.
- [ ] Ship the removal as a proposal and keep the receipt.

## Who cleans up fields

- **Salesforce admins.** Reclaim field limits and simplify layouts with proof.
- **Architects.** Consolidate duplicate fields with every reference known.
- **Consultancies.** Offer field cleanup as scoped, evidenced work.

## Frequently asked questions

### How does it decide a field is unused?

Only when the source needed to prove it was read and nothing references the field.

### What does unknown mean?

Some source could not be read, so the tool cannot prove the field is unused. The reason is given.

### Does it check reports?

Reports are synced metadata. The answer for each field states what was examined.

### Can it count records using a field?

Yes, live against the org. Records are not stored.

### Can it delete fields automatically?

No. Removal is a proposal you review and approve.

### Can rollback restore a deleted field's data?

No. Rollback restores metadata, not data.

### Does it find duplicate fields?

Technical debt detection finds similar fields and explains what looks alike.

### Is this on every plan?

Yes. Every plan includes every feature.

### Can it find fields nobody writes?

Yes. The audit flags fields nobody writes alongside fields with no references.

### Should we archive data before deleting a field?

If records hold values you may need, yes. Decide on the data first, because rollback cannot restore it.
