# LinkedIn Ads Claude Code Integration: How to Analyze Campaigns Without CSV Exports

> How to connect LinkedIn Ads to Claude Code through an MCP server, what you can ask, and how to build reports, dashboards, and alerts without exporting a single CSV.

Author: Emilia Korczynska
Published: 2026-06-22
Updated: 2026-07-04
Categories: For LinkedIn Ads
Source: https://zenabm.com/blog/linkedin-ads-claude-code-integration

---

![LinkedIn Ads Claude Code Integration: How to Analyze Campaigns Without CSV Exports](https://cdn.zenabm.com/media/Gemini_Generated_Image_5n5j6r5n5j6r5n5j-1-e1782226507533.png)

Most LinkedIn ad reporting still runs the way it did five years ago: open Campaign Manager, set a date range, export a CSV, and rebuild last week’s pivot table in a sheet.

A LinkedIn Ads Claude Code integration removes those steps because a question in plain English pulls live campaign data and returns a structured answer on the spot.

There is no official version, though.

LinkedIn does not ship a connector for Claude, and Claude Code cannot read Campaign Manager on its own, so the real connection runs through a Model Context Protocol (MCP) server that sits on top of the LinkedIn Ads API, such as [ZenABM’s MCP server](/mcp).

Connect it once, and every future question about the account, from your top ad sets to which accounts sales should call today, takes one sentence instead of an afternoon.

![Claude confirms the ZenABM MCP server is connected, listing 50+ tools for campaigns, accounts and metrics](https://cdn.zenabm.com/media/zenabm-mcp-server-setup-claude-2.png)

## LinkedIn Ads Claude Code integration: quick summary

Short on time?

Here’s a quick summary:

- **There is no native LinkedIn Ads Claude Code integration.** The connection runs through a third-party MCP server that reads the LinkedIn Ads API, such as the [ZenABM MCP server.](/mcp)
- **What it replaces:** CSV exports, manual dashboards, and pivot tables. Ask Claude Code a question and get a structured answer from live data.
- **What you can actually do with it:** ask ranked performance questions (top ad sets, decaying ads to pause), pull ABM program summaries with pipeline by campaign, surface the accounts showing the strongest buyer intent for sales, and have Claude Code build recurring reports, internal dashboards, and red-flag alerts on a schedule, and a lot more – all in plain English.
- **Why [ZenABM](/multichannel-attribution) specifically:** it joins company-level LinkedIn ad engagement to the CRM, so Claude Code can reason about accounts, ABM stages, deals, and pipeline rather than only impressions and clicks.
- **Two metrics absent from Campaign Manager:** eCTR (effective click-through rate to the landing page) and eCPC (effective cost per landing-page click).
- **Safe by design:** read questions change nothing, and any write action, like pausing an ad, asks for explicit confirmation first.
- **Setup:** connect over OAuth or an API token in about five minutes. Starts at $59 a month with a 37-day free trial.

## What you can ask Claude Code once LinkedIn Ads is connected

Before I talk about the setup, let’s discuss what you can do using the LinkedIn ads Claude code integration, so you can know whether it’s worth it.

So, once the integration is live, you ask a question, and Claude Code picks the tools.

Below are the questions that map most directly to decisions, grouped by what they help resolve.

### Ad performance

- Which ad formats and ads are the top performers by eCTR, with impressions, spend, clicks, CTR, landing-page clicks, eCTR, and eCPC side by side?

LinkedIn ads performance answer returned through the Claude MCP integration
- Which ads drove the most landing-page clicks this month?
- Which ads are underperforming, with the fewest clicks and the highest eCPC?
- Show a decaying-ads report: which ads have a declining eCTR for two or more consecutive weeks above 1,000 impressions, and should be paused?

Performance questions come back as ranked tables that can be acted on directly rather than walls of metrics.

Here is the same kind of request answered inside Claude Cowork, with formats sorted by eCTR.

### ABM program summary

- What happened in the ABM program this period, and is the account trending up or down on pipeline, deals, closed-won, and pipeline per dollar versus last period?

ABM campaign performance answer from the LinkedIn Ads Claude Code integration
- Which [LinkedIn campaigns](/blog/linkedin-matched-audiences) were the most common touchpoints among companies with open deals, and among closed-won?
- What are the top three risks and the top three opportunities right now?

ABM questions are where the CRM joins show its value.

Claude Code returns campaign-level pipeline rather than just ad metrics, so the answer reads like a summary a RevOps lead would produce.

### Accounts, intent, and the sales handoff

- Which accounts show the strongest buying intent this period, and what are the intent topics?
- Which [companies are the most engaged](/faq/see-companies-engaging-with-linkedin-ads), and which are engaging for the first time?
- Which accounts should sales reach out to now, and which contacts should SDRs prioritize today?

This bucket is built for the handoff to sales.

Claude Code pairs each engaged account with the intent topics it is showing, so a rep opens with the specific thing the account is researching rather than a generic pitch.

[ZenABM tracks buyer intent](/company-buyers-intent) qualitatively per account, recording which messaging has resonated most, which gives that handoff more precision than a simple engagement score alone.

![ZenABM revenue metrics dashboard showing LinkedIn-influenced pipeline by month and ABM campaign effectiveness](https://cdn.zenabm.com/assets/company-buyers-intent-in-ZenABM.gif)

![Claude chat using the ZenABM MCP server to list buying-intent and top-engaged accounts with intent topics](https://cdn.zenabm.com/media/ZenABM-MCP-server-intent-top-engaged-companies.png)

### Budget and exclusions

- Which ad sets are overspending with the lowest eCTR, and which should be paused versus scaled?
- Which non-ICP job titles received overspend, and which ICP personas are underpenetrated?
- Which companies [waste spend](/blog/linkedin-ad-performance-audit-claude-code) with the most impressions and the least engagement, so they can be excluded or capped?

Each of those maps to a real decision.

The decaying-ads report shows what to refresh before it burns another month of budget.

The exclusions question quietly pays for itself, because capping the handful of accounts hogging impressions without engaging frees real budget for accounts that actually move.

For the strategy behind these plays, the [guide to running ABM on LinkedIn](/blog/running-abm-on-linkedin-the-ultimate-guide) covers the program design that the data sits on top of.

## Beyond questions: dashboards, reports, and apps you can build

One-off questions are the obvious use of the integration, but not the most valuable one.

Because Claude Code is an agent that can write files and run code, it can build things that read [LinkedIn Ads data](/blog/automating-linkedin-ad-data-into-crm) on a schedule rather than answering once and forgetting.

These are the builds that produce the most compounding value.

- **Recurring reports.** A single prompt can generate the weekly [LinkedIn ABM](/blog/linkedin-abm) report covering top performers by eCTR, decaying ads, pipeline influenced, and accounts that moved stage. Save the prompt, and the report runs itself instead of requiring a manual export every Monday.
- **Custom dashboards and apps.** Claude Code can scaffold a small internal dashboard that pulls from the MCP server and renders the charts the team actually looks at. Describe the views, and it writes the app, with data staying live because it reads the API through the server.
- **Red-flag alerts.** Set Claude Code to check for ad sets with rising spend and falling eCTR, or accounts eating impressions without engaging, and write the alert into a file or a Slack message.
- **Slack and Notion updates.** Connect a second MCP server for Slack or Notion, and Claude Code can post the executive summary directly into a channel or page, so the report writes and delivers itself.
- **Follow-up** [outreach sequences. Feed intent and engagement data](/blog/common-room-abm) into a prompt that drafts personalized follow-ups for the accounts showing the strongest signals, turning marketing data into outbound a rep can send.

The pattern underneath all of these is the same.

Once the data is reachable in plain English, the agent can compose it into whatever artifact is needed: a report, a chart, an alert, a message, or a draft.

The compounding value comes from chaining several MCP servers together.

## What a LinkedIn Ads Claude Code integration actually is

Claude Code is Anthropic’s agent that runs in the terminal, and on its own it has no visibility into a LinkedIn ad account because it has never seen any campaigns. A LinkedIn Ads Claude Code integration is the bridge that provides that context, and that bridge is an MCP server.

MCP stands for Model Context Protocol, an open standard that lets an AI tool call external services and pull live data instead of guessing from training data. The MCP server exposes a set of tools, each with a plain-language description, and Claude Code decides which ones to call based on the question asked.

Alex Fine, Co-Founder at Understory, put the idea well in a [post](https://www.linkedin.com/posts/theclayguy_what-exactly-is-an-mcp-and-how-does-it-actually-ugcPost-7389171245218537472-frC_) about why MCP servers are worth reaching for in the first place.

> *“This is what happens when you stop clicking through dashboards and start talking to your data in natural language instead. MCPs are basically secure bridges between Claude and your business tools. Think of them like translators that let you use plain English.”*

[Embedded post](https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:7389171245218537472?collapsed=1)

It is not a plugin installed inside LinkedIn. It is a server pointed at Claude Code once, and after that every conversation in Claude Code can query LinkedIn Ads data. The connection is legitimate because the server reads the official LinkedIn Ads API behind the scenes, so the numbers returned are the same numbers Campaign Manager reports, delivered through a question instead of a CSV.

### Why there is no official integration yet

LinkedIn has not published its own MCP server, and it does not expose [Campaign Manager](/blog/abm-campaigns-with-claude-code) to AI clients directly.

There is also no single LinkedIn Ads API; there are several [marketing APIs](/blog/linkedin-ads-api), and some require an application and days of waiting for approval.

That friction is exactly why most teams connect through a server that has already handled the API work rather than building the plumbing from scratch.

## How the LinkedIn Ads Claude Code integration works

The flow is straightforward once the server is connected.

A question gets typed into Claude Code. Claude Code reads the tool descriptions the MCP server exposes, picks the ones it needs, calls them, and pulls live data from the LinkedIn Ads API and the CRM. The result is a structured answer with no exports, no pivot tables, and no [clicking through Campaign Manager](/faq/see-companies-clicked-on-linkedin-ads).

Under the hood, the server advertises each tool as a JSON schema over the MCP protocol, served on an HTTP transport in ZenABM’s case. Claude Code matches your plain-English question to those schemas, then calls one or several tools in sequence (often a list call to find the right campaign, then an overview call to pull its numbers), gets structured JSON back, and writes the prose answer on top. You never see the individual calls unless you ask for them, which is why there are no endpoints or parameters to manage by hand.

Here is a real example:

**Question:** What were my top-performing ad sets last week?

**Claude Code (via the ZenABM MCP):** The ZenABM tools were loaded, the last seven days of data were pulled, and a ranked table of every active ad set came back, sorted two ways: by efficiency and by reach.

The answer was not just numbers.

It flagged that one ad set dominated impressions but barely drew engagement, and that a small Thought Leader Ads set was the only genuinely efficient unit.

That is the difference between a CSV and an integration: the CSV gives rows, while Claude Code gives the read.

![Claude chat using the ZenABM integration to pull last week's LinkedIn ad set metrics in a table](https://cdn.zenabm.com/media/Top-performing-LinkedIn-ad-set-data-MCP-server-in-outcome.png)

### The tools the ZenABM MCP server exposes

You never call these by name, since Claude Code selects them for you, but it helps to see the surface area, because it maps almost one to one to the questions in the section above. The ZenABM server registers tools in a few families.

| Tool family | What Claude Code calls it for | Example tools |
| **Metrics and spend** | Pull impressions, clicks, CTR, CPM, CPC, eCTR, eCPC, and budget for any date range. | get\_linkedin\_metrics, get\_ad\_spend, get\_creative\_performance |
| **Campaigns and ad sets** | Rank and inspect campaigns and ad sets, with company and job-title breakdowns. | list\_campaigns, get\_campaign\_overview, list\_ad\_sets, get\_ad\_set\_overview, find\_ad\_sets\_or\_campaigns |
| **ABM program and stages** | Read program-level pipeline, stage movement, and which accounts entered or progressed. | list\_abm\_campaigns, get\_abm\_campaign\_overview, get\_abm\_campaign\_stages\_breakdown, get\_abm\_stage\_companies\_progressing, get\_abm\_stage\_history |
| **Accounts and intent** | Pull company-level engagement, timelines, deals, and qualitative buyer intent. | list\_companies, get\_company\_overview, get\_company\_timeline, list\_intents, get\_intent |
| **CRM (deals, contacts, sources)** | Join ad engagement to open deals, contacts, and attribution sources. | list\_deals, list\_contacts, get\_contact, get\_sources |
| **Job titles and personas** | See which personas a campaign reached and which ICP titles are under-penetrated. | list\_job\_titles, get\_job\_title\_overview, get\_job\_title\_campaigns |
| **Write actions (confirmation gated)** | Pause or activate an ad, ad set, or campaign, only after you approve the change. | update\_ad\_status, update\_ad\_set\_or\_campaign\_status |

Everything that starts with get or list only reads data and changes nothing. The two write tools are the only ones that touch ad serving state, and they are gated behind an explicit confirmation, which is the safety model covered in the setup section.

### The CRM join is what makes it useful

A number of LinkedIn Ads MCP servers exist now.

Most of them stop at ad metrics: spend, impressions, clicks, CTR, CPM, CPC.

That is genuinely useful for a quick report, but it is not enough to answer the question leadership actually asks, which is whether the spend produced pipeline.

ZenABM’s server joins company-level LinkedIn ad engagement to CRM deals, and that joined dataset is what lets Claude Code reason about accounts, ABM stages, intent, and closed-won revenue rather than raw metrics alone.

Connecting it is not adding a reporting shortcut; it is giving Claude Code the go-to-market context it was missing.

![ZenABM dashboard showing company-level ads engagement data per campaign by pulling first party intent signals from LinkedIn API](https://cdn.zenabm.com/media/image.png)

![ABM analytics and attribution dashboard in ZenABM](https://cdn.zenabm.com/media/Full-new-ABM-analytics-Dashboard-ZenABM-2026-April.png)

![ZenABM campaign effectiveness dashboard with ROAS, ad spend and influenced pipeline for ABM reporting](https://cdn.zenabm.com/media/ZenABM-ABM-Campaign-Effectiveness-Metrics-LinkedIn.png)

![Claude confirms the ZenABM MCP server is connected, listing 50+ tools for campaigns, accounts and metrics](https://cdn.zenabm.com/media/zenabm-mcp-server-setup-claude-2.png)

### From a question to a follow-up action

![AI assistant chat using the ZenABM integration to answer a question on ABM campaign pipeline and spend](https://cdn.zenabm.com/media/LinkedIn-ads-MCP-server-answering-question-about-ABM-campaign-performance-in-ZenABM.png)

The integration earns its place when one question produces a decision.

A query asking what changed in an ABM program in May versus April returned spend, attributed revenue, and ABM stage movement in a single pass, along with a comparison table showing that attributed revenue climbed from about $148 to roughly $1,720.

The explanation pointed to a mid-May consolidation of several scattered intent campaigns into one that carried most of the new pipeline.

What made it more than a report was the last line. Claude Code recommended a follow-up action: draft the pause for the underperforming text-ad set, or route the engaged accounts to the reps first.

That is the loop that matters.

A question returns a read, the read produces a next action, and that action can be approved on the spot.

The same workflow underpins [benchmark-led reviews](/blog/linkedin-abm-performance-benchmarks-report-2026), where the goal is to compare numbers to a baseline and act rather than admire a dashboard.

## Why analyze LinkedIn Ads in Claude Code instead of Campaign Manager

Campaign Manager is adequate for launching and editing campaigns, but it is slow for answering questions.

The [data sits behind](/blog/tla-benchmarks) filters and date pickers, the views that matter often require an export, and the metrics that are actually useful for B2B (clicks to the landing page, cost per landing-page click, pipeline influence) are not surfaced at all.

There are three concrete reasons to run analysis in Claude Code instead of Campaign Manager.

- **Speed.** A question that would take ten minutes of exporting and filtering takes one sentence. Claude Code pulls the data and returns the answer without any intermediate steps.
- **Better metrics.** A good LinkedIn Ads MCP surfaces eCTR and eCPC. eCTR is the share of impressions that turn into an actual landing-page click rather than a like or a comment, and eCPC is the real cost for each visitor who reached the page. These metrics reveal which ads drive traffic rather than which ads collect vanity engagement.
- **Context Campaign Manager does not have.** When the MCP server joins ad data to the CRM, Claude Code can answer pipeline questions, identifying which [campaigns touched open deals and which accounts](/blog/enterprise-abm) are worth a sales call.

On the metrics point, the gap is large. In the [LinkedIn ABM benchmarks](/blog/linkedin-abm-performance-benchmarks-report-2026), Thought Leader Ads run a 2.68% median CTR at a $2.29 median CPC, while single-image ads sit closer to 0.42% CTR at a $13.23 CPC.

![Performance of different LinkedIn ad formats in ABM campaigns compared based on trends analyzed in ZenABM's ABM benchmarks report 2026](https://cdn.zenabm.com/media/linkedin-ad-formats-abm-performance.png)

Looking only at [impressions in Campaign Manager](/blog/linkedin-ads-impression-capping) makes those two formats appear comparable.

Sorting by eCTR and eCPC in Claude Code makes the difference obvious, and the budget can move accordingly.

## Using the integration to find wasted spend

The most valuable use of the integration is the one that saves money rather than reports it.

[Creative fatigue on LinkedIn](/blog/linkedin-ads-frequency) is gradual.

An ad can slide for weeks before anyone notices in a dashboard, because the weekly numbers only drop a little at a time, and by the time the problem shows up in a monthly review the spend has already been wasted.

A decaying-ads report pulled every week returns the ads whose eCTR has fallen for two or more consecutive weeks above a thousand impressions, which is the early signal of fatigue.

![Decaying ads identified with ZenABM LinkedIn Ads MCP server](https://cdn.zenabm.com/media/underperforming-LinkedIn-ads-decaying-ads-identified-with-ZenABMs-LinkedIn-Ads-MCP-server-.png)

Catching a two-week decline means the creative gets refreshed before it costs another month, and that budget moves to a format still pulling landing-page clicks.

The same report surfaces the ad sets with rising spend and falling engagement, which is the clearest waste signal available.

This is also the bridge to measurement.

Once it is clear which campaigns drive landing-page clicks and which accounts move toward a deal, spend can be connected to revenue.

That is the subject of the [deeper walkthrough on analyzing LinkedIn Ads with Claude Code](/blog/how-to-analyze-linkedin-ads-with-claude-code), which covers the reporting workflows step by step.

## How to set up the LinkedIn Ads Claude Code integration

![ZenABM MCP settings page showing the Claude Code tab with the command to connect the server to Claude Code](https://cdn.zenabm.com/media/How-to-connect-ZenABM-MCP-server-to-Claude-Code.png)

The full path takes about five minutes.

Connect once, and every future Claude Code conversation can query the account.

1. **Start a ZenABM account.** Connect LinkedIn Ads and the CRM so the server has data to expose. Without the CRM connection, ad metrics are still available, but the pipeline context that makes the integration worth it is absent.
2. **Open the MCP page.** The server URL is in the ZenABM account settings: `https://zenabm.com/mcp`.
3. **Authorize with OAuth.** Click connect, approve the access prompt, and Claude Code is linked. For the manual route, add the server to the Claude Code MCP config and paste the API token as a Bearer token in the Authorization header.
4. **Confirm the tools loaded.** [ZenABM](/blog/what-is-zenabm) tools register on demand, so no need to enable each one by hand. Check that Claude Code shows the server as connected.
5. **Ask the first question.** Try “What were my top performing ad sets last week?” and let Claude Code pick the tools, pull the data, and return the answer.

### Adding the server in Claude Code specifically

Claude Code reads the MCP servers from its config.

The fastest route is the command line. Register the ZenABM server once and Claude Code remembers it for every project.

```plaintext
claude mcp add zenabm --transport http https://zenabm.com/mcp
```

By default that command registers the server at local scope, which means it is private to you in the current project. Add `-s user` to make it available in every project on your machine, or `-s project` to share it with your team through a checked-in `.mcp.json` file. Run `claude mcp list` to confirm it is registered.

For manual config editing, add the server to the Claude Code MCP settings with the token as a Bearer header. The block looks like this.

```plaintext
{
  "mcpServers": {
    "zenabm": {
      "url": "https://zenabm.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_ZENABM_TOKEN" }
    }
  }
}
```

After that, type `/mcp` inside Claude Code or simply ask a silly confirmation question like the one I asked here, confirm the [ZenABM](/pricing) server shows as connected, and the tools are listed:

![Claude confirms the ZenABM MCP server is connected, listing 50+ tools for campaigns, accounts and metrics](https://cdn.zenabm.com/media/zenabm-mcp-server-setup-claude-2.png)

If it does not appear, recheck the token and verify the URL has no trailing slash.

The full reference, including the OAuth flow and available tools, lives in the [ZenABM MCP docs.](/docs/mcp)

On safety, this is the part that matters most for a tool running in the terminal. Read questions never change anything. Write actions, like pausing an ad or activating a campaign, are flagged as destructive, so Claude Code asks for explicit confirmation before changing any ad serving state.

The agent cannot quietly turn off a campaign: it proposes the change, the user approves it, and only then does it run.

## LinkedIn Ads Claude Code integration: the takeaway

The bottleneck in most LinkedIn Ads programs is not spend, audience size, or even creative quality. It is the gap between the data and the decision.

By the time a CSV has been exported, pivoted, and reviewed, the account has already moved on, and the insight arrives too late to change anything.

Connecting Claude Code to LinkedIn Ads through the ZenABM MCP server closes that gap.

Campaigns, creatives, audience overlap, decaying ads, and pipeline attribution all become things you ask about rather than things you extract and manually reconstruct.

The setup is a one-time five-minute step.

What changes after that is permanent: every future question about the account takes seconds instead of an afternoon, and the answers arrive in the context of real deal data rather than raw ad metrics.

For teams running ABM on LinkedIn, that shift compounds quickly.

Decaying ads get caught a month earlier.

Budget moves toward formats that actually precede closed-won. Sales gets the hot accounts while the intent is still fresh.

The integration does not change what a good LinkedIn Ads program looks like; it just removes the friction that kept most teams from running one.

A [**free 37-day ZenABM trial**](https://app.zenabm.com/signup) includes the MCP server, the CRM connection, and the full pipeline attribution layer.

Connect it once, and the next LinkedIn Ads question is one sentence away.

[You can also book a demo with us to know more!](/book-a-demo)

## Frequently asked questions

### Is there an official LinkedIn Ads Claude Code integration?

No. LinkedIn does not publish a connector for Claude, and Claude Code cannot read Campaign Manager on its own. The connection runs through a third-party MCP server that reads the LinkedIn Ads API, such as the ZenABM MCP server, which also adds [CRM and ABM context on top](/blog/clay-for-abm-experts-share-it-all) of the raw metrics.

### Does the integration change my campaigns?

Only if explicitly approved. Read questions never modify anything. Write actions like pausing an ad are flagged as destructive, so Claude Code asks for explicit confirmation before any change to LinkedIn ad serving state.

### What can I ask Claude Code about my LinkedIn Ads?

Anything the account data supports: top performers by eCTR, decaying ads to pause, which campaigns touched open deals, which accounts are surging in intent, and which companies waste spend. Questions go in plain English and Claude Code selects the right tools.

### What transport and authentication does the ZenABM MCP server use?

It runs over the HTTP transport at https://zenabm.com/mcp, and you authenticate with either OAuth or a Bearer API token. OAuth is the one-click route: approve the access prompt and Claude Code is linked. For the manual route, add the server to your Claude Code config and pass the token in the Authorization header as Bearer YOUR\_ZENABM\_TOKEN. Tools register dynamically, so there is no per-tool setup.

### How long does setup take?

About five minutes. Start a [ZenABM](/linkedin-ad-campaign-insights) trial, connect LinkedIn Ads and the CRM, open the MCP page, authorize over OAuth or paste an API token, and ask the first question. The connection is reusable across every future Claude Code session.

### Do I need to know how the LinkedIn Ads API works?

No. The MCP server handles the API entirely. There are no endpoints, parameters, or authentication tokens to manage for individual reports. Questions go in plain English, and Claude Code translates that intent into the right calls behind the scenes and returns a clean answer.

## Images

- https://cdn.zenabm.com/media/Linkedin-ads-performance-in-Claude-Cowork-via-MCP-server.png
- https://cdn.zenabm.com/media/ZenABMs-ABM-Campaign-Performance-MCP-servers-response.png
