Quick answer
Association labels describe why two records in HubSpot are connected — for example, that a contact is the "Decision Maker" on a deal, or that one company is the "Parent" of another. A plain association says only that a relationship exists; a label adds the role, so you can segment, report, and automate on it. Custom labels require Professional or Enterprise on any Hub, cap at 50 per object pair, and are the native way to model buying committees and company hierarchies.
Your CRM knows that a contact is connected to a deal.
What it can't tell you is why that contact matters. Are they signing the contract? Championing you internally? Quietly blocking the whole thing?
That gap is exactly what HubSpot association labels close.
In this guide, you'll learn how to use association labels to model buying committees, company hierarchies, and messy multi-company deals — the relationships that actually drive revenue. You'll also get the honest version: the tier gating, the hard limits, and the short list of things labels simply can't do.
This guide reflects the current state of the feature, and we update it as HubSpot ships changes.
What are HubSpot association labels?
Association labels describe why two records in HubSpot are connected — for example, that a contact is the "Decision Maker" on a deal, or that one company is the "Parent" of another. A plain association says only that a relationship exists. A label adds the role, so you can segment, report, and automate on it. (For the one-paragraph version, there's also a glossary entry.)
Picture a single deal with five associated contacts. Without labels, all five look identical — five people connected to one opportunity.
Add labels, and the picture sharpens: one is the Decision Maker, one is the Champion, one handles Billing, one is Legal, and one is an End User who'll never sign anything.
Same five associations. Completely different intelligence.
As HubSpot's knowledge base puts it, you can "label associations to describe the relationship between associated records."
And here's why that matters beyond tidiness: labels are queryable. Once a relationship is labeled, you can filter a list on it, break a report down by it, and trigger a workflow from it. A bare association supports none of that precision.
The data model underneath (for API work)
If you'll ever touch the API — or explain this to a developer — three layers work together, all managed through the Associations v4 API. (The wider picture of objects and associations is covered in our HubSpot data model guide.)
- Association types (definitions) are the schema-level relationship between two object types. Each direction is its own distinct type — Contact-to-Company is not the same as Company-to-Contact — and each carries its own numeric
associationTypeId. - Association labels are the descriptors you layer onto a type. When you create a label, HubSpot creates a new
USER_DEFINEDassociation type with its owntypeId. Categories are eitherHUBSPOT_DEFINED(Primary, unlabeled) orUSER_DEFINED(your labels). - Association definition configurations are the limits — how many records can be associated, and how many times a given label can be used per record.
Two HubSpot-defined types always exist in the background. Primary marks the main associated company and can be used in lists and workflows on every tier, including Free. Unlabeled is added automatically whenever records are associated, and always comes back from the API with a label of null. When a record carries a primary or custom label, that type sits alongside the persistent unlabeled type — it doesn't replace it.
One thing worth knowing if you maintain integrations: HubSpot has renamed display labels before (the Primary company labels became the "<Object> with Primary Company" format) without changing a single underlying id. That's the lesson from HubSpot's own changelog: reference associations in code by typeId, never by label text. Display names are for humans. Ids are for code.
Primary company vs. the "Company name" property
When multiple-company associations are active, a contact (or deal, or ticket) can be linked to many companies — but exactly one is flagged Primary. And by default, the first company you associate becomes primary.
Meanwhile, the "Company name" text property on a contact is a completely separate thing from the "Primary associated company." Reports and workflows keyed off the wrong one will silently mislead you.
The fix: standardize on Primary company for reporting, and always verify primary designations after an import or migration. "First associated wins" is rarely the primary you actually wanted.
Single vs. paired labels: what's the difference?
A single label uses one word for both sides of the relationship (like "Partner" or "Sibling company"). A paired label uses a different word for each side (like Parent/Child or Manager/Employee) — set one side, and HubSpot automatically applies the inverse to the other record.
That's the first decision you make every time you create a label.
A single label reads identically from either side. Colleague. Partner. Sister company. Set it on one record and the same word appears on the other.
A paired label differs by side. Manager and Employee. Parent and Child. Headquarters and Regional Office. If you're working through the API, you supply the inverseLabel field — and note the gotcha: the label and inverseLabel can't be identical. If you want them identical, you wanted a single label all along.
One detail that trips people up on the 50-label limit: a paired label counts as one label, not two. Parent/Child is a single entry in your budget of 50, even though it produces two display names.
And here's the property that makes labels work so well: the label belongs to the pairing, not the record.
A single deal can carry many labeled contacts at once (Decision Maker, Champion, Legal). A single contact can hold completely different labels on different deals. The same person can be a Champion on one deal and a Blocker on another — and HubSpot keeps both straight.
No custom property on a contact can do that.
Which objects support association labels?
Association labels work across contacts, companies, deals, tickets, leads, admin-activated objects (like Listings and Appointments), and custom objects — including same-object pairs like Contact-to-Contact and Company-to-Company. Line items, products, and quotes do not support custom labels.
The tell is simple: if "Create association label" doesn't appear as an option for an object pair, that pair isn't supported. Don't go hunting for a setting that isn't there.
The list does move, though. Newer Data Model Builder updates added support for creating associations and custom labels (with limits) on cart and order/invoice objects, alongside a cleaner interface for reviewing associations and setting label limits across all hubs and tiers.
A few object-specific rules worth knowing before you design anything:
- Contacts must have a primary company. With exactly one associated company, that company is primary by default and the label can't be removed. With multiple companies, removing the primary forces you to pick a new one.
- Primary is company-specific. You can set a primary company on a contact, but not a "primary contact" on a company. The relationship isn't symmetric.
- Company hierarchies use Parent/Child. Each parent can have many children — but a child can have only one parent. Keep that in mind before you try to model a company that reports into two others.
What HubSpot plan do you need for association labels?
Custom association labels require a Professional or Enterprise subscription on any hub — Marketing, Sales, Service, Data, Content, or Smart CRM. Free and Starter accounts get only the built-in Primary company label and the default Parent/Child company labels.
Per HubSpot's KB article "Create and use association labels":
| Capability | Free | Starter | Professional | Enterprise |
|---|---|---|---|---|
| Built-in Primary company label | ✅ | ✅ | ✅ | ✅ |
| Default Parent/Child company labels | ✅ | ✅ | ✅ | ✅ |
| Create custom association labels | ❌ | ❌ | ✅ | ✅ |
| Custom-object association labels | ❌ | ❌ | ✅ (where custom objects exist) | ✅ |
| Filter by labels in lists/segments/reports | ❌ | ❌ | ✅ | ✅ |
| Association workflow actions | ❌ | ❌ | ✅ | ✅ |
| Buying Groups org-chart tool (beta) | ❌ | ❌ | Private beta only | Public beta |
The numbers you're working with
- 50 custom labels per object pair — up from the original limit of 10; HubSpot's phrasing is "up to 50 paired or singular labels per object pair." A paired label counts as one.
- Association limits are configurable per direction: either Many, or a custom number up to 10,000.
- Per-label limits cap how often a label is used — say, one "Billing contact" per company. Precedence rule, straight from the KB: "if the number of associated contacts is limited to one and the Decision maker limit is set to many, the maximum number associated contacts is one whether or not it's labelled Decision maker." In plain English: the total association limit always wins.
- Maximum associations between two object types: 250,000 on paid accounts — raised over time from an original 10,000. A few pairings historically kept lower caps (Company-to-Ticket, for instance), so check current limits documentation before designing anything high-volume.
- Parent/Child specifically: partner analysis puts the cap at up to 10,000 associated child companies per parent — more than enough for any real org structure.
A note on pricing
Because labels need Pro or Enterprise, the real cost question is "what does the cheapest qualifying tier cost?"
HubSpot prices by seat. As a rough guide to list prices: Sales Hub Professional starts around €90/$90 per seat per month on annual billing (one-time onboarding fee of €1,500/$1,500), and Sales Hub Enterprise sits around €150/$150 per seat per month (onboarding €3,500/$3,500). Service Hub mirrors those figures closely. Marketing Hub Professional runs higher — roughly €890/$890 per month including three seats — with Enterprise around €3,600/$3,600 per month. Starter sits around €15–20/$15–20 per seat per month and does not unlock custom labels.
A real caveat: HubSpot's pricing page changes frequently, and the exact EUR annual figure for Sales Hub Professional varies across sources (you'll see both €90 annual and €100 monthly cited). EUR and USD list numbers are roughly 1:1, and annual billing saves somewhere between 10% and 40% versus monthly. Always confirm at hubspot.com/pricing before you put a number in front of a client — our full pricing guide keeps the wider picture current.
How do you use association labels? (8 RevOps use cases)
Eight patterns come up again and again in real portals.
1. Buying committees
The flagship B2B SaaS use case.
Create deal-to-contact labels for the roles that matter: Decision Maker, Champion, Economic Buyer, Technical Evaluator, Influencer, End User, Legal/Compliance, Blocker, Billing contact.
Because the role lives on the deal-contact pairing rather than on the contact, the same person can be a Champion on one deal and a Blocker on another without any conflict.
This turns a deal from a single-contact record into a map of the buying group. Send the contract only to the Legal reviewer. Alert the rep if no Decision Maker is labeled by a given stage.
It's also HubSpot's recommended alternative to building a custom object for buying groups: a custom object adds complexity, blocks native reporting, and is rarely necessary when a label carries the role. (How this relates to the separate Buying Groups feature is covered in our buying groups and buying roles guide.)
Pro tip: borrow this governance rule — no deal advances past discovery without at least three labeled stakeholders. It's a simple forcing function that surfaces single-threaded deals (the ones most likely to die when your one contact leaves) before they become a forecasting problem.
2. Customer success and account roles
The same mechanism, post-sale. Contact-to-company labels like Primary contact, Billing contact, Executive sponsor, Admin/Power user, Renewal contact, and Support contact let CS and support see at a glance who does what — right on the association cards of the company record. No clicking into contact records to guess.
3. Account-based structures
Associate every stakeholder to the right company, label the roles, and you can drive account-level automation — territory assignment, owner rotation, lifecycle updates — plus account-based reporting that actually matches how finance counts the account.
Where one contact spans multiple entities (a principal tied to both a school and its district, say), labels distinguish the relationships cleanly.
4. Company hierarchies
Use the default Parent/Child paired label for corporate ownership, and custom Company-to-Company labels for everything that isn't strictly parent and child. This one deserves its own section — see "How to model complex company structures" below.
5. Multi-company and partner deals
Plenty of deals involve more than one company — an agency buying on behalf of an end client, or a partner-sourced deal.
Associate both companies to the single deal and label them (say, Agency and End client, or Partner and Referred account) so attribution and ownership stay clear no matter who looks at the record later.
This is also how you get reports on deal count and value tied exclusively to partner companies — the backbone of partner-sourced revenue reporting. For commission tracking, some teams model a second linked deal for the partner's cut.
6. Workflows and automation
Labels show up across automation: enrollment triggers ("enroll deals associated to a contact labeled Economic Buyer"), if/then branches, Edit record actions that set or copy properties to associated records of a specific label, and Send email actions targeting associated contacts filtered by label.
The bigger lever, though, is the set of four dedicated association workflow actions:
- Create associations
- Apply association labels
- Update association labels
- Remove association labels
The create action matches records on property values — and per HubSpot's release note, that matching "only exists for single-line text, multi-line text, or phone number properties." Plan your matching keys accordingly.
The actions are available across contact, company, deal, ticket, lead, invoice, order, payment, subscription, and custom-object workflows (not products or quotes).
Two operational numbers to know: workflow-based association actions cap at 100 associations per action, and create-associations has a 5-million-per-day execution cap, where a labeled create counts as two executions.
7. Lists, reports, and dashboards
On Pro and Enterprise, you can filter lists and segments on labels.
In the custom report builder, the primary data source determines which labels are available; you add a secondary object and then "Choose association labels" to scope the report, with labels usable as an axis, a breakdown, or a filter. Direction matters with paired labels — choosing "Child Company → Parent Company" makes child companies the primary source.
Know the sharp edge before you build: selecting a label as a data-source scope excludes all other-labeled and unlabeled records from the entire report. That's often not what you want, and it's a frequent community complaint. The standard workaround is to build a list first and report off the list.
Pro tip: build roll-up count properties on a label (a count of "Billing contact" associations per deal, for example) to detect missing roles. Just make sure the roll-up keys off Record ID, not email — a contact without the keyed property silently breaks the count.
8. Routing, ownership, and deal splits
Branch workflows on labeled associations to route deals or tickets to the right owner or team automatically.
And a clarification, because people conflate these: for sharing revenue credit between users, HubSpot has a separate native Deal Splits feature (Sales and Service Pro and Enterprise). That's distinct from labels, which describe record relationships, not user credit. For partner-sourced attribution, labeled company-to-deal associations (Channel Partner, Distributor, Referral) are the recognized pattern. One standing limitation to flag for finance: deal-split percentages don't flow into individual reps' revenue-goal attainment by default.
Designing a label taxonomy that survives contact with a real sales team is harder than it looks. Talk to Superwork about a HubSpot RevOps engagement and we'll map your buying-committee roles, company hierarchies, and workflow triggers into a clean, governable label system — and build the reporting to prove it's being used.
How to model complex company structures in HubSpot
Model company hierarchies with the built-in Parent/Child labels, and everything else — resellers, agencies, franchises, siblings — with custom Company-to-Company labels. The three hard limits to design around: one parent per child, no native roll-up of data from child to parent, and no native org-chart view.
If your accounts are holding companies, franchise networks, or partner ecosystems, this is where labels get tested. Here's how to work with what exists — and around what doesn't.
Parent/Child hierarchies and holding companies
The native Parent/Child paired label is the backbone, and it's available on every plan, Free included.
For a holding company, the holdco is the parent and each operating entity is a child. The cardinality rule, verbatim from HubSpot's knowledge base: "Each parent company can have multiple associated child companies, but a child company can only be associated with one parent company."
Multi-level chains work — a company can be a child of one company and a parent of others, and HubSpot's own docs walk a three-level example. What HubSpot blocks is loops, where a record ends up associated to itself somewhere down the chain.
You can set the relationships manually or via import, with one sequencing rule: parent companies must exist before you import their children.
Before you build anything, agree internally on what a "company" record even means in your portal — legal entity, brand, or location. A hierarchy built on mixed definitions is worse than no hierarchy. Partner best practice is consistent here: pick one definition, use consistent naming (append region or HQ to disambiguate lookalike subsidiaries), keep the hierarchy shallow, and audit it regularly.
The 3 limits to design around
Limit #1: One parent per child. True multi-parent structures — a joint venture owned by two groups, for example — aren't natively supported. Pick the controlling entity as the parent and model the second relationship with a custom label.
Limit #2: No native roll-up. HubSpot confirms there is no data sync between parent and child companies: associated contacts, deals, and activities stay on their own records and do not aggregate upward. There's no native "total revenue across all child companies" — it's a long-standing, top-voted idea, still unshipped. The workarounds: custom roll-up properties with Data/Operations Hub, custom-coded solutions, or marketplace apps (Insycle for bulk association management and dedup, Koalify for multi-condition auto-association).
Limit #3: No native org chart. Visualizing a company hierarchy requires a marketplace app. HubSpot acquired OrgChartHub, but that capability resurfaced as the contact-level Buying Groups beta — not a company-to-company tree view.
There's a workflow corollary too: automation that reads a child's data and writes to the parent is constrained — cross-hierarchy workflows are one of the weakest points of the model. If parent-level reporting is a genuine requirement, budget for Operations Hub or a third-party tool from day one rather than discovering the gap in month three.
Partners, resellers, referrals, and agencies
Resist the temptation to abuse Parent/Child for partner relationships — reserve it for actual corporate ownership.
You have two clean modeling choices instead:
- Company-to-Company custom labels. Create paired labels like Reseller/Client, Distributor/Reseller, Referral partner/Referred account, or Agency/Client. The relationship stays structural and reportable, and it survives any individual deal.
- Deal-level associations. Associate both the end customer and the partner company (or contact) to the deal, and label the partner side. This is the pattern for partner-sourced revenue reporting, covered in the use cases above.
Use both where it makes sense: the company-to-company label captures the standing relationship; the deal-level label captures who touched this specific piece of revenue.
Franchises and multi-location businesses
Model the franchisor as parent and each location as a child — or, if the ownership structure is more federation than hierarchy, use a custom "Franchise HQ"/"Location" paired label instead.
For larger networks, HubSpot's Business Units (brand separation) and multi-portal architectures enter the picture.
And here's the dividing line that keeps the model clean: association labels handle the relationship; franchise-specific data with its own attributes — royalty periods, location health scores — belongs in a custom object (Enterprise). Don't try to make a label carry data.
Sibling companies
No native sibling label exists. Create a symmetric single label — "Sibling company" — and use the association workflow actions to auto-associate children that share a parent. One workflow, and your subsidiaries know about each other.
Running a holdco, franchise, or partner-heavy account structure in HubSpot and not sure whether labels, roll-up properties, or a custom object is the right backbone? Get in touch with Superwork — we design and build these hierarchies for B2B companies, roll-up reporting included.
Association labels vs. custom properties vs. custom objects: which should you use?
Use an association label when a relationship has a role you'll filter, automate, or report on. Use a custom property for a single, slow-changing attribute on one record. Use a custom object only when the relationship is itself an entity with its own data — subscriptions, contracts, locations.
Three tools, three jobs. Getting this decision right up front saves you a painful re-model later.
Association label — for roles and relationship types, especially many-to-many situations where the same contact is a Champion on one deal and a Blocker on another. The rule of thumb: if the role changes the meaning of the relationship, it deserves a label.
Custom property — for a single, slow-changing attribute on one record (current plan tier, a buying role captured flatly on the contact). Simpler to report on, available on all tiers. But it can't scale to many-to-many: one "buying role" property on a contact can't express that the role differs per deal.
Custom object — for relationships that are entities in their own right, with their own properties: subscriptions, contracts, franchise locations with royalty data. Know the costs: Enterprise-only, counts toward object limits, can't be used in lists (only custom reports), and adds reporting complexity. Don't build a custom object just to represent a relationship role — a label will do it natively, and HubSpot's own guidance points the same way. (When custom objects do earn their keep, we've covered that in the custom objects guide.)
The graduation signal: when a relationship starts accumulating its own attributes over time — subscription terms, contract values, location metrics — it has outgrown a label. That's when a custom object earns its complexity.
How do you set up HubSpot association labels? (Step by step)
To create HubSpot association labels, you need Super Admin permissions and a Professional or Enterprise subscription. Go to Settings → Objects → select the object → Associations tab → Create association label — or use the Data Model Builder under Data Management → Data Model.
Two paths, same destination.
Path A — through Settings:
- Go to Settings → Objects → select the object → the Associations tab.
- Click Create and configure → Create and configure label limits.
- Choose the object relationship (Deals-to-Contacts, for example), pick single or paired, and name it. Keep the name clean — avoid semicolons and non-alphanumeric characters, because they break imports.
- Optionally edit the internal name (what the API and integrations use). Careful: the internal name is immutable after creation, so get it right the first time.
- Click Next, set your per-direction limits, and Save.
Path B — through the Data Model: go to Data Management → Data Model → Edit Data Model → the Associations tab → select the object → click the ellipsis on the related object → Create association label. You can also use Breeze Copilot to create labels conversationally.
Either way, once you've created the label, refresh a record and it'll appear in the dropdown.
Applying labels. On a record, hover over the association card → More → Edit association labels → select your label(s) → Update. When you're creating and associating a brand-new record at the same time, set the label after the record is created, not during. For bulk application, use import (include the association columns and add the label) or the API and workflows.
Editing, renaming, deleting. Back in Settings → Objects → Associations, hover over a label and click More. From there you can Edit label (display name only — the internal name stays locked), Edit label limit, View API details (name, inverse, internal name, limits, category, and associationTypeId), View history, or Delete. Deleting is irreversible, and if the label is in use on records or in tools, you have to remove it from those assets first.
Working with the API
The Associations v4 API splits into two endpoint sets: schema endpoints (view, create, and manage types, labels, and limits) and details endpoints (create, edit, and remove associations on actual records).
The calls you'll reach for most:
- Retrieve labels:
GET /crm/v4/associations/{from}/{to}/labels— returnscategory,typeId, andlabel. - Create a label:
POST /crm/v4/associations/{from}/{to}/labels— includelabel, and for a paired label,inverseLabel(remember, the two can't match). - Create labeled associations: include
associationCategory(HUBSPOT_DEFINEDorUSER_DEFINED) andassociationTypeId. You can batch up to 2,000 inputs per call.
Marketplace apps like Workflow Associations Manager and Associ8 add label automation as workflow actions if you'd rather not write custom code.
5 setup mistakes to avoid
- Don't overload an object pair. Six to eight labels covers most buying committees. More than that and rep adoption falls off a cliff — every extra label is one more thing someone has to remember to set.
- Avoid junk labels. "Related," "Linked," and other vague descriptors are useless in reports and workflows. If you can't filter or automate on it meaningfully, don't create it.
- Skip semicolons and special characters in names — they conflict with import delimiters.
- Update your workflows after adding labels. Existing automations won't recognize a new label automatically; you have to add it to the relevant triggers and branches.
- Plan a backfill. New labels don't retroactively tag existing associations. If you want historical deals labeled, you'll need an import.
What can't association labels do? (Limitations and gotchas)
The big four: labels can't be made mandatory natively, there's no "does not have label" filter, contact-to-company labels don't sync to Salesforce through the native connector, and parent/child companies share no data. Each has a workaround — none is invisible.
Honest constraints save you from designing around capabilities that don't exist.
Labels can't be made mandatory natively. A long-standing, top-voted feature request. You can't force a deal to have a Decision Maker before it's created or advances a stage. The common workaround: a view-only deal property (a checkbox) that a workflow sets when an associated contact carries the required label, then make that property required at a pipeline stage. Relief is on the way, though: with the announced /2026-09/ API version, admin-configured validation rules — including conditional required properties and user-level association permissions — will be enforced on API writes, not just in the UI. If you enforce association or label completeness through integrations, put that on your roadmap.
Cross-hierarchy automation is constrained. Copying values between parent and child companies isn't supported out of the box — automation that reads a child's data and writes to the parent is the weak spot of the hierarchy model. Third-party tools like Insycle or Koalify, or an Operations Hub custom-code action, fill the gap. (Creating associations via workflow, by contrast, is solved by the dedicated workflow actions — with the caveat that property matching only works on single-line text, multi-line text, and phone number properties.)
Salesforce sync is nuanced — and the nuance matters. The newer HubSpot–Salesforce company sync can sync association labels for companies, deals, tickets, and custom objects, with selectable sync direction — per the KB: "Association labels for companies, deals, tickets, and custom objects are supported for sync via the HubSpot-Salesforce integration." The known gap is contact-to-company labels, which the native connector does not sync — a frequent pain point, typically solved with third-party tools (Associ8, for example) or custom middleware. Be aware that HubSpot's own documentation has carried conflicting statements on label sync over time, so verify against your portal's connector version before committing a client — or your own architecture — to it.
Reporting and list filtering is unintuitive. To filter a contact list by a contact-to-company label, you first have to add a company-property filter (like "Company name is known"), and only then does the label dropdown appear under "Any company." To report on contacts' deal labels, you have to use the custom report builder with both objects in the report. It works — it's just not where you'd expect it.
There's no "is none of" or "does not have label" filter. Finding records that are missing a label requires list-membership workarounds or report tricks. This bites whenever you want to find, say, deals with no Decision Maker.
You can't filter on the Primary association's label specifically. Filters evaluate "any associated object," so you can't isolate a primary-versus-non-primary label distinction.
Parent/child blocks merges. To merge two companies that have a Parent/Child label between them, remove the label first. Merges also fail with Salesforce sync turned on past 250 combined merges.
Migrating? Plan these up front
Map your source "contact roles" or relationship fields to HubSpot labels before you import anything — retrofitting later is painful.
Remember the 50-label-per-pair cap and the 250,000-association ceiling per object type on paid accounts when you're estimating volume. Budget time to backfill labels via import, since they don't apply retroactively.
Verify primary-company designations after any import or migration — the first company associated becomes Primary automatically, which is rarely the one you meant.
Bulk association work is easiest via import (keyed on Record ID or domain) or the association workflow actions; for large-scale or multi-level hierarchy cleanup, third-party tools like Insycle and Koalify are the standard reach.
On governance: keep a documented label dictionary, use clear and action-oriented names, standardize the direction of your paired labels, restrict label management to Super Admins, and review label fill-rate regularly. An unused label is worse than no label — it gives you false confidence in your reports.
Where association labels stand today
If you evaluated association labels a while ago and walked away, the feature has matured considerably. Here's the current state at a glance:
Shipped and stable:
- 50 labels per object pair (up from the original 10)
- Four dedicated workflow actions — Create associations, Apply/Update/Remove association labels — so label management runs on automation instead of rep memory
- Association volume ceiling of 250,000 per object type on paid accounts
- Data Model Builder support for reviewing associations and setting labels and limits, including on cart and order/invoice objects
Announced and coming:
- The
/2026-09/API version will enforce admin-configured validation rules on API writes, opening the door to real association-completeness enforcement for integration-heavy portals
Still missing:
- Native company org charts, parent/child roll-ups, and mandatory labels. The closest native movement is the OrgChartHub acquisition resurfacing as the contact-level Buying Groups beta.
How to roll out association labels (5 stages)
If you're starting from scratch, here's a sequence that works.
Stage 1 — Confirm tier and scope (week 1). Verify the account is on Professional or Enterprise of any Hub, or Smart CRM Pro/Enterprise. On Free or Starter, custom labels aren't available — model relationships with custom properties as a stopgap, and build the upgrade case around buying-committee visibility and cleaner reporting. The threshold question: do you need to segment, report, and automate on relationship roles, or just on relationship existence? If it's roles, you need labels.
Stage 2 — Design the taxonomy before building (weeks 1–2). Draft a label dictionary for each object pair. Cap buying-committee labels at six to eight. Decide single versus paired for each, and document the internal names, since they're permanent. If you genuinely need more than 50 labels on one pair, that's a signal to reconsider the model — a custom object or property might fit better.
Stage 3 — Configure and pilot (weeks 2–3). Create the labels, set per-direction and per-label limits (one Billing contact per deal, for example), and pilot on a single pipeline. Implement the "at least three labeled stakeholders before discovery exit" rule using a view-only property plus a workflow, since labels can't be required directly.
Stage 4 — Automate and report (weeks 3–5). Build workflow enrollment and branches on labels, use the association workflow actions to auto-apply labels from property matches (remember: matching works on single-line text, multi-line text, and phone properties only), and build roll-up count properties keyed on Record ID to flag missing critical roles. Then build the custom-report-builder dashboard for committee coverage ("deals over €50k/$50k with no Decision Maker") and child-company listings under each parent. Where the label-scope limitation bites, report off a pre-built list instead.
Stage 5 — Govern (ongoing). Restrict label admin to Super Admins, assign a named data steward, audit fill-rate quarterly, and backfill historical associations via import. Document the model so the next admin inherits a taxonomy, not an archaeology project. Re-evaluate Buying Groups when it reaches general availability or when you move to Sales Hub Enterprise — but don't upgrade solely for it, because labels already deliver committee modeling on Professional.
4 benchmarks that should change your approach
- You need true parent-level revenue or activity roll-ups, multi-parent structures, or a visual org chart → labels alone won't get there. Add Data/Operations Hub roll-ups or a marketplace app (Insycle, Koalify, OrgChartHub/DemandFarm), or honestly evaluate a custom-object model.
- A relationship is accumulating its own attributes over time (subscription terms, contract values, location metrics) → graduate from a label to a custom object.
- You're approaching 50 labels on one pair, or reps can't explain what a label means → the taxonomy is too complex. Consolidate.
- Salesforce is the system of record for contact roles → don't rely on the native connector for contact-to-company label sync. Budget for third-party sync or middleware from day one.
Frequently asked questions
What are association labels in HubSpot?
Association labels describe why two CRM records are connected. A plain association says two records are linked; a label adds context — for example, that a contact is the "Decision Maker" on a deal, or that one company is the "Parent" of another. The label lives on the relationship between the two records, not on either record alone.
What HubSpot plan do I need for association labels?
Custom association labels require Professional or Enterprise on any Hub (Marketing, Sales, Service, Data, or Content) or on Smart CRM. Free and Starter accounts can only use the built-in Primary company label and the default Parent/Child company labels.
How many association labels can I create?
Up to 50 custom labels per object pair (such as Contact-to-Deal), up from the original limit of 10. A paired label like Parent/Child counts as a single label toward that limit.
What's the difference between association labels and Buying Groups?
Association labels are the underlying mechanism for describing relationships, and they work on Professional. Buying Groups is a separate, Enterprise-tier feature (currently in public beta) that adds a visual org chart and AI auto-build on top of that concept. You can model a full buying committee with labels alone — you don't need Buying Groups or Enterprise to do it.
Can I make association labels required?
Not natively. The common workaround is a view-only property set by a workflow that checks for an associated record with the required label, then making that property required at a pipeline stage. Two things point to change: a "Required Association Labels for Manual Record Creation" private beta, and the announced /2026-09/ API version, which will enforce admin-configured validation rules on API writes.
Can I filter lists and reports by association label?
Yes, on Professional and Enterprise — though the filtering is unintuitive. For contact-to-company labels you first add a company-property filter before the label dropdown appears, and for contacts' deal labels you use the custom report builder with both objects in the report.
Do association labels sync to Salesforce?
Partly. The newer HubSpot–Salesforce company sync supports association labels for companies, deals, tickets, and custom objects, with selectable sync direction. Contact-to-company labels are the known gap — the native connector doesn't sync them, so teams use third-party tools (like Associ8) or custom middleware. HubSpot's documentation has been inconsistent on this over time, so verify in your portal's connector version.
Can a child company have two parents?
No. Each child company can have only one parent. A parent can have many children (up to 10,000, per partner analysis), but the relationship only runs one way. Multi-level chains are fine — a company can be a child of one company and a parent of others — but loops are blocked.
Does data roll up from child companies to the parent?
No. There's no native data sync between parent and child companies — contacts, deals, and activities stay on their own records and don't aggregate upward. Parent-level roll-ups need Data/Operations Hub custom roll-up properties, custom code, or a marketplace app. Native roll-up is a long-standing, top-voted idea that hasn't shipped.
Can HubSpot show a visual org chart of a company hierarchy?
Not natively. Visualizing company hierarchies requires a marketplace app. HubSpot acquired OrgChartHub, but that capability resurfaced as the contact-level Buying Groups beta — not a company-to-company tree view.
How do I add association labels via the API?
Use the Associations v4 API. Create a label with POST /crm/v4/associations/{from}/{to}/labels (include label, and inverseLabel for a paired label — the two can't be identical). Create labeled associations by including associationCategory and associationTypeId, batched up to 2,000 inputs per call.
Can workflows create associations or apply labels automatically?
Yes. Four dedicated workflow actions (on Pro and Enterprise) create associations and apply, update, or remove labels. The caveats: the create action matches records only on single-line text, multi-line text, or phone number properties; each action caps at 100 associations; and create-associations has a 5M/day execution limit (a labeled create counts as two). What remains constrained is cross-hierarchy data movement — copying values between parent and child companies still needs Operations Hub custom code or a third-party tool.
The bottom line
Association labels are one of the highest-leverage, lowest-cost features in HubSpot for anyone serious about RevOps.
They turn vague connections into structured, queryable intelligence — letting you model buying committees, company hierarchies, and multi-company deals without buying a single add-on, as long as you're on Professional or above.
The wins are real: cleaner reporting, smarter automation, and early warning on single-threaded deals.
So are the limits: no mandatory labels (until the announced API validation rules land), no contact-to-company label sync to Salesforce, no parent/child roll-ups, no "is none of" filter, and a 50-label-per-pair ceiling that rewards a disciplined taxonomy over a sprawling one.
Design the system before you build it. Automate it with the workflow actions. Govern it after. You'll get years of value out of it.
And if you want a second set of eyes on your HubSpot association labels strategy — or help building the workflows and reports that make labels pay off — reach out to Superwork and we'll map it with you.
Feature, limit, and tier details are anchored to HubSpot's official knowledge base and developer documentation, and this guide is updated as HubSpot ships changes. A few honest sourcing notes: some numeric limits (100 associations per workflow action, the 5M daily execution cap, the 250,000-association ceiling) come from HubSpot docs and community threads and can change; the absence of native roll-ups, org charts, and mandatory labels is established from HubSpot's idea boards and could be resolved by a product release at any time; and several practitioner techniques cited trace to partner and vendor blogs with a commercial interest — the techniques are sound and corroborated, but treat tool recommendations accordingly. Pricing and beta status change frequently — verify on a live HubSpot session before quoting specific figures to clients.