A paid media manager once told me, “I don’t care about the tech, I care that Google Ads stops under-reporting.” Fair. Server-side Google Ads tracking helps with exactly that: your click ID cookie lives longer, fewer conversions get lost to ad blockers, and you can add hashed customer data for Enhanced Conversions.
What you need first
- GA4 already flowing through your server container
- A custom domain on your server container
- Your Google Ads Conversion ID and Conversion Label (Google Ads → Goals → Conversions → your action → Tag setup → Use Google Tag Manager)
Step by step
- Add a Conversion Linker tag in the server container. Trigger it on all events from the GA4 client. This stores the
gclidin a first-party cookie set by your server. Skip this and nothing else works well. - Make sure the purchase event reaches the server. Your GA4
purchaseevent should includevalue,currencyandtransaction_id. - Create a Google Ads Conversion Tracking tag in the server container. Add your Conversion ID and Label.
- Map the values. Conversion value, currency and order ID usually fill in from the GA4 event data automatically. Check them anyway.
- Set the trigger. Custom event where Event Name equals
purchase(orgenerate_leadfor lead-gen sites). - Add Enhanced Conversions (optional but smart). If user data like email and phone is in the event, the tag can send it hashed. This often recovers conversions Google could not match otherwise.
- Test. Use server preview to confirm the tag fires with the right values. Then check the conversion action’s status in Google Ads over the next 24–48 hours.
Remarketing too
If the client runs remarketing, add the Google Ads Remarketing tag in the server container as well, triggered on page views and key ecommerce events.
Mistakes to avoid
- No Conversion Linker in the server. The most common one by far.
- Keeping the web conversion tag live at the same time without a plan. Pick one source per conversion action, or you will double count.
- Missing transaction_id. Without it, Google cannot deduplicate repeat fires of the same order.
- Sending user data without consent. Enhanced Conversions should respect the user’s consent choice.
- Panicking on day one. Google Ads can take a while to show the status as active. Give it time before changing things.
What it looks like in practice
A pattern I see a lot on lead-gen accounts: form leads show up in the CRM but Google Ads misses a chunk of them. After moving to server-side with the Conversion Linker and Enhanced Conversions, the gap usually narrows, and the bidding algorithm finally gets enough signal to optimise.
Bottom line
Conversion Linker first, conversion tag second, Enhanced Conversions third. Do them in that order and Google Ads tracking server-side is simple.
Source reading: Stape — server-side conversion tracking in Google Ads