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