Use custom fields when adding data points to existing records (e.g., NPS score on Account). Use custom objects when modeling a distinct entity with its own lifecycle and one-to-many relationships (e.g., Product Usage records linked to Accounts). Salesforce supports unlimited custom objects. HubSpot Enterprise limits you to 10. Over-engineering with unnecessary custom objects adds complexity to reporting, automation, and maintenance.
Custom objects is user-defined data entities in a CRM that extend the standard data model to represent business-specific concepts not covered by standard objects, with their own fields, records, relationships, page layouts, and automation triggers
The Decision Framework
Before creating a custom object or field, answer four questions:
- Does this data represent a distinct entity? If the data is an attribute of an existing record (a score, a date, a status), use a custom field. If the data represents something with its own records, lifecycle, and relationships (a subscription, a product usage event, a training completion), use a custom object.
- Will there be multiple records per parent? A custom field stores one value per record. If an account has multiple subscriptions, you need a custom Subscription object with a lookup to Account. If an account has one NPS score, use a custom field.
- Does the data need its own reporting? Custom objects appear as standalone report types. Custom fields appear within their parent object's reports. If you need to run reports on the entity independent of its parent (e.g., "all subscriptions expiring in Q2"), a custom object is the right choice.
- Will automations trigger on this data? Custom objects can have their own Process Builder, Flow, and workflow triggers. Custom fields trigger automations on the parent object. If you need separate automation logic (e.g., send a notification when a subscription is about to expire), a custom object provides cleaner architecture.
Custom Fields: When and How
When to use
- Adding a single data point to an existing object (lead score, subscription tier, implementation status)
- Capturing information that is always one-to-one with the parent record (one account has one industry, one annual revenue, one customer health score)
- Quick wins that do not justify data model changes (tracking a campaign response, flagging a record for review)
Field type best practices
- Use picklists over free text whenever possible. Picklists ensure consistency, enable filtering, and prevent the "CA vs California" problem. See data hygiene playbook.
- Use formula fields for derived data. If a value can be calculated from other fields (days since last activity, annual contract value from monthly price), use a formula. This prevents data inconsistency from manual entry.
- Use lookup fields instead of text for relationships. If a field references another record (partner account, primary contact, related opportunity), use a lookup relationship. Text fields that store record names break when the referenced record is renamed.
Salesforce field limits
Salesforce allows up to 800 custom fields per object (varies by field type and edition). Most organizations use 50-150 custom fields per object. If you are approaching 300+, audit for unused fields. Unused fields add clutter to page layouts, slow down reports, and confuse new users.
HubSpot property limits
HubSpot allows up to 1,000 custom properties per object. The bigger constraint is page layout usability. HubSpot's property management is less flexible than Salesforce's page layout editor, so excessive properties create a cluttered record view. Group properties into sections and hide rarely-used ones.
Custom Objects: When and How
When to use
- Modeling entities with their own lifecycle (subscriptions, product usage, certifications, support tickets)
- Storing one-to-many data (one account has many subscriptions, one contact has many training completions)
- Data that needs independent reporting, automation, and security settings
- Replacing complex workarounds that use multiple fields on standard objects to simulate related records
Common RevOps custom objects
- Product Usage: Tracks feature adoption per account. Links to Account and Product. Used for health scoring and expansion identification.
- Renewal: Tracks renewal milestones separate from the Opportunity. Links to Account and Contract. Used for renewal management.
- Territory: Defines territory attributes (geography, segment, named accounts). Links to User and Account. Used for territory management.
- Implementation: Tracks post-sale implementation milestones. Links to Account and Opportunity. Used for CS handoff and time-to-value measurement.
Salesforce custom object considerations
Salesforce supports unlimited custom objects (practically constrained by org complexity). Each object can have master-detail or lookup relationships to other objects. Consider tab visibility (not every object needs a tab), sharing rules (who can see records), and reporting (custom report types needed for cross-object reporting).
HubSpot custom object constraints
HubSpot Enterprise allows up to 10 custom objects. This limit is the most significant architectural constraint. Plan your data model before building. Common workaround for the 10-object limit: use associations between standard objects and reserved custom objects for only the most critical entities. HubSpot custom objects also have fewer automation trigger options than Salesforce.
Architecture Mistakes to Avoid
- Building custom objects when fields would suffice. If the data is one-to-one and does not need independent reporting, a custom field is simpler and easier to maintain. Custom objects add query complexity, require their own page layouts, and need ongoing administration.
- Not planning relationships before building. A custom object without proper lookup or master-detail relationships creates orphaned data that is hard to report on and harder to clean up. Map all relationships on paper before touching the CRM.
- Creating too many lookup relationships. Each lookup relationship adds a join to reports and queries. Salesforce performance degrades noticeably above 5 lookups per object. Keep relationships lean and purposeful.
- Not indexing commonly filtered fields. Custom objects with thousands of records and unindexed fields produce slow reports. In Salesforce, request custom indexes on fields used in report filters and list view criteria.
- Building without considering HubSpot limits. If there is any chance of migrating to HubSpot in the future, building 15 custom objects in Salesforce creates a migration problem. See our CRM migration guide for platform-specific constraints.
For CRM architecture decisions, also see Salesforce vs HubSpot, data hygiene, and tech stack architecture.
Frequently Asked Questions
What is the difference between custom objects and custom fields?
Custom fields add new data points to existing objects (e.g., adding 'NPS Score' to the Account object). Custom objects create entirely new data entities with their own records and relationships (e.g., creating a 'Product Usage' object). Use custom fields when the data belongs to an existing record. Use custom objects when the data represents a distinct entity with its own lifecycle.
When should you create a custom object in Salesforce?
Create a custom object when: the data has its own unique records (not just attributes of existing records), multiple records of this type relate to one parent record (one-to-many relationship), the data needs its own reporting and list views, and the data has a lifecycle independent of its parent. If you are adding a single data point, use a custom field.
What are the limits on custom objects in HubSpot?
HubSpot Enterprise allows up to 10 custom objects. Professional tier does not support custom objects. Each custom object can have up to 1,000 properties. HubSpot custom objects are more limited than Salesforce in terms of automation triggers and reporting flexibility. Plan your data model carefully because the 10-object limit constrains complex architectures.
What are common mistakes with custom objects?
Over-engineering the data model (creating objects when custom fields would suffice), not planning relationships before building (resulting in orphaned objects), skipping automation (custom objects without workflow triggers require manual updates), and not considering reporting impact (custom object data is harder to include in standard reports).
How do custom objects affect CRM performance?
Each custom object adds query complexity to reports and automations. In Salesforce, custom objects with poor indexing can slow page loads. In HubSpot, custom object associations increase API call volume. Best practice: index commonly filtered fields, limit the number of lookup relationships per object to 5, and archive unused custom objects rather than leaving them active.
Methodology: Data based on 455 job postings with disclosed compensation, collected from Indeed, LinkedIn, and company career pages as of April 2026. All salary figures represent posted ranges, not self-reported data.
Like what you're reading?
Get weekly RevOps market data + quarterly reports delivered to your inbox.
Methodology: Data based on 1,839 job postings with disclosed compensation, collected from Indeed, LinkedIn, and company career pages as of April 2026. All salary figures represent posted ranges, not self-reported data.