Skip to content
Code samples below use example values.

LinkedIn Ads

This page covers both halves of a LinkedIn connection: importing and managing campaigns (the Marketing API) and delivering server-side conversions through Prism.

Connecting

In the Adsidian dashboard, open the client → Connect LinkedIn Ads. The wizard:

  1. Authorize with LinkedIn — a redirect to LinkedIn's consent screen, requesting ads read/write, reporting, and conversions scopes.
  2. Pick the ad account — the wizard lists every account your login can reach and stores it as a urn:li:sponsoredAccount:* URN; you just pick a name from a dropdown.
  3. Map events to conversion rules (below).
  4. Send a test event.

Token lifetimes

LinkedIn access tokens last about 60 days; the refresh token has a hard 365-day expiry, after which LinkedIn requires a fresh consent — there's no way around this on LinkedIn's side. The wizard surfaces a countdown banner starting 60 days out, and an error banner once it's actually expired, so reconnecting is never a surprise.

The Company Page requirement

LinkedIn publishes ad creatives as Direct Sponsored Content posts, and every DSC post needs an author — your client's LinkedIn Company Page, identified by its urn:li:organization:* URN.

Without it: campaigns and ad groups still publish live normally — targeting, budget, and bidding all work. Only the ad (creative) level is affected — an ad create stages as a draft and stays there instead of publishing, because Adsidian will never fabricate a Page identity to push a post under.

Not yet a wizard field

The Company Page URN isn't in the connection wizard's UI yet — it's set via the client's LinkedIn config directly. If your ads are stuck as drafts and campaigns/ad groups are live, this is almost always why. Ask your Adsidian contact to set it for the client.

Conversion rule mapping

Unlike Reddit and Meta (free-text rename), LinkedIn's map-events step is a pick-list: Adsidian fetches the Conversions API rules already defined on the connected ad account, and you map each Prism event (Purchase, Lead, AppointmentRequest, SignUp) to one of them. An event with no mapping isn't sent at all — there's no sane default rule to fall back to.

Creating rules in Campaign Manager

Each mapped Prism event needs its own rule. You don't need all four to get started — mapping just Lead is fine. In LinkedIn Campaign Manager, confirm the account switcher shows the same ad account you connected in the Adsidian wizard, then go to Analyze → Conversion tracking → Create conversion.

Name rules recognizably — something like Prism – Lead — since the Adsidian wizard shows them by name (not ID) in its map-rules dropdowns, and a vague name is hard to place later.

Category only affects LinkedIn's own reporting buckets, not delivery or attribution — pick whatever's the closest business match:

Prism eventSuggested rule nameLinkedIn category
LeadPrism – LeadLead
AppointmentRequestPrism – AppointmentRequestLead
SignUpPrism – SignUpSign up
PurchasePrism – PurchasePurchase

Value settings: leave the default value off, or set a fallback if you want one. Prism sends a per-event value where it has one (most reliably for Purchase); LinkedIn uses the value on the incoming event when present and only falls back to the rule's default when the event carries none.

Attribution settings: the defaults are fine — 30-day click / 7-day view, last touch, attributed to each campaign.

Choose Direct API

On the "Select the data source" screen, choose Direct API — not Zapier, not Google Tag Manager, and not any "via Zapier" partner tile. Direct API is the data source that accepts Prism's server-side Conversions API events; the others expect something else to be sending the data. Accepting LinkedIn's Ads Agreement here is expected the first time any rule on the account uses Conversions API.

If Campaign Manager offers a "select campaigns" step during creation, you can associate the rule with active campaigns right there — see Rules must be associated to campaigns below for why that matters; it's the same requirement, just doable at creation time instead of afterward.

Back in Adsidian: reopen the wizard (Reconfigure LinkedIn Ads) — it fetches rules live from LinkedIn, so a rule you just created should appear in the map-rules dropdowns immediately. If the list looks empty, give LinkedIn a minute and reopen the wizard again. Map each Prism event to its rule and hit Save & test — this sends a synthetic zero-value conversion with a hashed test email through the real pipeline.

Data-source status lags behind

Campaign Manager's own "status" indicator for a rule's data source can take minutes to hours to flip from "no signal yet" to active after the first real event arrives — seeing "no signal yet" there right after Save & test isn't a failure. The wizard's test result is the authoritative check that the pipeline works.

Rules must be associated to campaigns

LinkedIn only attributes a conversion to a campaign the rule is explicitly associated with — a mapped-but-unassociated rule can accept events and still show zero conversions in Campaign Manager. Associate each rule to its campaigns there (or let Adsidian do it when campaigns sync).

If you'd rather finish account setup before creating rules, the wizard's Skip — configure later option saves the connection without any mapping; reopen Reconfigure LinkedIn Ads once rules exist.

Draft-then-publish for clients connected later

Every LinkedIn create — from the dashboard or from the AI agent — is DB-first: a row is written immediately regardless of connection state. What happens next depends on the client:

  • Already connected (live token + picked ad account): campaign and ad-group levels push to LinkedIn synchronously. The ad/creative level pushes too, once the client's Company Page URN is set (see above) — otherwise it stays a draft.
  • Not connected yet, or still in demo mode: everything stages as a draft (pending).

The moment a client's LinkedIn connection goes live — right after OAuth completes, and again after the ad account is picked — Adsidian automatically flushes every accumulated draft for that client, in dependency order (campaigns → ad groups → ads), so nothing needs to be manually republished.

What syncs, and how often

Once connected, Adsidian syncs the account on the same schedule as Meta, Google, and Reddit: campaigns, ad groups (the LinkedIn "campaign" level), ads, and daily spend/impressions/clicks/conversions, refreshed daily by default with an hourly option per client.

What the AI agent can do

Through chat, the agent can create a LinkedIn campaign, ad group, or ad — always staged as a pending mutation the user must explicitly approve, following the same draft/push rules described above.

The agent can also pause, resume, and rename existing LinkedIn campaigns and ad groups through the same cross-platform tools it uses for Meta, Google, and Reddit — each change staged for your approval first.

Budgets are set at creation

LinkedIn budgets live on the ad group and are set when it's created. To change one, create a replacement ad group (the agent can do this) or edit it directly in LinkedIn Campaign Manager — there's no in-chat budget edit for LinkedIn.

Server-side conversions — rolling out

LinkedIn's Conversions API delivery is built end-to-end in Prism — click-ID matching (li_fat_id, captured from the URL the same way gclid/fbclid/rdt_cid are), hashed-email matching, deduplication against a browser-side LinkedIn Insight Tag, and dispatch to LinkedIn's conversionEvents endpoint — but it isn't delivering live traffic yet. It's gated behind a platform-level configuration step that hasn't been completed, and there's no per-client toggle to turn it on yet either. Delivery will switch on for existing connected clients automatically once that lands — no reconnection or wizard re-run will be needed.

Troubleshooting

SymptomLikely cause / fix
Campaigns/ad groups are live but ads stay draftedThe client's Company Page URN isn't set — see The Company Page requirement above.
"Re-authorization needed" bannerThe refresh token is within 60 days of its 365-day hard expiry (or has passed it) — reconnect via the wizard.
A mapped conversion rule shows zero conversionsThe rule exists and events are reaching it, but it isn't associated to the campaign in Campaign Manager.
No conversion rules to pick fromNone exist yet on the account — see Creating rules in Campaign Manager.
Ad account list is emptyThe authorizing member needs an account role (Account Manager or Campaign Manager) on at least one LinkedIn ad account.
Drafts from before connecting never appeared in LinkedInConfirm the client actually completed OAuth and picked an ad account — both trigger the automatic draft flush; either alone won't.

Next

Adsidian Prism — first-party server-side tracking.