adwarp

Start with 1 prompt

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.
adwarp
GitHub

Start with 1 prompt

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.

LinkedIn Audience Network, and why Adwarp turns it off

What the setting does and costs, how to switch it off or test it fairly, and the Audience Expansion box on the same page.

By Updated 11 min read

LinkedIn Audience Network shows your Sponsored Content on third-party apps and sites, with the same targeting, bid and budget as the ad set it belongs to. LinkedIn switches it on for every new single image, carousel, document and video ad set (LinkedIn Help). If the ad set is aimed at a set list of accounts or roles, turn the network off and clear the Audience Expansion box on the same setup page. Switch the network back on only as a test you can measure.

What LinkedIn Audience Network is

LinkedIn describes the network as a way to extend an ad set's reach past the feed, to members on third-party apps and sites whose settings allow it (LinkedIn Audience Network help page). The placements are native and interstitial, on a vetted list of approved publishers (Audience Network FAQs).

Fig. 01The same single image ad in the LinkedIn feed and on a partner app, where it shows up as a native slot inside the app's content or as a full-screen interstitial.

Serving starts with the publisher. An app or site with an ad slot to fill sends a bid request to bidders, LinkedIn among them. A signed-in member who fits your targeting is the easy case, and LinkedIn can serve the ad. When nobody is signed in, LinkedIn may use a model to estimate whether the request probably comes from a member who fits.

Fig. 02How an ad reaches a partner app: the publisher sends a bid request, and LinkedIn either matches a signed-in member or uses a model to estimate a signed-out one.

That model reads cookies, the Google Ad ID on Android, user agent, IP address, timestamp, page URL or app name, and hashed emails. LinkedIn keeps this observation data for up to 90 days and pseudonymizes it before use. In the European Economic Area and Switzerland it doesn't collect third-party visit data for the model, except from advertisers' own sites that run the Insight Tag with consent (help page).

Which formats can run there

Only 4 formats are eligible, and everything else stays in the feed.

Fig. 03Single image, carousel, document and video, drawn side by side: the only ad formats LinkedIn places on the network.
Ad format, Runs on the Audience Network, Source
Ad formatRuns on the Audience NetworkSource
Single imageYesa425378
CarouselYesa425378
DocumentYesa425378
VideoYes, as outstream and in-stream placementsa425378, a418906
Text, message, conversation and dynamic adsNo, they aren't among the 4 eligible formatsa425378
An eligible ad with a LinkedIn Event URLNo, it runs in the feed onlya425378

Cost

There's no separate price for the network. LinkedIn honors your bid and budget across LinkedIn and the partner sites, and the FAQ mentions no extra charge. More impressions become available, so an ad set can run through its budget faster (Audience Network FAQs).

You can't buy the network on its own, either. LinkedIn has no way to run an ad set only off LinkedIn, so a checked box means partner apps and sites in addition to the feed.

Why Adwarp turns it off

Every ad set Adwarp creates has the network switched off (safety page), for 5 reasons. The first 4 come from LinkedIn's own help pages, and the last is Adwarp's call.

  1. LinkedIn checks the box on every new single image, carousel, document and video ad set (a420372). Unless someone clears it, the network spends.
  2. LinkedIn relies on signals from publishers, and where a publisher's compliance with Media Rating Council guidelines hasn't been validated, Audience Network impressions and clicks aren't accredited by the council (a423409).
  3. Conversions from network placements are reported at ad set level only. You'll also see rows marked Uncategorized, where LinkedIn doesn't know which placement the impression came from (a418906).
  4. The network needs a call-to-action button with a destination URL. When an ad has none, LinkedIn adds one for network placements, which affects the Clicks to Landing Page metric (a423409).
  5. An account-based ad set has a fixed list and a budget set for that list. Adwarp would rather spend all of it in the feed, where the audience was sized and every metric reads down to the ad.
Fig. 04Where conversions show up: network conversions stop at ad set level, and Uncategorized rows have no known placement at all, so the ad-level read you use to pick winners has a hole in it.

When leaving it on can make sense

The network adds reach, so it fits ad sets where reach is the goal. LinkedIn suggests at least 300,000 members for Sponsored Content (audience size help page), and on a broad awareness ad set that size, more impressions is the whole idea. Video is the other case: network video runs as outstream and in-stream placements, and the Placements breakdown separates the 2 in reporting (a423409).

Fig. 05On partner sites, network video runs outstream, in its own player within an article, or in-stream, inside the player of the publisher's own video.

LinkedIn's product page argues for the network with customer quotes. Susie Hamlin, RingCentral's vice president of brand activation, says it lets the company "zero in on core audiences and engage them across other trusted sites." HP's quote, from its head of global media, praises LinkedIn's data in general. There's no number on the page to check either one against.

Goal and audience, Audience Network, Why
Goal and audienceAudience NetworkWhy
Account list, or decision makers at 1 companyOffA fixed list and a fixed budget, judged ad by ad
Retargeting a matched listOffThe list is already sized, and network conversions can't be read by ad
Precise roles, judged on demos or leadsOff, or a measured testNetwork conversions show at ad set level only
Brand awareness, 300,000 members or moreOn, as a testReach is the goal, at the size LinkedIn suggests for Sponsored Content
Video viewsOn, as a testOutstream and in-stream placements, split out in reporting

How to turn it off

The box sits in the ad set's Placements section, and you can clear it while you build an ad set or later on a running one. These steps follow LinkedIn's help page on enabling and disabling the network.

Fig. 06The Placements section of an ad set, with the LinkedIn Audience Network box cleared and the feed left as the only placement.

On a new ad set

  1. In Campaign Manager, open your ad account.
  2. Click Create in the left menu, then Ad set or ads.
  3. Set the campaign, name, objective and target audience.
  4. Under Ad formats, pick single image, carousel, document or video.
  5. Under Placements, clear the LinkedIn Audience Network box.
  6. Finish the ad set as usual.

While you're on that page, clear Enable Audience Expansion in the Audience section too (more on that below).

On a running ad set

  1. In Campaign Manager, open your ad account and click Advertise in the left menu.
  2. In the Campaigns tab, click the campaign name.
  3. In the Ad sets tab, hover over the ad set and click Edit.
  4. Under Placements, click Change and clear the LinkedIn Audience Network box.
  5. Scroll to the bottom and click Next.

This works after launch, since LinkedIn locks only the objective and the ad format once an ad set is live (editing an ad set).

Through the API

In LinkedIn's Marketing API an ad set is called a campaign, and the network is the field offsiteDeliveryEnabled. It's required on every new ad set and has no default, so each create request has to say true or false. audienceExpansionEnabled is optional and defaults to false. The same page notes that offsiteDeliveryEnabled can't be true on a Lead Generation campaign (Create and Manage Campaigns, Microsoft Learn, version 2026-10).

adCampaigns request body (excerpt)
{
  "type": "SPONSORED_UPDATES",
  "offsiteDeliveryEnabled": false,
  "audienceExpansionEnabled": false
}

For getting API access itself, see the LinkedIn Ads API guide.

If you keep it on: block lists and category exclusions

If the network stays on, decide where it can run. Start with LinkedIn's publisher list, which names the apps and sites in the network (downloading the publisher list):

  1. In Campaign Manager, open your ad account.
  2. Click Account settings in the left menu, then Brand safety.
  3. On the LinkedIn suitability controls tab, click Edit in Block and allow lists.
  4. Click Download publisher list and choose Web and mobile app list. The other choice covers connected TV ad sets.

The list arrives as a CSV file. LinkedIn notes that publishers can join or leave the network before the file reflects it, so download a fresh copy before each review. Then take LinkedIn's list template, add the publishers you want to block or allow, and apply the list to every active ad set in the account or only to the ones you pick.

Fig. 07The publisher list as a wall of apps and sites, with a block list taking some of them out before your ads can run there.

The network help page adds 2 more controls:

  • You can exclude publishers by Interactive Advertising Bureau category. The categories come from Pixalate and can change during a run, so LinkedIn says to review them regularly.
  • If you use DoubleVerify Pinnacle profiles, you can import them for Audience Network ad sets, by request through your LinkedIn sales representative.

Lists apply account-wide from the Brand Safety & Suitability Hub, or to 1 ad set while you create it. In Business Manager you can share a list across ad accounts.

Fig. 08A block or allow list can cover 1 ad set as you build it or every ad set in 1 ad account, and Business Manager can share it with your other ad accounts.

How to test it fairly

Build 2 ad sets with the same targeting, ads, bid and budget, and turn the network on in only 1 of them. Since the network can't run alone, the second ad set tests the feed plus the network. Compare the 2 at ad set level, the only level where network conversions are reported (a418906).

Fig. 09A fair test weighs 2 matching ad sets against each other at ad set level, and waits for enough conversions on each side before calling it.

To read the split in Campaign Manager, click Advertise, open the Ad sets tab and pick On/Off Network in the Breakdown dropdown. Rows for On LinkedIn and Audience Network appear under each ad set. For a file, click Export and choose Audience network ad performance, a timeframe and a column view.

Fig. 10The ad set report with the On/Off Network breakdown picked, where the ad set's clicks and conversions split into a feed row and a network row.

Each side needs about 1,000 impressions before its clicks mean much, and 3 conversions before you compare cost per conversion. Adwarp's audit skill holds itself to the same floors: no click trend read under 1,000 impressions, no cost per conversion compared under 3 conversions. Running 2 ad sets on 1 audience also puts you in the auction twice, and LinkedIn doesn't publish how it handles 2 bids from the same advertiser, so a small gap between them is probably noise.

The linkedin-ads-audit skill runs this check across a whole account. It fails an ad set when the network takes 25% of the spend or more and costs over 2 times as much per conversion as the feed, or when it has spent 2 times the feed's cost per conversion without a single conversion. It also fails Audience Expansion on any ad set built on a matched list. Here it is on the skill's made-up example account:

claude ~ northwind audit

> Run the LinkedIn Ads audit on ./northwind-export and show me the delivery checks.

Northwind Analytics is the skill's made-up example account. 9/19 to 10/18, USD.

D1 fail ABM Tier 1 (402115004): Audience Expansion on a matched company list

D2 fail Finance Leaders (402115002): Audience Network took $793.28 (28%), 0 conversions

On LinkedIn: $254.99 per conversion

D2 warn Data Teams US Guide (402115003): 35% of spend, no conversions to compare

Fix: edit the ad set > Placements > Change > clear LinkedIn Audience Network > Next

The linkedin-ads-pause-rules skill reads the same export before it pauses a creative. A low click-through rate can come from the partner apps rather than the feed, and the export shows which.

Audience Expansion, the other box

Audience Expansion shows your ads to members with attributes similar to your target audience (LinkedIn Help on audience expansion). In LinkedIn's example, an ad set that targets the skill Online Advertising might also reach members who list B2B Marketing. It's turned on automatically wherever it's available, and LinkedIn pitches it for awareness and consideration. Dynamic formats (follower, spotlight and jobs ads) can't use it, and neither can auto-generated audiences such as Auto-Targeting, buyer groups and predictive audiences.

Fig. 11Audience Expansion draws a ring of similar members around the audience you targeted, and the forecast only counts the inner circle.

On a precise ad set, 2 details work against you:

  • The forecast leaves expansion members out. The audience size in Forecasted Results, and in saved audience counts, covers only the people you targeted.
  • Reporting mixes the 2 groups. Performance and demographic metrics combine your audience with the expanded one, and no breakdown separates them.

LinkedIn won't expand into attributes you've excluded. On an account-based or matched-list ad set, expansion still reaches similar people at companies that aren't on the list, which undoes the reason you built it. To turn it off, edit the ad set and clear Enable Audience Expansion in the Audience section.

Audience Network and Audience Expansion compared

Fig. 12An ad set draft with both boxes cleared, Audience Expansion up in the Audience section and the Audience Network further down under Placements.
Compared on, LinkedIn Audience Network, Audience Expansion
Compared onLinkedIn Audience NetworkAudience Expansion
ChangesWhere the ad shows: partner apps and sitesWho sees it: members similar to your audience
Starting value in Campaign ManagerOn for new single image, carousel, document and video ad setsOn wherever it's available
Setting locationPlacements sectionAudience section, Enable Audience Expansion
Marketing API fieldoffsiteDeliveryEnabled, required, no defaultaudienceExpansionEnabled, defaults to false
How to measure itOn/Off Network breakdown and the Audience Network exportNo split; reporting combines both audiences
Adwarp's settingOffOff

Put it to work

LinkedIn Ads

Adwarp creates LinkedIn ad sets from your terminal as drafts, with the Audience Network and Audience Expansion both off.

adwarp.dev/linkedin-ads

By Stan Rymkiewicz, maintainer of adwarp. Published November 7, 2026.

FAQ

Questions Short answers, with sources.

Ask on GitHub
What is LinkedIn Audience Network?

It's a placement that carries Sponsored Content from the LinkedIn feed to third-party apps and sites, using the ad set's own targeting, bid and budget. The placements are native and interstitial, on a vetted list of approved publishers. Single image, carousel, document and video ads are eligible.

LinkedIn Audience Network help page

Is LinkedIn Audience Network on by default?

Yes. Campaign Manager checks the box for every new single image, carousel, document and video ad set. In the Marketing API the field offsiteDeliveryEnabled has no default, so every create request has to set it.

Enable or disable the network

Should B2B advertisers turn it off?

Turn it off on ad sets aimed at a set list of accounts, a matched list or precise roles, where the budget is small and you judge results ad by ad. It can stay on, as a measured test, for broad awareness or video ad sets built for reach.

Which apps and sites show the ads, and can I see the list?

Yes. In Campaign Manager, open Account settings, then Brand safety, click Edit in Block and allow lists on the LinkedIn suitability controls tab, then Download publisher list and choose Web and mobile app list. Publishers can join or leave the network before the file catches up, so download it again before each review.

Download the publisher list

Does video run on the Audience Network?

Yes. Video is 1 of the 4 eligible formats and runs as outstream and in-stream placements. The Placements breakdown in reporting shows which of the 2 each impression came from.

Does the Audience Network cost more?

There's no separate price. LinkedIn honors the ad set's bid and budget across LinkedIn and the network, and more impressions become available, so the ad set may spend its budget faster.

Can I run ads only on the Audience Network?

No. LinkedIn doesn't let an ad set run only off LinkedIn. With the network on, the ads can show on partner apps and sites in addition to the feed.

Why is my small account-based campaign not spending, and should I turn the network on to fix it?

LinkedIn needs at least 300 member accounts to serve an ad set at all and suggests 50,000 to drive results, so a list of a few thousand people delivers slowly by design. Turning the network on will spend more of the budget, but on partner apps whose conversions show only at ad set level, so check the bid and the audience size first.

LinkedIn on audience size

What is Audience Expansion, and should it be off?

Audience Expansion shows your ads to members with attributes similar to your target audience, and LinkedIn turns it on wherever it's available. The forecast leaves those members out while reporting mixes them in, so clear Enable Audience Expansion in the Audience section of any account-based, matched-list or precise-role ad set.

LinkedIn Help on audience expansion

Is this the same as Meta's Audience Network?

No. Meta's Audience Network is Meta's own network for showing ads in third-party mobile apps, introduced in 2014 to extend Facebook campaigns. They're separate products with separate settings, so turning off LinkedIn's has no effect on your Meta ads.

Meta's 2014 announcement

Free and open source MIT licensed. Run it locally, self-host the endpoint, or read every line on GitHub.

$ claude mcp add adwarp -- npx -y adwarp mcp

Read the docs

GitHub