June 26, 2026Analytics

LinkedIn Conversions API: Server-Side Tracking for B2B

Why the LinkedIn Conversions API Matters Right Now

Last month I audited a B2B SaaS company running about EUR 9,000 a month in LinkedIn Ads. The marketing director was puzzled: Campaign Manager showed 11 demo requests in May, but the CRM had 34. A 68 percent gap. The Insight Tag was installed. Enhanced conversion tracking was enabled. The problem was not the tag itself -- it was the fact that three out of ten visitors used Safari, where WebKit's ITP deletes all JavaScript-set cookies after seven days of no interaction. The li_fat_id cookie -- LinkedIn's first-party click identifier -- is set via JavaScript, so it vanishes on Safari before most B2B buyers come back to convert. The Insight Tag alone simply cannot keep up.

That is the gap the LinkedIn Conversions API fills. Instead of relying on a browser pixel to report conversions, you send event data from your server directly to LinkedIn's API endpoint. No cookie expiration. No ad-blocker interference. No silent data loss.

What Is the LinkedIn Conversions API?

The LinkedIn Conversions API (often shortened to CAPI) is a server-side tracking interface that lets you stream conversion events -- online and offline -- from your own backend to LinkedIn. According to LinkedIn's documentation, the data feeds campaign optimisation, attribution, and delivery.

Think of it as LinkedIn's answer to the Meta Conversions API. If you have already implemented Meta CAPI, the mental model is similar: you hash user identifiers, attach an event ID for deduplication, and POST the payload to an API endpoint.

Key capabilities at a glance

FeatureDetail
EndpointPOST https://api.linkedin.com/rest/conversionEvents
Match identifiersSHA256 email, li_fat_id, first name + last name, company, Acxiom ID, Oracle MOAT ID
Rate limits600 requests/minute, 300,000/day; batch up to 5,000 events per call
Attribution windowUp to 90-day click / 90-day view (configurable per conversion)
Reporting lagUp to 72 hours for full data

Source: LinkedIn Conversions API docs, version 2026-03.

The important bit: only matched events count for attribution. If you send a conversion without a usable identifier, LinkedIn cannot tie it back to an ad click. That is why match rate is everything.

LinkedIn Conversion Tracking: Insight Tag vs. CAPI

Traditional LinkedIn Insight Tag conversion tracking relies on a JavaScript snippet that fires in the browser. It works well enough when the visitor converts in the same session or returns within the cookie window. For e-commerce, that is often fine. For B2B, it is almost never fine.

B2B sales cycles stretch across weeks or months. I have written about this problem in depth in my post on marketing measurement for long B2B sales cycles. A prospect clicks a LinkedIn ad, reads your landing page, and disappears for 40 days. By the time they fill out a demo form, the cookie is gone, the Insight Tag cannot match them, and Campaign Manager sees nothing.

The LinkedIn Conversions API solves this by letting you send the hashed email address collected at the point of conversion. LinkedIn matches it against its member graph. No cookie required.

When you need both

LinkedIn itself recommends a redundant setup -- Insight Tag plus CAPI -- for maximum coverage. The Insight Tag handles quick same-session conversions. CAPI catches everything the browser misses. LinkedIn deduplicates automatically: if the same eventId arrives from both sources, the Insight Tag event wins and the CAPI event is discarded.

This is similar to the hybrid approach I describe in my server-side tracking guide, and it applies to every major ad platform now.

How the LinkedIn Conversions API Works (Step by Step)

1. Create a conversion rule in Campaign Manager

Go to Measurement > Conversion tracking > Create conversion and select Conversions API as the data source. Set your attribution window. LinkedIn recommends 90-day click and 90-day view for lead-generation and lower-funnel conversions.

2. Generate API credentials

You need an OAuth 2.0 access token with rw_conversions and r_ads scopes. Create an app in the LinkedIn Developer Portal and request the Marketing API product.

3. Hash and send user data

At a minimum, SHA256-hash the email address (lowercased, trimmed) and include it in the userIds array. For better match rates, also capture the li_fat_id cookie value from the landing page URL -- LinkedIn appends it as a click parameter when enhanced conversion tracking is enabled -- and pass it as LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID.

4. Implement deduplication

If you also run the Insight Tag, generate a unique eventId on the client, push it to the data layer, send it with the Insight Tag event, and include the same ID in your CAPI payload. This prevents double-counting. The LinkedIn deduplication docs explain the exact mechanism.

5. Validate

Conversions take up to 72 hours to appear in Campaign Manager. Check the conversion breakdown report: you should see separate line items for Insight Tag and CAPI events. If deduplication is working, the Insight Tag count will be higher, and the CAPI count will reflect only the conversions the browser could not capture.

LinkedIn Conversion Tracking GTM: Using Server-Side Google Tag Manager

If you are already running a server-side GTM container, the fastest path to a working CAPI integration is LinkedIn's own GTM server-side tagging guide.

The flow looks like this:

  1. Your web container sends GA4 events to your server container (the same events you already track).
  2. A LinkedIn CAPI tag in the server container reads the GA4 event, maps user data parameters from the data layer, hashes them, and fires a request to LinkedIn's endpoint.
  3. You configure triggers so only relevant events (form submissions, demo bookings, purchases) are forwarded.

This approach avoids loading any extra scripts on the client side. If you have dealt with GTM trigger misconfigurations before, you know that fewer client-side tags mean fewer things to break.

One caveat: GTM server-side tagging requires a tagging server -- either self-hosted on Google Cloud Run or via a managed provider like Stape. I compare those options in my Stape vs Cloud Run post. Budget EUR 30-120 per month for hosting, depending on traffic volume.

LinkedIn Offline Conversions API: Feeding CRM Data Back

The LinkedIn Conversions API is not limited to website events. The same endpoint accepts offline conversions -- phone calls, in-person meetings, CRM stage changes, closed deals. LinkedIn originally launched an offline conversions API and later merged it into the unified Conversions API.

For B2B companies, this is where the real value lives. You can push pipeline stages from your CRM (MQL, SQL, opportunity, closed-won) back to LinkedIn daily or in real time. This does two things:

  1. Better attribution reporting. You see which campaigns drive pipeline, not just form fills.
  2. Smarter bidding signals. LinkedIn's algorithm learns which audiences actually convert downstream, not just which ones click.

The practical setup: export hashed email addresses and conversion timestamps from your CRM (HubSpot, Salesforce, Pipedrive -- it does not matter), and POST them to the Conversions API with the appropriate conversion rule ID. You can do this via a cron job, a Zapier automation, or a reverse-ETL tool like Hightouch or Census.

If this sounds like a lot of moving parts, it is. Get in touch -- I build these pipelines for B2B teams that need their LinkedIn spend to tie back to actual revenue, not just lead-form clicks.

Match Rate: The Make-or-Break Metric

A server-side setup is only as good as its match rate. If LinkedIn cannot match your conversion event to a member profile, the event is ingested but never attributed.

Here is what I recommend sending, in priority order:

  1. SHA256-hashed email -- the strongest identifier for B2B, since most conversions involve an email address.
  2. li_fat_id (LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID) -- captured from the landing page URL or first-party cookie. Provides deterministic matching for users who clicked a LinkedIn ad.
  3. First name + last name + company name -- supplementary signals that help when email alone is not enough.

LinkedIn's best practices are clear: send as many consented identifiers as possible. Each additional field increases the likelihood of a match.

A note on LinkedIn enhanced conversion tracking

LinkedIn enhanced conversion tracking is the Insight Tag feature that appends li_fat_id to your landing page URLs. It must be enabled in Campaign Manager under your Insight Tag settings. Without it, you lose the most reliable click-level match identifier. Enable it. Then make sure your site's CMS does not strip the parameter -- I have seen WordPress plugins and certain CDN configurations silently drop URL parameters.

What Results Should You Expect?

I am cautious about quoting platform-side case studies as gospel, but here is what LinkedIn itself reports: according to a Dreamdata case study cited on LinkedIn's developer blog, advertisers using the Conversions API saw up to a 20 percent reduction in cost per acquisition. In my own client work, the biggest gains come not from the CPA drop itself but from the visibility: when you can finally see which campaigns produce pipeline (not just leads), you stop wasting budget on high-volume, low-quality traffic.

Common Implementation Mistakes

After setting up LinkedIn CAPI for several B2B accounts, I see the same errors repeated:

  • Not lowercasing emails before hashing. John@Example.com and john@example.com produce different SHA256 hashes. LinkedIn will not match the uppercase version.
  • Missing deduplication. If you send events via both the Insight Tag and CAPI without a shared eventId, you double-count conversions and inflate your numbers.
  • Ignoring the 72-hour reporting lag. Clients panic when conversions do not appear immediately. They are not missing -- they just have not been processed yet.
  • Forgetting offline events. If your sales team closes deals over the phone, those conversions exist only in your CRM. Without feeding them back via CAPI, LinkedIn's algorithm optimises for clicks, not revenue.
  • Not validating the li_fat_id cookie capture. The Insight Tag sets li_fat_id via JavaScript, which means Safari caps it at seven days. On server-side setups, capture it from the URL parameter on the first landing page hit and store it server-side so it survives the browser purge.

FAQ

What is the LinkedIn Conversions API?

The LinkedIn Conversions API is a server-side interface that lets advertisers send conversion event data directly from their own server to LinkedIn, bypassing browser-based limitations like cookie expiration and ad blockers. It supports both online and offline conversion events and is used for attribution, campaign optimisation, and delivery.

Do I still need the LinkedIn Insight Tag if I use the Conversions API?

Yes. LinkedIn recommends running both the Insight Tag and the Conversions API in a redundant setup for maximum conversion coverage. The Insight Tag handles same-session conversions quickly, while the Conversions API catches events the browser misses. LinkedIn deduplicates automatically using a shared event ID so conversions are not double-counted.

How long does it take for Conversions API data to appear in Campaign Manager?

LinkedIn states that it takes up to 24 hours for ingestion and an additional 48 hours for reporting, so you should expect up to 72 hours before complete data appears in your conversion reports. Do not troubleshoot missing conversions until at least three full days have passed.

Can I send offline CRM conversions through the LinkedIn Conversions API?

Yes. The Conversions API accepts offline events such as phone calls, in-person meetings, and CRM pipeline stage changes. You hash the email address, attach a conversion timestamp, and POST the event to the same API endpoint used for online conversions. This is especially valuable for B2B companies with long sales cycles.

What identifiers does LinkedIn use to match conversion events?

LinkedIn supports several match identifiers including SHA256-hashed email addresses, the li_fat_id first-party cookie value, first name and last name, company name, and third-party IDs from Acxiom and Oracle MOAT. Sending multiple identifiers per event increases your match rate and improves attribution accuracy.

Not sure your LinkedIn conversion tracking is actually working? Let me audit it -- I will tell you exactly what is breaking and how to fix it.

Ready to fix your marketing measurement?

Take assessment →