# How to troubleshoot LinkedIn Ads sync issues

Checklist for LinkedIn Ads sync issues. Conversion Rule ID errors, missing CAPI events, Lead Gen webhook delivery, identity matching, OAuth token issues.

Source: https://sourceloop.ai/help/troubleshoot-linkedin-ads-sync/
Updated: 2026-05-28

---

LinkedIn Ads sync issues split into three buckets: connection / OAuth, Conversions API push, and Lead Gen Form capture. Work through this checklist in the order it appears.

## Before you start

Have these tabs open:

- **SourceLoop's LinkedIn Ads card** at **Setup -> Ad Platforms -> LinkedIn Ads**
- **LinkedIn Campaign Manager** at Analyze -> Conversion Tracking -> Conversions
- For Lead Gen issues: the **Lead Gen Forms** view in Campaign Manager
- The most recent **Sync log** entry on the LinkedIn card

## Step 1: Check the connection status

1. Open **Setup -> Ad Platforms -> LinkedIn Ads** in SourceLoop.
2. Look at the card:
   - **Active** with recent Last sync → healthy
   - **Active** with stale Last sync (>24 hours) → Insights sync stuck
   - **Token expired** → reconnect needed
   - **Disconnected** → run Connect flow

## Step 2: For 'Token expired' / 'Disconnected'

1. Click **Reconnect** on the LinkedIn card.
2. Sign in to LinkedIn with the user that has Campaign Manager access.
3. Authorise the scopes.
4. Pick the same ad account in the picker.

If you'd previously enabled Lead Gen Form capture, you may need to re-authorise the Lead Sync scope separately, see [Capture LinkedIn Lead Gen Form submissions](/help/capture-linkedin-lead-gen-forms/).

## Step 3: For 'conversions not appearing in Campaign Manager'

This is the most common Conversions API issue. Walk through:

1. **Open the Sync log** on the LinkedIn card (three-dot menu).
2. Find the conversion you expected. Each push is logged with the Conversion Rule URN, status, and any error.
   - **sent** → SourceLoop pushed the conversion successfully. Campaign Manager has a 4-24 hour reporting delay; allow it.
   - **pending_identity** → no `li_fat_id`, no email, no phone. The visitor had no matchable signal. Skip these.
   - **error** → LinkedIn rejected the push. Click the row for the exact error.

Common errors:

- **`Invalid conversion URN`** → wrong Conversion Rule ID. See FAQ above for how to find the right one.
- **`Conversion outside lookback window`** → the conversion timestamp is more than 30 days after the original click. LinkedIn rejects these.
- **`Authorization required`** → token expired. Reconnect.
- **`Currency not supported`** → conversion value sent in a currency LinkedIn doesn't support for the ad account. Adjust the currency override in your SourceLoop config.

## Step 4: For 'Lead Gen Form submissions not arriving in SourceLoop'

This is the most common Lead Gen capture issue. Run through:

1. **Open the LinkedIn drawer in SourceLoop** and scroll to the **Lead Gen Form capture** section.
2. **Confirm the Page that owns your Lead Gen Form is subscribed.** Status should be Active, with a recent **Last event** timestamp if leads have been coming in.
3. **Confirm the Lead Sync scope was authorised** during the Lead Gen enable flow. If the scope wasn't granted, the subscriptions will show **Pending** instead of Active. Re-run the enable flow with a user that has Page Admin.
4. **Confirm the form is configured to use Lead Sync.** In Campaign Manager, open the Lead Gen Form template. The Lead Sync toggle should be on. If the form was created before Lead Sync was added to your account, it may default to off; you'll need to clone the form with Lead Sync enabled.
5. **Test by submitting a real form.** Click into one of your active LinkedIn ads with a Lead Gen Form attached, fill in, submit. Within 30 seconds, watch the subscription's **events received** counter increment and the lead appear in Contacts Hub.

## Step 5: For 'X-LI-Signature verification failed' on webhook deliveries

If you see this in the Lead Gen log:

1. **Don't panic, this is the security layer working.** SourceLoop validates every webhook delivery against LinkedIn's HMAC-SHA256 signature using our shared credential. Failed verification means the delivery wasn't actually from LinkedIn (or was tampered with).
2. **Check if this is happening for legitimate LinkedIn events.** If real Lead Gen submissions are failing verification, the shared credential may have rotated on LinkedIn's side. Email **hello@sourceloop.ai** with the specific timestamp and we'll investigate.
3. **If the failures are for unknown sources**, that's the security layer rejecting spoofed requests, no action needed.

## Step 6: For poor Match Score

LinkedIn's reporting tells you the Match Score for each Conversion Rule. To improve it:

1. **Install the LinkedIn Insight Tag** site-wide. This is what sets `li_fat_id` on the visitor's first ad-click landing. Without it, identity matching falls back to email or phone only, which produces lower scores.
2. **Capture email in your forms.** SHA256-hashed email is the strongest second identifier after `li_fat_id`. Make email a required field.
3. **Capture phone where appropriate.** Hashed phone adds a third matching signal.
4. **Don't fire conversions for anonymous visitors.** SourceLoop already skips visitors with no identity signal (`pending_identity`). Configure your conversion sources to require email at minimum.

Lead Gen Form captures have perfect Match Score by default because email always comes through with the form response.

## For Insights data not updating

1. **Check the last sync timestamp** on the LinkedIn card. Daily at 05:00 UTC.
2. **Force a manual resync.** Click **Resync now**.
3. **Check LinkedIn's own reporting.** If Campaign Manager shows the same lag (common for the last 1-3 days), the data isn't ready on LinkedIn's end. SourceLoop can only show what LinkedIn provides.

## How to disconnect or reset

- **Soft reset** (re-run click-mapping backfill): three-dot menu -> **Reset click mapping** on the LinkedIn card.
- **Hard reset** (disconnect entirely): see [Disconnect LinkedIn Ads from SourceLoop](/help/disconnect-linkedin-ads-from-sourceloop/).

## When to email support

Email **hello@sourceloop.ai** with:

- The LinkedIn Ads card's current status
- Two or three error messages from the Sync log (verbatim)
- Your **Ad Account ID** (visible on the LinkedIn card)
- If Lead Gen related, the **Page ID(s)** you subscribed to and the **Lead Form ID** if you can find it

We respond within one business day.

## Frequently Asked Questions

### My LinkedIn card shows 'Token expired'. What now?

Click Reconnect on the LinkedIn card. LinkedIn access tokens last 60 days; SourceLoop renews them automatically via the stored refresh token. A Token expired state usually means the refresh token itself was revoked (someone removed SourceLoop access at LinkedIn) or both tokens have expired (rare). Reconnect runs a fresh OAuth flow.

### Conversions are firing in SourceLoop but not in Campaign Manager. What should I check?

Five common causes. (1) Conversion Rule ID wrong, double-check the numeric ID matches the rule in Campaign Manager. (2) Conversion outside lookback window, LinkedIn rejects events more than 30 days after the click. (3) No identity, the conversion has no li_fat_id, no email, no phone, so LinkedIn rejects it. (4) Reporting delay, Campaign Manager batches conversion display, expect 4-24 hours. (5) Insight Tag not deployed, without the tag, li_fat_id never gets set, dramatically reducing match rate.

### LinkedIn says 'Invalid conversion URN' in the sync log. Why?

The Conversion Rule ID in your SourceLoop config doesn't correspond to a valid Conversion Rule in the connected ad account. Open Campaign Manager -> Analyze -> Conversion Tracking -> Conversions, click into the right rule, copy the ID from the URL, update the SourceLoop config.

### My Lead Gen Form submissions aren't reaching SourceLoop. What's wrong?

Five causes. (1) The Page that owns the form isn't subscribed in SourceLoop's Lead Gen Form capture section. (2) The Lead Sync OAuth scope wasn't authorised (you'd see this in the drawer's status). (3) The user who authorised doesn't have Page Admin on the Page. (4) The form was created with Lead Sync disabled, check in Campaign Manager. (5) The form is on a Page you don't subscribe to.

### I see 'X-LI-Signature verification failed' in the Lead Gen webhook log. What does that mean?

This is a security check, SourceLoop validates that every webhook delivery is signed by LinkedIn using HMAC-SHA256 against our credential. A failed verification usually means an unauthorised attempt to spoof a webhook. SourceLoop rejects the event with HTTP 401. Real LinkedIn deliveries should never fail this check, if you see it happening for real LinkedIn events, email support.

### My Match Score is poor. How do I improve it?

Three things. (1) Install the LinkedIn Insight Tag site-wide, this is what sets li_fat_id on first ad-click landing. (2) Capture email in your forms, hashed email is the strongest second signal. (3) Don't push conversions for visitors with no identity, SourceLoop already skips these. Lead Gen Form captures have perfect Match Score by default because email always comes through.

### Insights data is stale. When does it refresh?

Insights sync runs daily at 05:00 UTC and re-fetches the last 14 days. Force an immediate refresh by clicking Resync now. Recent campaign performance (last 1-3 days) often lags in LinkedIn itself, you're not behind, LinkedIn is.
