White architectural model of a building with flowing forms

Photo: Declan Sun / Unsplash

Guide

Salesforce data model design: standard vs custom objects

How to design a Salesforce data model: reuse standard objects first, when to build custom objects, lookup vs master-detail, junction objects, field design, sharing, reporting, licensing and safe changes.

Good Salesforce data model design starts with the process and the reports you need, not with new objects. Reuse a standard object when its built-in behavior fits the job, because you inherit features, reports and future releases for free. Create a custom object when the thing you track has its own life cycle and no standard home. Then choose lookup or master-detail relationships based on ownership, sharing and roll-ups you need.

Where should data model design start?

Start with the business process and the questions leadership will ask of it. The objects follow from those answers, not the other way round.

Write down the nouns in the process: the things people create, hand off, approve and count. A project, an installed asset, a subscription or an application is a noun. Statuses, dates and amounts are usually fields on those nouns, not objects of their own.

Next, list the ten reports or dashboards the process owner expects in the first quarter after launch. Each one tells you which records must be related and at what grain. If a report needs one row per renewal, a renewal is probably a record. If it only needs a renewal date, a field will do.

  • Who creates each record, and who owns it afterward?
  • How many of these records will exist in a year, and in five?
  • Which records must be deleted, or kept, when a parent goes away?
  • Who must not see these records, even inside the same team?
  • Which totals must appear on the parent without anyone running a report?

Those answers drive almost every relationship decision later. Skipping them is how orgs end up with three objects that all mean customer.

Which standard objects should we try first?

Try the standard object that already models your noun before building anything new. Standard objects carry features a custom object would have to rebuild.

Account and Contact hold the organizations and people you deal with. Opportunity tracks a potential sale through stages with amounts, forecasting and products. Case handles a customer request or issue with queues, assignment and entitlements. Asset records a specific product a customer owns or uses. Contract holds agreement terms and dates, and Order captures what a customer committed to buy. Product and price books define what you sell and at what list price.

Each comes with page behavior, reports, list views and automation hooks that Salesforce keeps improving. Many AgentExchange (formerly AppExchange) apps and integrations also expect data in these objects. A custom Customer Request object would miss all of that.

When is a custom object the right call?

Build a custom object when the thing has its own identity, life cycle and reporting, and no standard object means the same thing. Do not build one just to hold a few extra attributes.

Good candidates include a phased project, a subscription tracked over time, an application under review, or an asset inspection. Each has its own owner, statuses and history. A weak candidate is a single extra address or a yes-or-no flag that belongs on an existing record.

In our broker-dealer build, the firm needed to follow both issuers seeking capital and the investors backing each deal. No standard object fit, so the team built custom Engagement and Investment objects. Junction objects handled the many-to-many links between them. Flows created the commission-split records. Validation rules blocked a deal from going to market until compliance steps were done.

For where custom objects sit within wider customization choices, our custom versus configuration article covers code and declarative trade-offs.

Should we use a lookup or a master-detail relationship?

Use master-detail when the child cannot exist without its parent and should share its access. Use a lookup when the child stands on its own and needs its own owner.

In master-detail, the detail record has no owner of its own. It inherits ownership and sharing from the master, and deleting the master deletes its details. You also get roll-up summary fields on the master, such as the count or total of related records. Salesforce help documents a default of 25 roll-up summary fields per object, raisable to 40 through Support.

A lookup is looser. The child keeps its own owner and sharing settings, and the field can be optional. When the parent is deleted, you choose whether to clear the field or block the deletion. Roll-ups across lookups need Flow, Apex or an AgentExchange tool.

Limits shape the design too. A custom object can have at most two master-detail relationships. Lookup and master-detail fields together default to 40 per object, with Support able to raise that toward a hard ceiling of 50. A standard object cannot sit on the detail side of a master-detail relationship with a custom object.

How do we model many-to-many and outside data?

Use a junction object for many-to-many links, and an external lookup when the parent record lives outside Salesforce.

A junction object is a custom object with two master-detail fields, one to each side. A course enrollment linking students and courses is the classic example. Each junction record can carry its own fields, such as role, percentage or start date. The first master-detail field you create becomes the primary relationship and drives the record's look and ownership.

External lookups link a Salesforce record to an external object surfaced through Salesforce Connect. They match on the external object's External ID field rather than a Salesforce record ID. Salesforce Connect is a separate paid add-on in most editions, so confirm availability with your account team.

How should fields be designed so they stay usable?

Pick the narrowest field type that fits, prefer picklists for anything you will report on, and describe every field. Field sprawl is easier to prevent than to clean up.

  • Picklists beat free text for status, category or reason. Text fields produce ten spellings of one value and unusable reports.
  • Formula fields calculate on read and never go stale. Store a value instead when you need history, filtering on large volumes or a point-in-time snapshot.
  • Use number, currency, date and checkbox types for what they are. A date stored as text cannot drive a date filter or reminder.
  • Give each field a clear label, an API name that matches, a description and help text. The description is for admins; help text is for users.

Custom field allocations vary by edition. Salesforce help lists 500 per object for Enterprise Edition and 800 for Unlimited Edition, with lower figures for smaller editions. Treat those as ceilings, not budgets. An object nearing them is usually an object doing several jobs.

How do ownership and sharing affect the model?

Every object decision is also an access decision. Settle who owns each record and who may see it before fields are built.

A lookup child gets its own organization-wide default and can have sharing rules. A master-detail child is controlled by its parent, which keeps access simple but removes per-record control. If a child must be visible to people who cannot see the parent, master-detail is the wrong choice.

Our sharing model guide explains organization-wide defaults, roles, sharing rules and implicit access in depth. Read it alongside this article before finalizing relationships.

What does the model mean for reporting and data volume?

Reports can only follow relationships that exist, so model the joins your reports need. Plan for volume early on objects that will grow quickly.

Salesforce creates standard report types for many relationships, but cross-object reports often need a custom report type. Custom report types also let you show parents with or without related children, which matters for questions like accounts with no active subscription.

Large volumes change design choices. A single parent holding a huge number of children, or one owner holding a huge share of records, can cause locking and sharing slowdowns. Avoid catch-all parent records from day one, and plan retention for high-churn objects. Our sharing and archiving guides cover skew and retention.

Do custom objects affect licensing or industry clouds?

Yes, both can change what you build. Platform licenses cap custom object access, and industry clouds ship their own data models.

Platform licenses give users access to accounts, contacts and a limited number of custom objects, without core CRM objects like Opportunity or Case. Platform license tiers cap how many custom objects those users can reach. Check the current allowance with your Salesforce account team.

Licensing also shows up in less obvious ways. In an industrial-services rescue, the team built a custom Labor Resource object to track outside contractors and their certifications. That let the firm track field labor without a Field Service license for every worker.

Industry clouds such as Financial Services Cloud, Health Cloud and Manufacturing Cloud include prebuilt objects for their domains. If you plan to adopt one, build on its model instead of recreating it. Our guide to choosing a Salesforce cloud covers that decision.

Which object should we reach for first?

Common needs, the standard object to try first and when to go custom
NeedTry firstGo custom whenWatch out for
Track projects after a saleOpportunity or Order for the sale itselfProjects have phases, owners and timelines separate from sellingRenaming Opportunity to Project and breaking forecasts
Track installed equipmentAssetYou need inspection or maintenance history per unit beyond Asset fieldsDuplicate asset records created by integrations
Track subscriptions or renewalsContract, Order or AssetEach term needs its own status, usage or billing detailsOverlap with CPQ or billing products already licensed
Manage service requestsCaseRarely; Case usually fits with record typesBuilding a parallel ticket object that skips queues
Process applications or reviewsCase or Opportunity if the steps matchSteps, reviewers and outcomes differ clearly from bothFree-text decision fields that cannot be reported
Link many records to many recordsStandard related lists such as Contact RolesEach link needs its own fieldsForgetting which master is primary on the junction

How do we document the model and change it safely later?

Draw the model before you build it, keep the diagram current, and treat changes to live objects as releases. Most painful rework comes from undocumented relationships.

Schema Builder in Setup shows objects, fields and relationships as a diagram and lets you add them visually. Many teams also keep an entity relationship diagram in their documentation tool. Our org documentation guide covers what to record and where.

Changing a live model takes care. Converting a lookup to master-detail requires every child record to have a parent first. Deleting or retyping a field can break reports, flows, integrations and page layouts. Search for dependencies with the Where Is This Used button on custom fields, test in a sandbox, then deploy.

  • Add new fields and objects freely, but describe them on creation.
  • Hide or deprecate fields first, and delete them only after a full reporting cycle.
  • Back up data before retyping fields or changing relationship types.
  • Tell report owners and integration owners before the change ships.
Chris Gooding, President & CEO of Abstrakt Solutions
President & CEO, Abstrakt Solutions
LinkedIn →

Tech Talk

A monthly brief for the people who own Salesforce, AI and revenue technology

What changed in Salesforce and AI this month, and what to do about it.

One email a month. Written by the consultants who deliver the work, not by a marketing team, for the leaders who make the technology decisions.

  • What changed in Salesforce, AI, integration and RevOps, and what it means for your org
  • At least one framework, checklist or reference architecture you can take into a meeting
  • Honest opinions, including when we disagree with what a vendor is selling
  • No sales sequence. We do not sell from this list

Consultant analysis, not vendor recaps. One click to leave.

One email a month. Your industry and your address, nothing else. We never share either, and you can unsubscribe from the bottom of any issue. See what’s in Tech Talk →

Call (314) 916-4095 Book a consultation
Call (314) 916-4095 Book a call