The SchemaForce Team

Salesforce naming conventions: a standard you can actually enforce

A practical, opinionated set of Salesforce naming conventions — objects, fields, flows, permission sets, validation rules — plus a free Excel standard you can adopt and audit against. And the honest part: a convention only helps if you can see where it's broken.

Cover Image for Salesforce naming conventions: a standard you can actually enforce

Here's the thing you came for: a free, opinionated Salesforce naming standard in Excel — one sheet with the conventions and examples, one sheet to audit your existing API names against them. Download it, adapt it to your org, and the rest of this post is the reasoning behind each rule, plus the honest bit about why a naming standard is the easy part.

Salesforce Naming Conventions Standard
Excel (.xlsx) · a ready-to-adopt standard + an audit sheet
Download the standard
We're adding an auto-audit that flags off-convention API names across your whole org — get an email when it lands.

A naming convention isn't about tidiness. It's about the three things you'll want from a field a year from now and can't get if it's called Field_2__c: to find it, to trust you know what it does, and to change it without breaking something invisible. Good names are documentation that can't drift out of the metadata, because they are the metadata. Bad names are a tax every admin after you pays, forever.

So this is opinionated on purpose. You can disagree with any specific rule — the point is that your org picks one and holds it, not that mine is the only defensible choice.

Get the API name right at creation — renaming is possible, but it's a project

A misconception worth clearing up first, because a lot of naming advice gets it wrong: the API name is not permanent. You can rename a field's API NameCustomer_Tier__c — the same way you rename its label. Salesforce lets you.

What makes it risky isn't that you can't — it's what doesn't come with you. When you rename an API name, Salesforce updates the references it controls declaratively: formulas, validation rules, flows, page layouts, and reports move with it. What it does not touch is Apex, Visualforce, API integrations, external systems, or anything with the name hardcoded — those keep pointing at the old name and break quietly.

So the real rule isn't "you can never change it." It's "get it right at creation, because renaming later means first finding every reference Salesforce won't fix for you." That's nearly free when a field is new and almost nothing depends on it, and genuinely expensive once it's woven through your automation, integrations, and code — which is the actual argument for naming discipline up front. And if you ever do have to rename, it's the argument for knowing the full blast radius before you touch it.

Objects

  • Singular, readable, no cryptic abbreviations. Loan_Application__c, not LoanApp__c or LA__c. You'll type it in a formula editor with no autocomplete at some point; make that moment easy.
  • Pick singular or plural and never mix. Salesforce's own objects are singular (Account, Opportunity). Match them. An org with Invoice__c and Payments__c sitting next to each other tells everyone no one was in charge.
  • Don't fake a namespace. Prefixing every custom object with ACME_ feels organized and buys you nothing but longer API names — real namespaces come from managed packages. The exception is a genuine functional grouping you'll filter on constantly.

Fields — where naming actually goes wrong

Fields are 90% of your metadata and 90% of your naming debt. The rules that pay off:

  • Say what it is, not what type it is. Contract_End_Date__c, not Date_5__c. Resist encoding the type into the name (_Date, _Num) — the type is already visible, and it locks you in if the type ever changes.
  • Booleans read as a question. Prefix with Is_ or Has_: Is_Active__c, Has_Overdue_Invoice__c. A checkbox called Active__c reads ambiguously in a formula; Is_Active__c never does.
  • Be consistent about how you abbreviate — or don't. If it's Num_ in one place, it's not Number_ in the next. Pick a short list of allowed abbreviations and put it in the standard so it's a decision, not a coin flip.
  • Never reuse a retired field's name for something new. A Score__c that meant one thing in 2023 and something else now is a trap for every report built before the switch. Retire it honestly (see the Status pattern below) and name the new one differently.

Automation — flows, validation rules, process

Automation is where good names save you during an incident, because the label is often all you see in an error toast or a debug log.

  • Flows: [Object] [Timing] - [What it does]. Opportunity After Save - Set Close Reason. The object and timing up front mean you can scan a list of forty flows and find the three that touch Opportunities on save without opening any of them. This ordering also happens to be exactly what you need when you're reasoning about order of execution.
  • Validation rules: describe what they enforce, not that they're a rule. Close_Date_Required_When_Won, not VR_Opportunity_3. When a user hits it, the rule name is a clue; make it a useful one.
  • Never leave the auto-generated name. Copy_of_Copy_of_Flow and New_Validation_Rule are how you know a flow was built in a hurry and never revisited.

Permission sets and groups

  • [App or Function] - [Access Level]. Billing - Read Only, Billing - Full Access. This makes the shape of your access model legible from the list view alone, which is exactly what you want the day you migrate off profiles.
  • Groups describe the role, sets describe the grant. A permission set group is Sales Manager; the sets it composes are Forecasting - Edit, Team Records - Read. The distinction keeps "who is this for" separate from "what does it grant."

A naming convention is documentation that can't drift out of the metadata — because it is the metadata. That's what makes it worth the discipline, and what makes a bad name so expensive.

the tax every admin after you pays

The honest catch — a standard is the easy 20%

Writing the convention is an afternoon. Living it is the other 99% of the effort, and it's where every naming standard quietly dies — because Salesforce does not enforce your names. There's no linter. Nothing stops the next admin, the contractor you brought on for a project, or the managed package you installed from adding Temp_Field_2__c at 4:45 on a Friday. The standard lives in a wiki nobody opens; the org drifts away from it one field at a time; and two years later half your API names predate the convention and the other half ignore it.

The discipline the standard needs isn't willpower. It's visibility — being able to see every API name across the org in one place, spot the cryptic and inconsistent ones, and catch new fields as they appear so an off-convention name gets flagged while it's still cheap to reconsider, not after forty things reference it.

That's the honest boundary worth naming: a tool can show you every name, surface the inconsistencies, and tell you the moment a new field shows up — but it can't decide your house style for you. The standard in the download is the part that's yours. What automation removes is the impossible part: manually re-reading a growing org to find where reality has drifted from the rules. That's the job SchemaForce does — it inventories every object and field with its real API name, makes the cryptic and off-pattern ones easy to find, and shows you new metadata as it lands, so the convention you adopt today is one you can actually hold.

Start here

Download the standard, spend twenty minutes adapting the rules to what your org already does well, and socialize it with anyone who touches metadata. Then do the honest thing the wiki version never lets you do: look at your existing API names against it, and decide which of the cryptic ones are worth renaming now versus documenting and living with. Both are legitimate — but you can only make the call if you can see them all at once. (Building the broader document too? The Salesforce data dictionary template is the companion piece — naming is the first column, context is the rest.)

API names · every one, in one place
cryptic + off-pattern, flagged
every API name inventoried and searchable
cryptic + inconsistent names easy to find and fix
Blast radiusobjectsfieldsflowspermission sets
A naming standard only holds if you can see where it's broken. SchemaForce inventories every field's real API name and surfaces the ones that don't fit — including new ones as they appear.See your naming, org-wide, free
ShareLinkedInX

See your own org in minutes.

Connect Salesforce, explore every object and field, and ask your schema anything — metadata only, free to start.