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.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: directBuilt 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
| Conversion | LinkedIn Event | Use Case |
|---|---|---|
| Demo request | LEAD | B2B lead generation |
| Purchase | PURCHASE | E-commerce and SaaS |
| Sign up | SIGN_UP | Free trial and freemium |
| Content download | DOWNLOAD | Gated content and whitepapers |
| Job application | APPLY | Recruitment advertising |
| Key page view | KEY_PAGE_VIEW | High-intent page visits |
| Add to cart | ADD_TO_CART | E-commerce consideration |
| Custom | Custom | Any 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.
Related
Meta Conversions API
Same server-side pattern for Meta CAPI with _fbp generation and Event Match Quality optimisation.
Google Ads
Equivalent server-side delivery for Google Ads Enhanced Conversions and gclid persistence.
Safari ITP Recovery
400-day first-party cookies — essential for B2B sales cycles longer than 7 days.
Server-Side Identity Graph
How the deterministic, first-party identity graph links a LinkedIn click to a conversion months later.
Signal vs GTM Server-Side
Running the Insight Tag through a GTM server container? See how the two approaches differ.
Migrate to Signal
Migration paths from tag managers and CDPs, including a parallel-run validation period.
Maximise your LinkedIn Ads ROI
See how Datafly Signal recovers lost LinkedIn conversions and extends attribution across the full B2B buying cycle.