LinkedIn Ads Event Tracking
Overview
LinkedIn Ads uses the LinkedIn Insight Tag for conversion tracking, website demographics collection, and remarketing audience building. The platform also supports the LinkedIn Conversions API (CAPI) for server-side tracking and enhanced measurement. LinkedIn's B2B focus makes its conversion tracking particularly valuable for lead generation, account-based marketing, and professional service conversions.
Standard Events
LinkedIn provides predefined conversion types for common business goals:
Lead Generation Events
- Lead - Form submission, consultation request
- Download - Whitepaper, ebook, case study download
- Sign Up - Newsletter, webinar, or account registration
- Contact - Contact form, quote request
- Apply - Job application or program application
- Install - Software or app installation
- Book Appointment - Demo or consultation scheduled
Ecommerce Events
- Purchase - Completed transaction
- Add to Cart - Product added to cart
- Start Checkout - Checkout process initiated
Engagement Events
- View - Key page or content view
- Subscribe - Paid subscription or service signup
- Complete Registration - Full account setup
- Key Page View - Specific important page
Video Events
- Video First Quartile - 25% video completion
- Video Midpoint - 50% video completion
- Video Third Quartile - 75% video completion
- Video Complete - 100% video completion
Custom Conversions
- Other - Custom business-specific conversions
Custom Events
Creating Custom Conversions
Define custom conversions with event-specific names:
// Custom conversion event
window.lintrk('track', { conversion_id: CONVERSION_ID });
Event-Specific Conversions
Create multiple conversion actions for different events:
// Lead form submission
window.lintrk('track', { conversion_id: 12345678 });
// Whitepaper download
window.lintrk('track', { conversion_id: 23456789 });
// Demo request
window.lintrk('track', { conversion_id: 34567890 });
Conversion with Revenue
Track conversions with monetary value:
// Purchase with value
window.lintrk('track', {
conversion_id: 12345678,
value: 99.99,
currency: 'USD'
});
Custom Parameters
While LinkedIn doesn't support extensive custom parameters like other platforms, you can track:
// Basic conversion tracking
window.lintrk('track', {
conversion_id: 12345678
});
// With value (for ecommerce)
window.lintrk('track', {
conversion_id: 12345678,
value: 149.99,
currency: 'USD',
orderId: 'ORDER_12345' // For deduplication
});
Ecommerce Events
Purchase Tracking
Track ecommerce conversions with revenue:
<!-- LinkedIn Insight Tag (on all pages) -->
<script type="text/javascript">
_linkedin_partner_id = "YOUR_PARTNER_ID";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
</script>
<script type="text/javascript">
(function(l) {
if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q=[]}
var s = document.getElementsByTagName("script")[0];
var b = document.createElement("script");
b.type = "text/javascript";b.async = true;
b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
s.parentNode.insertBefore(b, s);})(window.lintrk);
</script>
<noscript>
<img height="1" width="1" style="display:none;" alt=""
src="https://px.ads.linkedin.com/collect/?pid=YOUR_PARTNER_ID&fmt=gif" />
</noscript>
<!-- Purchase Conversion (on confirmation page) -->
<script>
window.lintrk('track', {
conversion_id: 12345678,
value: 149.99,
currency: 'USD',
orderId: 'ORDER_12345'
});
</script>
Shopping Cart Events
Track funnel progression:
// Add to Cart
window.lintrk('track', {
conversion_id: 11111111 // Separate conversion for AddToCart
});
// Start Checkout
window.lintrk('track', {
conversion_id: 22222222 // Separate conversion for InitiateCheckout
});
// Purchase
window.lintrk('track', {
conversion_id: 33333333,
value: 99.99,
currency: 'USD',
orderId: 'ORDER_12345'
});
Note: Create separate conversion actions in LinkedIn for each event type.
Conversion Tracking
Implementation Methods
1. LinkedIn Insight Tag (Browser-Side)
Standard JavaScript implementation:
<!-- Global Insight Tag (install on all pages) -->
<script type="text/javascript">
_linkedin_partner_id = "YOUR_PARTNER_ID";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
</script>
<script type="text/javascript">
(function(l) {
if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q=[]}
var s = document.getElementsByTagName("script")[0];
var b = document.createElement("script");
b.type = "text/javascript";b.async = true;
b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
s.parentNode.insertBefore(b, s);})(window.lintrk);
</script>
<noscript>
<img height="1" width="1" style="display:none;" alt=""
src="https://px.ads.linkedin.com/collect/?pid=YOUR_PARTNER_ID&fmt=gif" />
</noscript>
<!-- Event-Specific Conversion (on conversion page) -->
<script>
window.lintrk('track', { conversion_id: YOUR_CONVERSION_ID });
</script>
2. Google Tag Manager
Deploy LinkedIn Insight Tag via GTM:
Base Tag Setup:
// GTM Custom HTML Tag - All Pages
<script type="text/javascript">
_linkedin_partner_id = "{{LinkedIn Partner ID}}";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
</script>
<script type="text/javascript">
(function(l) {
if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q=[]}
var s = document.getElementsByTagName("script")[0];
var b = document.createElement("script");
b.type = "text/javascript";b.async = true;
b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
s.parentNode.insertBefore(b, s);})(window.lintrk);
</script>
Conversion Tracking:
// GTM Custom HTML Tag - Conversion Pages
<script>
window.lintrk('track', {
conversion_id: {{LinkedIn Conversion ID}}
});
</script>
With dataLayer:
// Push to dataLayer
dataLayer.push({
'event': 'linkedin_conversion',
'conversion_id': '12345678',
'conversion_value': 99.99,
'conversion_currency': 'USD'
});
// GTM Tag fires on custom event
window.lintrk('track', {
conversion_id: {{DL - LinkedIn Conversion ID}},
value: {{DL - Conversion Value}},
currency: {{DL - Conversion Currency}}
});
3. LinkedIn Conversions API (CAPI)
Server-side conversion tracking for enhanced accuracy:
// Node.js example
const axios = require('axios');
const conversionData = {
conversion: {
conversionHappenedAt: Date.now(),
conversionId: 'YOUR_CONVERSION_ID',
conversionValue: {
currencyCode: 'USD',
amount: '99.99'
},
user: {
userIds: [
{
idType: 'SHA256_EMAIL',
idValue: hashEmail('user@example.com')
}
],
userInfo: {
ipAddress: '192.168.1.1',
userAgentHeader: 'Mozilla/5.0...'
}
},
eventId: 'ORDER_12345' // For deduplication
}
};
const response = await axios.post(
'https://api.linkedin.com/rest/conversions',
conversionData,
{
headers: {
'Authorization': `Bearer YOUR_ACCESS_TOKEN`,
'Content-Type': 'application/json',
'LinkedIn-Version': '202401'
}
}
);
4. LinkedIn Lead Gen Forms
Native LinkedIn lead forms with automatic conversion tracking:
- No Insight Tag required for lead form fills
- Conversions tracked automatically
- Can sync leads to CRM
- Download leads via Campaign Manager or API
Advantages:
- No website needed
- Lower cost per lead
- Pre-filled form fields from profile
- Mobile-optimized experience
Enhanced Matching
Improve conversion attribution with first-party data:
// Enhanced matching via Insight Tag
window.lintrk('track', {
conversion_id: 12345678
}, {
email: 'user@example.com', // Will be hashed
company: 'Acme Corporation'
});
For CAPI, pass user identifiers:
- Hashed email (SHA256)
- LinkedIn member ID
- Company name
- IP address
- User agent
Offline Conversions
Manual Upload
Upload offline conversions via Campaign Manager:
CSV Requirements:
- Conversion - Conversion action name
- Conversion Date - When conversion occurred
- Email or LinkedIn Member URN
- Value - Conversion value (optional)
- Currency - Currency code (optional)
CSV Format:
Conversion,ConversionDate,Email,Value,Currency
Purchase,2025-01-15,user@example.com,99.99,USD
Lead,2025-01-15,customer@company.com,50.00,USD
Upload Steps:
- Navigate to Account Assets > Matched Audiences
- Create new Matched Audience
- Upload CSV with conversion data
- Map columns to required fields
- Process and match conversions
Conversions API
Automate offline conversion uploads via API:
import requests
import hashlib
import time
def hash_email(email):
return hashlib.sha256(email.lower().encode()).hexdigest()
# Conversion data
conversion_payload = {
"conversion": {
"conversionHappenedAt": int(time.time() * 1000),
"conversionId": "urn:lla:llaPartnerConversion:12345678",
"conversionValue": {
"currencyCode": "USD",
"amount": "99.99"
},
"user": {
"userIds": [
{
"idType": "SHA256_EMAIL",
"idValue": hash_email("user@example.com")
}
]
},
"eventId": "ORDER_12345"
}
}
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json",
"LinkedIn-Version": "202401"
}
response = requests.post(
"https://api.linkedin.com/rest/conversions",
json=conversion_payload,
headers=headers
)
CRM Integration
Connect CRM for automated offline conversions:
Supported Methods:
- Native integrations - Salesforce, HubSpot, Marketo
- LinkedIn Matched Audiences - Upload contact lists with conversion flags
- API integration - Custom CRM sync via Conversions API
Best Practices:
- Capture LinkedIn ad click ID (li_fat_id cookie)
- Include conversion timestamps within 90 days
- Hash email addresses before upload
- Use event IDs to prevent duplicates
Attribution
Attribution Windows
LinkedIn uses fixed attribution windows:
Default Settings:
- Click-through: 30 days
- View-through: 24 hours
Note: Attribution windows are not customizable per conversion like other platforms.
Attribution Reporting
View attribution data in LinkedIn Campaign Manager:
Available Reports:
- Campaign Performance - Conversions by campaign
- Conversion Tracking - All conversion actions
- Demographics - Conversions by audience attributes
- Company - Account-based conversion insights
Unique B2B Metrics:
- Conversions by company size
- Conversions by industry
- Conversions by job title/function
- Conversions by seniority level
Multi-Touch Attribution
LinkedIn provides limited multi-touch attribution:
- Last click attribution is standard
- View assisted conversions in reports
- Cross-campaign conversion paths available
Assisted Conversions: View campaigns that contributed to conversions without getting last-click credit in Campaign Manager > Conversions > Assisted Conversions
Account-Based Attribution
For B2B marketing, track conversions at account level:
- Create Matched Audiences with target accounts
- Tag campaigns with account segments
- View conversions aggregated by company
- Measure account engagement and pipeline impact
Debugging & Validation
LinkedIn Insight Tag Checker
Browser extension for validating implementation:
- Install LinkedIn Insight Tag Checker Chrome extension
- Visit page with Insight Tag
- Review tag status:
- Partner ID detected
- Tag firing correctly
- Conversion events tracked
- Warnings or errors
Tag Status in Campaign Manager
Verify Insight Tag installation:
Navigate to Account Assets > Insight Tag
Check Tag Status:
- Active - Tag installed and firing
- Inactive - Tag not detected
- Unverified - Recently installed, pending verification
View Partner ID and installation date
Conversion Tracking Validation
Test conversions are recording:
- Navigate to Account Assets > Conversions
- Review conversion list
- Check Status column:
- Active - Conversions tracking
- No recent conversions - Set up but no data
- View conversion count in last 30 days
Website Demographics
Verify Insight Tag data collection:
Navigate to Account Assets > Website Demographics to see:
- Company information of visitors
- Job titles and functions
- Seniority levels
- Industries
- Geographic data
Note: Requires minimum traffic threshold for privacy.
Browser Console Testing
Test conversion firing in browser console:
// Check if lintrk is defined
if (typeof window.lintrk !== 'undefined') {
console.log('LinkedIn Insight Tag loaded');
} else {
console.error('LinkedIn Insight Tag not found');
}
// Check lintrk queue
console.log(window.lintrk.q);
// Fire test conversion
window.lintrk('track', { conversion_id: 12345678 });
Common Issues
Tag not detected:
- Verify Partner ID is correct
- Check script placement in <head> or before </body>
- Ensure no JavaScript errors blocking execution
- Clear cache and test in incognito mode
Conversions not tracking:
- Confirm Insight Tag is installed on conversion page
- Verify conversion ID matches Campaign Manager
- Check conversion fires after page load
- Wait 24-48 hours for initial data to appear
Website Demographics not showing:
- Requires minimum traffic volume
- Allow 24-48 hours after tag installation
- Check tag is on all pages, not just conversion pages
Best Practices
Implementation
- Install Insight Tag on all pages for complete user journey and remarketing
- Use Google Tag Manager for easier tag management
- Implement both browser and server tracking (Insight Tag + CAPI)
- Create separate conversions for each business goal
- Use descriptive conversion names for easy reporting
Conversion Strategy
- Track micro-conversions (content downloads, video views) for nurture campaigns
- Set appropriate conversion values based on average customer value
- Create conversion-specific audiences for remarketing
- Use LinkedIn Lead Gen Forms for mobile-optimized lead capture
- Track account-level conversions for ABM campaigns
Data Quality
- Use event IDs to prevent duplicate conversions
- Pass revenue values for ecommerce and value-based bidding
- Implement enhanced matching with email hashes
- Upload offline conversions within 90 days
- Regular audit of Insight Tag status
B2B-Specific Tracking
- Use Website Demographics to understand audience composition
- Create account-based audiences for target account engagement
- Track pipeline events (MQL, SQL, Opportunity) as separate conversions
- Measure by company attributes (size, industry) in reports
- Sync CRM data for closed-loop attribution
Privacy & Compliance
- Implement consent management for GDPR compliance
- Hash PII before sending via CAPI
- Update privacy policy to disclose LinkedIn tracking
- Respect opt-outs via LinkedIn privacy controls
- Use LinkedIn's DPA for data processing agreements
Optimization
- Use conversion-based bidding (Maximum Delivery or Target Cost)
- Optimize to valuable conversions (not just volume)
- Exclude converted leads from awareness campaigns
- Create lookalike audiences from converters
- A/B test LinkedIn Lead Gen Forms vs. landing pages
Lead Generation
- Use LinkedIn Lead Gen Forms for higher conversion rates
- Pre-fill forms from LinkedIn profile data
- Sync leads to CRM automatically
- Track form submissions as conversions
- Set up lead notifications for sales team
Reporting
- Segment conversions by demographics (job title, seniority, company size)
- Track conversion rate by audience segment
- Monitor cost per conversion by campaign objective
- Use conversion export for external analysis
- Create custom conversion reports with demographic breakdowns
Account-Based Marketing
- Upload target account lists as Matched Audiences
- Track engagement at company level
- Measure account penetration via website demographics
- Create ABM-specific conversions (demo requests from target accounts)
- Report on pipeline by account tier or segment