Case study · B2B company running paid acquisition, HubSpot as CRM

HubSpot showed the wrong traffic sources. The real problem was four layers deep.

A B2B team asked why HubSpot showed the wrong traffic sources. The answer led to a broken offline conversion feed, cross-domain breaks and a custom integration that had to be rewritten.

By Vladimir Cvetkoski · Last updated

Context

The situation

The client is a B2B company that runs paid campaigns and uses HubSpot as its CRM. Marketing and sales both report out of HubSpot.

Visitors move between a marketing site and the product, which run on separate domains. A custom integration feeds data into HubSpot.

The team came to me with one question: why is HubSpot showing the wrong traffic sources?

Symptoms

What the team saw

  • →Contacts in HubSpot carried traffic sources that did not match the campaigns that brought them in.
  • →Google Ads was not getting reliable conversion data back from the CRM, so bidding could not learn which clicks became pipeline.
  • →Visits that crossed from the marketing site to the product lost their original source along the way.
  • →Reports on paid channels could not be tied to pipeline, so budget conversations ran on opinion.
Root causes

What was actually broken

01

Source data lost before it reached HubSpot

The traffic source HubSpot recorded was not the one the visitor arrived with. The wrong-source report was a symptom, not the root problem.

02

Broken offline conversion feed to Google Ads

The feed that should send CRM outcomes back to Google Ads was not working, so Google Ads optimized without knowing which leads mattered.

03

Cross-domain tracking failures

Tracking did not carry the visitor across the marketing site and the product domain, so sessions split and the first touch was lost.

04

A custom integration with faulty code

The issue was not a setting. The code inside a custom integration was wrong and had to be rewritten, not reconfigured.

The fix

What changed

01

The immediate problem first

I fixed what was causing the wrong traffic sources first, so new contacts started arriving in HubSpot with the right source data.

02

Offline conversions back to Google Ads

I repaired the offline conversion feed so Google Ads receives the CRM outcomes it needs to optimize on real pipeline.

03

Cross-domain tracking

I fixed tracking between the marketing site and the product so a visitor keeps one journey and one source across both domains.

04

The integration, rebuilt

Once the urgent leaks were closed, I rewrote the custom integration so it passes the right data into HubSpot and keeps doing so.

Result

Afterwards

  • →Every paid touchpoint is now connected to pipeline in HubSpot.
  • →Google Ads receives offline conversions from the CRM again.
  • →Budget decisions are made on data the team trusts.
Stack

Tools involved

  • →HubSpot
  • →Google Ads offline conversions
  • →Custom HubSpot integration