Skip to content
LangtonTools
← All posts
2 min read

Salesforce's native Google Ads integration is fundamentally broken

Alex LangtonSenior B2B paid media manager · ~$650K/mo industrial spend

One month we lost 40% of our conversion signals. No alert. No warning. The native Salesforce-to-Google Ads sync just quietly stopped working.

We didn't find out until the algorithm had spent three weeks without meaningful offline conversion data, optimizing toward cheaper web form fills instead. By the time we caught it, our bid strategy had shifted in a direction that took six weeks to correct.

That's what "plug and play" attribution looks like in practice.

How the native integration is supposed to work

The concept is simple: a prospect clicks your ad, GCLID gets captured, they convert to a Salesforce lead, eventually they become a closed-won opportunity, Salesforce sends the GCLID and opportunity value back to Google Ads as an offline conversion.

Google uses that signal to understand which clicks led to real revenue. Bidding improves.

This works in the demo. In production B2B, it breaks in at least four ways.

Where it actually breaks

GCLID expiration. GCLIDs have a 90-day storage window in Salesforce by default. If your sales cycle is 6-9 months (common in industrial manufacturing), the GCLID is gone by the time the deal closes. The conversion can't be uploaded. The attribution is lost.

Custom stage mapping. Google's native sync is designed to fire on opportunity creation or a basic "Closed Won" field. If you have custom stages (which every serious B2B team does), the mapping breaks or fires at the wrong stage.

Historical data overwrites. When opportunity amounts or dates change in Salesforce, the sync doesn't always handle updates cleanly. You end up with duplicate conversion events or corrupted values.

Multi-contact accounts. If multiple contacts at the same company interact with your ads, GCLIDs from different individuals get associated with a single opportunity in ways that create data integrity problems.

Why it fails silently

This is the worst part. There's no dashboard in Google Ads that says "your offline conversion upload has failed."

You see conversion volume drop. Maybe you attribute it to seasonality. Meanwhile, your Smart Bidding strategy is learning from incomplete data, and the degradation is gradual enough that you miss it for weeks.

The fix

Build your own pipeline. The architecture I've described in other posts: Adobe Analytics or custom pixel → BigQuery staging table → Salesforce query via API → Google Ads offline conversion API.

The offline conversions API is more robust than the native sync. You control the GCLID matching logic. You handle the expired GCLID problem with domain-level fallback. You set the stage mapping explicitly.

It takes 4-6 weeks to build properly. It costs roughly $500/month to run.

If you're managing more than $30K/month in B2B search, it pays for itself immediately by ensuring your bid strategy has real data to optimize against.

The native sync looks like it works. It doesn't. Build the thing yourself.

Alex Langton

Senior B2B paid media manager · ~$650K/mo industrial spend

12+ years running B2B Google Ads accounts in industrial, manufacturing, and B2B e-commerce. Builds Langton Tools because generic PPC SaaS was never designed for the multi-MCC, complex- pacing, B2B-vocabulary reality of the accounts that actually drive industrial revenue.