Google Ads Event Tracking
Overview
Google Ads uses conversion tracking to measure valuable customer actions resulting from your advertising campaigns. The platform supports multiple tracking methods including Google Tag (gtag.js), Google Analytics 4 imports, and offline conversion imports. With enhanced conversions and privacy-safe measurement, Google Ads provides robust attribution while respecting user privacy.
Standard Events
Google Ads provides predefined conversion actions for common business goals:
Website Conversions
- Purchase - Ecommerce transactions
- Add to cart - Product additions to shopping cart
- Begin checkout - Checkout process initiation
- Subscribe - Newsletter or service subscriptions
- Submit lead form - Contact form submissions
- Contact - Phone calls, messages, or chat interactions
- Page view - Key page visits (thank you pages, product pages)
- Sign up - Account registrations
- Download - File or app downloads
Phone Calls
- Calls from ads - Clicks on call extensions or call-only ads
- Calls to phone number on website - On-site phone number clicks
- Imported calls - Offline call conversions
App Conversions
- In-app actions - App installs and in-app events
- App engagement - First opens and subsequent interactions
Store Visits
- Local actions - Directions requests, store visits
- Store sales - In-store purchase tracking
Custom Events
Creating Custom Conversions
- Navigate to Goals > Conversions in Google Ads
- Click + New conversion action
- Select conversion source (Website, App, Phone calls, Import)
- Configure conversion details:
// Custom event implementation
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': 1.0,
'currency': 'USD',
'transaction_id': ''
});
Event Parameters
Customize tracking with additional parameters:
gtag('event', 'conversion', {
'send_to': 'AW-123456789/AbC-D_efG-h12_34-567',
'value': 99.99,
'currency': 'USD',
'transaction_id': 'ORDER_12345',
// Custom parameters
'event_category': 'ecommerce',
'event_label': 'summer_sale',
'custom_parameter': 'custom_value'
});
Dynamic Values
Pass dynamic data for flexible tracking:
// Dynamic value example
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': parseFloat(document.getElementById('order-total').textContent),
'currency': 'USD',
'transaction_id': getOrderId()
});
Ecommerce Events
Purchase Tracking
Implement comprehensive ecommerce tracking with transaction details:
<!-- Google Tag -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-CONVERSION_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-CONVERSION_ID');
</script>
<!-- Purchase Conversion -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': 99.99,
'currency': 'USD',
'transaction_id': 'ORDER_12345'
});
</script>
Cart and Checkout Events
Track the full funnel with separate conversions:
// Add to Cart
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/ADD_TO_CART_LABEL',
'value': 29.99,
'currency': 'USD',
'items': [{
'id': 'SKU_12345',
'name': 'Product Name',
'quantity': 1,
'price': 29.99
}]
});
// Begin Checkout
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/BEGIN_CHECKOUT_LABEL',
'value': 99.99,
'currency': 'USD'
});
Shopping Campaigns
For Google Shopping, conversion tracking is essential for Smart Bidding:
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/PURCHASE_LABEL',
'value': 149.99,
'currency': 'USD',
'transaction_id': 'TXN_67890',
'items': [{
'id': 'SKU_001',
'google_business_vertical': 'retail'
}]
});
Conversion Tracking
Implementation Methods
1. Google Tag (gtag.js)
Modern implementation for website conversions:
<!-- Global Site Tag -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-CONVERSION_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-CONVERSION_ID');
</script>
<!-- Event Snippet -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL'
});
</script>
2. Google Tag Manager
Centralized tag management with dynamic configuration:
- Tag Type: Google Ads Conversion Tracking
- Conversion ID: AW-CONVERSION_ID
- Conversion Label: CONVERSION_LABEL
- Trigger: Custom event, page view, or form submission
Example GTM dataLayer push:
dataLayer.push({
'event': 'purchase',
'transaction_id': 'ORDER_12345',
'value': 99.99,
'currency': 'USD'
});
3. Google Analytics 4 Import
Import conversions from GA4:
- Link GA4 property to Google Ads
- Navigate to Goals > Conversions
- Click Import and select GA4 conversions
- Choose events to import as conversions
Imported events automatically include parameters from GA4.
Enhanced Conversions
Improve conversion measurement accuracy with first-party data:
Manual Implementation
gtag('config', 'AW-CONVERSION_ID', {
'enhanced_conversions': 'automatic' // Automatic mode
});
// Or manual mode with hashed data
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': 99.99,
'currency': 'USD',
'transaction_id': 'ORDER_12345',
'enhanced_conversion_data': {
'email': 'user@example.com',
'phone_number': '+15551234567',
'first_name': 'John',
'last_name': 'Doe',
'home_address': {
'street': '123 Main St',
'city': 'San Francisco',
'region': 'CA',
'postal_code': '94102',
'country': 'US'
}
}
});
GTM Implementation
Configure enhanced conversions in GTM:
- Enable Enhanced Conversions in tag settings
- Map user data variables to fields
- Data is automatically hashed before sending
Conversion Value Rules
Create dynamic conversion values based on audience or context:
- Location-based values - Higher values for premium markets
- Audience-based values - Adjust for customer lifetime value
- Device-based values - Different values by device type
Configure in Tools > Conversions > Value rules
Offline Conversions
Import Methods
1. Manual Upload
Upload conversions via CSV file:
Required fields:
- Google Click ID (GCLID) or other identifier
- Conversion name
- Conversion time
- Conversion value (optional)
- Conversion currency (optional)
CSV format:
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
EAIaIQobChMI...,Purchase,2025-01-15 10:30:00,99.99,USD
Upload in Tools > Conversions > Uploads
2. Google Ads API
Automate conversion imports programmatically:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
conversion_upload_service = client.get_service("ConversionUploadService")
# Create click conversion
click_conversion = client.get_type("ClickConversion")
click_conversion.gclid = "EAIaIQobChMI..."
click_conversion.conversion_action = "customers/123/conversionActions/456"
click_conversion.conversion_date_time = "2025-01-15 10:30:00-08:00"
click_conversion.conversion_value = 99.99
click_conversion.currency_code = "USD"
# Upload conversion
request = client.get_type("UploadClickConversionsRequest")
request.customer_id = "123456789"
request.conversions = [click_conversion]
request.partial_failure = True
response = conversion_upload_service.upload_click_conversions(request=request)
3. Enhanced Conversions for Leads
Upload lead conversions using user-provided data:
# Enhanced conversion for lead
click_conversion = client.get_type("ClickConversion")
click_conversion.gclid = "EAIaIQobChMI..."
click_conversion.conversion_action = "customers/123/conversionActions/789"
click_conversion.conversion_date_time = "2025-01-15 14:20:00-08:00"
# User identifiers (will be hashed)
user_identifiers = []
email_identifier = client.get_type("UserIdentifier")
email_identifier.hashed_email = hash_value("user@example.com")
user_identifiers.append(email_identifier)
phone_identifier = client.get_type("UserIdentifier")
phone_identifier.hashed_phone_number = hash_value("+15551234567")
user_identifiers.append(phone_identifier)
click_conversion.user_identifiers = user_identifiers
# Upload
request = client.get_type("UploadClickConversionsRequest")
request.customer_id = "123456789"
request.conversions = [click_conversion]
response = conversion_upload_service.upload_click_conversions(request=request)
4. CRM Integration
Integrate with Salesforce, HubSpot, or other CRMs:
- Use Google Ads API to push CRM conversions
- Map CRM lead/opportunity stages to conversions
- Include GCLID from form submissions
- Schedule regular imports (hourly/daily)
Store Sales Import
Track in-store purchases from online ads:
- Collect customer match data (email/phone) online
- Match to in-store transactions via loyalty programs
- Upload via Store Sales Uploads
- Requires historical data for Google's modeling
Attribution
Attribution Models
Google Ads supports multiple attribution models:
Available Models
- Last click - 100% credit to last clicked ad (default for Search)
- First click - 100% credit to first clicked ad
- Linear - Equal credit across all clicks
- Time decay - More recent clicks get more credit
- Position-based - 40% first and last, 20% middle clicks
- Data-driven - Algorithmic attribution (recommended, requires sufficient data)
Configure in Tools > Attribution > Attribution models
Data-Driven Attribution
Google's machine learning model that distributes credit based on actual impact:
Requirements:
- 15,000 clicks + 600 conversions within 30 days (Search/Shopping)
- 3,000 clicks + 300 conversions within 30 days (Display/YouTube)
Benefits:
- Most accurate conversion credit
- Adapts to your specific conversion paths
- Optimizes bidding strategies
Conversion Windows
Set lookback periods for conversions:
- Click-through conversion window: 1-90 days (default: 30 days)
- View-through conversion window: 1-30 days (default: 1 day, Display/Video only)
- Engagement window: 1-30 days (YouTube engaged views)
Configure per conversion action in conversion settings.
Cross-Device Conversions
Automatic tracking of conversions across devices:
- User clicks ad on mobile
- User converts on desktop
- Both interactions counted in attribution path
Enabled by default for signed-in Google users.
Debugging & Validation
Google Tag Assistant
Browser extension for validating Google tags:
- Install Tag Assistant Chrome extension
- Navigate to page with conversion tag
- Click extension icon to see:
- Tags detected
- Configuration status
- Firing status
- Error messages
Preview Mode in GTM
Test conversions before publishing:
- Enter Preview mode in Google Tag Manager
- Navigate through conversion funnel
- Verify tags fire at correct triggers
- Check dataLayer variables
- Confirm parameters pass correctly
Conversion Tracking Status
Check implementation in Google Ads:
Navigate to Tools > Conversions and review:
- Status column - Recording/Not recording
- Recent conversions - Last 7 days activity
- Tag setup - Implementation method
Google Ads Diagnostics
Use built-in diagnostics:
- Go to conversion action details
- Check Tag setup section
- Review Recent conversions for test conversions
- Click Diagnose for troubleshooting
Test Conversions
Create test conversions to verify setup:
// Add test parameter
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': 1.0,
'currency': 'USD',
'transaction_id': 'TEST_' + Date.now()
});
Check All conversions column in reports (test conversions appear within minutes).
Common Issues
Conversion not recording:
- Verify conversion tag fires after global tag
- Check conversion ID and label match
- Confirm user clicked Google Ad before converting
- Review attribution window settings
Duplicate conversions:
- Implement transaction_id for deduplication
- Check if tag fires multiple times on page
- Verify GTM triggers aren't overlapping
Value not tracking:
- Ensure value is numeric (not string)
- Check currency code is valid 3-letter ISO code
- Verify value passes before conversion event fires
Best Practices
Implementation
- Use Google Tag (gtag.js) or GTM for all implementations
- Implement global site tag on all pages, conversion events on specific pages
- Use transaction IDs for all purchase conversions to prevent duplicates
- Enable enhanced conversions for improved accuracy
- Test thoroughly in GTM preview mode before publishing
Conversion Strategy
- Create separate conversion actions for different business goals
- Use micro-conversions (add to cart, sign up) for fuller funnel view
- Set appropriate values reflecting true business impact
- Mark primary conversions for automated bidding optimization
- Import GA4 conversions for unified analytics and ads measurement
Attribution
- Use data-driven attribution when eligible for most accurate credit
- Set conversion windows based on sales cycle length
- Enable cross-device conversions for complete user journey tracking
- Review attribution reports regularly to understand customer paths
- Consider position-based attribution for awareness campaigns
Data Quality
- Regular audits of conversion tracking implementation
- Monitor conversion rates for unexpected drops or spikes
- Use enhanced conversions for 20-40% improvement in measurement
- Implement consent mode for privacy-compliant tracking
- Document all conversion actions with business definitions
Privacy & Compliance
- Implement Google consent mode for GDPR/CCPA compliance
- Honor user opt-outs via Google's privacy controls
- Use enhanced conversions instead of third-party cookies
- Hash PII before sending (automatic with enhanced conversions)
- Update privacy policy to disclose Google Ads tracking
Optimization
- Focus on primary conversions for Smart Bidding strategies
- Use conversion value rules for nuanced optimization
- Import offline conversions within 90 days for attribution
- Enable auto-tagging for accurate conversion attribution
- Review search terms for conversions to refine targeting
Reporting
- Segment conversions by device, location, and audience
- Use conversion paths report to understand multi-touch attribution
- Monitor conversion lag to set realistic expectations
- Compare attribution models to understand impact of different approaches
- Create custom columns for conversion rate and ROAS by segment