There is business data that cannot be expressed using HubSpot's standard "contacts, companies, deals, and tickets." Contracts, projects, products, assets, stores, real estate—bring domain-specific data into your CRM and associating it with existing objects.Evolving HubSpot from a general-purpose CRM to a system specialized for your business modelThe Data Agent runs in HubSpot.
There are four standard objects in HubSpot: Contacts, Companies, Deals, and Tickets. These can be used in most BtoB businesses, butCompany-specific business entities (contracts, projects, equipment, assets, etc.) cannot be expressed.. Custom objects remove this restriction.
| Judgment criteria | create a custom object | Onboarding task creation |
|---|---|---|
| data independence | That's the safe way to proceed. | Can be expressed simply by adding custom properties to contacts and deals |
| one-to-many relationship | There are multiple "contracts" for one company/One contact is linked to multiple "projects" | If it is always one-to-one (one contract per company), it can often be handled by customizing the transaction object. |
| Utilization in WF/reports | I want to run a workflow using that object as a starting point, and I want to summarize it in a report. | If you just want to view it, you can also manage it using Notes or attachments. |
| Synchronization with external systems | I want to use ERP/core system contracts, products, and orders by synchronizing them with HubSpot. | If the external system is positive and HubSpot is just referencing it, it may be enough to just integrate it. |
Once you create a custom object and start filling it with data, it becomes difficult to change the object name, delete properties, or change associations.Before you start using it in production, be sure to verify the design in a sandbox and think about whether this structure will still be good in 5 years before creating it.. In particular, object names (API names) cannot be changed once they are set, so decide on naming rules in advance.
The uses for custom objects vary widely depending on the business model. Specific design examples for four typical industries are shown below.
Custom object properties can use all the same property types as standard objects. Choosing the right type has a direct impact on the accuracy of subsequent reports, filters, and automation.
Associations in HubSpot can be labeled (roles). For example, by setting the label "Signer/Approver/Person in charge" for the Contract ↔ Contact association,Capable of recording contextual information beyond mere “linkage”. Labels can be added later, but if you think about what roles you want to track with this association when designing, you will be able to use it later.
You can also create and update custom objects on a daily basis from the HubSpot UI, butLinkage with external systems, import of large amounts of data, automatic creation from workflowsUse the HubSpot API. The API endpoints for custom objects have the same structure as standard objects, only the schema (object definition) differs.
Business entities that cannot be expressed using the standard 4 objects can be added to CRM. The three criteria for judgment are ``10 or more unique properties, a one-to-many relationship, and a desire to use it in WF or reports.'' If this does not apply to all cases, you can often deal with it by adding custom properties.
Typical examples are Contracts (multiple contract management) for SaaS, Equipment (equipment tracking) for manufacturing, Properties (property management) for real estate, and Enrollments (attendance records) for education. In your business, ``data that is managed in spreadsheets and separated from CRM'' is a strong candidate for custom object creation.
Once set, the API name and property internal name of a custom object cannot be changed. The team agrees on a naming convention that uses plural snake cases like "p_contracts" and "p_equipment" before creating the actual product. Verification in sandbox is required.
In addition to simply ``linking,'' the context of the relationship can also be recorded by labeling the ``Contract ↔ Contact'' association with ``Signer/Approver/Person in Charge.'' Express many-to-many relationships using associations, and do not try to create intermediate tables yourself.