
LinkedIn Ads
Average LinkedIn CPM and How to Benchmark B2B Campaign Costs
The median LinkedIn CPM in 2026 from our own data, why it moves with format, audience and industry, and how to benchmark your B2B campaigns against it.
Three free Claude marketing skills for LinkedIn Ads: find wasted spend, catch creative decay and list warm accounts for sales. Copy-paste prompts inside.
Search for Claude marketing skills and you’ll find long lists: SEO audits, landing page copy, CRO checklists, a cold email writer or two. Paid LinkedIn gets one generic “ads audit”, if it shows up at all.
LinkedIn Ads has its own ways of misleading you, though. A Spotlight ad looks broken on CTR when it’s doing exactly the job it was bought for. A CTR that slid for two weeks gets called fatigue when the whole campaign dipped with it. And the companies that clicked your ads three times last month never reach sales, because nobody checked them against the CRM.
Ask a general AI assistant about your campaigns and it will happily walk into all three. It reads the numbers it’s given, applies whatever rule of thumb sounds right, and gives you a confident answer that fits any campaign rather than yours.
This article covers three Claude skills written for those traps: one for wasted spend, one for creative decay and one for warm accounts that never became pipeline. They’re free, open files from the B2B AI Standard for LinkedIn Ads, written by the DemandSense team. Each runs on Campaign Manager exports you attach to a chat, or on your account through DemandSense MCP with no exports at all. For each one you’ll find what it needs, how to run it, what it checks and what to do with the answer.
A skill is a folder with a SKILL.md file in it. The file tells Claude when to use the skill, what data to ask for, which method to follow and what the answer should look like. Claude keeps only the short description of each installed skill in mind and loads the full instructions when your request matches one, so you can install dozens without crowding the conversation.
The difference from a saved prompt is in the rules. A prompt says “find wasted spend”. A skill says which campaigns can’t be called waste (an awareness campaign with zero leads is doing its job), how many clicks a figure needs before it means anything, and what to check before anyone recommends a pause. That’s the part a general model gets wrong on LinkedIn data, and the part you’d otherwise retype every time you ask.
Skills also travel. The same SKILL.md runs in Claude.ai, the Claude desktop app and Claude Code, and other assistants can read it too, so a method your team agrees on stays the same no matter who runs it.
You don’t have to install anything to try a skill. Every section below has a prompt that tells Claude to load the skill straight from GitHub, so you can paste it into any chat with your exports attached.
If you’ll use the skills every week, installing them saves the pasting:
demandsense-labs/linkedin-ads-skills and sync. Then open LinkedIn Ads Skills in your plugin list and click Add. The skills then work in chat, in Cowork and in Claude Code./plugin install linkedin-ads-skills --marketplace demandsense-labs/linkedin-ads-skills, then ask for what you need in plain words (“where are we wasting budget”) or call a skill by name, for example /linkedin-ads-skills:waste-budget-detection.Codex, Cursor, Gemini CLI and GitHub Copilot can install the same files with Vercel’s skills CLI: npx skills add demandsense-labs/linkedin-ads-skills.
A skill is only as good as the data it reads, and there are two ways to give it that data.
With exports, you download the reports a skill asks for from Campaign Manager (and from your CRM, where needed), attach them to a chat and paste the prompt. It works on any Claude plan. The skills already know how Campaign Manager writes its CSV files, including the UTF-16 encoding and the report-info lines above the header, so there’s nothing to clean first. What you get is a snapshot: the answer is as current as the moment you exported, and for checks that need several sources, you’re the one lining up the files.
With DemandSense MCP, you connect DemandSense to Claude once, and the same skills read your LinkedIn ads data, identified website visitors and CRM status from your DemandSense workspace. There are no files to export, nothing is a week old by the time you open it, and you don’t match companies across tools by hand. MCP comes with every DemandSense plan and with the 30-day free trial, and this guide to analyzing LinkedIn Ads with Claude shows how to connect it.
The difference is small for the first skill and large for the third. Finding warm accounts with no deal depends on LinkedIn engagement, site visits and CRM status sitting in one shared context. With exports, that’s three files from three tools.
Wasted LinkedIn spend rarely looks like waste in Campaign Manager. Every campaign sits in the same table with the same columns, so a zero in the leads column means one thing for a lead gen campaign and something else entirely for a video campaign built for reach. Sort by spend, scan for zeros, and you’ll pause the wrong things: the awareness campaign that was feeding your retargeting, or the two-week-old test that hadn’t had a chance yet.
Waste Budget Detection reads the last 30 days the way a careful specialist would. It sorts campaigns by what they were built to do, checks whether tracking is working before it blames any campaign, and only then ranks the real candidates by spend.
Waste Budget Detection
Finds LinkedIn campaigns that spent money in the last 30 days without producing what they were built for, and says what to pause or fix first.
By DemandSense · reads your data, changes nothing
An ad set performance export for the last 30 days with status, objective, daily budget, spend, impressions, clicks, leads and conversions. The 30 days before is optional, for a comparison.
Waste candidates ranked by spend with a pause or fix call, a tracking check, campaigns that are too new or too thin to judge, and the ones not built to produce leads.
Load the Waste Budget Detection skill from https://github.com/demandsense-labs/linkedin-ads-skills/tree/main/waste-budget-detection and run it on the exports I've attached.Load the Waste Budget Detection skill from https://github.com/demandsense-labs/linkedin-ads-skills/tree/main/waste-budget-detection and run it on my DemandSense workspace. Pull the data through the connector rather than asking me for exports.
That first check follows one of the Standard’s rules: judge Text, Spotlight and Follower ads on reach and CPM, not CTR. Those formats are there for cheap visibility, so clicks are the wrong measure for them.
The answer opens with a summary of every campaign that spent, split into waste candidates, campaigns built for something else, and ones too new or too thin to judge, with the dollars in each group. Below it is a table of real candidates, ranked by spend, each marked pause or fix.
If the skill flags tracking, stop there and fix it, because no pause decision means anything while conversions aren’t being counted. Otherwise, work from the top of the list. Pause only what’s marked pause: not new, not thin, tracking working, real money spent. For everything marked fix, the skill names what to look at (audience size, creative, landing page, tracking or bid) and asks what changed in your account, since an export can show a drop but not the reason behind it. Each item also says what would confirm the call, for example 14 more days with at least 30 clicks.
Creative fatigue is the most common diagnosis in LinkedIn Ads and one of the least checked. CTR drops, someone says “the audience is tired of it”, and a new batch of ads goes into production. Sometimes that’s right. Often the ad was fine and the whole campaign dipped, or the ad was too new to judge, or the “drop” was one slow week.
Creative Decay Watchlist separates those cases. It looks at each ad week by week over 120 days, flags only declines that hold, and compares every flagged ad with the other ads in the same ad set before it blames the creative. It also lists the ads that improved with age, so they don’t get swapped out with the tired ones.
Creative Decay Watchlist
Finds LinkedIn ads whose CTR has slid for weeks, tells a tired ad from a campaign-wide dip, and lists the ads that got better with age.
By DemandSense · reads your data, changes nothing
An ad performance export for the last 120 days with a daily breakdown and the format and video columns. For a fatigue call: each campaign’s average frequency over 90 days.
Flagged ads with the week the decline started and the spend since, a watchlist, a keep list, campaign-wide dips, and a separate table for coverage formats.
Load the Creative Decay Watchlist skill from https://github.com/demandsense-labs/linkedin-ads-skills/tree/main/creative-decay-watchlist and run it on the exports I've attached.Load the Creative Decay Watchlist skill from https://github.com/demandsense-labs/linkedin-ads-skills/tree/main/creative-decay-watchlist and run it on my DemandSense workspace. Pull the data through the connector rather than asking me for exports.
The last check is the Standard’s rule call it fatigue only when frequency is high and CTR keeps falling. Either signal on its own isn’t fatigue.
You get counts that add up, then a table of flagged ads with the CTR in their first and latest four weeks, the week the decline started and the spend since. Under it sit the watchlist, the keep list and any campaigns where every ad fell together.
Replace the flagged ads with the most spend since their decline started, and confirm frequency in Campaign Manager before you swap anything. For a campaign-wide dip, look at the audience and the offer before you brief new creative. Leave the keep list alone: ads whose CTR improved 30% or more have often picked up likes and comments that make them cheaper to run, so they stay on until the data says they’re tired.
Most B2B teams have more warm accounts than they realize. Companies click the ads, come back to the site, read the pricing page, and then nothing happens, because the engagement lives in Campaign Manager, the visits live in a visitor identification tool, and the deals live in the CRM. Nobody lines the three up, so nobody tells sales.
No-Deal Warm Leads Finder does the lining up. It takes the companies that engaged with your ads or site in the last 90 days, drops existing customers and anyone with an open deal, screens out the companies that look engaged but will never buy, and ranks the rest in tiers by how real their interest is.
No-Deal Warm Leads Finder
Lists the companies engaging with your LinkedIn ads or website that have no open deal and aren't customers, ranked by how real their interest is.
By DemandSense · reads your data, changes nothing
A Companies export from Campaign Manager (last 90 days), CRM companies and deals, and a visitors-by-company export from your website visitor identification tool if you have one.
A top-20 list in tiers (companies engaged on both channels first), a short check-by-hand list, a count of what was screened out, and the full list as a CSV when it’s long.
Load the No-Deal Warm Leads Finder skill from https://github.com/demandsense-labs/linkedin-ads-skills/tree/main/no-deal-warm-leads-finder and run it on the exports I've attached.Load the No-Deal Warm Leads Finder skill from https://github.com/demandsense-labs/linkedin-ads-skills/tree/main/no-deal-warm-leads-finder and run it on my DemandSense workspace. Pull the data through the connector rather than asking me for exports.
You get a top 20 in tiers, a check-by-hand list grouped by reason, and a count of everything that was screened out. Send Tier 1 and the top of Tier 2 to sales every week, with how each company engaged and where it sits in the CRM. That’s the Standard’s rule give sales a weekly ranked list of warm accounts, checked against the CRM, and the opposite of forwarding a raw visitor feed. The check-by-hand list stays with marketing.
One limit to keep in mind: the list shows interest, not fit. If you need it filtered by your ICP before it goes to sales, Justin Rowe’s Warm-lead handoff scenario, covered next, does that.
The three skills above are DemandSense’s. The B2B AI Standard also publishes skills and scenarios from LinkedIn Ads specialists: the checks they run on client accounts, written so Claude can run them on yours. They work the same way, with exports or through DemandSense MCP.
If you ran the warm leads skill, Justin Rowe’s Warm-lead handoff is the natural next step. It keeps only the accounts that fit your ICP, matches them to the CRM and writes one handoff line per account, so sales knows who to call this week. Joshua Stout’s Company-level account routing shows which companies take most of your impressions and which target accounts barely see you, and AJ Wilcox’s Cost per retargetable member works out what it costs to add one person to your retargeting audience. The rest are in the full collection.
The more LinkedIn Ads work goes through AI, the more everyone ends up writing their own rules for it: what to ignore, what context the numbers need, when a drop is a real problem. Most of those rules live in someone’s head or in a prompt they keep in a note.
Get the answer that fits your campaigns, not any campaign
The Standard puts the rules of people who run LinkedIn Ads every day in one place: 15 rules, each saying what LinkedIn does by default and what to do on top of it, plus the skills and scenarios that apply them, from DemandSense and 11 expert authors. Everything is free to use and adapt under CC BY 4.0. If you run a check that isn’t there yet, submit it and it’s published under your name.
They’re folders of instructions, each with a SKILL.md file, that tell Claude how to do a specific marketing task: what data to ask for, which method to follow and what the answer should include. Claude loads a skill when your request matches it, so the method stays the same every time you run it.
No. In Claude.ai you can paste a skill’s prompt into a chat with your exports attached, or upload the skill’s ZIP under Customize → Skills. Claude Code is one more place to run them, with a single install command for the whole collection.
Yes. Every skill and scenario in the B2B AI Standard is free to use and adapt under CC BY 4.0, as long as you credit the author. Running them through DemandSense MCP needs a DemandSense account, and the 30-day trial needs no card.
No. They read the data you attach or connect and give recommendations. None of them can pause a campaign, change a budget or edit anything in your CRM.
The prompts work in any assistant that can read a web page, since the skill files are public on GitHub. Codex, Cursor, Gemini CLI and GitHub Copilot can also install the SKILL.md files directly with Vercel’s skills CLI.
Filed under
Written by
Kristina Haidai

LinkedIn Ads
The median LinkedIn CPM in 2026 from our own data, why it moves with format, audience and industry, and how to benchmark your B2B campaigns against it.
Kristina Haidai
•Oct 27, 2026
•15 min read

LinkedIn Ads
Tools & Comparisons
Compare LinkedIn automation tools for B2B marketing and ads: what each automates, how it connects to LinkedIn, which CRMs it supports, and what it costs.
Iurii Znak
•Oct 22, 2026
•19 min read

LinkedIn Ads
How to build a B2B target audience profile for LinkedIn Ads: the ICP, the buying group, the data that defines them, and how to turn it into campaigns.
Kristina Haidai
•Oct 16, 2026
•13 min read
Get expert insights and strategies delivered to your inbox weekly.