Multi-brand HubSpot guide

Run sister companies in one HubSpot portalwithout losing brand reporting, consent, or ad signal.

Shared-services marketing works when brand is stamped at record creation, lifecycle is modeled per brand, and each brand's ads get their own conversion signal. Here's the architecture, step by step.

DR

Dana Reyes

Contact · Larkspur Group portal · 3 brands

Toggle to see the same contact before and after the architecture fix.

Lifecycle Stage (standard) Customer One value for three brand relationships. Group's highest stage, written by one sync workflow.
  • KestrelCustomerFits the one field.Closed-won deal, Kestrel pipeline
  • NorthwindSales-qualifiedStuck in a custom propertyLead record, Northwind pipeline
  • JuniperUnsubscribedShared type: out of all threeJuniper | Newsletter only
Google Ads, Northwind: no conversion sent. Custom properties aren't a native trigger.
Google Ads, Northwind: "NW | SQL" sent as an offline conversion with GCLID and hashed email.
Why this breaks

The org chart isn't the problem.The data model is. Five causes show up in almost every multi-brand portal, and none of them get fixed by a new reporting line.

Brands partitions what customers see.
It doesn't partition your data.

The Brands add-on separates

  • Domains and tracking code
  • Subscription types and pages
  • Ad and social accounts
  • Forms, emails, campaigns

It does not separate

  • CRM record visibility
  • Timeline activity
  • Integrations and default reports
  • Marketing-contact status, time zone
01

One lifecycle field for many relationships

Lifecycle Stage holds one value, moves forward only and is shared portal-wide. "Customer of A, lead of B" can't both be true, so teams invent custom fields native tools ignore.

02

Ads only listen to the standard field

HubSpot's native Google Ads conversion events fire on standard Lifecycle Stage changes or form submissions. Custom properties, Lead stages and Deal stages aren't triggers. That's how four of five brands in one B2C group ended up sending Google nothing.

03

Brand is inferred later, not stamped at creation

Brand-tagged HubSpot forms set the brand automatically. Imports, integrations, chat, sales-created records and non-HubSpot forms don't. Untagged records become "group" records nobody owns.

04

"Business Units" became "Brands" for a reason

Buyers expect a sub-portal and get a brand switcher. When two sister companies sell into competing ecosystems, shared timelines turn into an accidental data-leak risk.

05

"Shared services" with no operating model

Two internal clients, both sales leaders, both under-funded, and no intake queue, allocation % or SLA. The loudest request wins, and one shared "marketing" subscription across legal entities becomes a compliance gap.

What good looks like

Measure every brand, not just the portal.Start with the hard platform limits, then hold each brand's sending domain, data and ad signal to these targets.

2Native Google Ads triggers in HubSpot: lifecycle change or form submitHubSpot KB and staff reply, Oct 2026
100Ad conversion events on Enterprise (Pro 50, Starter 5)HubSpot KB, 2026
100Max brands per portal, one add-on per brandHubSpot KB, 2026
30Connected accounts under Multi-Account ManagementHubSpot product page, 2026

Benchmarks: weak, acceptable, strong

Metric (per brand)WeakAcceptableStrong
Spam complaint rate per sending domain≥0.30% (Gmail/Yahoo enforcement)0.10–0.29%<0.10%
Unsubscribe rate per marketing send>0.5%0.2–0.5%<0.2% (average 0.15–0.22%)
Time to honor an unsubscribe across brands>10 business days (CASL breach)≤2 days (Gmail/Yahoo rule)Instant, per brand plus group "unsubscribe from all"
CRM data accurate and complete<50% (76% of orgs report this)50–80%>80%
Records with brand stamped at creation<90%95–98%≥99% with a nightly exception queue
Google Ads conversion signalNo offline or enhanced conversionsStandard GCLID offline importEnhanced conversions for leads: median +10% conversions vs. standard import
Marketing budget as % of revenue≤6%~7.7% (average)>9%, allocated by business unit against pipeline

Sources: Google and Yahoo bulk-sender rules (2024) via Red Sift (2026); Mailchimp unsubscribe benchmarks (data Dec 2023); CRTC CASL FAQ (2026); Validity, The State of CRM Data Management in 2025; Google Ads Help, About offline conversion imports (2026); Gartner CMO Spend Survey (2025). "Brand stamped at creation" is a JayOh practitioner target, not a published study.

The step-by-step playbook

Ten steps to a portal both sales leaders trust.Container first, then the brand stamp, lifecycle, consent, ads and reporting. Each step names the HubSpot object, property or setting.

  1. 01

    Pick the lightest container that meets legal needs

    What

    One portal + Teams, one portal + Brands, or separate portals + MAM. Decide before buying.

    Why it matters

    Everything hangs off this choice. Switching later means a rebuild.

    • Score each entity: separate legal entity? Hard data wall required? Separate sales team? Overlapping customers? Different go-to-market motion?
    • Two sister companies, one marketing team, competing ERP ecosystems: one portal + Teams; add Brands only for separate domains and subscription pages.
    • Five B2C brands with cross-sell across three countries: one portal + Brands. Fix lifecycle and ads, not the container.
  2. 02

    Stamp the brand at creation and make it mandatory

    What

    One governed brand value on contacts, companies, deals, tickets and leads.

    Why it matters

    A brand inferred later is the root of every reporting failure.

    • business_unit_origin (single-select, contact and company): the brand that created the record. Never overwritten; guard it with a workflow.
    • business_units_engaged (multi-select): every brand the person has touched. Append-only.
    • business_unit (single-select, required) on deals, leads and tickets, defaulted from the pipeline.
    • The Brands add-on adds a multi-value system Brands property, set by brand-tagged forms; confirm its internal name.
    • Stamp at every door: hidden form fields (HubSpot and non-HubSpot), a required import column, integration mapping, chat-inbox workflows and a required field on the sales create form.
    • Backstop: a workflow infers unknown origins from first page-view domain, source or deal pipeline; leftovers go to an exception queue.
  3. 03

    Partition visibility with Teams, not Brands

    What

    Teams plus view and edit permissions decide who sees which records.

    Why it matters

    Brands doesn't hide timeline activity or restrict pipelines. You can hide deals by team, but the pipeline itself stays visible.

    • Create one team per unit: BU-A Sales, BU-B Sales, Shared Marketing.
    • Sales seats get "Team only" record access. Shared marketing and RevOps get "Everything."
    • If one company's reps must not see the other's deals, apply team-based deal permissions and accept that contact timelines can still show cross-brand activity.
  4. 04

    One group lifecycle, one relationship per brand

    What

    Keep standard Lifecycle Stage as the group's highest relationship. Model brand status on an object that can exist more than once per person.

    Why it matters

    Native ads, attribution and funnel reports read only the standard field. Per-brand custom lifecycle properties are invisible to them.

    Contact · Lifecycle Stage = highest across brandsNative ad events keep working
    Lead per brandSales Hub Pro+. Several leads per contact, a lead pipeline per brand.
    Deal per brandDeal pipeline per brand. Closed Won rolls up to bu_a_customer.
    Brand Relationship objectEnterprise custom object. Cleanest for B2C cross-sell; no native ads support.
    • Custom lead pipelines lose default lead-stage automation and count against the shared pipeline limit.
    • Mirror brand status to shadow fields (bu_a_lifecycle) for segmentation only, never as the system of record.
    • One "Group lifecycle" workflow is the only writer of Lifecycle Stage. Remove manual edits with field-level permissions.
  5. 05

    Set consent per brand and per country

    What

    Subscription types, a preference page and an opt-out import for each brand.

    Why it matters

    Consent belongs to a legal entity. Mixed subscription types are the most common compliance failure in shared services.

    • Name types by brand and category: BU-A | Newsletter, BU-A | Product updates, BU-A | Events.
    • With Brands, "opt out of all" applies only to that brand. Deleting a brand removes its brand-level unsubscribes, so export them first.
    • Cross-brand marketing needs its own opt-in: a "Hear from our sister brands" checkbox mapped to Brand B's type.
    • Multi-country: store consent_country and consent_source_brand. CASL requires naming every sender and honoring unsubscribes within 10 business days.
  6. 06

    Suppress across brands, not just within them

    What

    Group rules so one person isn't hit by five brands a week.

    Why it matters

    Gmail and Yahoo enforce a 0.3% spam ceiling per sending domain. Cross-brand fatigue lands on the parent's reputation.

    • SUPP | Global hard suppress: hard bounces, spam reports, legal holds and competitors, attached to every send in every brand.
    • SUPP | Open deal in other BU: pause Brand B nurture during Brand A's open deal, if sales asks.
    • SUPP | Customer of BU-A: excluded from Brand A acquisition ads and emails.
    • Add a "any marketing email in the last 3 days" suppression list and portal-wide send frequency caps; test caps with Brands.
  7. 07

    Give each brand its own ad conversion signal

    What

    Each brand's campaigns optimize on that brand's qualified pipeline, not the group's lifecycle.

    Why it matters

    Native HubSpot events for Google cover standard lifecycle changes and form submissions only. Brands tracked in custom properties send nothing.

    • Layer 1: brand-tagged forms feed one native ad conversion event per brand, mapped to a brand-specific action in that country's Google Ads account.
    • Layer 2: one native lifecycle event (e.g. Customer) as a secondary, group-level action with a fixed value.
    • Layer 3: when a brand lead or deal hits the target stage, send an offline conversion (GCLID, hashed email, BU-X | SQL, value) via Data Hub custom code, a webhook or an iPaaS.
    • Since June 15, 2026, Google routes offline conversion and enhanced-conversions-for-leads uploads through its Data Manager API. Check older scripts and connectors.
    • Capture gclid, gbraid, wbraid, fbclid and li_fat_id on every form, first- and last-touch per brand. Use campaign-specific conversion goals so Brand A bids only on BU-A actions.
  8. 08

    Report by business unit in three layers

    What

    Brand dashboards, a shared-capacity dashboard, a parent rollup.

    Why it matters

    Default report templates have no brand filter. Leadership only sees what your reports can split.

    • Every custom report uses business_unit (deals, leads, tickets) or Brands / business_unit_origin (contacts) as a filter or breakdown.
    • Reports saved from brand-filtered ads or social views save unfiltered. Rebuild them in the custom report builder.
    • Standard set: BU-A Growth, BU-B Growth, Shared Marketing Capacity, Group Executive Rollup. One time zone per portal drives month-end, so set it deliberately.
  9. 09

    Run shared services through one intake queue

    What

    A Marketing Requests ticket pipeline (or custom object) tagged by business unit, with hours and SLA.

    Why it matters

    It replaces "whoever shouts loudest" with data both sales leaders can see.

    • Properties: requesting_bu, request_type, priority, estimated_hours, actual_hours, due_date, sla_status.
    • One internal HubSpot form is the only intake. Use SLA timers with Service Hub Pro or Enterprise.
    • Report hours vs. allocation % and pipeline vs. spend by unit monthly (see the calculator in section 7).
  10. 10

    Govern drift every week and every quarter

    What

    Controls that catch untagged records and wrong-brand assets.

    Why it matters

    Emails, forms and campaigns are locked to a brand at creation. Fixing a mistake means cloning and rebuilding.

    • Weekly "BU unknown" list with a named owner.
    • Only Super Admins create Brands. Build every asset inside the correct brand context.
    • Quarterly audit: spam rate per domain, unsubscribes per brand, share of conversion actions receiving data, lifecycle-sync workflow errors.

On Salesforce instead? The person-level problem is identical: one Lead or Contact, one status. Use a required Business_Unit__c picklist on Lead, Contact, Account, Opportunity and Case; record types only where processes truly differ; OWD Private with sharing rules by business unit; and Opportunities or a BU Relationship junction object for per-unit status.

Account Engagement business units cap at 25, can't share most assets, and moving a prospect between units carries fields, not activities.

Best practices

Twelve rules that keep brands separable.If you only adopt one, make it the first: a brand stamp nobody can skip.

  1. 1

    Stamp the business unit at creation. Never infer it later. Immutable origin, append-only engaged.

  2. 2

    Standard Lifecycle Stage = highest group relationship, written by one workflow only.

  3. 3

    Brands for brand-facing separation, Teams for visibility. Don't treat Brands as a data wall.

  4. 4

    One subscription-type set per brand, built around legal basis and category, not campaigns.

  5. 5

    One global suppression list on every send, plus group frequency rules.

  6. 6

    An authenticated sending domain per brand, with spam rate monitored below 0.1%.

  7. 7

    Turn on native form conversion events per brand now, then add offline conversions for MQL, SQL and Customer.

  8. 8

    Capture click IDs with timestamps, first- and last-touch per brand.

  9. 9

    Use campaign-specific conversion goals so one brand's bidding never learns from another's conversions.

  10. 10

    Put a business-unit filter on every report from day one. Treat default templates as unusable for brand splits.

  11. 11

    One intake pipeline with BU, hours and SLA. Publish allocation vs. actuals to both sales leaders monthly.

  12. 12

    Separate portals only for legal, regulatory, sale-readiness or different-GTM reasons, connected with Multi-Account Management.

Common mistakes

Six setups that look fine until month-end.Each one has a price: a funnel you can't see, a signal Google never gets, or a license you didn't need.

Custom lifecycle properties wired to nothing

Four brands track status in custom fields. Native ad conversion events can't read them.

CostThose brands send no downstream signal. Smart Bidding optimizes on clicks and form fills, so junk leads rise.

One Lifecycle Stage for every brand

A Brand A customer can't be re-nurtured as a Brand B lead; the field only moves forward.

CostNewer brands' funnels are undercounted and cross-sell pipeline goes invisible.

Brand inferred after the fact

Records arrive untagged from imports, chat and integrations.

Cost"Unknown BU" becomes the biggest bucket. Allocation fights have no data behind them.

Shared subscription types across sister companies

One "Marketing Information" type covers every legal entity.

CostRegulatory exposure, and one brand's unsubscribe wipes out another brand's audience.

Treating Brands as a data wall

Timelines and integrations aren't partitioned by brand.

CostAn accidental data leak between companies that sell into competing ecosystems.

Separate portals for different logos

Each logo gets its own portal, properties and workflows.

CostA second Enterprise license (~$3,600/mo list), duplicated builds and no cross-brand customer view.

Interactive tools

Pick the container. Price the split.Two calculators on real arithmetic: which portal architecture fits your group, and what each business unit owes shared marketing.

Architecture picker

Change any input; the recommendation and list-price estimate update.

Need a provable data wall?

Contracts, regulation, data residency or a pending sale.

Each brand needs its own domain and subscription page?

Current Marketing Hub tier

Optional. Leave blank to see the base cost only.

Recommended container

One portal + Brands add-on

  • Calculating…
18,000contacts in 2+ brands; one Lifecycle Stage can't describe them
Lead objectsuggested per-brand lifecycle pattern (step 4)
3brand-level conversion actions to build (form + offline)

Estimated Marketing Hub list price, per month

One portal + TeamsYour current tier$890
One portal + BrandsEnterprise + add-on quote$3,600 + quote
Separate portals + MAM1 Enterprise + Pro$5,380

List-price estimates only: Marketing Hub Professional $890/mo (3 seats) and Enterprise $3,600/mo (5 seats), per Resonate HQ (verified May 2026). Excludes extra seats, contact tiers and onboarding. Brands needs Enterprise plus one add-on per brand; HubSpot doesn't publish the add-on price, so enter your quote. Separate portals assume the minimum for Multi-Account Management: one Enterprise account, the rest Professional.

Shared-services chargeback

Hybrid model: base share by plan, variable true-up by hours logged.

Set annually by the CEO or CFO; revenue- or plan-weighted.

$24,686BU-A chargeback this month
$20,314BU-B chargeback this month
$2,314true-up vs. a flat base split
BU-A (established)54.9% of cost
BU-B (newer)45.1% of cost
BU-A baseBU-A variableBU-B baseBU-B variable

Base pool $31,500 split 60/40. Variable pool $13,500 split by hours (43% / 57%).

Copyable templates

Copy the brand, lifecycle and intake specs.Three tables, tab-separated, ready to paste into a sheet or your portal build document.

Copies all three tables as tab-separated text.

ABrand / business-unit property spec

Property (internal name)Object(s)TypeValuesRules
business_unit_originContact, CompanySingle-selectbu_a, bu_b, … groupRequired at creation via form hidden field, import column, integration map or creator. Never overwritten (workflow guard).
business_units_engagedContact, CompanyMulti-selectSameAppend-only. Workflow adds a value on brand form fill, brand lead or deal creation, or purchase.
Brands (HubSpot system)Contact (+ objects per portal)Multi-value, systemConfigured brandsAuto-set by brand-tagged forms. Confirm internal name in your portal. Backfill with Append, never Replace.
business_unitDeal, Lead, Ticket, custom objectsSingle-select, requiredSameDefaulted from pipeline; validated by workflow.
bu_unknown_flagContactCalculated booleantrue / falseTrue when origin is empty; feeds the exception queue.

BPer-brand lifecycle field spec

PropertyValuesSource of truthWritten by
bu_a_lifecycleSubscriber, Lead, MQL, SQL, Opportunity, Customer, Former customerBU-A lead, deal or Brand Relationship record"BU-A lifecycle sync" workflow only
bu_a_lifecycle_date_[stage]DateSameSame
bu_a_customerBooleanClosed Won in BU-A pipeline, or purchaseSame
bu_b_lifecycle (repeat per brand)SameBU-B records"BU-B lifecycle sync" workflow only
Lifecycle Stage (standard)Highest stage across all brands"Group lifecycle" workflowOnly that workflow; manual edits removed by field-level permissions
gclid_first, gclid_last, gclid_last_date, fbclid_last, li_fat_id_last, click_id_brandText / dateHidden form fieldsForms + workflow

CShared-services intake, SLA and allocation

Field / ruleBU-A (established)BU-B (newer)Notes
Base allocation %e.g. 60%e.g. 40%Set annually by CEO/CFO; revenue- or plan-weighted
Variable true-up+/- hours logged vs. allocationSameQuarterly, from the Marketing Requests pipeline
Intake channelOne HubSpot form to Marketing Requests pipelineSameNo Slack DMs; if it isn't ticketed, it isn't worked
Request typesCampaign, content, event, sales enablement, ops/data, adsSamerequest_type property
SLA: acknowledge1 business day1 business dayTicket SLA
SLA: small request (<4 h)5 business days5 business daysTicket SLA
SLA: campaignPlanned in monthly prioritizationSameJoint meeting with both sales leaders
Reporting cadenceMonthly: hours, pipeline sourced/influenced, CAC by BUSameShared Marketing Capacity dashboard
Conflict ruleSame-week sends: lower-priority BU shifts 48 hSameGlobal frequency cap applies
FAQ

What marketing and RevOps leaders ask first.Direct answers, current as of October 2026. Click a question to open it.

Our CEO wants marketing as a shared service for two sister companies. Do we need two HubSpot portals?

Usually not. One portal with a governed business-unit property, Teams and per-brand subscriptions covers most cases. Go separate (linked by Multi-Account Management) only to prove a data wall: contracts, regulation, data residency or a likely sale.

Will the Brands add-on stop one company's sales team from seeing the other's data?

No. Brands (formerly Business Units) partitions outward-facing assets like domains, subscription types and ad accounts. Visibility comes from Teams and permissions, and contact timelines still show other brands' activity.

Why does Google Ads get conversions for one brand but not the other four?

HubSpot's native Google Ads conversion events fire only on standard Lifecycle Stage changes or form submissions. Custom lifecycle properties, Lead stages and Deal stages aren't supported triggers; HubSpot staff confirmed this in October 2026. Turn on native form events per brand now, then send brand-level offline conversions (GCLID plus hashed email) for MQL, SQL and Customer.

If we move to the Lead object, won't the contact just show the highest stage across brands?

Yes, by design. Lifecycle Stage becomes the group's highest relationship, so native ads and funnel reports keep working. Each brand's real status lives on its own lead, deal or Brand Relationship record.

How do we split costs between two under-funded sales leaders without a fight?

Use a hybrid: a base share set annually (revenue- or plan-weighted) plus a variable true-up from hours logged in one intake pipeline, reviewed quarterly. The chargeback calculator in section 7 runs the math.

What does the Brands add-on cost?

HubSpot doesn't publish the price, so get a quote. It requires Marketing Hub Enterprise (about $3,600/mo list with 5 seats, per Resonate HQ, May 2026) and one add-on per brand, up to 100.

How JayOh does it

We engineer the system, not the org chart.A JayOh pod of RevOps, HubSpot and data engineers ships the architecture in sprints: brand stamp first, ad signal last.

01

Brand stamped at creation, never inferred

A required brand value on every record at creation, plus a nightly untagged queue. In Salesforce, the field is admin-locked and required before an opportunity advances.

02

Dedupe rules that respect brands

A company buying from two brands isn't merged by mistake; real duplicates still are.

03

Group lifecycle, brand relationships

Standard Lifecycle Stage holds the highest relationship so native ad events keep working. Per-brand status lives on Leads, Deals or a custom object.

04

Offline conversions per brand

GCLID and hashed-email uploads per brand from HubSpot or the warehouse, wherever native events can't express the brand.

05

A warehouse when brands span systems

When brands run separate billing or CRM stacks, we map lineage and use a warehouse such as Snowflake as the cross-brand view.

06

Shared services with an operating model

One intake pipeline, an allocation formula and SLA dashboards, so both internal clients see the same numbers every month.

4→2Platforms consolidated post-merger in 90 days
75+CRM and platform migrations
90%Fewer data errors
100+Engagements since 2016

Map your multi-brand architecture before you buy another portal.

We'll review your container, brand stamp, lifecycle and ad signal, and show you which step to fix first.

Get in touch