Conversion Tracking
How to implement accurate conversion tracking across platforms.
Conversion Framework
What to Track
Identify conversions based on business value:
| Conversion Type | Examples | Typical Platforms | |-----------------|----------|-------------------| | Macro (Primary) | Purchase, Sign up, Lead submit | All | | Micro (Supporting) | Add to cart, View pricing, Download | Analytics, Select ads |
Conversion Funnel
Track the complete user journey:
Awareness → Interest → Consideration → Intent → Conversion
↓ ↓ ↓ ↓ ↓
Page View Product View Add to Cart Checkout Purchase
GA4 Conversion Implementation
Step 1: Define Events
Create a conversion tracking spec:
// Purchase conversion
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'T12345',
value: 99.99,
currency: 'USD',
tax: 8.00,
shipping: 5.99,
items: [{
item_id: 'SKU_001',
item_name: 'Product Name',
price: 85.00,
quantity: 1
}]
}
});
Step 2: Configure in GTM
- Create GA4 Event tag
- Set event name to match your data layer event
- Map e-commerce parameters
- Set trigger to custom event
Step 3: Mark as Conversion in GA4
- Navigate to Admin > Events
- Find your event in the list
- Toggle Mark as conversion
Platform-Specific Implementation
Google Ads
// Google Ads conversion tracking
dataLayer.push({
event: 'google_ads_conversion',
conversion_id: 'AW-XXXXXXXXX',
conversion_label: 'XXXXXXXX',
value: 99.99,
currency: 'USD',
transaction_id: 'T12345'
});
GTM Setup:
- Tag type: Google Ads Conversion Tracking
- Use variables for dynamic values
- Enable conversion linker tag
Meta (Facebook) Pixel
// Meta purchase event
dataLayer.push({
event: 'meta_purchase',
value: 99.99,
currency: 'USD',
content_ids: ['SKU_001'],
content_type: 'product',
num_items: 1
});
GTM Setup:
- Tag type: Custom HTML or Meta Pixel template
- Map to Meta standard events
- Include user data for Advanced Matching (with consent)
LinkedIn Insight Tag
// LinkedIn conversion
dataLayer.push({
event: 'linkedin_conversion',
conversion_id: 12345678
});
Cross-Domain Tracking
When Needed
- Checkout on different domain
- Payment processor redirects
- Multi-brand scenarios
GA4 Implementation
- In GA4 Admin: Data Streams > Configure Tag Settings > Configure Your Domains
- List all domains that should share sessions
- In GTM: Ensure Google Tag is configured correctly
Testing
Verify cross-domain tracking:
- Start session on domain A
- Navigate to domain B
- Check that client_id remains consistent
- Verify no new sessions created
Attribution Considerations
GA4 Attribution Models
| Model | Best For | |-------|----------| | Data-driven | Sufficient conversion volume | | Last click | Direct response campaigns | | First click | Brand awareness analysis |
Conversion Windows
Configure based on your sales cycle:
| Business Type | Suggested Window | |---------------|------------------| | E-commerce | 30 days | | B2B SaaS | 90 days | | Lead gen | 30-60 days |
Enhanced Conversions
What It Is
First-party customer data (hashed) sent with conversions for better attribution.
Implementation
// Enhanced conversion data
dataLayer.push({
event: 'purchase',
enhanced_conversion_data: {
email: 'SHA256_HASHED_EMAIL'
},
// ... other purchase data
});
Privacy Considerations
- Requires user consent for data collection
- Hash sensitive data before sending
- Document in privacy policy
Debugging Conversions
Common Issues
| Issue | Cause | Solution | |-------|-------|----------| | Missing conversions | Trigger not firing | Check GTM preview mode | | Duplicate conversions | Multiple tags | Add transaction_id deduplication | | Wrong values | Variable misconfiguration | Verify data layer values | | Attribution mismatch | Cross-domain issues | Check linker configuration |
Validation Checklist
- [ ] Events appear in GA4 DebugView
- [ ] Conversion values are accurate
- [ ] Transaction IDs are unique
- [ ] Cross-domain tracking works
- [ ] Enhanced conversions sending correctly
- [ ] All platforms receiving data
Previous: GTM Best Practices Next: Data Layer Design