LinkedIn Conversions API
Datafly Signal delivers conversion events to LinkedIn server-to-server via the Conversions API, replacing the LinkedIn Insight Tag for B2B campaign attribution, lead tracking, and audience measurement.
Why route LinkedIn Ads through Datafly Signal
- Conversions survive ad blockers and tracking prevention. A browser tag served from an advertising domain is blocked outright for part of your traffic, and Safari’s ITP shortens the cookies it can set. Signal sends the event from your own server, so the conversions LinkedIn Ads optimises against are not filtered by the browser.
- Email is hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so LinkedIn Ads receives match keys rather than raw personal data.
- Token lifecycle is handled for you. Signal obtains and refreshes the OAuth credentials LinkedIn Ads requires, so nothing expires quietly in the middle of a campaign.
- Presets for B2B / SaaS and Retail. The mapping starts from a working configuration for your vertical instead of a blank field map.
- One consent decision governs every destination. LinkedIn Ads is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
- No vendor tag on the page. Removing it removes its page weight and its independent access to your visitors.
Prerequisites
Before configuring LinkedIn in Signal, you need:
- A LinkedIn Campaign Manager account with an Ad Account ID
- A conversion rule configured under Analyze → Conversion Tracking
- A LinkedIn developer application with Marketing API access
- An OAuth access token with
r_adsandrw_conversionsscopes (and ideally a refresh token)
Get your LinkedIn credentials
-
Sign in to LinkedIn Campaign Manager and copy your Ad Account ID from account settings.
-
Go to Analyze → Conversion Tracking and click Create Conversion. Choose Online Conversion with Conversions API as the tracking method. Note the numeric Conversion Rule ID.
-
Register an app at LinkedIn Developer Portal, associate it with your LinkedIn Page, and request access to the Marketing API (approval may take 1-3 days).
-
Complete the OAuth 2.0 flow against your app with scopes
r_adsandrw_conversions:https://www.linkedin.com/oauth/v2/authorization?response_type=code &client_id=YOUR_CLIENT_ID &redirect_uri=YOUR_REDIRECT_URI &scope=r_ads%20rw_conversions -
Exchange the authorisation code for an
access_token(andrefresh_token). LinkedIn access tokens expire after 60 days; the refresh token lets Signal renew automatically.
See LinkedIn’s Conversions API documentation for full details.
Configure the integration in Signal
- In the Management UI, go to Integrations → Add Integration.
- Select LinkedIn Ads from the catalogue.
- Give the integration a name (for your reference).
- Choose a preset (B2B / SaaS or Retail).
- Fill in the required fields:
| Field | Required | Description |
|---|---|---|
account_id | Yes | LinkedIn Ad Account ID. |
access_token | Yes | OAuth access token with r_ads and rw_conversions. |
conversion_rule_id | Yes | Numeric ID of the conversion rule in Campaign Manager. |
- Choose which pipeline(s) this integration should run on.
- Select consent categories (defaults to marketing).
- Click Save.
If you track multiple conversion types (e.g. Lead, Purchase, Sign-up), create one integration per conversion rule and filter events accordingly.
API endpoint
POST https://api.linkedin.com/rest/conversionEventsAllow egress to api.linkedin.com from the network your delivery workers run on.
Event mapping
B2B / SaaS preset
| Signal event | LinkedIn event |
|---|---|
page | pageView |
Signed Up | conversion |
Lead Submitted | conversion |
Subscription Started | conversion |
Retail preset
| Signal event | LinkedIn event |
|---|---|
page | pageView |
Order Completed | conversion |
All conversion events are reported against the configured conversion_rule_id. To customise, edit the integration’s Field Mappings.
Identity
LinkedIn attribution relies primarily on the li_fat_id (LinkedIn First-Party Ad Tracking) parameter. Datafly.js captures it from the landing URL and stores it as a first-party cookie.
| Capability | Field | Notes |
|---|---|---|
| Click ID | user.userIds[].LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID | From li_fat_id URL parameter |
| Hashed email | user.userIds[].SHA256_EMAIL | SHA-256 (lowercase, trimmed) |
| Hashed phone | user.userIds[].SHA256_PHONE | SHA-256 (E.164) |
| First / last name | user.userInfo.firstName / lastName | Plain text, supplementary signal |
| Company name | user.userInfo.companyName | Plain text, supplementary signal |
| Client IP / User-Agent | Forwarded from the original request |
Hashing is performed by Signal before delivery.
Consent
This integration is gated on the marketing canonical consent category.
Verify it’s working
- In the Management UI, open Pipelines → your pipeline → Live Events and trigger a test conversion.
- The event appears in the live feed; inspect the payload sent to LinkedIn.
- In Campaign Manager, open Analyze → Conversion Tracking → your rule → Recent Activity — conversions appear within 15 minutes.
Troubleshooting
401 Unauthorized.
The access token has expired (60-day lifetime) or been revoked. Generate a new token via the OAuth flow or configure the refresh-token credentials.
403 Forbidden.
The app lacks Marketing API access, or the OAuth user has no permissions on the ad account.
Low match rate.
Ensure li_fat_id is captured on landing pages and pass hashed email/phone via datafly.identify().