Google Ads Tracking Setup: 5 Steps (No Blind Guessing)
Set up Google Ads conversion tracking properly. Conversion actions, GA4 integration, Enhanced Conversions, offline trackingβwith setup steps and common fixes.
Google Ads Tracking Setup: The Complete Guide 2025
Reality: Without proper tracking = flying blind. In my experience, a large share of Google Ads campaigns have tracking issues. This guide shows the complete setup process + troubleshooting.
Why Tracking is Critical
Example without tracking:
Budget: β¬5,000/month
Clicks: 2,500
Conversions: ???
ROAS: ???
β No idea if profitable!
With tracking:
Budget: β¬5,000/month
Clicks: 2,500
Conversions: 83
Cost per Conversion: β¬60
Revenue: β¬24,900
ROAS: 498%
β Profitable! Scale!
What you DON'T know without tracking:
- β Which keywords are profitable
- β Which ads convert
- β If campaign is profitable
- β How to optimize
- β Whether to increase/decrease budget
With tracking:
- β Every conversion is attributable
- β AI can optimize (Smart Bidding)
- β ROI assessment possible
- β Scaling decisions data-driven
The Tracking Ecosystem
Components:
- Google Ads Conversion Tracking (foundation)
- Google Analytics 4 (advanced analysis)
- Google Tag Manager (tag management)
- Enhanced Conversions (better data quality)
- Offline Conversion Import (B2B, phone sales)
Minimum: #1 (Google Ads Conversion Tracking) Recommended: #1 + #2 + #3 Advanced: All 5
Setup 1: Google Ads Conversion Tracking (Foundation)
Step 1: Create Conversion Action
Google Ads β Tools β Conversions β + Conversion
β Website
β Conversion name: "Purchase" (or "Lead", "Signup", etc.)
Settings:
Category: Purchase (or Lead, Signup, etc.)
Value:
- "Same value for each conversion" (Lead-Gen)
- "Use different values for each conversion" (E-Commerce) β
Default value: Optional (fallback)
Count:
- "Every" (E-Commerce - multiple purchases count)
- "One" (Lead-Gen - only first lead counts) β
Conversion window: 30 days (default, adjustable)
Step 2: Get Tag Code
β "Use Google Tag Manager" or "Install tag yourself"
Code snippet:
<!-- Global Site Tag (gtag.js) - Google Ads: XXXXXX -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-XXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-XXXXXX');
</script>
Installation: On ALL pages (in <head>)
Step 3: Conversion Event Tag
Installation: Only on confirmation page (after purchase/lead)
<!-- On Thank You page / Order confirmation page -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXX/XXXXXXX', // Your Conversion ID
'value': 129.99, // Dynamic!
'currency': 'EUR',
'transaction_id': 'T12345' // Unique per conversion
});
</script>
Dynamic values (important!):
PHP example:
<script>
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXX/XXXXXXX',
'value': <?php echo $order_total; ?>,
'currency': 'EUR',
'transaction_id': '<?php echo $order_id; ?>'
});
</script>
JavaScript example (Single Page Apps):
// On conversion event
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXX/XXXXXXX',
'value': orderData.total,
'currency': 'EUR',
'transaction_id': orderData.id
});
Step 4: Testing
Test 1: Tag Assistant
1. Install Google Tag Assistant (Chrome Extension)
2. Visit website
3. Open Tag Assistant
4. Should show: "Google Ads Conversion Tracking (AW-XXXXXX)"
Test 2: Test conversion
1. Complete conversion (test purchase/lead)
2. Google Ads β Tools β Conversions β Status
3. After 1-2 hours: Should show test conversion
Important: First conversions take 24-48h to appear completely!
Setup 2: Google Analytics 4 Integration
Why GA4 additionally?
- Advanced analysis (user journey, funnel, etc.)
- Cross-device tracking
- Audience building for remarketing
- Better attribution
Step 1: Create GA4 Property
Google Analytics β Admin β Create Property
β Property name: "My Website"
β Time zone: Your country
β Currency: EUR
Step 2: Create Data Stream
β Add data stream β Web
β Website URL: https://yourdomain.com
β Stream name: "Website"
β Create
Note Measurement ID: G-XXXXXXXXXX
Step 3: Install GA4 Tag
Option A: Direct (without GTM):
<!-- Global Site Tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
Option B: Via Google Tag Manager (recommended, see Setup 3)
Step 4: E-Commerce Tracking
Purchase event (on confirmation page):
gtag('event', 'purchase', {
transaction_id: 'T12345',
value: 129.99,
currency: 'EUR',
tax: 20.76,
shipping: 4.99,
items: [{
item_id: 'SKU123',
item_name: 'Nike Air Max 2025',
item_category: 'Shoes',
price: 129.99,
quantity: 1
}]
});
Other important events:
View item (product page):
gtag('event', 'view_item', {
currency: 'EUR',
value: 129.99,
items: [{
item_id: 'SKU123',
item_name: 'Nike Air Max 2025'
}]
});
Add to cart:
gtag('event', 'add_to_cart', {
currency: 'EUR',
value: 129.99,
items: [{
item_id: 'SKU123',
item_name: 'Nike Air Max 2025'
}]
});
Begin checkout:
gtag('event', 'begin_checkout', {
currency: 'EUR',
value: 129.99,
items: [...]
});
Step 5: Google Ads β GA4 Linking
GA4: Admin β Product Links β Google Ads Links
β Create link
β Select Google Ads account
β Enable auto-tagging: YES
β Import conversion events: YES (purchase, submit_form, etc.)
Advantage: GA4 conversions usable in Google Ads!
Setup 3: Google Tag Manager (recommended)
Why GTM?
- Central tag management (no more code changes!)
- Version control
- Testing & preview mode
- Easier for marketers (less IT dependency)
Step 1: Create GTM Container
tagmanager.google.com β Create account
β Container name: "My Website"
β Container type: Web
β Create
Note container code
Step 2: GTM Code on Website
<!-- In <head> -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- In <body> (immediately after opening tag) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
Step 3: Configure Tags in GTM
Tag 1: Google Ads Conversion Tracking
GTM β Tags β New
β Tag Configuration: Google Ads Conversion Tracking
β Conversion ID: AW-XXXXXX
β Conversion Label: XXXXXXX
β Conversion Value: {{order_total}} (Variable!)
β Trigger: Custom Event "purchase"
Tag 2: GA4 Configuration
Tags β New
β Tag Type: Google Analytics: GA4 Configuration
β Measurement ID: G-XXXXXXXXXX
β Trigger: All Pages
Tag 3: GA4 Purchase Event
Tags β New
β Tag Type: Google Analytics: GA4 Event
β Event Name: purchase
β Event Parameters:
- transaction_id: {{Transaction ID}}
- value: {{Order Total}}
- currency: EUR
- items: {{Items Array}}
β Trigger: Custom Event "purchase"
Step 4: DataLayer Push (on website)
On confirmation page:
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'purchase',
'transactionId': 'T12345',
'transactionTotal': 129.99,
'transactionTax': 20.76,
'transactionShipping': 4.99,
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345',
'revenue': '129.99',
'tax': '20.76',
'shipping': '4.99'
},
'products': [{
'name': 'Nike Air Max 2025',
'id': 'SKU123',
'price': '129.99',
'category': 'Shoes',
'quantity': 1
}]
}
}
});
</script>
Step 5: Testing in GTM
GTM β Preview mode
β Enter website URL
β Complete conversion
β GTM shows: Which tags fire
Setup 4: Enhanced Conversions
What: Improved conversion accuracy through first-party data
Why important?
- iOS 14.5+ & cookie restrictions = less tracking
- Enhanced Conversions uses hashed email/phone
- +10-30% more measured conversions!
Setup Methods
Method 1: Automatic (GTM - easiest)
GTM β Tags β Google Ads Conversion Tag
β Advanced Settings β Enhanced Conversions
β "Automatically collect from website data": ON
β Save
GTM automatically detects: Email, phone, name, address from form fields
Method 2: Manual (code)
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXX/XXXXXXX',
'value': 129.99,
'currency': 'EUR',
'transaction_id': 'T12345',
// Enhanced Conversion data
'email': 'user@example.com', // Automatically hashed!
'phone_number': '+491234567890',
'address': {
'first_name': 'Max',
'last_name': 'Mustermann',
'street': 'Main Street 1',
'city': 'Munich',
'postal_code': '80331',
'country': 'DE'
}
});
IMPORTANT: Data is automatically hashed (GDPR-compliant!)
Verification:
Google Ads β Tools β Conversions
β Status: "Active" + "Enhanced conversions: active"
Setup 5: Offline Conversion Tracking
For: B2B, phone sales, physical stores
Use case:
1. User clicks Google Ad
2. Fills lead form (online conversion)
3. Sales team contacts (offline)
4. Customer purchases for β¬50,000 (offline conversion)
Problem: Google Ads only sees lead (β¬0), not purchase (β¬50,000)!
Solution: Offline conversion import
Setup
Step 1: Activate GCLID tracking
Google Ads β Settings β Account Settings
β Auto-tagging: ON
Step 2: Store GCLID in CRM
// On lead form submit
const urlParams = new URLSearchParams(window.location.search);
const gclid = urlParams.get('gclid');
// GCLID in hidden field
document.getElementById('gclid_field').value = gclid;
// Or: Store in cookie
document.cookie = `gclid=${gclid}; max-age=2592000`; // 30 days
Step 3: Create offline conversion action
Google Ads β Tools β Conversions β +
β Import β "Clicks"
β Name: "Offline Purchase"
β Create
Step 4: Upload conversions
Via UI (manual):
Google Ads β Tools β Conversions β Uploads
β Select "Offline Purchase"
β Upload CSV:
Google Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency
abc123xyz, Offline Purchase, 2025-01-15 10:30:00, 50000, EUR
def456uvw, Offline Purchase, 2025-01-16 14:20:00, 35000, EUR
Via API (automated):
# Python example (Google Ads API)
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
service = client.get_service("ConversionUploadService")
click_conversion = client.get_type("ClickConversion")
click_conversion.gclid = "abc123xyz"
click_conversion.conversion_action = "customers/XXX/conversionActions/YYY"
click_conversion.conversion_date_time = "2025-01-15 10:30:00"
click_conversion.conversion_value = 50000
click_conversion.currency_code = "EUR"
response = service.upload_click_conversions(
customer_id="XXXXXX",
conversions=[click_conversion],
partial_failure=True
)
Important: Upload within 90 days of click!
Troubleshooting Tracking Issues
Problem 1: "No conversions measured"
Checklist:
- [ ] Conversion tag on confirmation page? (not on checkout!)
- [ ] Tag firing? (check with Tag Assistant)
- [ ] Conversion value dynamically passed?
- [ ]
transaction_idunique? - [ ] Waited 24-48h? (first conversions take time)
Testing:
Google Ads β Tools β Conversions β Diagnostics
β Shows errors
Problem 2: "Duplicate conversions"
Cause: User reloads thank you page multiple times
Solution: Use transaction_id!
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXX/XXXXXXX',
'transaction_id': 'T12345' // Unique! Google automatically deduplicates
});
Problem 3: "Conversion value is 0"
Cause: Static value instead of dynamic
β Wrong:
'value': 129.99 // Hardcoded!
β Correct:
'value': {{order_total}} // Dynamic!
Problem 4: "Conversions significantly lower than expected"
Possible causes:
- Ad blockers: 10-30% users use ad blockers β don't track
- Cookie restrictions: Safari ITP, Firefox ETP
- Cross-device: User clicks on mobile, buys on desktop
- Attribution window: Default 30 days (user buys after 35 days = not counted)
Solution:
- Activate Enhanced Conversions (partially solves 1+2)
- GA4 cross-device tracking
- Increase attribution window (Google Ads β Conversion Settings)
Problem 5: "GTM tags not firing"
Debug:
GTM β Preview mode β Visit website
β Shows: Which tags fire (or don't)
Common mistakes:
- β Trigger misconfigured
- β Variable not defined
- β GTM container not published (!!)
- β DataLayer event misspelled
Advanced: Server-Side Tracking
What: Tracking runs through your own server, not browser
Advantages:
- β Bypasses ad blockers
- β Better data quality
- β More GDPR-compliant (first-party data)
- β Faster website (fewer client-side scripts)
Disadvantages:
- β Complex (server setup)
- β Costs (server infrastructure)
- β Technical know-how required
Setup: Google Tag Manager Server-Side Container (outside this guide)
Tracking Compliance (GDPR)
Important: Tracking MUST be GDPR-compliant!
Requirements:
- Cookie banner: Opt-in before tracking
- Privacy policy: Document tracking
- Data processing agreement: Sign Google Ads DPA
Cookie banner integration:
// Cookiebot example
window.addEventListener('CookiebotOnAccept', function (e) {
if (Cookiebot.consent.marketing) {
// User accepted marketing cookies
// Now activate Google Ads tracking
gtag('consent', 'update', {
'ad_storage': 'granted',
'analytics_storage': 'granted'
});
}
});
Consent Mode (Google):
<script>
// BEFORE gtag.js
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied'
});
// After user consent: Update
gtag('consent', 'update', {
'ad_storage': 'granted',
'analytics_storage': 'granted'
});
</script>
Tracking Checklist
Foundation β :
- [ ] Google Ads Conversion Tracking active
- [ ] Conversion value dynamically passed
- [ ]
transaction_idfor deduplication - [ ] Testing performed (Tag Assistant)
- [ ] First test conversions measured
Advanced β :
- [ ] GA4 integrated
- [ ] E-Commerce events (view_item, add_to_cart, purchase)
- [ ] Google Ads β GA4 linked
- [ ] GTM setup (optional but recommended)
Expert β :
- [ ] Enhanced Conversions activated
- [ ] Offline Conversion Tracking (B2B)
- [ ] GCLID stored in CRM
- [ ] GDPR-compliant cookie banner
Tools for Tracking
Testing:
- Google Tag Assistant (Chrome Extension) - free
- GTM Preview Mode (built-in) - free
- Google Analytics DebugView - free
Tag management:
- Google Tag Manager (free)
- Segment (from $120/month) - Enterprise
- Tealium (custom pricing) - Enterprise
Cookie consent:
- Cookiebot (from β¬9/month)
- OneTrust (custom pricing)
- Usercentrics (from β¬5/month)
Monitoring:
- Google Ads Conversion Tracking Status - built-in
- GA4 Real-Time Reports - built-in
Conclusion
Tracking = Foundation for successful Google Ads
Setup priority:
Day 1:
- β Google Ads Conversion Tracking (foundation!)
- β Dynamic conversion value
Week 1:
- β Testing & verification
- β GA4 setup
- β E-Commerce events
Week 2:
- β GTM migration (optional)
- β Enhanced Conversions
- β GDPR compliance
Month 2+:
- β Offline conversions (B2B)
- β Advanced attribution
- β Server-side tracking (optional)
Without proper tracking: No optimization possible!
FAQ: Google Ads Tracking
How do I set up Google Ads Conversion Tracking?
4 steps: 1) Google Ads β Tools β Conversions β + Conversion β Website. 2) Conversion name (e.g., "Purchase"), category, value option (dynamic for e-commerce!), count method. 3) Global Site Tag on ALL pages (in <head>). 4) Conversion Event Tag on confirmation page with value, currency, transaction_id. Testing: Tag Assistant + perform test conversion. First conversions visible after 24-48h. Critical: Conversion value MUST be dynamic!
What's the difference between Google Ads and GA4 tracking?
Both complement each other! Google Ads Tracking: Focus on campaign optimization, direct attribution to keywords/ads, essential for Smart Bidding. GA4: Advanced analysis (user journey, funnel, demographics), cross-device tracking, audience building, better attribution. Best practice: Use both! Google Ads for optimization, GA4 for deeper insights. Setup: Link both (GA4 β Admin β Google Ads Links).
Why aren't my conversions being measured?
5 most common causes: 1) Conversion tag not on confirmation page (only on checkout!). 2) Tag not firing (check with Tag Assistant). 3) Haven't waited 24-48h. 4) transaction_id missing or not unique. 5) Ad blockers (10-30% users). Solution: Use Tag Assistant, perform test conversion, activate Enhanced Conversions (partially bypasses ad blockers), GTM debug mode.
What is Enhanced Conversions and should I activate it?
Enhanced Conversions = improved tracking accuracy through first-party data (email, phone, address - automatically hashed!). Benefits: +10-30% more measured conversions, better data quality despite cookie restrictions (iOS 14.5+, Safari ITP), GDPR-compliant (hashing). Setup: GTM β Google Ads Conversion Tag β "Automatically collect from website data": ON (easiest method). YES, definitely activate! No disadvantages, only benefits.
How do I track offline conversions (B2B, phone sales)?
Offline Conversion Tracking setup: 1) Activate auto-tagging in Google Ads. 2) Store GCLID (Google Click ID) in CRM when lead form submitted. 3) Create offline conversion action (Google Ads β Conversions β Import β Clicks). 4) Upload conversions: Via CSV (manual) or API (automated) with gclid, conversion_time, value. Important: Upload within 90 days of click! Use case: Lead online (β¬0) β sales call β offline purchase (β¬50k) β Google Ads now sees β¬50k value!
What is Google Tag Manager and do I need it?
GTM = tag management system for central management of all tracking tags. Benefits: No more code changes (IT-independent), version control, testing/preview mode, easier for marketers. Without GTM: Every tag directly in HTML (on change: developer needed). With GTM: Manage all tags in GTM UI. Need it? No (optional), but HIGHLY recommended when: 5+ tags (Ads, GA4, Facebook, etc.), frequent changes, non-technical team. Setup: 1-2 hours initially, but saves time long-term!
How do I ensure my tracking is GDPR-compliant?
GDPR requirements: 1) Cookie banner with opt-in BEFORE tracking (Cookiebot, OneTrust, etc.). 2) Privacy policy: Document tracking. 3) Google Ads DPA (Data Processing Agreement) sign (Google Ads β Admin β Settings β Data Processing). 4) Use Consent Mode (Google): Fire tags only after user consent. Setup: Cookie banner β On accept: gtag('consent', 'update', {'ad_storage': 'granted'}). Without compliance: Warnings + fines possible!
How do I test if my tracking works?
4 test methods: 1) Google Tag Assistant (Chrome Extension): Shows which tags fire on page. 2) GTM Preview Mode: Real-time debug (which tags, triggers, variables). 3) Perform test conversion: Complete purchase process, then check Google Ads β Conversions β Status (after 1-2h). 4) GA4 DebugView: Real-time event monitoring. Important: Test BEFORE launch! Validate test conversions via "Conversion β Diagnostics". Often overlooked: Testing in incognito mode (clean cookies).

Mijo Jurisic
Google Ads consultant & founder of MJ Marketing. Five-plus years of hands-on practice β from a self-taught start to the Google Premier Partner programme with 500+ direct Google Ads clients and β¬20M+ in managed media spend.
Share this article:

