ananas.team
§ 07·ARTICLE
TrackingThe ananas.team crew··

Enhanced Conversions for Leads: How to Stop Paying for Leads That Never Make You Money

A classic. You launch a lead campaign, Google cheerfully reports back: leads by the truckload, cost per lead down to pennies. You open the CRM and it's silent. Leads yes, customers no. Google found you the cheapest people around, the ones who fill out forms and vanish.

This isn't a Google bug. It's exactly what you told it to do. You optimize for the "form submitted" event, and the algorithm honestly goes looking for people who submit forms. What happens after that, Google has no idea, because you never told it.

Enhanced Conversions for Leads solves precisely this: it sends the real outcome back to Google. Not "a lead came in," but "the lead became a customer and brought in money."

How it works, in a nutshell

On the site you collect a hashed user identifier — usually email, sometimes phone. Google remembers that hash. Later, when the lead turns into a deal in your CRM, you upload the same hash back along with the status and the amount. Google matches them and works out that this particular click eventually produced a customer worth that much.

That's it. From there Smart Bidding stops looking for "form fillers" and starts looking for people like the ones who actually paid.

Hashing — the place where everything breaks

SHA-256, lowercase, trim the whitespace. Sounds elementary. In practice this is exactly where it all falls apart.

The most common problem is normalization. Google expects the email in lowercase with no spaces at the edges. If you hash Ivan@Mail.ru with a capital letter and a space, that's a different hash from ivan@mail.ru, and match rate drops through the floor. Phone numbers go in E.164 format, with the plus sign and country code, no brackets or dashes. Any deviation and the match doesn't happen.

Check the match rate in the interface. If it's below 50–60%, you have a normalization problem, not a "Google has no data" problem.

Two routes: GTM or a server-side upload

If you have a short cycle and the conversion happens on the site, gtag plus enhanced_conversion_data in the dataLayer is enough. You pass the hash at the moment of conversion and Google takes it from there.

But for a long funnel that isn't enough. The deal closes a week later in the CRM, and nobody is on the site at that moment. Here you need a server-side upload: your backend sends the status and amount to the Google Ads API keyed on the gclid you saved at first touch. It's harder to set up, but it's the only honest way to close a long cycle.

Send money, not a flag

A take many will disagree with: don't just send "the lead converted." Send the amount. Real revenue, or at least a proxy LTV.

Because not every lead is the same lead. One brought in the minimum, another a large account. If you hand Google only the binary fact that someone "became a customer," it can't tell them apart by value and keeps dragging in the cheap ones. But once you pass value, Smart Bidding starts hunting the big ones. tROAS on real margin works far better than CPA on a lead flag. Tested.

Where to start

First make sure you're actually saving the gclid at first touch and carrying it all the way to the CRM. Without that the whole scheme never gets off the ground — there'll be nothing to match on. If the gclid gets lost somewhere in the funnel, that's the first thing to fix, before any Enhanced Conversions work.

§ 08·RELATED