Install LinkedIn Ads Tracking Tag (Guide) | OpsBlu Docs

Install LinkedIn Ads Tracking Tag (Guide)

Install the LinkedIn Insight Tag via direct code, GTM, or tag manager for conversion tracking, demographics, and retargeting.

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

  1. Log in to LinkedIn Campaign Manager
  2. Navigate to Account Assets
  3. Select Insight Tag
  4. Copy the tag code snippet
  5. 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:

  1. Copy the complete Insight Tag code
  2. Paste into the <head> section of every page
  3. Place as high as possible in the <head>
  4. 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

  1. Log in to Google Tag Manager
  2. Click Tags > New
  3. Name tag: "LinkedIn Insight Tag"
  4. Click tag configuration

Step 2: Configure Tag

  1. Choose tag type: Custom HTML
  2. 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>
  1. Check Support document.write

Step 3: Set Trigger

  1. Click Triggering
  2. Select All Pages (or create custom trigger)
  3. Save trigger

Step 4: Test and Publish

  1. Click Preview in GTM
  2. Visit your website
  3. Verify tag fires in debug panel
  4. Check browser console for errors
  5. Submit and Publish container

Advanced GTM Configuration

Using GTM Variables for Partner ID:

  1. Create Constant variable: LinkedIn Partner ID
  2. Value: Your Partner ID
  3. 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:

  1. Navigate to Tags > Add Tag
  2. Search for "LinkedIn Insight Tag" template
  3. Enter Partner ID
  4. Configure load rules (all pages)
  5. Save and publish

Custom Implementation: If template unavailable, use Generic Tag with Insight Tag code.

Adobe Launch

  1. Create new rule
  2. Add action: Custom Code
  3. Paste Insight Tag
  4. Set rule to fire on Page Load
  5. Build and publish library

Segment

Destination Setup:

  1. Navigate to Destinations catalog
  2. Search for LinkedIn Insight Tag
  3. Click Configure
  4. Enter Partner ID
  5. Enable destination
  6. Map page calls to track events

Method 4: CMS-Specific Implementation

WordPress

Option A: Header/Footer Plugin

  1. Install "Insert Headers and Footers" plugin
  2. Navigate to Settings > Insert Headers and Footers
  3. Paste Insight Tag in Header section
  4. 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

  1. Admin > Online Store > Themes
  2. Click Actions > Edit code
  3. Open theme.liquid
  4. Paste Insight Tag before </head>
  5. Save

Squarespace

  1. Home > Settings > Advanced > Code Injection
  2. Paste Insight Tag in Header section
  3. Save

Wix

  1. Dashboard > Settings > Tracking & Analytics
  2. Click + New Tool > Custom
  3. Paste Insight Tag
  4. Set to load on all pages
  5. 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>

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);
  }
}

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:

  1. Open DevTools (F12)
  2. Go to Network tab
  3. Filter for "linkedin" or "snap.licdn.com"
  4. Reload page
  5. Look for request to insight.min.js
  6. Verify 200 status code

LinkedIn Campaign Manager

Tag Health Check:

  1. Campaign Manager > Account Assets > Insight Tag
  2. Check "Recently Active" indicator (green = working)
  3. View detected domains
  4. 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:

  1. Enable Preview mode
  2. Visit your website
  3. Check Tags Fired section
  4. Verify LinkedIn Insight Tag appears
  5. 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.com to 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:


Best Practices

Implementation

  1. Single Installation Method - Choose one approach (GTM recommended)
  2. Site-Wide Deployment - Install on all pages
  3. High in Head - Place early for reliable loading
  4. Test Before Production - Verify on staging first
  5. Document Configuration - Record Partner ID and implementation details

Performance

  1. Async Loading - Tag loads asynchronously by default
  2. Minimal Impact - Lightweight script, minimal page impact
  3. CDN Delivery - LinkedIn serves from fast CDN
  4. Cache Friendly - Browser caches script

Maintenance

  1. Regular Audits - Quarterly verification tag still active
  2. Monitor Tag Health - Check Campaign Manager dashboard
  3. Update After Site Changes - Verify tag after redesigns
  4. Version Control - Track changes in GTM or code repository

Security

  1. HTTPS Only - LinkedIn tag uses HTTPS
  2. No Sensitive Data - Don't pass PII in custom parameters
  3. CSP Compatible - Works with Content Security Policy
  4. 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:

  1. Verify tag activity in Campaign Manager (24-48 hours)
  2. Set up conversion tracking - Event Tracking Guide
  3. Create retargeting audiences - Build from website visitors
  4. Monitor tag health - Regular checks in Campaign Manager
  5. Implement consent management - Ensure privacy compliance

Additional Resources