TL;DR
To connect LinkedIn Ads to Claude via MCP: copy mcp.portermetrics.com/mcp, go to Claude.ai, open Connectors → Manage connectors → Add custom connector, paste the URL, and sign in. From there, ask Claude anything about your LinkedIn Ads campaigns in plain English.
Once connected, you can automate your LinkedIn Ads reporting and analysis — ask questions about your data, build dashboards, trigger alerts, or ship client-ready reports like the one below.
Prerequisites
- A Porter Metrics account with your LinkedIn Ads account connected (free tier is enough to try it end-to-end)
- A Claude account — the free plan works for Claude Web; a Pro subscription is needed for Claude Code and Desktop MCP features
- Admin or standard access to the LinkedIn Ads ad accounts you want to connect
Connect LinkedIn Ads to Claude with MCP
For this tutorial we’re going with the MCP method. Here’s a quick explainer of what MCP is and why it’s the best path for LinkedIn Ads.
MCP (Model Context Protocol) is the open standard that lets AI tools like Claude, ChatGPT, Claude Code and others access and use external APIs — the things that make tools like LinkedIn Ads work under the hood. Instead of building a custom integration for every AI tool you use, you install one MCP and every compatible AI gets access to the same data.
The full setup takes under 5 minutes and breaks into three moves: connect LinkedIn Ads to Porter, point Claude at the Porter MCP, and ask your first question.
1. Connect your LinkedIn Ads data to Porter
Porter sits between LinkedIn’s Marketing API and Claude. It handles OAuth, rate limiting, pagination and all the plumbing so Claude only ever sees clean, structured data.
Sign up for Porter. Create a free account at portermetrics.com. The free tier is enough to run this full workflow end-to-end.
Connect your LinkedIn profile. In Porter, click Create → pick Claude as the destination → select LinkedIn Ads as the source → sign in with LinkedIn to grant access to your ad accounts.
Select your ad accounts. Choose the LinkedIn Ads ad accounts you want Claude to query. When you select multiple ad accounts under a single connection, Porter automatically blends their data together so you can query them as one.
Optional: enable automatic BigQuery storage if you’re connecting multiple ad accounts with large data volumes. This keeps Claude’s responses fast even at scale.
2. Connect the MCP to Claude
Porter’s MCP URL is what you paste into Claude. Once added, Claude can query LinkedIn Ads data on demand in any conversation.
Go to claude.ai and click the + icon in the chat input to open the tools menu. !Click the + icon in the Claude chat input
In the menu that opens, hover over Connectors and click Manage connectors. !Hover Connectors and click Manage connectors
In the Connectors panel, click the + button at the top of the list to start adding a new connector. !Click + at the top of the Connectors panel
Pick Add custom connector from the dropdown that appears. !Select Add custom connector from the dropdown
A dialog opens with the name and URL fields. Type Porter in the first field to name the connector. !Type Porter in the connector name field
In the second field, paste https://mcp.portermetrics.com/mcp. Leave the advanced settings alone. !Paste the Porter MCP URL into the Remote MCP server field
Click Add at the bottom right of the dialog. Claude opens a sign-in window — use the same Google account linked to your Porter workspace and approve access. !Click Add on the custom connector dialog
Once the authorization finishes, you’ll see Porter’s read-only tools appear in the connectors panel. You’re ready to start asking questions. !Porter read-only tools visible in the Claude connectors panel
For a fuller walkthrough with screenshots at every step, see the Porter MCP tutorial.
3. Start building questions and dashboards
With Porter connected, open a new Claude chat and ask anything about your LinkedIn Ads in plain English. Claude calls Porter behind the scenes, pulls live data from LinkedIn, and answers with tables, charts, or summaries.
Try one of these to verify the setup is working:
For a full catalogue of copy-paste prompts organized by use case (performance, fatigue, budget, agency, B2B, e-commerce, cross-channel), jump to the prompts section below.
Alternative ways to connect LinkedIn Ads to Claude
MCP is the path we just walked through — and the one we recommend for most marketers. But it’s not the only way to get LinkedIn Ads data in front of Claude. The most common alternatives are LinkedIn Ads’s direct API (or its official MCP if it has one), a live Google Sheets bridge, and BigQuery for scale. Each has its trade-offs — pick the one that fits how your team already works.
- 🔌 LinkedIn Ads’s direct API (or official MCP) — Talk to LinkedIn’s Marketing API yourself, or install LinkedIn Ads’s native MCP if one exists. Maximum control, but you handle auth, rate limits and pagination — and you only get one source.
- 📊 Google Sheets — Live Sheet or one-off CSV upload. Auditable, familiar, faster for big exports — but aggregation happens in the Sheet, not the API.
- 🗄️ Google BigQuery — For large ad accounts or agencies running multi-ad account analysis. BigQuery aggregates; Claude only queries pre-built summaries.
Via LinkedIn Ads’s direct API (or official MCP)
If you’re building a product around LinkedIn Ads — or you’re a developer who’d rather own every layer of the integration — the most direct path is talking to LinkedIn’s Marketing API yourself, or installing the official LinkedIn Ads MCP (if one exists). LinkedIn doesn’t ship an official MCP yet, so this means writing API calls directly in Claude Code or in your own scripts. You’ll need to follow LinkedIn’s rate limits & quotas and request a Developer Token / API access where applicable. Either way, you skip Porter entirely and call LinkedIn from your own code or from Claude Code with raw HTTP requests.
The trade-off to know. Going direct gives you maximum control and the freshest possible data — every endpoint, every parameter, no abstraction layer in between. But you’re now responsible for OAuth flows, refresh tokens, rate limits, pagination, schema changes, and error retries. And critically, you only get one source. The moment you also want Google Ads, GA4 or Shopify in the same conversation, you’re back to building (or stitching together) more integrations.
When this makes sense: engineering teams that need a single source with full control, products that ship LinkedIn Ads data as a feature (where you own the integration anyway), or one-off scripts where you don’t mind writing the auth and pagination code yourself. For marketers who want to ask questions in plain English and blend LinkedIn Ads with the rest of their stack in a single conversation, the Porter MCP path is dramatically less work.
Via Google Sheets (live Sheet or manual CSV)
If your team already lives in Google Sheets — or you want a paper trail before Claude touches anything — feed LinkedIn Ads into a Sheet, then let Claude read the Sheet. You can automate the LinkedIn Ads → Sheets pipeline with Porter so it refreshes daily, or do one-off CSV exports from LinkedIn Ads’s native UI for static analysis.
The trade-off to know. With the MCP path, Claude calls LinkedIn’s API directly and LinkedIn does the filtering and aggregation on its side — clean and deterministic. With the Sheets path, Claude aggregates inside the Sheet itself, which can introduce hallucinations on totals, averages, and joins when you have thousands of rows. The upside is speed: for very large date ranges or historical analysis, a pre-built Sheet is dramatically faster than live API calls.
When this makes sense: finance teams that want to review numbers before Claude acts on them, agencies already delivering client reports in Sheets, historical analysis across years of data, or any case where you care more about speed than real-time freshness.
Read the full Sheets tutorial →
Via Google BigQuery (for scale)
This is the path most people overlook — and it’s the one that saves you when your LinkedIn Ads ad account gets serious. A single large advertiser or an agency managing 10+ ad accounts will hit API rate limits and latency problems querying Claude directly. Claude will literally tell you it’s taking too long or timing out on big pulls.
BigQuery fixes that. You load LinkedIn Ads data into BigQuery tables on a schedule, then connect BigQuery to Claude — either through a BigQuery MCP or via Claude Code with SQL queries. Instead of asking Claude to pull raw LinkedIn Ads data, you let BigQuery aggregate into small, optimized tables, and Claude only queries the summarized output. Scale problem solved.
When this makes sense: enterprise ad accounts with millions of impressions, agencies running multi-ad account analysis across 10+ clients, or any team already using BigQuery as a data warehouse. Porter loads LinkedIn Ads (and 25+ other sources) directly into BigQuery so you don’t have to build your own ETL.
Read the full BigQuery tutorial →
Connecting LinkedIn Ads to Claude Code
Most marketers lump Claude and Claude Code together and miss the biggest advantage of the entire MCP ecosystem. They’re not the same tool — and the difference matters enormously once you start working with LinkedIn Ads data seriously.
Claude is a chat interface. You ask a question, Claude pulls live data through the MCP, answers, maybe builds a quick dashboard inside the conversation. Great for one-off analysis. The problem: everything is ephemeral. Want to refresh the dashboard tomorrow? You regenerate it from scratch. Want the same report every Monday? You re-ask the question every Monday.
Claude Code is Claude running inside your computer’s terminal. Because it has access to your filesystem, runtime, and other developer tools, it doesn’t just answer questions — it can build real software. Persistent scripts, scheduled routines, HTML apps, internal dashboards, integrations that run 24/7 without your input. Once it’s connected to Porter’s MCP for LinkedIn Ads, a whole category of work becomes possible.
What Claude Code unlocks that Claude alone cannot
This is where the MCP ecosystem pays off most. Because Claude Code can combine Porter’s MCP with other MCPs — Firecrawl for web scraping, Airtable for structured data, Notion for wikis, Vercel for deployment, Slack and Gmail for delivery — you’re no longer querying data. You’re building tools.
🛠️ Build your own budget management app Stack: Porter MCP + Vercel MCP (or Cloudflare Pages, Netlify) Feed Claude Code your LinkedIn Ads targets and goals — CPA goals, daily budgets, ROAS thresholds — and ask it to generate a custom ROI dashboard for each client. It builds the HTML, pulls live data, deploys to a URL. No Data Studio embed to break when the vendor changes pricing, no template constraints. The dashboard updates automatically because it queries Porter’s MCP on every page load. Best for: agencies that want white-label client dashboards without Looker or Data Studio dependencies.
🔍 Full competitor + performance monitoring Stack: Porter MCP + Firecrawl MCP Combine your own LinkedIn Ads performance from Porter with competitor landing pages and live ads from the LinkedIn Ad Library scraped via Firecrawl. Claude Code stitches both into a weekly competitive intelligence report — your numbers next to their creative angles and targeting, with an LLM summary on top of what changed week over week. Runs on cron, lands in your inbox every Monday morning. Best for: in-house teams that need market context, not just internal numbers.
📚 Internal marketing wiki with live metrics Stack: Porter MCP + Airtable MCP (or Notion MCP) Use Airtable or Notion as the schema, Porter as the data source. Claude Code keeps every page populated with current spend, CPA, and ROAS for every ad account — no stale screenshots, no copy-paste from Excel. New hires read one wiki entry and have full context on a client’s account. Best for: agencies and ops teams onboarding analysts or rotating account managers frequently.
🔔 24/7 alerts on spend, CTR, and quality drops Stack: Porter MCP + Slack MCP (or Gmail MCP) A Claude Code routine on cron pulls LinkedIn Ads via Porter, evaluates thresholds — CTR drops below 1%, daily spend spikes 2× the trailing average — and pushes Slack or Gmail alerts the moment something crosses the line. You stop checking dashboards reactively; the dashboard checks itself and tells you when to look. Best for: any team that’s ever discovered a problem 48 hours too late because nobody opened the report.
Bottom line: Claude is for quick questions and ad-hoc dashboards. Claude Code is for building apps, live dashboards, alerts, and actual tools — anything you want to run on its own without re-asking. Same Porter MCP URL works in both, so you don’t pick once and lock in.
Use cases — what you can actually do once LinkedIn Ads is connected to Claude
Getting the connection right is half the battle. The real value shows up in what you do next. Here are the use cases Porter users build around their LinkedIn Ads data — from simple Q&A to full client-facing workflows.
1. Chat and ask questions directly
The simplest use case — and still the one 80% of marketers start with. Open Claude, ask a question, get an answer grounded in live data.
It’s the fastest way to replace a daily Campaign Manager check-in. But chat is table stakes — the interesting use cases come next.
2. Blend LinkedIn Ads with your sales data (Stripe, HubSpot, Shopify)
This is where a 360° view gets real. When you connect LinkedIn Ads and your revenue source (Stripe for SaaS, HubSpot CRM for B2B, Shopify for e-commerce), Claude can map ad campaigns to actual closed-won deals or purchases — using UTMs, campaign names, and timestamps — and give you attribution that no platform-side number can.
Claude handles the UTMs, campaign names, and timestamps mapping and joins. You get a client-ready attribution report that no single platform can generate on its own.
3. Automated alerts and notifications on Slack or Gmail
With Claude Code you can turn LinkedIn Ads monitoring into a routine that runs on its own. Hook Porter’s MCP (for the data) together with a Slack or Gmail MCP (for delivery), then write a Claude Code scheduled task that pulls performance every morning and pings you only when something actually needs attention.
No dashboards, no daily check-ins. The report comes to you — and only when it matters.
4. Client-ready presentations with live data (Gamma, HTML, PDF)
A common agency pain: you send clients a Data Studio link, Looker breaks, the client panics — and you spend an hour explaining a broken dashboard. With Claude you can build the presentation itself — as a Gamma deck, a custom HTML page, or a PDF — populated with live numbers each time.
The presentation becomes a delivery artifact you send to the client, not a dashboard that depends on another tool staying up. No broken iframe, no login prompts, just the content.
LinkedIn Ads fields and metrics you can query with Claude
Before you start writing prompts, it helps to know what data is actually available. Porter MCP gives Claude access to 800 LinkedIn Ads metrics across every reporting level, plus breakdowns by audience, placement, device, and geography. And the same MCP URL also unlocks 25+ other sources — so Claude can blend LinkedIn Ads with Google Ads, GA4, Shopify, HubSpot and more in a single prompt.
Prompts you can copy-paste today
1. For agencies
Agencies managing multiple LinkedIn Ads accounts need fast client reporting, anomaly detection across portfolios, and segment comparisons.
2. For B2B marketers
In-house B2B marketers optimizing pipeline efficiency and audience quality on LinkedIn.
3. For lead generation & ABM teams
LinkedIn Ads is B2B-native. This section covers lead gen form optimization and account-based marketing workflows.
4. Cross-channel
Blending LinkedIn Ads with CRM, web analytics, and other ad platforms for full-funnel attribution.
Limits, safety, and best practices for LinkedIn Ads via Claude
No public Reddit threads, news articles, or forum posts documenting irreversible LinkedIn Ads API bans were found between 2024 and 2026. LinkedIn’s enforcement model is throttle-first, not ban-first. The real-world “horror story” is operational, not existential: a demand-gen team running a quarter-end analysis triggers the daily request quota, receives HTTP 429 responses, and loses 6–12 hours of automated reporting until the quota resets at midnight UTC. The cost is not a suspended account—it is missed optimization windows and stale Claude insights during high-stakes reporting periods.
LinkedIn’s rate-limiting enforcement is quota-based and application-scoped, not tool-based. LinkedIn does not ban ad accounts because you connected Claude or an MCP server. It throttles API keys that exceed their daily or per-minute call allocations. The platform tracks two independent quotas: (1) an application-level total across all users of your app, and (2) a member-level total per authenticated LinkedIn user token. Both reset at midnight UTC. When you approach the application-level ceiling, LinkedIn sends an email alert; when you exceed it, the API returns HTTP 429 with X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. Read-only analytics usage within quota is safe. Bursty, unbatched, or parallelized API traffic is not.
The two ways to burn through your LinkedIn Ads quota
After reviewing official docs and community threads, two patterns come up again and again.
1. Unbatched, parallel API bursts during reporting. Making individual API calls for every campaign, ad group, and creative simultaneously—instead of using batched or filtered endpoints—burns through the 500-call daily quota in minutes. This triggers HTTP 429 throttling and leaves the integration offline until UTC midnight. Use date-range filters and request only the specific fields you need.
2. Ignoring rate-limit headers and retrying immediately. When LinkedIn returns HTTP 429, the X-RateLimit-Reset header contains the Unix timestamp when the quota refreshes. Retry loops that ignore this header and hammer the API every few seconds waste quota and extend the blackout window. The correct pattern is exponential backoff with jitter, respecting the Retry-After or X-RateLimit-Reset value. — Microsoft Learn: LinkedIn API Rate Limits
3. Requesting write scopes when read-only analytics is the goal. LinkedIn Marketing API scopes are granular. Asking for r_ads (read ads) plus unnecessary w_ads (write ads) or r_ads_reporting scopes increases token privilege and audit surface area without benefit. If the integration only reads performance data, minimize scopes to reduce both security risk and potential compliance scrutiny. — Stitchflow: LinkedIn Ads API Guide
Both behaviors trigger quota exhaustion and HTTP 429 throttling. If you want to use Claude for LinkedIn Ads safely, batch your requests, respect rate-limit headers, and use read-only scopes.
The 5-rule scaling protocol
Based on LinkedIn Ads’s documented rate limits and quotas and the behaviors that have actually caused quota exhaustion — not guesswork:
- Batch your requests and filter by date range. LinkedIn’s standard Marketing API quota is 500 calls per day per application (resetting at midnight UTC), with some endpoints limited to 100 calls per minute. Requesting one record per call burns this quota in under an hour for mid-size accounts. Porter MCP batches requests and applies date-range filters automatically, keeping call volume well below the threshold. — [Microsoft Learn: LinkedIn API Rate Limits](https://learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits)
- Monitor the ~75% quota alert and stop before the ceiling. LinkedIn sends an email alert when your application-level quota hits approximately 75% consumption. Treat this as a hard warning: pause non-essential syncs, defer exploratory queries, and let high-priority reporting finish. Ignoring the alert means hitting the wall at 100% and waiting for UTC midnight. — [LiSeller: How to Handle LinkedIn API Rate Limits](https://www.liseller.com/linkedin-growth-blog/how-to-handle-linkedin-api-rate-limits)
- Respect HTTP 429 and back off exponentially. When throttled, LinkedIn returns HTTP 429 with
X-RateLimit-Reset. Do not retry blindly. Implement exponential backoff starting at 1 second, doubling to 2s, 4s, 8s, 16s, 32s, 64s, and capping at ~5 minutes with random jitter. This maximizes the chance of success on the next quota window while avoiding additional penalty.
- Use read-only scopes and audit token privileges quarterly. Grant the minimum viable scopes (
r_ads,r_ads_reporting,r_basicprofile). Avoidw_adsorw_organization_socialunless you are explicitly creating or editing campaigns via API. Reviewing scopes every 90 days catches scope creep from early experiments and reduces both security exposure and compliance risk. — [Stitchflow: LinkedIn Ads API Guide](https://www.stitchflow.com/user-management/linkedin-ads/api)
- Cache reporting data and avoid real-time polling. LinkedIn Ads reporting data has a freshness delay of several hours (commonly 4–6 hours for final metrics). Polling every 15 minutes wastes quota on stale data. Cache results and sync once or twice daily for historical reporting, or every 4 hours for active campaign monitoring. Porter MCP caches and deduplicates automatically, reducing redundant API calls.
What Porter MCP does differently: it enforces these limits and safeguards at the platform level. Porter’s LinkedIn Ads connector is read-only by default—no write scopes are requested, eliminating the risk of accidental campaign edits or scope overreach. Requests are automatically batched and filtered by date range and account, keeping daily call volume well below the 500-call application quota. Rate-limit responses trigger built-in exponential backoff with jitter, so throttling never cascades into a hard failure. Per-account caching prevents redundant polling, and sync frequency is configurable (hourly, twice daily, or daily) to match LinkedIn’s data-freshness reality rather than wasting quota on premature polls. That’s the behavior LinkedIn’s automated systems handle gracefully: predictable, scoped, batched, and within quota.
Frequently asked questions
A LinkedIn Ads MCP is an open standard that connects AI tools like Claude to your LinkedIn ad accounts, campaign groups, campaigns, and ads through one URL. Porter’s server requires no code or tokens — just authenticate and query.
Claude is the conversational app for web and mobile. Claude Code is a terminal-based tool for developers that writes scripts and automates files. Both connect to LinkedIn Ads via MCP.
LinkedIn’s API refreshes final metrics every 4–6 hours. Porter MCP pulls live data, so your reports stay within that window. Real-time estimates in LinkedIn Campaign Manager may show newer preliminary numbers.
Yes. LinkedIn allows 500 calls per day and 100 calls per minute per application, resetting at midnight UTC (Microsoft Learn). Porter MCP batches requests and caches results automatically to keep usage well below these ceilings.
Two reasons: (1) Data freshness lag — final API metrics update every 4–6 hours, while Campaign Manager shows preliminary estimates sooner. (2) [NEEDS_VERIFY: attribution window and time zone handling between API and UI] The fix: align date ranges and wait for final metrics before comparing.
No. LinkedIn does not ban accounts for legitimate read-only API usage. Porter MCP stays within normal rate limits by default. The only risk is hitting the 500-call daily quota, which resets at midnight UTC.
Ready to chat with your LinkedIn Ads?
Open Claude, add the Porter connector, and ask your first question. If you don’t have Porter yet, start a free trial and connect your LinkedIn Ads account — you’ll be chatting with your campaigns in under five minutes.
rocket_launchStart free Porter trialopen_in_newOpen Claude