Google Ads server-side tracking means your website's server tells Google about a conversion, not just the Google tag running in your visitor's browser. When an ad blocker or a browser privacy setting stops the tag, the server copy still gets through, so Google sees the sale or lead your ad actually earned.
Almost every guide on this topic starts by having you set up a Google Tag Manager server container, which is a second server you host and pay for that sits between your site and Google. On a WordPress site there's a simpler path: your site already knows when an order or form entry happens, so it can send that conversion to Google directly. That's how I built Google Ads server-side tracking into Conversion Bridge 1.17, with no extra server to host and no Tag Manager setup.
Why browser-only Google Ads tracking misses conversions
The standard Google Ads setup is a tag that runs in the visitor's browser and reports the conversion from there. That works until something stops the tag from running, and a lot of things do. According to eyeo's 2026 ad blocking report, about 1.1 billion people used an ad blocker at the end of 2025, which is roughly 30% of everyone online. Safari and Firefox also limit tracking on their own, and plenty of company networks block ad scripts outright.
When the tag is blocked, the sale still happens, but Google never hears about it. You don't get an error and nothing looks broken. Your campaigns just report fewer conversions than they earned, and if you use Smart Bidding, Google is making its bidding decisions from that smaller number.
For the general background on sending conversions from a server, I wrote a plain-language explainer on what a Conversions API is, which covers every ad platform, not just Google Ads. And if you want to see every platform Conversion Bridge can send from the server, it's all on the server-side tracking page.
Two ways to do Google Ads server-side tracking
There are two common ways to get conversions to Google from a server, and they're quite different.
Server-side taggingServer-side tagging moves tracking tags off the visitor's browser and onto a server you control, usually a Google Tag Manager server container, which then forwards data to analytics and ad platforms. with a Google Tag Manager server container. This is what most of the search results describe. Your site still runs tags in the browser, but they send their data to a server container you host (on Google Cloud, or a hosting company like Stape) instead of straight to Google. The container then forwards it on. Google's own setup guide walks through it: a server container, a GA4 client to receive the data, a Conversion Linker tag, and a Google Ads conversion tag inside the container. It's powerful and it works for any kind of website, but it's a second system to host, pay for, and maintain, and you need to be comfortable in Tag Manager.
Sending conversions from your own site. Your WordPress site already runs the code that processes the order or saves the form entry. Instead of handing that conversion to another server, it sends it to Google itself through Google's API. There's no container to host and no Tag Manager setup, because the "server" in server-side is the one your site already runs on.
| GTM server container | Your WordPress site sends it | |
|---|---|---|
| Extra server to host | Yes | No |
| Monthly hosting cost | Yes | No |
| Needs Google Tag Manager | Yes | No |
| Works on any website | Yes | WordPress only |
| Where your visitors' data goes | Your site, then your container, then Google | Your site, then Google |
If you already run a server container for other reasons, keep using it. If you're on WordPress and the container is the only reason you haven't set up server-side tracking, you don't need it.
How the WordPress version works
When a tracked conversion happens on your site (a WooCommerce order, a form entry, a booking, a signup), Conversion Bridge does two things. The Google tag in the browser reports it the way it always has, and your site sends the same conversion to Google from the server through Google's Data Manager API, which is Google's newer API for sending conversion data.
The server copy uses the same conversion labels you already have, so you don't need separate conversion actions for it. Whatever you've set up to count as a conversion in WordPress gets both copies. Google Ads now works the same way as the other ad platforms Conversion Bridge sends server-side conversions to: Google Ads, Meta Ads, LinkedIn Ads, Pinterest Ads, Reddit Ads, OpenAI Ads, Snapchat Ads, and Awin.
Server-side tracking for Google Ads works with every conversion Conversion Bridge tracks, across 77 WordPress plugins. See the Google Ads setup guide for the full steps.
Connecting your site to Google Ads
Your site needs permission to send conversions to your Google Ads account. There are two ways to give it that.
Connect with Google is the one I recommend for most people. You click a button in WordPress, sign in with Google, and pick your Google Ads account. That fills in your Destination ID for you and turns on server-side sending. The sign-in goes through conversionbridgewp.com, which holds the Google login and hands your site an access token when it needs one, but the conversions themselves go from your site straight to Google and never pass through my server.
A service account is the other option. It's a Google login for software instead of a person, created in your own Google Cloud project. You download its key, paste it into Conversion Bridge, and add the service account as a user in Google Ads. It takes more steps, but it fits agencies well: you can add one service account to your Google Ads manager account once and reuse it on every client site, and nothing depends on a sign-in through someone else's app. It's also the way to go if a client's conversion actions live in the manager account itself (Google calls this cross-account conversion tracking), since the account picker in Connect with Google leaves manager accounts out.
Picking or creating conversion actions from WordPress
Once you're connected, every Google Ads Conversion Label field in Conversion Bridge shows a Choose from Google Ads link. That includes the fields inside supported form plugins and page builders. You can pick one of your existing website conversion actions, or type a name, choose a category, and create a new one in Google Ads without leaving WordPress, and the label fills itself in.
I added this because copying conversion labels by hand is the easiest part of Google Ads setup to get wrong. The label is only the part after the slash in Google's event snippet, and if you paste the whole thing, tracking breaks without any error. Picking from a list takes that mistake off the table, which matters even more when you're setting up the same conversions across a stack of client sites.
One thing to know: a brand new conversion actionA conversion action is the thing you tell Google Ads to count as a success, like a purchase, a form submission or a phone call, along with how to count and value it. can take a little while before Google accepts server-side conversions for it. In my testing it was about an hour. The browser tag records conversions for it right away, so nothing is lost in the meantime.
How Google avoids counting a conversion twice
The most common worry about Google Ads server-side tracking is double counting, and it's a fair one. One of the top search results for this topic is a Reddit thread from someone whose conversions nearly doubled after adding server-side tracking, which is what happens when the browser copy and the server copy can't be matched to each other.
Google matches them on the transaction ID. When both copies of a conversion arrive with the same transaction ID for the same conversion action, Google counts it once. So once server-side tracking is set up, Conversion Bridge adds a transaction ID to every Google Ads conversion in the browser too, not just purchases. For an order it's the order ID. For a form entry or any other conversion, it's a unique ID created for that one event, and the server copy carries the same one.
When the tag was blocked, only the server copy arrives, and it counts on its own. That's the whole point of sending it.
What gets sent to Google
Here's what your site sends with each server-side conversion:
- The conversion's ID (the order ID for purchases), its time, and its value and currency when it has one
- The Google click ID (gclid) from the ad the visitor clicked, when there is one
- With Enhanced Conversions on, the visitor's email, phone number, name and address, hashed on your server before they're sent
Your visitors' IP address and browser details are never sent.
The click ID is the piece that tells Google which ad earned the conversion, and it's the part a server can't see on its own. Conversion Bridge looks for it in the page address first, then in Google's own cookiesA small piece of data stored in a user’s browser that helps websites remember user activity, preferences, or sessions across visits., then in the visitor's conversion journey, which records the click ID from the page where they first landed. If the Google tag was blocked and journeys are turned off, a conversion that happens a few pages after the landing page has no click ID, and Google can only match it on the hashed customer details. A conversion with neither a click ID nor customer details isn't sent at all, because Google would have nothing to match it to.
Consent and cookie banners
If you use a supported cookie banner, a conversion is only sent server-side after the visitor accepts marketing cookies (or Google Ads specifically, if your banner lists it on its own). Sending from the server isn't a way around a visitor saying no, and I didn't want it to be.
Without a cookie banner, Conversion Bridge leaves Google's consent fields empty rather than telling Google that consent was given. Google treats that as "not specified," which is the honest answer when nobody asked.
Testing your setup
Before you trust the numbers, it's worth checking that conversions are actually reaching Google.
- Server-Side Test Mode, under the Google Ads advanced settings, sends each conversion with a flag that tells Google to check it and reply without recording anything. Turn it off when you're done.
- The Health screen under Settings → Conversion Bridge → Tools shows any conversion Google rejected, with the reason.
- The Pixel Helper & Tag Inspector Chrome extension shows the server-side sends next to the browser tags while you click through your own site.
After a few days, compare the conversions in Google Ads with the orders or entries in WordPress. They'll never match exactly, since Google only counts conversions it can tie to an ad click, but the difference should be smaller than it was before.
Is it worth setting up?
If you run Google Ads to a WordPress site and use Smart Bidding, I think it is. Bidding can only learn from the conversions Google sees, so every one the browser tag misses is a sale your campaigns don't get credit for. Server-side tracking doesn't make up conversions, it just makes sure the real ones get reported.
If you only run a small brand campaign and check results now and then, the browser tag alone may be fine for you, and that's okay too.
Conversion Bridge sends Google Ads conversions from your WordPress site with no Tag Manager server to host. See how Google Ads tracking works in Conversion Bridge.
Happy tracking!
