To connect Meta 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 with Google. From there, ask Claude anything about your Meta Ads campaigns in plain English.
Once connected, you can automate your Meta 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 Meta 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 Meta Ads account(s) you want to connect
Connect Meta 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 a great choice to connect Meta Ads.
MCP (Model Context Protocol) is the open standard that lets AI tools talk to external APIs like Meta Ads, Slack or Gmail. Raw APIs only run inside code editors (Claude Code, Antigravity). MCPs work everywhere: AI chats (Claude, ChatGPT), code editors, and automation tools (n8n, Zapier), all from a single connection.
Four reasons MCP wins for Meta Ads:
The full setup takes under 5 minutes and breaks into three moves: connect Meta Ads to Porter, point Claude at the Porter MCP, and ask your first question.
1. Connect your Meta Ads data to Porter
Porter sits between Meta’s Marketing API and Claude. It handles OAuth, rate limiting, pagination and all the plumbing so Claude only ever sees clean, structured data.


2. Connect the MCP to Claude
Porter’s MCP URL is what you paste into Claude. Once added, Claude can query Meta Ads data on demand in any conversation.




Porter in the first field to name the connector.
https://mcp.portermetrics.com/mcp. Leave the advanced settings alone.


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 Meta Ads in plain English. Claude calls Porter behind the scenes, pulls live data from Meta, and answers with tables, charts, or summaries.
Try one of these to verify the setup is working:
Alternative ways to connect Meta Ads to Claude
Via Google Sheets
Send Meta Ads data into a Sheet and let Claude read the Sheet. Automate with Porter’s Meta Ads connector for Google Sheets (setup tutorial here) or export a one-off CSV from Ads Manager.
Pros
- Predictable speed. Reading tens of thousands of rows from a Sheet is almost instant. Live API calls take 2 to 30 seconds depending on Meta’s load.
- Easy to catch hallucinations. Keep the Sheet open in a tab next to Claude. If a number doesn’t match the raw rows, you see it right away.
- Pre-cleaned, pre-joined data. Blend Meta Ads with CRM, Shopify, offline conversions or sales data before Claude reads it. Claude queries one clean table, not multiple APIs.
- Hourly auto-refresh. Porter’s Sheets connector refreshes every hour, so the table stays close to live.
Cons
- Fixed schema. Aggregation happens in the Sheet, not in Meta’s API. Any column you didn’t pre-build is not available on the fly.
- Tab sprawl. With many ad accounts, Sheet size and tab count grow fast and get messy.
Via Google BigQuery
Load Meta Ads into BigQuery on a schedule, then point Claude at BigQuery (via a BigQuery MCP or Claude Code with SQL). Claude reads pre-loaded tables instead of hitting Meta live.
Pros
- Scales where the API breaks. Multiple ad accounts or a single account with hundreds of campaigns and creatives where live API pulls time out.
- Fast, consistent response times. Claude queries summarized warehouse tables, not raw Meta endpoints.
- Years of history. Historical analysis across multi-year windows without repeatedly hitting Meta’s rate limits.
- No-code load. Porter’s Meta Ads connector for BigQuery handles the pipeline (setup tutorial here).
Cons
- Extra infrastructure. A BigQuery project and billing account to maintain.
- Feels technical. Warehouses can be intimidating for marketers who haven’t used one before.
- Not real-time. Data is as fresh as your last refresh, not live.
Via Manus AI
Manus (acquired by Meta in December 2025) is Meta’s native agentic layer inside Ads Manager. It runs on Meta’s infrastructure and can analyze campaigns, generate reports and research audiences without you leaving the Ads Manager UI.
Pros
- Zero setup. Lives inside Ads Manager already, no MCP to install.
- Meta-native. Direct access to every Meta field and the Ad Library without going through an API layer.
Cons
- Meta Ads only. No cross-channel. You can’t blend with Google Ads, GA4, Shopify, HubSpot or any other source.
- Not a Claude connection. Manus is a different agent running on Meta’s models, not Claude. You’re not using Claude’s reasoning.
- Locked to Ads Manager. The same setup can’t be reused in Claude, ChatGPT, Cursor, Claude Code or any other tool.
- No MCP ecosystem. You can’t pair Meta data with Firecrawl, Airtable, Slack, Gmail or the rest of the MCP stack.
Use cases: what you can actually do once Meta 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 Meta 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 Ads Manager check-in. But chat is table stakes. The interesting use cases come next.
2. Blend Meta Ads with your sales data (Stripe, HubSpot, Shopify)
This is where a 360° view gets real. When you connect Meta 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 UTM 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 Meta 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 Looker Studio link, Looker breaks, the client panics, you spend an hour explaining a broken dashboard. With Claude you can build the presentation itself: 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.
5. Build apps and systems with Claude Code
Claude is a chat interface; Claude Code is Claude running inside your terminal. Claude gives you answers (great for one-off questions). Claude Code gives you systems: persistent scripts, scheduled routines, HTML apps, and integrations that run 24/7. Same Porter MCP URL works in both. Combine it with Firecrawl, Airtable, Notion, Vercel, Slack or Gmail MCPs and you stop querying data, you start building tools.
Because MCP is open, anything built in Claude Code today still works in Cursor, Antigravity, Lovable, Vercel v0 or whatever tool comes next.
Prompts you can copy-paste today
Once your Meta Ads account is connected, these are the prompts Porter users run most often. Twelve core prompts for everyday performance work, plus three verticals (agencies, B2B, and e-commerce) with specialized prompts for each. Copy, paste, run.
Performance checks
Creative fatigue
Budget and waste
Client reporting
Prompts for agencies managing multiple clients
If you run Meta Ads for 5+ brands, these four prompts replace most of your weekly data wrangling:
Prompts for B2B marketers
Meta Ads in B2B means connecting Meta data with CRM pipeline data. Porter MCP bridges both so you can ask:
Prompts for e-commerce teams
When you combine Meta Ads data with Shopify revenue in one prompt, Claude answers questions that used to require a full BI stack:
Cross-channel prompts (Meta + Google + GA4 + Shopify)
Meta Ads alone only tells part of the story. Because the same Porter MCP URL connects to Google Ads, GA4, Shopify, HubSpot and 20+ more sources, Claude can run true cross-channel analysis in a single prompt.
How to use Claude Code for Meta Ads without getting banned
In early 2026, a marketer posted in r/FacebookAds that Claude Code got their account permanently banned. The post hit 70+ comments and is still the #1 organic result on Google for “claude code meta ads”. In their own words: “If you use Claude Code to day-trade Meta ads, you’ll get banned.”
We’ve seen it happen to our own clients. Agencies with six-figure monthly spend have had ad accounts permanently disabled over a single weekend of automated experimentation. The cost isn’t a Claude subscription. It’s the ad account, the pixel history, the learning phase, and sometimes hundreds of thousands of dollars in frozen spend. This section is the most important one in the article.
The actual dividing line: reads vs. writes
Meta’s Marketing API splits cleanly into two surfaces:
- Read endpoints (
GET /act_{id}/insights,/campaigns,/adsets,/ads). 1 point per call against a 9,000-point hourly budget on standard tier. Porter MCP, Supermetrics, Fivetran, every BI tool lives here. Read-only access cannot pause, create, or edit anything. The tokens literally lack theads_managementwrite scope, or the scope is never exercised. - Write endpoints (
POST/DELETEon the same objects, pluspages_manage_ads). 3 points per call, hard caps of 100 writes/sec, 4 budget changes/ad set/hour, 10 spend-cap changes/account/day. Every ban case we’ve reviewed, including every Reddit anecdote about Claude Code, happened on a write path.
Stay on reads and the worst you’ll ever see is a 60-second throttle. Cross into writes without guardrails and you’re in suspension territory.
A third, higher-risk path: browser automation on Ads Manager. An agent that drives the meta.com UI directly (Claude Code in browser-automation mode, headless browsers, RPA scripts) bypasses the API entirely. Meta treats this as unauthorized automated access under its Platform Policies, and there is no published “safe threshold”. Any meaningful volume of automated clicks inside Ads Manager can trigger a ban. Use the Marketing API instead.
The rest of this section is the guardrail spec for anyone who crosses into writes.
What Meta actually punishes, and what doesn’t matter
Most ban threads blame the wrong thing: app choice, token type, verification status. None of those trigger enforcement. Meta Platform Terms §7.a:
Straight from Meta’s Developer Policy and Rate Limiting docs:
| Factor | Bans? | What it actually controls |
|---|---|---|
| Token type (OAuth vs system user) | No | Expiration: ~60 days vs non-expiring |
| App Review / Advanced Access | No | Rate limit tier: 60 pts (dev) vs 9,000 pts (standard), 300s vs 60s block on breach |
| Tech Provider & Business Verification | No | Which advanced permissions unlock for managing third-party clients |
| Ad content policies | Critical | Prohibited products, misleading claims, restricted verticals |
| API traffic shape | Critical | Burst calls, parallel accounts, no exponential backoff on 429s |
| Budget change cadence | Yes | Hard caps: 4 ad set budget changes/hour, 10 account spend-cap changes/day |
| Mutation rate | Yes | >100 write requests/sec per app+account = automatic block |
| Abrupt spend scaling | Yes | >20% step increases flag as risk, separate from content review |
| API error rate | Yes | >15% errors over 15 days = access-tier downgrade |
| API inactivity | Yes | 28 days without calls = app suspension, no notice |
A script asking Meta “show me yesterday’s performance” sits in the same risk bucket as any BI tool (1 point per read, essentially zero ban surface). A script looping 200 ad sets with +50% budget bumps every 3 minutes (3 points per write, 4/hour cap per ad set) is a suspension, regardless of who wrote it.
If a flag hits, three numbers decide the outcome
Meta’s enforcement has been largely automated since mid-2025: both the flag and the appeal. Three numbers matter:
- 48 hours. Appeals inside 48h resolve at ~79%. After that, ~23%. Subscribe a webhook on the ad account status endpoint so you hear about flags from your monitoring, not from a client Slack three days in.
- 180 days. Per Meta’s enforcement policy, accounts disabled 180+ days cannot be reinstated. Ad account, pixel history, learning phase: all gone.
- 28 days. App inactivity of 28 days = API access suspended with no warning. Breaks setups that only run end-of-month.
The 5-rule safety protocol (for write paths only)
If you’re publishing or editing ads programmatically (not just reading), these are the rules. Based on Meta’s documented rate limits and the behaviors that have actually gotten accounts banned, not guesswork:
- Do not “day-trade” your ads. Hard caps: 4 budget changes per ad set per hour, 10 spend-cap changes per account per day, 100 write requests per second per app+account. On standard tier each mutation costs 3 points against a 9,000-point hourly budget that depreciates every 300s. Breach any of these and automated enforcement fires even with spotless ad content.
- Review before you apply. Run scripts in read-only mode first. Never let Claude Code auto-apply pause/budget actions without a human approving the diff. Porter MCP ships read-only by default for exactly this reason.
- Never automate the Ads Manager UI. No Claude Code browser automation, no headless Chrome, no RPA on meta.com. Use the Marketing API instead. That’s the only path Meta considers legitimate.
- Be gradual. Don’t scale a budget more than 20% in a single move. Meta’s 2026 systems flag abrupt spend spikes as suspicious behavior, separately from content review.
- One account at a time. If you’re automating ten accounts, run them sequentially with 15+ minute delays, not in parallel. Parallel burst API calls are the #1 trigger community members cite when their MCP setups got them banned.
Error codes Claude Code will throw, and what to do with each
When a script hits the Marketing API, these are the codes you’ll see. Back off means exponential wait (1s → 2s → 4s → 8s + 0–500ms jitter); fix means stop retrying and change something:
| Code / subcode | Action | Meaning |
|---|---|---|
| 17 / 2446079 | Back off | User request limit reached |
| 613 / 1487742 | Back off | Too many calls from this ad account |
| 613 / 5044001 | Back off | Mutation rate exceeded (100 QPS) |
| 4 / 1504022 & 1504039 | Back off | App-level insights throttling |
| 80000–80014 | Back off | Business Use Case rate limit breached |
| 613 / 1487632 | Wait 1h | Ad set budget change cap (4/hour) |
| — / 1885172 | Wait 24h | Account spend-cap change limit (10/day) |
| 190 | Re-auth | Invalid / expired access token |
| 200 | Fix scope | Permissions error, usually missing pages_manage_ads |
| 100 | Fix code | Invalid parameter, do not retry |
Retrying a 613 with no backoff is how a 60-second block becomes a permanent suspension. Idempotency matters too: Meta has no native idempotency keys, so a naive retry on a timed-out POST /campaigns creates a duplicate campaign.
Why Porter MCP sidesteps all of this: it’s read-only by architecture, not by policy. The MCP server never requests the write scopes (ads_management, pages_manage_ads) from Meta in the first place, so even a compromised token or a prompt-injected Claude session cannot pause an ad, bump a budget, or touch the Ads Manager UI. No write scope = no rate-limit exposure, no suspension surface, nothing to appeal. If your use case is analysis (which covers the vast majority of marketers), that’s the safe lane.
Meta Ads fields and metrics you can query with Claude
Porter MCP exposes the full Meta Ads reporting surface: 1,391 fields across account, campaign, ad set and ad level, plus 34 breakdown dimensions and 13 time dimensions. The same MCP URL also unlocks 25+ other sources, so Meta Ads can be blended with Google Ads, GA4, Shopify, HubSpot and more in a single prompt. Every metric maps to one stage of the funnel:
Full reference: Meta Ads fields list.
Frequently asked questions
mcp.portermetrics.com/mcp, go to Claude.ai, open Connectors → Manage connectors → Add custom connector, paste the URL, and sign in with Google. Setup takes under 5 minutes.mcp.portermetrics.com/mcp) to your Claude Code settings, and describe what you want in plain English. Claude Code writes and runs the scripts for you against live Meta data.Ready to chat with your Meta 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 Meta Ads account. You’ll be chatting with your campaigns in under five minutes.
rocket_launchStart free Porter trialopen_in_newOpen Claude