Server-side events · Setup reference
Google Ads Conversion Tracking tag in a server-side Tag Manager container checker
In server-side Tag Manager, the web container's GA4 Event tag sends the conversion to your tagging server. There a Conversion Linker tag and a Google Ads Conversion Tracking tag, triggered by a Custom Event matching the GA4 event name, forward it to Google Ads. The tag reads transaction ID, value and currency from the ecommerce fields. Enhanced conversions come from a user_data parameter on the web Google tag. Hosting the tagging server on your own domain is what makes server-set cookies durable.
Read from the official documentation on 9 November 2026. Sources are listed at the end.
Check your own setup
Conversion-tag-checker reads web-side gtag/GTM thank-you code. It confirms whether a legacy AW- conversion tag still fires in the browser (a double count once the server tag is live), and checks value, currency, transaction_id, Consent Mode order and user_data. It does not inspect your server container, Custom Event triggers or the server Google Ads tag.
Open the Google Ads Conversion Tag CheckerEndpoint and authentication
Google Ads Conversion ID and Conversion Label entered in the server tag; admin rights in Google Ads and Tag Manager needed
Standard event names
Spelled exactly as Server-side GTM + Google Ads expects them. A near miss is treated as a different event.
| Event | Use it for |
|---|---|
| Conversion Linker (server) | required in the server container; All pages trigger usually best |
| Google Ads Conversion Tracking (server) | Conversion ID + Label; Custom Event trigger named like the GA4 event |
| Google Ads User-provided Data Event (server) | optional server-side version of the web tag; Conversion ID + trigger |
| GA4 Event tag (web) | sends the event to the tagging server; set up the matching GA4 key event in Admin > Key Events |
| Google Ads Remarketing (server) | covered in a separate Google guide (not detailed here) |
Required and recommended fields
| Field | What it needs |
|---|---|
| Conversion ID / Conversion Label | from your Google Ads account |
| transaction_id / value / currency | read automatically from the ecommerce fields; optional custom Conversion Value and Currency Code fields. The server container encrypts the revenue value. |
| Trigger | Custom Event whose name matches the GA4 Event tag; 'Some Custom Events' + Page URL to restrict |
| GA4 client + web and server containers | prerequisites |
| user_data configuration parameter | for enhanced conversions: on the web Google tag that sends to the tagging server, set a parameter named exactly user_data to your User-Provided Data variable |
Match keys and hashing
| Key | Normalise and hash |
|---|---|
| email / phone (at least one) | Either send unhashed (Google hashes before it reaches Google's servers) or pre-hashed hex SHA-256 with keys prefixed sha256_ (e.g. sha256_email_address) |
| Collection method | Pick one: automatic, manual (CSS selector/ID) or code (data layer, most control over formatting and hashing) |
Click ids
| Click id | Where it comes from |
|---|---|
| Conversion Linker (_gcl_* cookies) | Stores ad click info from landing URLs in first-party _gcl_* cookies (e.g. _gcl_aw); All Pages trigger recommended |
| First-party serving | Server-set cookies (more durable) need the tagging server on the same origin or a subdomain of your site; on the default domain it can only set JavaScript cookies |
Deduplication
- Google Ads treats a second conversion for the same conversion action with the same transaction ID as a duplicate and does not count it.
- transaction_id: max 64 characters, unique per order, no customer-identifying data; placeholders ('thank_you', '1234'), URLs, emails, prices and unresolved template strings are invalid; IDs starting GG_ are system-generated and treated as blank.
- A transaction ID does not deduplicate view-through conversions, and it is not the same as the 'Count: One' setting.
- Once the server tag works, remove the duplicate Google Ads Conversion Tracking and User-provided Data Event tags from the web container, or conversions double count.
Time limits and batch sizes
- No timing limits are given on the fetched Google pages for this flow.
How to test before you trust it
- Server container Preview: Open the site with server Preview on; check the Tags tab shows the Google Ads tag fired and the Console tab for errors
Why events arrive but don't attribute
- Leaving the web-container Google Ads conversion tag live after moving to the server double counts; Google says to remove it.
- The user_data parameter must be named exactly user_data, or enhanced conversions data never reaches the server tag.
- Pre-hashed values without the sha256_ prefix, or not hex SHA-256, are not treated as hashed (the Google sample even contains a 'sha265_' typo; don't copy it).
- Tagging server on the default domain: server-set cookies are not possible, so you lose the cookie-durability benefit.
- The Custom Event trigger name must exactly match the GA4 Event tag name, or the server tag never fires.
- The Google Ads tag sends all available conversion data, including user-provided data; use transformations to exclude parameters you do not want sent.
Sources
- Google Tag Platform: Google Ads conversions (server-side)
- Google Tag Platform: Google Ads User-provided Data Event (server-side)
- Google Tag Platform: Custom domain for server-side tagging
- Tag Manager Help: About the conversion linker tag
- Google Ads Help: Use a transaction ID to minimise duplicate conversions
Platforms change these rules without notice. If a source says something different from this page, the source wins.