INSIDEA
HubSpot Enterprise tier

HubSpot custom objects: when to add, how to architect

By Pratik Thakker, Founder & CEO, INSIDEA. We've architected custom objects on hundreds of HubSpot instances. The most common mistake: adding them when you don't need them. The second-most: not adding them when you do. Below is how to tell which side of the line you're on.

TL;DR

Custom objects extend HubSpot's data model with first-class entities beyond Contacts, Companies, Deals, Tickets, Products. Use them when your business has a recurring entity that doesn't fit those five (subscriptions, contracts, properties, vehicles, students, projects), when you need to track multiple instances of something per contact, or when you're modeling a real many-to-many. Don't use them as a reflex when migrating from Salesforce. Most Salesforce customizations don't earn a custom object in HubSpot. Start with native data model, add custom objects only when you hit a real wall.

The decision framework

Three questions, in order. The first "yes" is the answer.

Question 1. Can the entity be modeled as a custom property on Contact/Company/Deal? If yes, do that. A property holds the data, automations can reference it, reports can group by it, no custom object needed.

Question 2. Does each Contact/Company have multiple instances of this thing? If yes, you need a custom object. A property is a single value per record. If a contact has 5 subscriptions, 12 properties, 3 vehicles, you can't flatten that into properties on the contact.

Question 3. Does the entity have its own lifecycle, automations, or reporting needs? If yes, custom object. Subscriptions have their own state machine (active, past_due, canceled). Properties (real estate) have their own listing-to-close cycle. Custom objects are first-class so they can have their own pipelines, automations, and reports.

Common patterns we ship

Subscriptions (SaaS). One Contact has multiple Subscriptions over time. Subscription has plan, MRR, status, billing anchor, churn date. Synced from Stripe via webhooks. Powers MRR rollups and churn workflows.

Properties (Real Estate). Each property is a custom object with address, status (listed, under contract, closed), price, square footage, photos. Associated to the Deal (transaction) and Contact (buyer or seller).

Vehicles (Automotive). Customer has multiple vehicles. Vehicle has VIN, make, model, year, service history. Drives service reminders, recall workflows, and lifetime customer value reporting.

Locations (Multi-Site Services). Healthcare networks, restaurant chains, franchises. Company has multiple Locations. Location has its own properties (address, hours, manager) and engagement history.

Contracts (B2B Services). Distinct from Deals. A Deal is the sales motion; a Contract is the active legal/billing agreement. Different lifecycle (renewals, amendments, terminations), different automations, different reporting.

Schema design, the part that matters most

Once you've decided to add a custom object, the schema is the long-lived decision. Get this right, the rest of the implementation is fast. Get it wrong, and every report, automation, and integration pays a tax forever.

Naming. Singular noun, lowercase, plain English. "Subscription" not "Customer Subscriptions Table". Plural is auto-generated.

Primary display property. The label HubSpot uses everywhere. Should be human-readable and unique enough to disambiguate. For Subscription: customer name + plan name (e.g., "Acme Corp - Pro Annual").

Required properties at creation. Keep this minimal: 3 to 5 fields max. The rest get filled in over time. Required-on-creation that aren't actually known yet causes import failures and integration headaches.

Associations. Default to associating with Contact AND Company AND Deal. You may not need all three immediately, but enabling them upfront is cheaper than adding later when you have 100K records. Use association labels to clarify (e.g., a Subscription is "Active for" one Contact and "Billed to" another).

Pipelines. If the custom object has a state machine (subscription status, contract status, property listing status), define stages explicitly with exit criteria. This makes reporting and automation dramatically cleaner.

The Salesforce migration trap

Customers migrating from Salesforce often have 30+ custom objects. The reflex is to recreate them all in HubSpot. Wrong move every time. Reasons:

The audit step in week one of every Salesforce-to-HubSpot migration is custom-object triage. We typically migrate 3 to 6 of the 30+, sunset the rest.

Limitations you should know

Salesforce sync caps at 5. Native HubSpot Salesforce connector handles 5 custom objects. Beyond that, custom integration required.

Reports get expensive. Custom-object reports with deep joins are computationally heavier than Contact/Company/Deal reports. They don't refresh as fast on dashboards. Plan for snapshot reporting, not live dashboards, for high-volume custom objects.

Workflow triggers are slower. Custom object workflow triggers run with a small delay (1 to 5 minutes typically). For real-time triggers, use webhooks.

Mobile app limited. Custom object support in the HubSpot mobile app is improving but lags behind native objects. If field reps live on mobile, test heavily before relying on a custom object as a daily driver.

Customer outcome

A regional healthcare network had 4 separate Salesforce orgs across acquired practices. We consolidated to one HubSpot instance with a Location custom object (12 sites). Patient referrals route based on Location proximity, not zip code. Referral conversion rate improved 31% in the first quarter, driven by faster routing and better visibility into Location-level capacity.

FAQ

What is a HubSpot custom object?

A new top-level data type beyond Contacts, Companies, Deals, Tickets, and Products. You define the schema (properties, relationships, allowed values) and HubSpot treats it like a first-class object: searchable, reportable, automation-eligible, syncable. Available on HubSpot Enterprise tier and above.

When should I add a custom object?

Three real cases. (1) You have a recurring entity that doesn't fit Contact/Company/Deal/Ticket: subscriptions, contracts, locations, vehicles, properties, students, projects. (2) You need to track multiple instances of something per contact (e.g., a contact has 5 separate purchases, each with its own attributes). (3) You're modeling a many-to-many relationship that custom properties on Contact can't capture (a buying committee where 4 contacts share an opportunity, but the opportunity has its own state).

When should I NOT use a custom object?

If you can model it as a custom property on an existing object, do that. Custom objects add complexity to reports, automations, and integrations. They cost more in implementation time and ongoing maintenance. Reserve them for cases where the alternative is meaningfully worse.

How many custom objects can I have?

HubSpot Enterprise allows up to 10 custom objects per portal. Most customers we work with use 2 to 5. Going past 7 usually means the model is over-decomposed; we revisit and consolidate.

Do custom objects sync to Salesforce?

Yes, but only 5 of them via the native HubSpot Salesforce connector. If you have 6+ custom objects that need bidirectional Salesforce sync, you need either a custom integration via webhooks/middleware OR you accept that the long-tail custom objects stay HubSpot-only. We map this in the audit before any code gets written.

Can I report on custom objects?

Yes, in Custom Report Builder. Reports can join custom objects to Contacts, Companies, Deals via association labels. The limitation: dashboards have a 25-report cap, and complex custom-object reports are computationally expensive, so they don't refresh in real-time. Plan for snapshot reporting, not live dashboards, for high-volume custom objects.

What's the most common pitfall?

Over-modeling. Teams that come from Salesforce often want to recreate every Salesforce custom object 1:1 in HubSpot. Wrong move. HubSpot's data model is more opinionated and most Salesforce customizations don't make sense. Start with what HubSpot gives you, only add custom objects when you've hit a real limit.

How long does this take to implement?

Single custom object with 5-10 properties, basic relationships, no integrations: 1 week. Custom object with complex automations, Salesforce sync, multi-system integration: 3 to 4 weeks. The schema design is the slow part; building and testing is fast.

Custom objects, designed to last.

Schema design + relationship modeling + integration architecture. We get this right once, then your team owns it for the long haul.

Get Started
With Us

Book a demo and discovery call to get a look at:

How INSIDEA works
The subscription plan that best fits your needs
Pricing, onboarding, and anything else
HubSpotSalesforcePipedriveAircallApolloTrustpilot

Book a Call With Us

By clicking next, you agree to receive communications from INSIDEA in accordance with our Privacy Policy.