HubSpot campaigns just got a lot more useful.

HubSpot has been shipping campaign updates that MOps practitioners have asked for for years. The biggest one is still in beta: campaign data now lives directly on the contact, deal, and ticket record. That is not a cosmetic change. It changes how and where campaign data gets used.

I am going to break down what changed and why it matters. And since I work across both HubSpot and Salesforce, I will cover the comparison question that comes up in almost every client engagement: how do HubSpot campaigns compare to Salesforce campaigns? They are built on different data models and designed to answer different questions. Treating them as interchangeable produces bad architecture and conflicting attribution data.

N’Beta   Some features discussed here are still in public beta. What you see in your account may look slightly different. The functionality is real; the UI is still evolving.

What HubSpot campaigns were before

HubSpot campaigns have always been an asset grouping tool. Create a campaign, associate your assets (emails, landing pages, forms, social posts, ads, workflows), and HubSpot gives you rolled-up performance data across all of them.

That is genuinely useful. Instead of pulling email open rates from one report, form submissions from another, and ad clicks from a third, you get one place to answer: did this initiative work?

The gap was that campaigns lived only in the Campaigns tool. If you were on a contact record and wanted to know which campaigns had touched that person, you had to go look for it somewhere else. The contact record and the campaign record existed in parallel, with no connection between them.

These updates close that gap.

What changed

Campaigns on the contact record

HubSpot now shows a Campaigns card directly on contact, deal, and ticket records. You can see every campaign that influenced a contact, with the timestamp, asset type, and specific asset they engaged with.

For GTM ops, this changes where campaign data actually gets used. Sales reps see campaign context without leaving the CRM record. You can manually associate a contact with a campaign from the record itself, which matters for offline interactions like event check-ins where there is no digital touchpoint to capture. Custom influence types let you define and name your own engagement categories beyond HubSpot's default tracked interactions. So instead of every manual association showing up as generic, you can label it 'booth scan,' 'event check-in,' or 'sales referral,' and those labels carry into your influenced contact reporting.

N’Ops   Once a contact is marked as influenced by a campaign, that influence cannot be removed. HubSpot treats it as a permanent engagement record. Get the right assets associated to the right campaigns before you launch. There is no retroactive fix.

Workflow triggers on campaign properties and events

Campaign properties are now available as enrollment triggers in workflows. You can build automations that fire based on budget, spend, revenue, owner, start date, end date, and the influenced contact event.

Before this update, campaigns had almost no automation surface area. They were a reporting object. Now they are a triggering object. That distinction matters because it determines whether campaign data stays locked in a dashboard or drives downstream action in your GTM system.

You can trigger follow-up sequences based on which campaign influenced a contact, route internal notifications to the campaign owner when spend hits a threshold, automate status changes when a campaign end date passes, and assign close-out review tasks to capture performance data before the record goes stale.

Primary campaigns data source in the report builder

HubSpot added a data source called Primary Campaigns to the custom report builder. That is HubSpot's own term for it. It lets you build campaign reports that combine campaign properties, influenced contact events, and associated asset data in one place. Previously this required stitching together multiple reports or exporting data to work with it externally.

Lifecycle reporting on the campaign performance page

Contact lifecycle stage data now appears on the campaign performance page, with cost-per-stage data when a budget is tracked. You can see whether a campaign is actually moving contacts through the funnel or generating engagement that stalls at the top. That distinction matters when you are making decisions about where to invest next.

Parent-child campaign hierarchy

HubSpot now supports campaign hierarchies up to three levels deep. A parent campaign rolls up performance data from its children. You can structure a full-year program at the parent level, run individual initiatives as child campaigns, and report on both without manually combining data.

Before this, every HubSpot campaign was a flat object. No grouping, no rollup, no way to see aggregate performance across related initiatives without building custom reports. Salesforce has had this capability for years. HubSpot now has it too.

HubSpot campaigns vs. Salesforce campaigns

Before we go further: 'campaign' means something different to almost everyone. To a demand gen manager it is a paid media push. To a sales leader it is a prospecting sequence. To a marketing ops team it is a container for assets and attribution data. To Salesforce it is a CRM object that tracks people. To HubSpot it is a reporting structure that tracks content performance. None of those definitions are wrong. They are just different, and if your team is not aligned on what a campaign is in your system, your reporting will never match.

Teams running both platforms ask me this constantly. The confusion compounds because both tools use the same word for different objects.

HubSpot campaigns track how assets perform. Salesforce campaigns track how people move. Different questions, different data models.

The model difference

HubSpot campaigns are asset-first. You attach emails, landing pages, ads, forms, and workflows to a campaign. HubSpot automatically tracks which contacts engaged with those assets and rolls up the performance data. Contact association happens passively through engagement.

Salesforce campaigns are people-first. A Salesforce campaign stores campaign members, a junction object connecting leads and contacts to the campaign. You add people to campaigns manually, via list upload, or through automation. Those members carry statuses (Sent, Opened, Responded, Attended) that you define per campaign type.

Both models are useful. They answer different questions, and if you are on both platforms, you need both working correctly.

← Scroll to see full table →

HubSpot Salesforce
Primary focus Asset performance and engagement tracking People tracking and pipeline influence
How contacts are associated Automatically, via engagement with associated assets Manually via list upload, automation, Salesforce Flow, or via HubSpot/Marketo integration
Campaign structure Parent-child hierarchy, up to 3 levels (new) Parent-child hierarchy, up to 5 levels
Asset association Direct: emails, pages, forms, ads, workflows all attach to campaign Not native; Salesforce tracks people, not content assets
Member / contact status Influenced contact (binary, permanent) Custom member statuses per campaign (e.g. Sent, Responded, Attended)
Budget tracking Budget and spend fields on campaign record; new workflow triggers Cost field on campaign; built-in ROI report vs. opportunity revenue
Attribution models First-touch, last-touch, multi-touch (Enterprise) Campaign Influence models; more advanced with Marketing Cloud Account Engagement
Workflow automation Now available on campaign properties and events (new) Available via Salesforce Flow and Process Builder
Syncs between platforms HubSpot campaigns do not sync to Salesforce natively Salesforce Campaign ID field syncs to HubSpot contact record
Reporting Campaign analytics, Primary Campaigns data source, attribution reporting Standard campaign reports, campaign hierarchy reports, custom report builder
Offline tracking Manual association via CRM card (new); custom influence types for event check-ins Designed for offline; manual member association is native behavior

Where HubSpot has the edge

Asset attribution is native. If you want to know whether your webinar email series outperformed your LinkedIn ads for a given initiative, HubSpot answers that question without custom reporting. Associate the assets, and HubSpot tracks engagement across all of them automatically.

Influence tracking is passive. HubSpot captures contact influence as contacts engage with associated assets. You do not have to build automation to log every touchpoint. The data accumulates by default, which matters when you are running multiple campaigns simultaneously.

Setup is fast. Creating a campaign, associating assets, and getting baseline reporting running takes minutes. Salesforce campaign architecture requires more deliberate design, especially when attribution models are involved.

Where Salesforce has the edge

Hierarchy depth. Salesforce supports up to five levels of campaign hierarchy with mature, fully-built-out reporting. HubSpot's three-level hierarchy is new and works well for most programs.

Member status granularity. Defining custom member statuses per campaign, and controlling which status counts as a response, gives you precise tracking of how contacts moved through a specific initiative. What I find genuinely interesting about this model is that it effectively creates a mini journey within the campaign itself. You can see exactly where each person stalled: they received the email, opened it, but never responded. That progression data lives on the campaign member record, which makes Salesforce campaigns a lightweight journey tracker for outbound and event-based programs, not just a reporting bucket.

Pipeline attribution out of the box. Salesforce connects campaign members directly to the Opportunity object. The built-in Campaign ROI report ties campaign cost to closed-won revenue without significant configuration. In HubSpot, comparable attribution depth requires Marketing Hub Enterprise and deliberate attribution model setup.

Outbound and offline fit. Salesforce was built for sales-motion campaigns: trade shows, calling campaigns, direct mail. Manually adding people to campaigns and tracking their status is the default behavior, not a workaround. That is where the tool is most comfortable.

The mistake teams make

Using one as a substitute for the other. If you are running both platforms, use HubSpot campaigns for marketing asset performance and attribution. Use Salesforce campaigns for revenue-linked contact tracking and pipeline influence. Bridge them with workflows that enroll HubSpot contacts into Salesforce campaign members when they reach defined milestones.

Trying to force the objects to match creates data drift and reporting conflicts. The goal is not to mirror them. Each system should answer the questions it was built to answer.

N’Rule   Decide which system owns attribution before you build anything. If you are on both platforms and that decision has not been made, your campaign reports are already telling two different stories.


Three workflows to build now

These are available today with the updated campaign functionality. Not hypothetical, not roadmap items.

1. Campaign-aware follow-up sequences

When a contact is influenced by a specific campaign, enroll them in a sequence built for that campaign's context. A contact influenced by a top-of-funnel awareness campaign needs different follow-up than one influenced by a bottom-of-funnel competitive comparison piece. The influenced contact event is a native workflow enrollment trigger now. The data is there. Use it.

2. Campaign close-out automation

When a campaign end date passes, automatically update the campaign status, assign a performance review task to the campaign owner, and send a summary notification to the team. Most campaign wrap-ups happen late or not at all because no system enforces the process. This closes that gap.

On the budget side: when campaign spend crosses a defined threshold, route an alert to the campaign owner with context. The goal is to keep downstream CRM activity, sequences, rep tasks, in sync with what is actually happening to the campaign budget. If a campaign gets pulled, the follow-up engine should know that.

3. Sales context from the contact record

With campaigns now visible on the contact record, a rep sees which campaigns influenced a contact before they reach out. No separate marketing report to pull. No guessing what the person has already seen. That context is on the record, where the rep is already working.

In longer sales cycles where a contact has touched multiple campaigns over six to twelve months, this is the difference between a generic opener and a relevant one.


Build accordingly

HubSpot campaigns are no longer just a reporting object. They are now visible on records, triggerable in workflows, and structured across programs through hierarchy. GTM ops teams finally have real operational surface area to work with here.

On the Salesforce question: they are different tools solving a similar problem from different angles. HubSpot tells you what content worked. Salesforce tells you who responded and what they were worth. If you are on both, decide which system owns attribution before you build. Then use automation to connect the two at the right handoff points.

Campaign data has always existed in HubSpot. What changed is where it lives and what you can do with it. It is on the contact record now. It triggers workflows. It rolls up through a hierarchy. That is the difference between data that sits in a report and data that drives a system. Build accordingly.

Work with NoirLogic

Your campaign data should drive action, not just reports.

NoirLogic builds GTM operating systems for B2B technology companies. If your HubSpot setup needs a stronger foundation, we can help you design and build it.

Book a meeting
Next
Next

GTM Ops is Mission Control