Overview
The LinkedIn Insight Tag is a lightweight JavaScript snippet that enables conversion tracking, website demographics, and retargeting audiences. Proper installation is critical for LinkedIn Ads measurement and optimization.
Getting Your Insight Tag
Locating Your Tag Code
- Log in to LinkedIn Campaign Manager
- Navigate to Account Assets
- Select Insight Tag
- Copy the tag code snippet
- Note your Partner ID for reference
Your Partner ID is the numeric value in this line:
_linkedin_partner_id = "1234567";
Installation Methods
Method 1: Direct JavaScript Installation
Best for: Sites where you have direct access to HTML code
Installation:
- Copy the complete Insight Tag code
- Paste into the
<head>section of every page - Place as high as possible in the
<head> - Ensure it loads on all pages site-wide
Complete Tag Code:
<!DOCTYPE html>
<html>
<head>
<title>Your Page Title</title>
<!-- LinkedIn Insight Tag -->
<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>
<!-- End LinkedIn Insight Tag -->
</head>
<body>
<!-- Your page content -->
</body>
</html>
Important: Replace YOUR_PARTNER_ID with your actual Partner ID from Campaign Manager.
Method 2: Google Tag Manager (GTM)
Best for: Sites using GTM for tag management (recommended approach)
Advantages of GTM Implementation
- Centralized tag management
- No code deployment required
- Easy to update and modify
- Version control
- Built-in debugging tools
- Conditional firing rules
GTM Setup Steps
Step 1: Create New Tag
- Log in to Google Tag Manager
- Click Tags > New
- Name tag: "LinkedIn Insight Tag"
- Click tag configuration
Step 2: Configure Tag
- Choose tag type: Custom HTML
- Paste Insight Tag code:
<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>
- Check Support document.write
Step 3: Set Trigger
- Click Triggering
- Select All Pages (or create custom trigger)
- Save trigger
Step 4: Test and Publish
- Click Preview in GTM
- Visit your website
- Verify tag fires in debug panel
- Check browser console for errors
- Submit and Publish container
Advanced GTM Configuration
Using GTM Variables for Partner ID:
- Create Constant variable:
LinkedIn Partner ID - Value: Your Partner ID
- Update tag code:
<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>
This enables easy Partner ID updates across multiple tags.
Method 3: Tag Management Systems
Tealium
iQ Tag Management:
- Navigate to Tags > Add Tag
- Search for "LinkedIn Insight Tag" template
- Enter Partner ID
- Configure load rules (all pages)
- Save and publish
Custom Implementation: If template unavailable, use Generic Tag with Insight Tag code.
Adobe Launch
- Create new rule
- Add action: Custom Code
- Paste Insight Tag
- Set rule to fire on Page Load
- Build and publish library
Segment
Destination Setup:
- Navigate to Destinations catalog
- Search for LinkedIn Insight Tag
- Click Configure
- Enter Partner ID
- Enable destination
- Map page calls to track events
Method 4: CMS-Specific Implementation
WordPress
Option A: Header/Footer Plugin
- Install "Insert Headers and Footers" plugin
- Navigate to Settings > Insert Headers and Footers
- Paste Insight Tag in Header section
- Save changes
Option B: Theme Functions
Add to functions.php:
function add_linkedin_insight_tag() {
?>
<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>
<?php
}
add_action('wp_head', 'add_linkedin_insight_tag');
Shopify
- Admin > Online Store > Themes
- Click Actions > Edit code
- Open
theme.liquid - Paste Insight Tag before
</head> - Save
Squarespace
- Home > Settings > Advanced > Code Injection
- Paste Insight Tag in Header section
- Save
Wix
- Dashboard > Settings > Tracking & Analytics
- Click + New Tool > Custom
- Paste Insight Tag
- Set to load on all pages
- Apply
Single Page Applications (SPAs)
React Implementation
Option 1: Add to public/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<!-- LinkedIn Insight Tag -->
<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>
</head>
<body>
<div id="root"></div>
</body>
</html>
Option 2: React Helmet
import { Helmet } from 'react-helmet';
function App() {
return (
<>
<Helmet>
<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" src="https://snap.licdn.com/li.lms-analytics/insight.min.js" async></script>
</Helmet>
{/* Your app content */}
</>
);
}
Option 3: useEffect Hook
import { useEffect } from 'react';
function useLinkedInInsightTag(partnerId) {
useEffect(() => {
window._linkedin_partner_id = partnerId;
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(window._linkedin_partner_id);
const script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = 'https://snap.licdn.com/li.lms-analytics/insight.min.js';
const firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script, firstScript);
window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q = [];
}, [partnerId]);
}
// Usage in component
function App() {
useLinkedInInsightTag("YOUR_PARTNER_ID");
return <div>Your App</div>;
}
Vue.js Implementation
In main.js or App.vue:
// In created() lifecycle hook
created() {
window._linkedin_partner_id = "YOUR_PARTNER_ID";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(window._linkedin_partner_id);
const script = document.createElement('script');
script.async = true;
script.src = 'https://snap.licdn.com/li.lms-analytics/insight.min.js';
document.head.appendChild(script);
window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q = [];
}
Angular Implementation
In index.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Your App</title>
<!-- LinkedIn Insight Tag -->
<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>
</head>
<body>
<app-root></app-root>
</body>
</html>
Privacy and Consent Management
GDPR Compliance
Conditional Loading Based on Consent:
// Check consent before loading tag
function loadLinkedInInsightTag() {
if (userHasGivenConsent()) {
_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);
(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);
}
}
Consent Management Platforms
OneTrust Integration
// Wait for OneTrust consent
OptanonWrapper = function() {
if (OnetrustActiveGroups.includes("C0004")) { // Performance cookies
loadLinkedInInsightTag();
}
}
CookieBot Integration
window.addEventListener('CookiebotOnAccept', function() {
if (Cookiebot.consent.marketing) {
loadLinkedInInsightTag();
}
});
Verification and Testing
Browser Developer Tools
Console Verification:
// Check if tag loaded
if (typeof window.lintrk === 'function') {
console.log('✓ LinkedIn Insight Tag loaded');
console.log('Partner IDs:', window._linkedin_data_partner_ids);
} else {
console.error('✗ LinkedIn Insight Tag not found');
}
Network Tab:
- Open DevTools (F12)
- Go to Network tab
- Filter for "linkedin" or "snap.licdn.com"
- Reload page
- Look for request to
insight.min.js - Verify 200 status code
LinkedIn Campaign Manager
Tag Health Check:
- Campaign Manager > Account Assets > Insight Tag
- Check "Recently Active" indicator (green = working)
- View detected domains
- Review last activity timestamp
Expected Timeline:
- Initial installation: 24-48 hours for first detection
- Subsequent updates: Real-time to few hours
GTM Preview Mode
When using GTM:
- Enable Preview mode
- Visit your website
- Check Tags Fired section
- Verify LinkedIn Insight Tag appears
- Check for any errors
Troubleshooting Installation
Tag Not Loading
Check 1: Code Placement
- Ensure tag in
<head>section - Must be on every page
- No conditional logic preventing load
Check 2: JavaScript Errors
- Open browser console
- Look for error messages
- Fix blocking errors
Check 3: Content Security Policy
- CSP may block external scripts
- Add
snap.licdn.comto allowed sources - Update CSP header or meta tag
Check 4: Ad Blockers
- Browser extensions may block
- Test in incognito mode
- Educate about impact on real users
Tag Fires Multiple Times
Symptoms:
- Duplicate tracking
- Inflated metrics
- Multiple requests in Network tab
Common Causes:
- Tag installed in multiple places (direct + GTM)
- Multiple GTM containers
- Theme and plugin both adding tag
Solution:
- Audit all tag installations
- Remove duplicates
- Use single implementation method
GTM-Specific Issues
Tag Not Firing:
- Check trigger configuration
- Verify container published
- Confirm GTM container code on site
- Use Preview mode to debug
Delayed Firing:
- Adjust tag firing priority
- Move to Page View trigger
- Check tag sequencing
Best Practices
Implementation
- Single Installation Method - Choose one approach (GTM recommended)
- Site-Wide Deployment - Install on all pages
- High in Head - Place early for reliable loading
- Test Before Production - Verify on staging first
- Document Configuration - Record Partner ID and implementation details
Performance
- Async Loading - Tag loads asynchronously by default
- Minimal Impact - Lightweight script, minimal page impact
- CDN Delivery - LinkedIn serves from fast CDN
- Cache Friendly - Browser caches script
Maintenance
- Regular Audits - Quarterly verification tag still active
- Monitor Tag Health - Check Campaign Manager dashboard
- Update After Site Changes - Verify tag after redesigns
- Version Control - Track changes in GTM or code repository
Security
- HTTPS Only - LinkedIn tag uses HTTPS
- No Sensitive Data - Don't pass PII in custom parameters
- CSP Compatible - Works with Content Security Policy
- Regular Updates - LinkedIn manages script updates automatically
Advanced Configurations
Multiple Partner IDs
For tracking multiple accounts:
_linkedin_partner_id = "1234567";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
// Add additional partner ID
window._linkedin_data_partner_ids.push("7654321");
Conditional Loading by Page Type
// Only load on specific pages
if (window.location.pathname.includes('/products/')) {
// Load Insight Tag
}
Dynamic Partner ID
// Get Partner ID from config
const partnerId = siteConfig.linkedInPartnerId;
_linkedin_partner_id = partnerId;
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(partnerId);
Next Steps
After successful installation:
- Verify tag activity in Campaign Manager (24-48 hours)
- Set up conversion tracking - Event Tracking Guide
- Create retargeting audiences - Build from website visitors
- Monitor tag health - Regular checks in Campaign Manager
- Implement consent management - Ensure privacy compliance