DV360 Event Tracking
Overview
DV360 (Display & Video 360) uses Google's Floodlight tracking system to measure conversions and user interactions. Floodlight tags are implemented via Campaign Manager 360 (CM360) and shared across Google Marketing Platform properties. This enterprise-grade tracking solution provides robust attribution, cross-device measurement, and advanced audience targeting capabilities.
Standard Events
Floodlight supports two primary activity types:
Counter Activities
Track single-instance conversions where only one conversion per user session is counted.
- Page View - Website page visits
- Lead Submission - Form completions
- Download - File or app downloads
- Sign Up - Account registrations
- Video View - Video completion events
- Click-Through - Specific button or link clicks
Sales Activities
Track revenue-generating events with transaction values and quantities.
- Purchase - Ecommerce transactions
- Order - Order confirmations
- Revenue - Revenue events with dynamic values
- Subscription - Recurring subscription conversions
Each activity requires:
- Activity Group - Organizational container
- Activity Tag String - Unique identifier (cat parameter)
- Expected URL - Landing page URL for verification
Custom Events
Creating Custom Floodlight Activities
- Navigate to Floodlight Configuration in CM360
- Click New Activity
- Select activity type (Counter or Sales)
- Configure parameters:
- Activity name
- Tag string (unique identifier)
- Counting method (Standard, Unique, Per Session)
- Attribution window (click and impression)
- Dynamic tags (optional custom parameters)
Custom Variables
Floodlight supports up to 100 custom Floodlight variables (u1-u100):
<script>
gtag('event', 'conversion', {
'allow_custom_scripts': true,
'u1': 'product_category',
'u2': 'user_segment',
'u3': 'campaign_id',
'send_to': 'DC-XXXXXXX/activ0/tagst0+standard'
});
</script>
Custom variable uses:
- Product categories
- User segments
- Custom attribution data
- Campaign tracking parameters
- A/B test variants
Ecommerce Events
Sales Activity Implementation
For revenue tracking, implement Sales activities with dynamic parameters:
<!-- Global Site Tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=DC-XXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'DC-XXXXXXX');
</script>
<!-- Event Snippet for Purchase -->
<script>
gtag('event', 'conversion', {
'allow_custom_scripts': true,
'send_to': 'DC-XXXXXXX/sales/purchase+transactions',
'value': 99.99,
'transaction_id': 'ORDER_12345',
'u1': '[Product_Category]',
'u2': '[Product_SKU]',
'u3': '[Quantity]',
'u4': '[Coupon_Code]',
'u5': '[Customer_Type]'
});
</script>
Required Ecommerce Parameters
- value - Transaction revenue (required for Sales activities)
- transaction_id - Unique order ID for deduplication
- quantity - Number of items (optional, via custom variable)
- currency - Set at Floodlight configuration level
Cart Events
Create separate Counter activities for:
- Add to Cart - Track cart additions
- Begin Checkout - Checkout initiation
- Add Payment Info - Payment method selection
Conversion Tracking
Implementation Methods
1. Global Site Tag (gtag.js)
Recommended for modern implementations:
<!-- Global Site Tag -->
<script async src="https://www.googletagmanager.com/gtag/js?id=DC-XXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'DC-XXXXXXX');
</script>
<!-- Conversion Event -->
<script>
gtag('event', 'conversion', {
'allow_custom_scripts': true,
'send_to': 'DC-XXXXXXX/group/activity+counter'
});
</script>
2. Google Tag Manager
Implement via GTM for centralized tag management:
- Create CM360 Floodlight Counter or Sales tag
- Configure Activity Tag String and Group Tag String
- Set up triggers based on events
- Add custom Floodlight variables as needed
3. Image Pixel (Legacy)
Fallback method for environments without JavaScript:
<img src="https://ad.doubleclick.net/ddm/activity/src=XXXXXXX;type=group;cat=activity;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;ord=1?" width="1" height="1" alt=""/>
Enhanced Conversions
Enable enhanced conversions for improved attribution by passing hashed user data:
gtag('event', 'conversion', {
'allow_custom_scripts': true,
'send_to': 'DC-XXXXXXX/group/activity+counter',
'enhanced_conversion_data': {
'email': 'user@example.com',
'phone_number': '+15551234567',
'first_name': 'John',
'last_name': 'Doe',
'home_address': {
'street': '123 Main St',
'city': 'New York',
'region': 'NY',
'postal_code': '10001',
'country': 'US'
}
}
});
Offline Conversions
Conversion Upload Methods
1. Campaign Manager 360 UI Upload
- Navigate to Advertiser > Conversions > Offline Conversions
- Upload CSV file with required fields:
- Floodlight Configuration ID
- Activity ID
- Conversion timestamp
- Quantity (for Sales activities)
- Value (for Sales activities)
- User identifiers (GCLID, DCLID, or match ID)
2. Campaign Manager 360 API
Automate offline conversion imports via API:
# Example using CM360 API
from googleapiclient.discovery import build
service = build('dfareporting', 'v4', credentials=credentials)
conversion = {
'floodlightConfigurationId': 'XXXXXXX',
'floodlightActivityId': 'XXXXXXX',
'ordinal': '1',
'timestampMicros': '1640000000000000',
'value': 99.99,
'quantity': 1,
'gclid': 'click_id_here'
}
request = service.conversions().batchinsert(
profileId='XXXXXXX',
body={'conversions': [conversion]}
)
response = request.execute()
3. Server-Side Floodlight
Implement server-to-server tracking for backend conversions:
https://ad.doubleclick.net/ddm/activity/src=XXXXXXX;type=group;cat=activity;qty=1;cost=99.99;ord=[OrderID];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;gdpr=${GDPR};gdpr_consent=${GDPR_CONSENT_755};
Match ID Implementation
For CRM integration, implement match IDs to connect offline conversions:
gtag('set', {'dc_match_id': 'USER_CRM_ID_12345'});
Upload conversions with matching CRM IDs via CM360.
Attribution
Attribution Models
DV360 Floodlight supports multiple attribution models:
Path-Based Attribution
- Last Interaction - 100% credit to last click/impression
- First Interaction - 100% credit to first click/impression
- Linear - Equal credit across all touchpoints
- Time Decay - More credit to recent interactions
- Position Based - 40% first, 40% last, 20% middle
- Data-Driven - Algorithmic attribution based on conversion data
Configure in DV360 > Resources > Floodlight > Attribution Settings
Attribution Windows
Set custom lookback windows:
- Click window - 1-90 days (default: 30 days)
- Impression window - 1-90 days (default: 1 day)
- Engaged view window - Active View impressions (default: 1 day)
Cross-Environment Attribution
Floodlight provides:
- Cross-device attribution - Unified user measurement across devices
- Cross-browser tracking - Via Google signals
- App and web attribution - Combined mobile app and web conversions
Debugging & Validation
Floodlight Debugger Chrome Extension
Install the Campaign Manager 360 Floodlight Debugger extension:
- Visit page with Floodlight tags
- Open extension to view:
- Floodlight requests fired
- Activity and group tag strings
- Custom variables (u1-u100)
- Revenue and quantity values
- Error messages
Tag Assistant
Use Google Tag Assistant to validate:
- Global Site Tag implementation
- gtag.js configuration
- Event firing on correct triggers
- Parameter passing accuracy
CM360 Reporting
Verify conversions in Campaign Manager 360:
- Floodlight > Floodlight Reports
- Create report with dimensions:
- Activity
- Activity ID
- Date
- Add metrics:
- Click-through Conversions
- View-through Conversions
- Total Conversions
- Revenue
Real-Time Validation
Check recent conversions in CM360:
- Navigate to Advertiser > Conversions > Recent Conversions
- View conversions from last 24 hours
- Verify custom variable values
- Confirm revenue amounts
Common Issues
Tag not firing:
- Verify DC-XXXXXXX ID matches Floodlight Configuration
- Check browser console for JavaScript errors
- Confirm tag placement in <head> or before </body>
Conversions not reporting:
- Check attribution windows
- Verify user clicked or viewed DV360 ad
- Confirm Floodlight activity is active in CM360
Revenue not tracking:
- Ensure Sales activity type is used
- Verify 'value' parameter is numeric
- Check decimal formatting (use period, not comma)
Best Practices
Implementation
- Use Global Site Tag (gtag.js) for all new implementations
- Implement via Google Tag Manager for easier management
- Set unique transaction IDs to prevent duplicate conversions
- Use Counter activities for non-revenue events
- Use Sales activities for revenue events only
Data Quality
- Implement enhanced conversions for improved match rates
- Pass custom variables for granular reporting (u1-u100)
- Use consistent naming conventions for activities
- Set appropriate attribution windows based on business model
- Regular audit of active Floodlight tags
Organization
- Create logical activity groups by funnel stage or product line
- Document tag strings and custom variable mapping
- Use descriptive activity names for easy identification
- Maintain centralized tag documentation for team reference
Privacy & Compliance
- Implement consent mode for GDPR compliance
- Respect user opt-outs via Global Privacy Control
- Hash PII before passing in enhanced conversions
- Set tag_for_child_directed_treatment for COPPA compliance
- Configure NPA flag for users who opt out of personalization
Performance
- Load gtag.js asynchronously to avoid blocking page render
- Minimize custom variables to essential data only
- Use server-side tracking for backend conversions
- Implement tag timeout in GTM (2-4 seconds)
Testing
- Test in staging environment before production deployment
- Use Floodlight Debugger to verify all parameters
- Create test conversion to confirm reporting
- Monitor Recent Conversions for 24-48 hours post-launch
- Set up automated alerts for conversion volume drops