How to see LinkedIn Ads pipeline in HubSpot

Updated

To see pipeline by ad channel in HubSpot, three things must work together. Your LinkedIn ads must be tagged so HubSpot files the clicks as Paid social. Every new deal must have the right contact on it. And you need a deals report grouped by Original Traffic Source.

Get those right and you can put pipeline and cost per opportunity next to LinkedIn spend. This guide walks through each step, what it does and why, and the mistakes that quietly break it. The same steps work for Google Ads and Microsoft Ads; only the tagging values change.

Before you start

Check these first. Each one is a common reason the numbers come out blank later.

  • Permissions. The HubSpot user connecting LinkedIn needs Publish access to the ads tool. On LinkedIn, they must be an Account Manager on the ad account.
  • Tracking code. HubSpot’s tracking code must be on every landing page. HubSpot-hosted pages include it by default. External pages need it installed.
  • Forms. HubSpot can only tie a form fill to an ad when it’s a HubSpot form, a pop-up form, or a non-HubSpot form sent through the Forms API with the page URL and HubSpot’s tracking cookie.
  • Subscription. The custom report builder needs a Professional or Enterprise subscription. HubSpot’s Deal Create Attribution report needs Marketing Hub Enterprise.

Step 1: Connect LinkedIn Ads to HubSpot’s ads tool

What it does: brings LinkedIn spend, clicks and leads into HubSpot and adds HubSpot’s tracking parameters to your ads. Why: without those parameters, HubSpot can see that a visitor came from LinkedIn but can’t tie them to a specific ad.

  1. In HubSpot, click the settings icon in the top navigation bar.
  2. In the left sidebar, go to Marketing > Ads.
  3. Click Connect account in the top right, then choose LinkedIn.
  4. In the LinkedIn pop-up, sign in, review the permissions and click Allow.
  5. Select the LinkedIn ad accounts to connect. Leave the auto tracking switch on.
  6. Click Connect. In the next dialog, choose which accounts should sync leads, then click Save.

Three limits matter here, per HubSpot’s own help articles:

  • Tracking isn’t retroactive. Only clicks after auto tracking is turned on can be tied to contacts.
  • HubSpot reports only the most recent year of LinkedIn Ads data.
  • An ad account on hold can’t be connected, and HubSpot disconnects one that goes on hold.

Step 2: Tag every ad with a paid medium

What it does: tells HubSpot the click was paid. Why: the value of utm_medium decides whether a LinkedIn click lands in Paid social, Organic social or Other campaigns.

Here is how HubSpot sorts it, from its traffic sources article:

What the URL says Where HubSpot puts it
utm_medium is exactly social and the source is a recognized social network Organic social
utm_medium contains paid, ppc or cpc, with a social network as the source Paid social
utm_source or utm_medium contains paidsocial Paid social
Any other UTM that matches none of the paid, email or search terms Other campaigns

So utm_medium=social sends paid LinkedIn clicks to Organic social. A made-up value like sponsored sends them to Other campaigns. Both make LinkedIn’s pipeline look smaller than it is. LinkedIn’s own developer example uses utm_medium=social, so this mistake is easy to copy.

A simple standard that works:

Parameter Value
utm_source linkedin
utm_medium paid_social
utm_campaign campaign ID plus a readable name, e.g. 123456789_q4-cfo-webinar
utm_content creative ID
utm_term audience name

Keep every value lowercase, so “LinkedIn” and “linkedin” don’t split into two sources. LinkedIn can fill in campaign, campaign group and creative IDs or names for you with dynamic UTM values. Dynamic values aren’t supported on Message Ads or Conversation Ads, so tag those by hand.

Then click one of your live ads. Check that the landing page URL still carries the UTMs and HubSpot’s hsa_ parameters. If a redirect strips them, every step after this one fails. Our guide to fixing broken or missing UTMs covers the usual culprits.

Step 3: Check Original Traffic Source and its drill-downs

What it does: confirms HubSpot is recording LinkedIn as the source on new contacts. Why: deals inherit their source from contacts, so if contacts are wrong, every deal report is wrong.

HubSpot sets three contact properties automatically on the first visit:

  • Original Traffic Source: the channel, such as Paid social.
  • Original Traffic Source Drill-Down 1: for Paid social, the social site (LinkedIn).
  • Original Traffic Source Drill-Down 2: for Paid social, the campaign name from utm_campaign.

The drill-downs can’t be edited by hand, and changing the source clears them, per HubSpot’s traffic source properties article. Ad blockers can also block HubSpot’s cookies, so a few contacts will always show the wrong source.

To check, open five or ten contacts who clicked a LinkedIn ad last week. All three properties should read Paid social, LinkedIn and your campaign name. If they say Organic social or Other campaigns, go back to Step 2.

Deals carry the same properties. A deal’s Original Traffic Source is taken from the associated contact with the earliest activity for that deal. If the deal has no contact, HubSpot falls back to the associated company.

Step 4: Sync LinkedIn Lead Gen Form leads

What it does: creates HubSpot contacts from LinkedIn’s native lead forms. Why: those leads never visit your site, so they carry no UTMs and no web session.

  1. Click the settings icon, then go to Marketing > Ads.
  2. Open the Lead syncing tab and click Connect.
  3. Choose LinkedIn, select the checkbox for the ad account, configure the settings and click Save.

What to know:

  • You need to be a Super admin, Content Admin or Lead Gen Forms Manager on the LinkedIn Page tied to the ads.
  • Include the Email field on every form and mark it required, or HubSpot can’t create the contact.
  • Choose New & recent leads to pull the last 90 days as well as new leads, or New Leads for new ones only.
  • New leads can take up to two hours to arrive. They’re logged as form submissions in the CRM.

Because these contacts skip the website, look at a few synced contacts to see what source HubSpot recorded. If it doesn’t say LinkedIn, stamp it yourself. A workflow triggered by the lead form submission can set a campaign or source property you control.

Step 5: Put the right contact on every deal

What it does: links each deal to the people who created the demand. Why: a deal with no contact has no traffic source of its own, so it falls back to the company or shows nothing.

To add a contact to a deal:

  1. Open the deal record.
  2. In the right sidebar, find the Contacts card and click + Add.
  3. Search for the contact, select the checkbox, and click Save. You can add an association label such as decision maker.

Watch for the opposite problem too. Because the deal takes its source from the contact with the earliest activity, adding an old contact from a 2019 trade show can move the deal’s source away from LinkedIn. Add the people who are actually in the buying conversation.

Make it routine. Build a deals view filtered to Number of associated contacts equal to 0 and review it every week with sales.

Step 6: Know the limits of HubSpot’s ads attribution

What it does: sets expectations for the Ads dashboard. Why: many teams open it, see no pipeline, and assume LinkedIn produced none.

The Ads dashboard offers four attribution reports: First ad interaction, Last ad interaction, Re-engagement and All ad interactions. Free CRM and Marketing Hub Starter accounts get only Last ad interaction.

According to HubSpot’s ads attribution article, a deal shows on the Ads dashboard only when all of these are true:

  • The deal is Closed Won, and its close date falls in the date range.
  • It’s associated with a contact HubSpot attributed to an ad.
  • That contact’s lifecycle stage is HubSpot’s default Customer stage. Custom lifecycle stages are excluded.

That means open pipeline never appears there. Neither does a won deal whose contact sits at a renamed or custom stage. Use the Ads dashboard for contacts and won revenue. Use a deals report, below, for pipeline.

Step 7: Build a report of deals by original source

What it does: shows new pipeline by channel and campaign. Why: it reads the deal’s own source properties, so it includes open deals the Ads dashboard leaves out.

  1. Go to Reporting > Reports (under More in some accounts).
  2. Click Create, then Create report.
  3. Choose Custom report, click Next, then Create report on your own.
  4. Set the Primary data source to Deals and click Next.
  5. Add these properties: Create date, Original Traffic Source, Original Traffic Source Drill-Down 1, Original Traffic Source Drill-Down 2, Amount and Deal stage.
  6. Pick a table or vertical bar chart. Put Original Traffic Source on the X-axis, Drill-Down 1 in Break down by, and the sum of Amount and count of deals as measures.
  7. On the Filters tab, filter Create date to the period you’re reporting and the pipeline to new business.
  8. Click Save report.

Read it like this: Paid social with a LinkedIn drill-down is LinkedIn-sourced pipeline. Swap Drill-Down 1 for Drill-Down 2 to see it by campaign.

If you have Marketing Hub Enterprise, the Deal Create Attribution report spreads credit across touches using First Touch, Last Touch, Linear, Time Decay or Empirical models. It’s a useful second view. Keep the simple sourced report as your baseline.

Step 8: Pick how you credit pipeline, then work out cost per opportunity

There’s no single true answer to “how much pipeline did LinkedIn create?” There are three honest ones. Pick one as your default, and label every number with the method behind it.

Method What gets credit Where it comes from in HubSpot
Sourced The channel that first brought the contact in Original Traffic Source and drill-downs on the deal
Opportunity creation The last paid touch on or before the deal’s create date Associated contacts’ touches before the deal create date
Influenced Deals at companies the channel reached in the 180 days before the deal was created LinkedIn’s company-level reach, matched to HubSpot companies

Sourced is the easiest to build and explain. Opportunity creation is fairer to channels that close the gap late in the journey. Influenced suits account-based programs, where LinkedIn warms up companies that later arrive through search or sales.

Then cost per opportunity is simple:

Cost per opportunity = LinkedIn spend in the period ÷ deals created and credited to LinkedIn in the matching, lagged period.

For example, $30,000 of spend and 12 credited deals is $2,500 per opportunity. The lag matters. B2B deals arrive weeks or months after the click, so measure your own typical gap between a contact’s create date and their deal’s create date. Shift the deal window by that much. Judging last month’s spend on this month’s deals will always undercount.

Common mistakes

  • Using utm_medium=social on paid ads. HubSpot files those clicks as Organic social.
  • Inventing a medium. Values like sponsored or linkedin-ads land in Other campaigns.
  • Mixed spelling and case. “LinkedIn”, “linkedin” and “li” become three sources in every report.
  • Deals with no contacts. No contact means no inherited source.
  • Treating the Ads dashboard as your pipeline report. It counts Closed Won deals with default Customer-stage contacts only.
  • Expecting history. Auto tracking starts the day you switch it on.
  • Forgetting native lead forms. LinkedIn form leads have no UTMs. Sync them and stamp the source.
  • Matching LinkedIn’s lead count to HubSpot exactly. LinkedIn counts form submissions; HubSpot counts contacts. Some gap is normal.
  • Judging too early. A campaign launched last month hasn’t had time to create deals yet.

How PipeHalo shows this automatically

If this feels like a lot of upkeep, it is. PipeHalo does the same work every morning, without the spreadsheet.

Connect your LinkedIn Ads account and HubSpot. PipeHalo reads both, and it never changes anything in HubSpot. The Pipeline page credits each new deal to the one channel that sourced it, using the UTMs on the landing pages HubSpot records for each contact, then HubSpot’s Original Source fields. It shows that next to spend: leads, MQLs, SQLs, opportunities, pipeline, closed-won, cost per lead, cost per opportunity and pipeline per $1.

PipeHalo already reads “LinkedIn”, “linkedin” and “li” with a paid medium as LinkedIn Ads. For values it can’t place, an admin picks the channel once in Channel mapping, and every deal is recredited.

The daily checks catch the problems in this guide as they happen, including broken or missing UTMs and spend with no pipeline. Each flag explains what’s wrong, the money at stake where there is one, and what to try. If LinkedIn is spending but deals aren’t showing up, see why LinkedIn ads show no pipeline. To share results upward, see how to report paid media to a CMO.

Try the live demo to see the Pipeline page with 13 months of sample LinkedIn, Google and Meta ads and HubSpot data.

Why do my LinkedIn ads show as Organic social in HubSpot?

Your ads almost certainly use utm_medium=social. HubSpot treats that exact value from a social network as organic. Change the medium to paid_social, cpc or paidsocial.

Why does HubSpot’s Ads dashboard show no deals from LinkedIn?

The Ads dashboard counts only Closed Won deals whose attributed contact is at the default Customer lifecycle stage. Open pipeline won’t appear. Build a deals report by Original Traffic Source instead.

Do LinkedIn Lead Gen Form leads carry UTMs?

No. They never visit your website. Sync them through HubSpot’s Lead syncing tab, then set their source with a workflow if HubSpot doesn’t record LinkedIn.

Click through a real workspace.

13 months of sample data across every channel and the CRM. Yours to explore for 7 days.

Try the live demo