LinkedIn Ads

LinkedIn server-side tracking via the Conversions API

Deliver conversion events to LinkedIn’s Conversions API server-to-server. Automatic li_fat_id capture, SHA-256 hashed email and phone matching, and ad-blocker-proof delivery. Zero LinkedIn JavaScript on your site.

0 KB

LinkedIn Insight Tag

No client-side LinkedIn JavaScript required

400 days

Click attribution

li_fat_id persisted in server-set first-party cookies

20-40%

More conversions

Recovered from ad blocker signal loss

<50ms

Delivery latency

Conversions reach LinkedIn in real time

Why B2B conversion tracking is harder

B2B buying cycles are long. Multiple stakeholders research across weeks or months. LinkedIn ad clicks happen early in the funnel — the conversion happens much later. Client-side tracking loses the connection between the two.

Long sales cycles break attribution

B2B deals take weeks to months. Safari's 7-day cookie limit means the LinkedIn click ID (li_fat_id) is gone long before the prospect fills in a demo request form. The ad that started the conversation gets no credit.

Decision makers block tracking

Senior professionals — your target audience on LinkedIn — are more likely to use ad blockers and privacy tools. The LinkedIn Insight Tag is blocked at a higher rate than consumer-facing trackers. Your most valuable prospects are invisible.

Insight Tag impacts page speed

The LinkedIn Insight Tag adds JavaScript that competes with your page content for bandwidth. On B2B sites where first impressions matter, every millisecond of load time affects bounce rates and form completion.

The fix is structural, not another workaround. Signal’s first-party collector captures the event once on your own subdomain, the server-side identity graph holds the LinkedIn click identifier for the full buying cycle, and delivery happens server-to-server — the same pattern whether you are migrating from a tag manager or running the Insight Tag through a GTM server-side container today.

Which identifiers Signal sends to LinkedIn

The LinkedIn blueprint matches conversions using a deterministic waterfall — no fingerprinting, no probabilistic guessing. Each identifier is only used where consent permits.

1. li_fat_id click identifier

LinkedIn appends li_fat_id to landing URLs on ad clicks. Datafly.js captures it on landing and Signal persists it in a server-set first-party cookie for 400 days, so a conversion months later still matches the original click deterministically.

2. Hashed email and phone

When a prospect identifies themselves — a demo form, a sign-up, a logged-in session — Signal normalises the email and phone (trim, lowercase) and SHA-256 hashes them before delivery. LinkedIn’s Conversions API prefers hashed PII for matching, and no raw PII ever leaves your deployment.

3. Fallback match keys

IP address and user agent are included as additional match keys where consent permits, and Signal can sync LinkedIn’s own first-party browser cookie for events where no click ID or hashed identifier is available.

Set up LinkedIn server-side tracking in three steps

1. Create a pipeline

Deploy the single first-party collector on your own subdomain. It captures page views, form submissions, and li_fat_id click identifiers automatically — no LinkedIn JavaScript required.

2. Add the LinkedIn integration

Enter three values from LinkedIn Campaign Manager: your account ID, the conversion rule ID, and an OAuth2 access token with the r_ads and rw_conversions scopes. Signal builds the conversion URN and versioned API headers for you.

3. Map events and go live

Map your conversion events to LinkedIn event types, confirm the consent purposes the integration requires, and conversions flow server-to-server — with hashing, deduplication, and retry handled by the platform.

Pipeline configuration

Map your conversion events to LinkedIn's Conversions API format. Email and phone identifiers are normalised and SHA-256 hashed automatically. Click identifiers are injected from the server-side cookie store.

linkedin-conversions-api.yamlYAML
# linkedin-conversions-api.yaml
name: linkedin_purchase
integration: linkedin-capi
trigger:
  event: purchase

parameters:
  ad_account_id: "512345678"
  conversion_rule_id: "12345678"

global:
  user:
    userIds:
      # Normalised (trim + lowercase) then SHA-256 hashed before delivery
      - idType: SHA256_EMAIL
        idValue:
          source: context.traits.email
          mode: hash_sha256
      # li_fat_id click ID, restored from the 400-day first-party cookie
      - idType: LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID
        idValue:
          source: context.click_ids.li_fat_id
          mode: direct

events:
  purchase:
    destination_event: PURCHASE
    mappings:
      conversionHappenedAt:
        source: timestamp
        mode: direct
      conversionValue:
        amount:
          source: properties.value
          mode: direct
        currencyCode:
          source: properties.currency
          mode: direct

Built for B2B conversion tracking

400-day attribution window

li_fat_id stored in server-set first-party cookies for 400 days. Full B2B buying cycle coverage — from first ad click to closed deal.

Deterministic identifier matching

SHA-256 hashed email and phone, li_fat_id click IDs, and IP / user-agent fallback keys — the identifiers LinkedIn's Conversions API matches on.

Automatic PII hashing

All personal data is SHA-256 hashed in the governance layer before delivery. No raw PII reaches LinkedIn's API.

Real-time delivery

Conversions delivered to LinkedIn's API in under 50ms. Campaign optimisation and reporting update immediately.

Zero LinkedIn JavaScript

Remove the Insight Tag entirely. Datafly Signal handles all conversion tracking server-side through the Conversions API.

Offline conversions

Import CRM closed-won deals, demo completions, and pipeline stages back to LinkedIn for complete funnel measurement.

Supported conversion events

ConversionLinkedIn EventUse Case
Demo requestLEADB2B lead generation
PurchasePURCHASEE-commerce and SaaS
Sign upSIGN_UPFree trial and freemium
Content downloadDOWNLOADGated content and whitepapers
Job applicationAPPLYRecruitment advertising
Key page viewKEY_PAGE_VIEWHigh-intent page visits
Add to cartADD_TO_CARTE-commerce consideration
CustomCustomAny CRM or backend event

Frequently asked questions

Why is LinkedIn attribution especially important for B2B?
B2B sales cycles run 3-12 months. The LinkedIn Insight Tag sets cookies client-side that Safari ITP caps at 7 days, and LinkedIn's reported attribution rarely matches what marketing actually drove because most of the cookies expired before the conversion happened. Server-side delivery via the Conversions API with 400-day first-party cookies covers the full B2B buying cycle in a way client-side simply cannot.
What is li_fat_id and how is it captured?
li_fat_id is LinkedIn's click identifier, attached as a URL parameter when users land from LinkedIn ads. Datafly.js extracts it on landing and the gateway stores it in your 400-day server-set first-party cookie. Conversions arriving months later are matched to the original li_fat_id click via the LinkedIn Conversions API.
What hash format does LinkedIn require for matching?
LinkedIn Conversions API expects SHA-256 hashes of email and phone identifiers. Signal applies the expected normalisation (trim, lowercase, then SHA-256) automatically before delivery, so no raw PII ever reaches LinkedIn and your team does not need to know LinkedIn-specific hash format requirements. IP address and user agent are sent alongside as additional match keys where consent permits.
What do I need from LinkedIn Campaign Manager to set this up?
Three things: your LinkedIn Ads account ID (from Account Settings), a conversion rule ID (from Analyze > Conversion Tracking), and an OAuth2 access token with the r_ads and rw_conversions scopes generated via the LinkedIn developer portal. Signal builds the required conversion URN from the rule ID and sends the versioned LinkedIn-Version header on every Conversions API call, so there is no request formatting to write yourself.
How is consent handled for LinkedIn server-side tracking?
Consent is enforced twice: at ingestion, before an event enters the pipeline, and again at delivery, before anything is sent to LinkedIn. If a visitor has not granted the consent purposes your LinkedIn integration requires, the event is never delivered to LinkedIn — moving tracking server-side does not bypass consent, it centralises the enforcement of it.
Do I need to keep the LinkedIn Insight Tag on the page?
Not for conversion tracking. The Insight Tag's primary jobs (capturing li_fat_id, generating an anonymous identifier, firing conversion events) all move server-side. You can keep the Insight Tag if you also use LinkedIn for retargeting via website audiences, since the audience-building flow still requires it. Many teams keep it for retargeting and use Conversions API for measurement.
Can I send offline / CRM conversions to LinkedIn?
Yes. The same pipeline accepts events from Datafly.js, the iOS / Android SDKs, or direct server-to-server calls from your CRM. Offline B2B conversions (signed contract, qualified lead, demo completed) are matched to the original li_fat_id click or to a hashed email or phone, with 400-day attribution windows.

Maximise your LinkedIn Ads ROI

See how Datafly Signal recovers lost LinkedIn conversions and extends attribution across the full B2B buying cycle.