Server-side

Your ads optimize on form fills while the revenue sits in the CRM

Your ads optimize on form fills while the revenue sits in the CRM

Rhobin

July 30, 2026

7 min read

You get CRM revenue back into an ad platform by storing an identifier from the ad click on the deal record and uploading the closed value against that identifier later. The constraint that decides whether you can is time, not tooling: Google Ads will not import a conversion uploaded more than 90 days after the click, so deals that close later have to send an earlier event instead.

The symptom

The account says 240 leads last month at a CPA the client is happy with. The sales team says most were never going to buy. The number that matters sits in between, the deals that closed and what they were worth, and it lives in a CRM the ad platform never sees.

So the bidding does what it is told. It has one signal, the form fill, so it buys more of those. The cheap leads get cheaper, the good ones get scarcer, and nothing in the account said which was which. Lead volume up, revenue flat.

The version that stings more: the month your client signed its biggest deal of the year looks identical to the month it signed nothing.

Why it happens

Nothing is broken here. The account only ever saw a form. Google's own description of offline conversion imports states the gap plainly: "Sometimes, an ad doesn't lead directly to an online sale, but instead starts a customer down a path that ultimately leads to a sale in the offline world, such as at your office or over the phone", per Google Ads Help. Sending the sale back is the fix, and three things must be true first.

The click has to leave a name on the deal record

The platform cannot look up a sale by customer name. It needs an identifier it issued itself, captured on the website and stored on the CRM lead record: the Google Click ID in Google Ads, the Microsoft Click ID in Microsoft Advertising, where Microsoft Learn documents a hashed email or phone as the alternative that makes the click ID optional. Google leads with the hashed route now too, recommending on that same page "starting with enhanced conversions for leads instead" for anyone yet to adopt offline import. That method applies "a secure one-way hashing algorithm called SHA256" to first-party data before it goes to Google, per Google Ads Help, and it is compared "to hashed customer data of signed-in Google Accounts", per Google Ads Help on enhanced conversions for leads.

Understand that difference before promising anything. A click ID either matches or it does not. A hashed email depends on the person being signed in at the platform, so it crosses devices and does not reach everybody. LinkedIn is blunt about a miss: "only matched events can be used for attribution and optimization", per Microsoft Learn.

There are two clocks, and most setups only know about one

This is where the plan usually dies. The first is the upload deadline. "Offline conversions that were uploaded more than 90 days after the associated last click won't be imported into Google Ads", per Google Ads Help, which puts enhanced conversions for leads on a shorter leash of 63 days. The reason is prosaic: "we only keep the GCLID for 90 days", per Google Ads Help. Every platform runs its own version. Microsoft Advertising fails the upload once the conversion time is older than 90 days. LinkedIn errors with "conversion time should be within 90 days". Meta is tighter again, where "the event_time can be up to 7 days before you send an event to Meta" and offline store transactions "should be uploaded within 62 days of the conversion", per Meta for Developers.

The second is the conversion window on the conversion action, which decides whether an accepted upload is counted. In Google Ads "the default window is 30 days" for click-through conversions and anything outside it is not recorded, per Google Ads Help. Microsoft documents the trap with a worked example: one row refused for being too old, a second uploaded successfully yet still not counted "because it does not fall within the conversion window". LinkedIn is the exception worth knowing, with post-click attribution up to 365 days for lead and purchase types while the upload still has to arrive inside 90.

So a successful upload is not a counted conversion, and deals closing in five months cannot be imported against the original click at all.

Consent decides whether there is anything to join on

An identifier exists only if the visitor allowed it to be stored. When advertising storage is denied, "no new cookies or device identifiers pertaining to advertising may be written" and no existing ones "may be read", per Google for Developers. No click ID sits in a cookie for the form to pick up, so the CRM record arrives with nothing to join on. Cookieless pings still feed modelling, and you cannot attach a deal value to a modelled conversion.

Sending the deal back raises its own consent question, separate from the cookie. Google's EU user consent policy requires legally valid consent for "the collection, sharing, and use of personal data for personalization of ads", plus records of that consent and clear instructions for revoking it. A hashed email upload is that kind of sharing, so it belongs in the client's privacy notice.

And the form fill may never have arrived

All of this assumes the lead was measured at all. On a standard browser-side setup 15-30% of conversions go uncaptured and ad blockers strip 30-40% of events, so some deals have no recorded click to attach revenue to. Same problem as why enhanced conversions and CAPI underdeliver, one step earlier.

What good looks like

Work in the order the constraints impose. Make the identifier survive first: capture it at form submit and write it to the lead record as a field the sales team cannot overwrite. It is usually the step that has been broken for months.

Then pick the event that fits inside the clocks. Where deals close quickly, import the deal and its value. Where they do not, take Google's own advice and "upload a different offline conversion event that happens within 90 days", per Google Ads Help. A qualified lead or an opportunity stage lands inside the window when a signature will not. Be straight about the trade: the platform then optimizes towards a proxy for revenue, better than a form fill and not profit.

Then decide what value to send. One flat value per deal is a renamed form fill. Real deal value moves the bidding, and where the client will not release it, a value per qualification stage works if the report says so. What that value should net out is the argument in POAS versus ROAS.

None of it stands up where the click was never reliably recorded, which is what Archon Signal is for: server-side collection that recovers 15-40% more conversions than a standard client-side setup and leaves the CRM an identifier that is there at form submit. The ceiling on any setup is roughly 95% of events, a ceiling rather than a promise, because a consent refusal stays a refusal. The gain is that the deals you send back land against clicks the platform still recognises.

FAQ

Our client's sales cycle is six months. Can we do this at all?

Not for the signed deal against the original click, and no configuration fixes that. Google keeps the click identifier for 90 days and refuses later uploads, so import the furthest-down-funnel stage that reliably lands inside the window, usually a qualified lead or an opportunity. You still report closed revenue, you just do not pretend the ad platform is bidding on it.

Do we still need the click ID if we use enhanced conversions for leads?

It depends what you want the number to do. Hashed email matching survives a device switch and needs no cookie on the lead record, which is why Google recommends it as the starting point. It also carries the shorter 63-day deadline and only resolves for signed-in users, so setups that already store the click ID reliably tend to keep both.

Does uploading a hashed email count as sharing personal data?

Yes. Hashing is not anonymisation, it is a one-way transformation of an identifier sent for ads purposes, and Google's EU user consent policy asks for legally valid consent for the collection, sharing and use of personal data for ads personalisation, plus records of it. Treat it as a change to the client's data processing.

Will this actually change what the bidding does?

Only if the values differ from each other in a way that matters. A bid strategy optimizes the values it receives, so where the client's deals are worth roughly the same, importing them ranks campaigns in the order lead count already did. Where deal sizes vary widely, it changes the picture quickly.

If lead volume keeps rising while your client's revenue does not, request a free tracking audit and we will tell you whether the click identifier reaches the CRM today.

© 2026 Archon LabsPrivacyTermsBuilt on unsampled data.