> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upstackdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LinkedIn Conversions API

> Send conversion events to LinkedIn's Conversions API for ad campaign optimization, audience building, and attribution — powered by Upstack Signal.

<Note>
  **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
</Note>

## What it does

LinkedIn's Conversions API is the server-side counterpart to the LinkedIn Insight Tag. Upstack Signal forwards storefront events — page views, product views, add-to-carts, and purchases — directly to LinkedIn's servers, bypassing browser restrictions like ad blockers, ITP, and cookie limits.

Server-side delivery gives LinkedIn's algorithm a fuller picture of the conversions your ads actually drove, which improves campaign optimization, audience modeling, and attribution accuracy. Match rates from server-side events are consistently higher than browser-only tracking because each event carries hashed customer data and the `li_fat_id` click identifier when available.

<Note>
  Unlike Meta and TikTok, LinkedIn uses **Conversion Rule IDs** to track specific conversion types. You'll need to create conversion rules in Campaign Manager and map them to event types in Upstack.
</Note>

## How it works

Upstack runs as a dual-tracking layer alongside the LinkedIn Insight Tag. The Upstack Pixel captures events in the browser and forwards each event to Upstack's edge infrastructure, where it is hashed, enriched with identity and click-ID data, and sent to the LinkedIn Conversions API as a server-side event with a shared `eventId`.

Upstack authenticates with LinkedIn using a **Direct Access Token** that you generate inside Campaign Manager → **Data** → **Signals Manager** → **Conversions API** — no LinkedIn Developer app or OAuth setup required. The token grants the **Manage conversions** permission for the ad accounts you select and lasts until the expiry you choose (we recommend 1 year). See [How to generate a LinkedIn Conversions API token](/guides/linkedin-ads/how-to-generate-linkedin-conversion-api-token).

LinkedIn deduplicates server events against matching browser Insight Tag events using that `eventId`, so you do not double-count conversions as long as both sources use the same Partner ID. PII (`email`) is hashed with SHA-256 before delivery, as required by the Conversions API.

## Setup guides

<CardGroup cols={2}>
  <Card title="Onboarding guide" icon="route" href="/guides/linkedin-ads/complete-how-to-guide-for-onboarding-linkedin-in-upstack-data">
    End-to-end walkthrough for connecting LinkedIn to Upstack Data.
  </Card>

  <Card title="Configure destination" icon="sliders" href="/guides/linkedin-ads/how-to-configure-linkedin-destination-in-upstack-data">
    Configure the LinkedIn destination inside Upstack Data.
  </Card>

  <Card title="Find Partner ID" icon="magnifying-glass" href="/guides/linkedin-ads/how-to-find-linkedin-partner-id">
    Locate your LinkedIn Partner ID in Campaign Manager.
  </Card>

  <Card title="Create Conversion Rules" icon="bullseye" href="/guides/linkedin-ads/how-to-create-linkedin-conversion-rules">
    Create conversion rules for tracking specific event types.
  </Card>

  <Card title="Generate API token" icon="key" href="/guides/linkedin-ads/how-to-generate-linkedin-conversion-api-token">
    Generate the Conversions API access token Upstack uses to send events.
  </Card>

  <Card title="Enable click ID tracking" icon="link" href="/guides/linkedin-ads/how-to-enable-linkedin-click-id-tracking">
    Enable enhanced conversion tracking for `li_fat_id` click IDs.
  </Card>
</CardGroup>

## Event mapping

Upstack maps storefront events to LinkedIn standard events automatically:

| Upstack event          | LinkedIn event    | Key match data                                 |
| ---------------------- | ----------------- | ---------------------------------------------- |
| `PageView`             | (via Insight Tag) | URL, referrer, user agent                      |
| `ViewContent`          | `VIEW_CONTENT`    | `content_ids`, `value`, `currency`             |
| `AddToCart`            | `ADD_TO_CART`     | `content_ids`, `value`, `currency`             |
| `InitiateCheckout`     | `START_CHECKOUT`  | `value`, `currency`, `num_items`               |
| `Purchase`             | `PURCHASE`        | `value`, `currency`, `order_id`, `content_ids` |
| `Lead`                 | `LEAD`            | `email`, `phone`                               |
| `CompleteRegistration` | `SIGN_UP`         | `email`                                        |

PII is hashed with SHA-256 before it leaves Upstack. Upstack includes every available match key on every event — hashed `email`, `li_fat_id` (LinkedIn click ID), `ip_address`, and `user_agent` — to maximize match quality.

## FAQ

<AccordionGroup>
  <Accordion title="What is the difference between Partner ID and Conversion Rule ID?">
    The **Partner ID** identifies your LinkedIn ad account's Insight Tag — it's the same ID used for browser-side tracking. The **Conversion Rule ID** identifies a specific conversion action you want to track (e.g., Purchase, Lead, Sign Up). You'll have one Partner ID but multiple Conversion Rule IDs, one for each event type.
  </Accordion>

  <Accordion title="How do I get my API Access Token?">
    Generate a **Direct Access Token** in Campaign Manager → **Data** → **Signals Manager** → **Conversions API**, then paste it into the **API Access Token** field of your Upstack LinkedIn destination. See the step-by-step [How to generate a LinkedIn Conversions API token](/guides/linkedin-ads/how-to-generate-linkedin-conversion-api-token) guide.
  </Accordion>

  <Accordion title="How long does the token last?">
    Direct Access Tokens expire based on the duration you choose when generating them. We recommend setting the expiry to **1 year** to minimize rotation. When a token expires, the destination turns Unhealthy and events return a `401` error — generate a new token with the same settings and update the destination.
  </Accordion>

  <Accordion title="What permissions does the token need?">
    The token needs the **Manage conversions** permission and access to the ad account that owns your Conversion Rules. Without this permission, events return a `403` error.
  </Accordion>

  <Accordion title="How do I know events are reaching LinkedIn?">
    Open LinkedIn Campaign Manager → **Data** → **Signals Manager** → **Signal Diagnostics**. Server-side events appear with status "Received" and show match quality metrics. Upstack also surfaces delivery status inside the destination settings.
  </Accordion>

  <Accordion title="Will I see duplicate conversions if I run both the Insight Tag and Conversions API?">
    No — as long as the Partner ID in Upstack matches the Partner ID in your Insight Tag. Upstack sends a shared `eventId` on every server-side event, and LinkedIn's deduplication logic matches events by `eventId` and keeps only one.
  </Accordion>

  <Accordion title="Why do I need separate Conversion Rules for browser and server events?">
    LinkedIn's deduplication works by matching `eventId` across browser and server events **within the same Conversion Rule**. If you use the same Conversion Rule for both sources, deduplication works automatically. However, some merchants prefer separate rules for A/B testing or validation — in that case, browser events go to one rule and server events to another.
  </Accordion>

  <Accordion title="What if my event match rate is low?">
    LinkedIn's match rate depends on how much identity data each event carries. Common causes of low match quality:

    * **Missing `li_fat_id`** — LinkedIn ads should link directly to your storefront so the click ID lands in the URL and is captured by the Upstack Pixel.
    * **Anonymous visitors** — events from visitors without email have fewer keys to match against. Match rates improve as more identified customers convert.
    * **Missing checkout fields** — make sure your Shopify checkout collects email; it's the strongest server-side match key for LinkedIn.
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Events not appearing in LinkedIn Signal Diagnostics">
    If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first.

    **Steps to fix:**

    1. Go to **Integrations → Destinations → LinkedIn**
    2. Verify the **Partner ID**, **API Access Token**, and **Conversion Rule IDs** are correct (no extra spaces or truncated characters)
    3. Confirm the destination status is Active (green)
    4. If the token was revoked or expired, generate a new one in Campaign Manager and update the destination
    5. Verify conversion rules are associated with at least one active campaign
  </Accordion>

  <Accordion title="API errors (401, 403)">
    | Error Code | Meaning                  | Solution                                                                                                                                     |
    | ---------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
    | 401        | Invalid or expired token | Generate a new Direct Access Token in Campaign Manager → Data → Signals Manager → Conversions API                                            |
    | 403        | Permission denied        | Ensure token has "Manage conversions" permission and access to the correct ad account                                                        |
    | 422        | Invalid payload          | Verify conversion URN format (`urn:lla:llaPartnerConversion:{id}`), timestamp is within 90 days, and at least one user identifier is present |
  </Accordion>

  <Accordion title="Token expired">
    Direct Access Tokens expire based on the duration you set during generation (default 1 year).

    To renew:

    1. Go to Campaign Manager → Data → Signals Manager → Conversions API
    2. Generate a new token with same settings
    3. Update the token in Upstack Data destination settings
  </Accordion>

  <Accordion title="Low match quality scores">
    LinkedIn's match quality measures how well server events match to LinkedIn users.

    **Common causes:**

    * **High anonymous traffic** — Events from visitors who haven't provided contact info have fewer matching parameters. Match quality improves as more identified customers generate events.
    * **Missing click IDs** — Enable enhanced conversion tracking in Insight Tag settings to capture `li_fat_id` from ad clicks.
    * **Incorrect Partner ID** — If the Partner ID doesn't match the one associated with your ad account, events arrive but can't be matched to campaign data.

    Match quality typically improves over 1–2 weeks as Upstack's identity resolution builds visitor profiles.
  </Accordion>
</AccordionGroup>

<Note>
  For additional troubleshooting beyond LinkedIn-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding">
    How Upstack Signal forwards events to ad platforms via server-to-server APIs.
  </Card>

  <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution">
    How Upstack matches anonymous visitors to known customers for higher match rates.
  </Card>

  <Card title="Meta CAPI destination" icon="meta" href="/destinations/meta-capi">
    Set up Meta's Conversions API as another server-side destination alongside LinkedIn.
  </Card>

  <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/events-not-reaching-destination">
    End-to-end diagnostic guide when events aren't arriving at any destination.
  </Card>
</CardGroup>
