Cortana
Ad Attribution

Google Ads Conversion API: How Server-Side Tracking Changes Everything

Most advertisers set up Meta CAPI and call it done. Google Ads has its own server-side tracking system. Enhanced Conversions and offline conversion imports send CRM data back to Google. If you are running both platforms and only feeding signals to one, you are paying full price for half the optimization.

|Updated May 27, 2026|By Matei Parvu|9 min read

Google Has a Conversion API Too. You Are Probably Ignoring It.

If you run ads on both Meta and Google, you have a data problem. And it is costing you money every single day.

Most advertisers set up Meta's Conversion API. They send server events. They configure FBCLID stitching. They pat themselves on the back.

Then they log into Google Ads and rely entirely on the Google tag. Browser-based tracking. The same tracking that ad blockers kill, that iOS restrictions limit, and that cookie deprecation is eroding.

Google has its own server-side tracking infrastructure. Enhanced Conversions. Offline conversion imports. The Google Ads API. These tools let you send CRM data directly to Google the same way CAPI sends data to Meta.

But almost nobody sets them up. And Google's algorithm suffers for it.

This post walks through how Google's server-side tracking works, why it matters for your bidding, and how to send downstream signals to both platforms from one setup.

Why Browser-Based Google Tracking Is Breaking

Google's standard conversion tracking relies on the Google tag (gtag.js) or Google Tag Manager running in the browser. When someone converts, the tag fires and sends the event to Google Ads.

That worked fine in 2019. It does not work fine now.

Ad blockers strip Google tags. Roughly 30-40% of desktop users run ad blockers. Some block Google's tracking scripts. Those conversions never get reported.

iOS App Tracking Transparency. Apple's ATT framework limits cross-app tracking. Google's measurement on iOS Safari is degraded. Conversions from iOS users are underreported or modeled.

Cookie restrictions. Third-party cookies are being phased out. Google's own Chrome timeline keeps shifting, but Safari and Firefox already block them. The GCLID (Google Click ID) stored in cookies becomes unreliable when cookies expire or get blocked.

Cross-device gaps. Someone clicks your ad on mobile. Converts on desktop two days later. The Google tag on your landing page cannot connect those sessions without a persistent identifier.

The result: Google Ads reports fewer conversions than actually happened. Your Smart Bidding strategy (Target CPA, Target ROAS, Maximize Conversions) trains on incomplete data. It bids conservatively because it thinks your ads are performing worse than they are. Or it bids on the wrong audiences because it only sees a biased sample of converters.

This is the exact same problem Meta had before CAPI. Google's solution is structurally similar. Server-side data fills the gaps.

Enhanced Conversions: Google's First-Party Data Bridge

Enhanced Conversions is Google's answer to signal loss. It works in two flavors.

Enhanced Conversions for Web. When someone converts on your website, you send hashed first-party data (email, phone, name, address) alongside the conversion tag. Google matches this hashed data against signed-in Google users. If there is a match, Google attributes the conversion with high confidence even if cookies failed.

This is not server-side in the traditional sense. The hashed data still gets sent from the browser via gtag.js or GTM. But it gives Google a first-party identifier instead of relying solely on cookies.

Enhanced Conversions for Leads. This is the big one for B2B and lead gen advertisers. When someone fills out a form on your site, you capture their email. Later, when that lead converts in your CRM (qualified, closed, purchased), you upload that conversion with the hashed email back to Google.

Google matches the email to the original click. Now Google Ads knows that the ad click led to a real sale. Not just a form fill.

This is functionally identical to what Meta's Conversion API does with downstream events. The mechanism is different. The outcome is the same. Feed the algorithm data about what happens after the click, and it optimizes for outcomes instead of vanity metrics.

The Google Ads API: Sending Offline Conversions Programmatically

Enhanced Conversions for Leads works through manual CSV uploads or API calls. Most advertisers who attempt it use the manual upload. They download leads from their CRM, format a spreadsheet, upload it to Google Ads, and hope the data maps correctly.

That process breaks in three ways.

Timing. Google's bidding algorithm benefits from timely data. If you upload conversions once a week, the algorithm is training on stale information for 6 out of 7 days. Bidding decisions made Monday through Saturday ignore conversions that happened after your last upload.

Formatting errors. Google requires specific hashing (SHA-256) and formatting for email addresses and phone numbers. One wrong format and the match fails. No error message. The conversion just disappears.

Consistency. Manual uploads depend on a human remembering to do them. Skip a week and your conversion data has a gap. The algorithm sees a sudden drop in conversions and adjusts bids downward.

The Google Ads API solves all three by automating the import. Your server sends conversion events to Google programmatically. Real-time. Correctly formatted. Every time.

But building a custom API integration requires a developer, OAuth2 authentication setup, and ongoing maintenance. For most marketing teams, this is the point where the project dies.

The Real Problem: Running Two Separate Tracking Systems

Here is where most advertisers lose the plot.

They set up Meta CAPI. Maybe they use a platform like Cortana. Downstream signals flow to Meta. Qualified appointments, showed appointments, purchases. All with probability-weighted values. Meta's Lattice algorithm gets rich data and optimizes accordingly.

Then they look at Google Ads. No offline conversions. No enhanced conversions for leads. The Google tag fires for the form fill and that is it.

They are running two ad platforms with two completely different data qualities. Meta has the full picture. Google has the surface picture. Meta optimizes for revenue. Google optimizes for form fills.

The imbalance creates a false comparison. Google Ads looks like it performs worse than Meta because it is working with worse data. You shift budget to Meta. Google performance declines further because it has less data to learn from. The cycle continues.

The fix is obvious: send the same downstream signals to both platforms. But building two separate server-side integrations is twice the work, twice the maintenance, and twice the failure points.

Unless you use one system that handles both.

How Cortana Sends Signals to Google and Meta Simultaneously

Cortana connects to your CRM once. HubSpot, GoHighLevel, Typeform. One connection via server APIs.

From that single connection, Cortana sends downstream conversion events to both Meta and Google in parallel. The same pipeline stages. The same probability-weighted values. The same customer identifiers.

Here is what happens when a lead moves through your funnel.

Lead fills out form. Cortana captures the GCLID from Google Ads and the FBCLID from Meta. Both click identifiers get stitched to the contact record in your CRM.

Lead books a call. Cortana fires an Appointment Booked event to Meta via CAPI and uploads an offline conversion to Google via the Google Ads API. Both events include the respective click ID and a probability-weighted value.

Lead qualifies. A Qualified Appointment event fires to both platforms. Higher value. Same identifiers.

Lead shows up. A Showed Appointment event. Even higher value.

Lead closes. Purchase event with actual deal value. Both platforms receive it within minutes.

The result: Google's Smart Bidding and Meta's Lattice algorithm both train on the same downstream data. Both platforms optimize for revenue, not form fills. Both platforms get an accurate picture of which clicks produce money.

The setup takes the same 2 minutes as a Meta-only configuration. Connect your CRM. Map your pipeline stages. Activate. Cortana handles the GCLID capture, hashing, formatting, deduplication, and API authentication for both platforms automatically.

No developer. No spreadsheet uploads. No two separate systems to maintain.

What Google Does With Your Offline Conversion Data

Once Google Ads receives offline conversions, three things change.

Smart Bidding recalibrates. Google's automated bidding strategies (Target CPA, Target ROAS, Maximize Conversion Value) use conversion data to set bids. When you send offline conversions with values, Smart Bidding learns which keywords, audiences, and placements generate revenue. Not just which ones generate clicks or form fills.

Audience signals improve. Google builds audience segments based on converter profiles. With only browser conversions, those segments reflect form fillers. With offline conversions, those segments reflect buyers. Your Similar Audiences and optimized targeting improve.

Reporting becomes real. You stop making budget decisions based on form fills. Campaign A generates 200 leads. Campaign B generates 150 leads. Without offline data, Campaign A looks better. With offline data, Campaign B has 3x the closed revenue. Budget shifts accordingly.

This is the same principle behind sending conversion signals to Meta. The algorithm is only as good as the data you feed it. Feed it the full funnel, and it finds buyers. Feed it the top of the funnel, and it finds clickers.

GCLID vs. FBCLID: The Click ID Problem

Both Google and Meta use click identifiers to match conversions to ad clicks.

Google's GCLID gets appended to your landing page URL when someone clicks a Google ad. Meta's FBCLID does the same for Facebook ad clicks.

The problem: most tracking setups only capture one. If your landing page captures the FBCLID for Meta CAPI, it often ignores the GCLID. Or vice versa.

Cortana captures both. When a visitor lands on your page, Cortana reads the URL parameters and stores whichever click ID is present. The GCLID goes to Google's offline conversion import. The FBCLID goes to Meta's CAPI. If a visitor came from Google, only Google gets the downstream events. If they came from Meta, only Meta gets them. No cross-contamination. No misattribution.

This dual capture is what makes single-CRM, dual-platform tracking work. One data source. Two destinations. Each platform only receives conversions from its own traffic.

You can click into any conversion inside Cortana and see the full customer journey. Name, email, phone, every touchpoint from the original ad click to the closed deal. Whether that click came from Google or Meta, the attribution chain is intact.

The Setup Checklist

If you want server-side tracking on Google Ads today, here is what you need.

Option 1: Manual. Set up Enhanced Conversions for Leads in Google Ads. Build a pipeline to export CRM data, hash identifiers, format the CSV, and upload weekly. Budget 2-4 weeks of developer time. Maintain it forever.

Option 2: Google Ads API integration. Build a custom server that authenticates via OAuth2, formats conversion payloads, and sends them to the Google Ads API in real time. Budget 4-8 weeks of development. Handle API versioning, token refresh, and error recovery.

Option 3: Cortana. Connect your CRM in 2 minutes. Cortana handles GCLID capture, hashing, formatting, API authentication, and real-time offline conversion uploads to Google. Plus Meta CAPI simultaneously. Same connection. Same pipeline. Dual-platform optimization from day one.

Most businesses running $10K+ monthly on both Google and Meta cannot afford to optimize only one platform. The attribution data you need should cover every channel your budget touches.

Your Google Ads are making decisions with half the data. Cortana sends the other half.

Send downstream revenue signals to Google and Meta from one CRM connection

Frequently Asked Questions

What is the Google Ads Conversion API?
Google's server-side tracking system lets you send conversion data directly from your server to Google Ads. This includes Enhanced Conversions (hashed first-party data sent with browser events) and offline conversion imports (CRM events like qualified leads and closed deals uploaded via the Google Ads API). Both bypass browser tracking limitations.
How is Google's Enhanced Conversions different from Meta CAPI?
They solve the same problem with different mechanisms. Meta CAPI sends server events to Meta's Conversions API endpoint. Google Enhanced Conversions sends hashed first-party data alongside tag events, and offline conversion imports send CRM data via the Google Ads API. Both feed downstream signals to their respective algorithms.
Can I send offline conversions to both Google and Meta from the same CRM?
Yes. Platforms like Cortana connect to your CRM once and send downstream conversion events to both Google Ads and Meta simultaneously. The same pipeline stages and probability-weighted values flow to both platforms. Each platform only receives conversions from its own ad clicks via GCLID and FBCLID matching.
What is the GCLID and why does it matter?
The GCLID (Google Click ID) is a unique identifier appended to your landing page URL when someone clicks a Google ad. It links the ad click to downstream conversions. Without capturing and storing the GCLID, Google cannot match your offline conversions to the original click. It is the Google equivalent of Meta's FBCLID.
How long does it take to set up Google offline conversions?
Manual CSV uploads require formatting and hashing CRM data, typically taking hours per upload plus ongoing maintenance. Custom API integration takes 4-8 weeks of developer time. Automated platforms like Cortana set up both Google and Meta server-side tracking in about 2 minutes by connecting directly to your CRM.
google ads conversion apienhanced conversionsgoogle offline conversionsserver side trackinggoogle ads optimization

Matei Parvu

Founder & CEO at Cortana AI

Founder of Cortana AI. Building orchestrated agentic growth teams for agencies and e-commerce brands scaling paid ads across Facebook, Google, TikTok, and Instagram.