Porter Metrics++

4 ways to connect Meta Ads to Claude in 2026 (without getting banned)

In this guide, learn to connect your Meta Ads data to Claude via MCP. Understand 4 different ways to connect your Meta Ads data, and avoid getting your ad accounts banned.

rocket_launchConnect Meta Ads to Claude for free14-day unlimited free trial. After that, keep unlimited queries for up to 3 ad accounts and 30 days of historical data. No credit card required.
Juan Bello

Juan Bello

Founder, Porter Metrics · April 20, 2026 · 12 min read

boltTL;DR

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.

image Screenshot placeholder: example Claude-generated Meta Ads report

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:

content_paste
Copy-paste setup
No tokens, no scripts, no developer help. Literally paste one URL into Claude and you’re done.
hub
Works with every AI tool
Claude, Claude Code, ChatGPT, Cursor, Antigravity, Lovable, Vercel v0, Zapier. One MCP URL, every tool that speaks the protocol.
merge_type
20+ sources in one connection
Porter’s MCP ships Meta Ads plus Google Ads, GA4, Shopify, HubSpot, Klaviyo, Google Sheets and 20+ more. Query and blend them all in a single conversation.
tune
Perfect granularity
Spreadsheets lock you into the columns you exported. MCP hits Meta’s API directly, so you can filter by campaign, break down by creative or placement, and add new dimensions on the fly without rebuilding tables.

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.

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 Facebook profile. In Porter, click Create → pick Claude as the destination → select Meta Ads as the source → sign in with Facebook to grant access to your ad accounts.
Connect and authorize your Facebook profile in Porter
We recommend selecting access to both current and future Business Managers and Meta ad accounts. This prevents the need to repeatedly re-authorize your Facebook profile later. Your Facebook profile email can be different from the Google account you use to sign in to Porter.
Select your ad accounts. Pick which Meta ad accounts Claude can query. Agencies often have dozens of accounts linked to one Facebook profile. Narrowing the scope upfront makes Claude faster and more accurate. Multiple accounts under a single connection get auto-blended so you can query them as one.
Select your Meta Ads ad accounts in Porter

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.

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 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:

chat_bubble“Show my top 10 performing Meta Ads creatives in the last 30 days ranked by conversions, CPA, and ROAS. Break them down by ad format (image, video, carousel) and placement (Feed, Reels, Stories, Audience Network). Flag any creative with frequency above 3 or a drop in thumbstop rate (3-second video views / impressions).”
chat_bubble“Show campaign performance over the last 90 days with impressions, reach, frequency, CTR (unique and all), CPC, CPM, amount spent, conversions, CPA, CPL, and ROAS. Compare week-over-week and highlight campaigns where CPA rose more than 20%, frequency passed 3, or ROAS dropped below 1.5.”
chat_bubble“Identify winning vs losing creatives over the last 60 days based on CPA trend, hook rate (3s video views / impressions), and hold rate (15s video views / 3s video views). Group by campaign objective and ad format, and surface any creative that moved more than 30% week-over-week, good or bad.”
chat_bubble“Parse my campaign and ad set naming conventions (e.g. BR_Prospecting_Video_Hook-Pain_Offer-Discount) to spot which hooks, angles, offers, and audiences drive the best CPA and ROAS. Roll up by hook theme and product, and recommend which to scale and which to pause.”

Alternative ways to connect Meta Ads to Claude

table_chart
Google Sheets
Live Sheet or one-off CSV upload. Auditable, familiar, faster for big exports, but aggregation happens in the Sheet, not the API.
database
Google BigQuery
For large accounts or agencies running multi-account analysis. BigQuery aggregates; Claude only queries pre-built summaries.
smart_toy
Manus AI
Not a direct Claude connection. Manus is Meta’s agentic platform (acquired Dec 2025) that runs on Meta’s own models.

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.

chat_bubble“What’s my ROAS by campaign over the last 14 days?”
chat_bubble“Show me CPC and CPA trends month over month for my top 5 ad sets.”
chat_bubble“Which placement is cheapest on CPM but still converting?”

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.

hub“Match my Meta Ads campaigns with HubSpot closed-won deals from the last 90 days. Which campaigns actually generated pipeline, not just leads?”
hub“Cross-reference Meta Ads spend with Stripe revenue for the last 30 days. Build a consolidated ROAS report grouped by campaign.”

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.

notifications“Every morning at 8 AM, check yesterday’s Meta Ads performance. If any campaign’s CPA increased more than 25% versus its 7-day average, send me a Slack DM with the campaign name and likely cause.”
notifications“Once a week on Monday, draft a Gmail email to my team with last week’s spend, CPA, ROAS, and the 3 biggest changes. Save it as a draft so I can review before sending.”

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.

slideshow“Generate an HTML presentation for my [Client Name] monthly review. Include a spend summary, top 5 wins, top 3 concerns, and 3 action items for next month. Use live Meta Ads data.”
slideshow“Create a Gamma-ready outline for a quarterly performance review: Meta Ads performance, creative wins, audience learnings, and recommendations.”

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.

apps
Custom budget/ROI apps
Claude Code generates a per-client ROI dashboard from Meta Ads targets and deploys it to Vercel. No Looker Studio to break.
visibility
Competitor + performance reports
Porter MCP (your Meta data) + Firecrawl (competitor ads and landing pages) stitched into a weekly competitive intelligence report.
menu_book
Live marketing wiki
Notion or Airtable MCP + Porter MCP keeps a team wiki populated with current spend, CPA, ROAS and creative notes per client.
notifications_active
24/7 alerts
A Claude Code cron job pulls Meta Ads via Porter and pings Slack or Gmail when CTR drops or spend spikes.

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

chat_bubble“Pull last 7 days of Meta Ads performance. Show spend, CPA, ROAS, CTR by campaign. Compare to the previous 7 days and flag anything that moved more than 20%.”
chat_bubble“Show me ROAS for the last 30 days at the account level, using 7-day click attribution. Break down by campaign objective.”
chat_bubble“Based on month-to-date spend, project end-of-month spend for each active campaign. Flag any projected to overshoot its monthly budget by more than 15%.”
chat_bubble“Compare my Meta Ads performance this month vs last month. Break down spend, ROAS, CPA, and conversion volume. Highlight the 3 biggest drivers of change.”
chat_bubble“Review spend and results by ad set for the last 14 days. Which ad sets have the lowest CPA? Which should I pause, optimize, or scale?”

Creative fatigue

chat_bubble“Analyze active ads from the last 14 days. Flag any with CTR decline greater than 20% from peak, or frequency above 3.0. Categorize each as URGENT, WARNING, or HEALTHY.”
chat_bubble“Group ads by creative angle (parse from ad names). Rank by ROAS and CTR. Tell me which angles are scaling and which are dying.”
chat_bubble“For any ad with a CTR drop greater than 15% in the last 7 days, recommend a replacement angle based on what’s still working in this account.”

Budget and waste

chat_bubble“Find campaigns that spent more than $200 in the last 60 days with zero conversions. Sort by spend descending.”
chat_bubble“Compare targeting across active ad sets spending more than $100 per day. Flag pairs with high interest or lookalike overlap, and recommend exclusions to reduce CPM inflation.”
chat_bubble“Break down performance by placement (Feed, Stories, Reels, Audience Network, Messenger). Which placements over-deliver on CPM but under-deliver on conversions?”
chat_bubble“Review performance by audience segment across age, gender, placement, and device for the last 30 days. Which segments drive the most conversions at the lowest cost?”

Client reporting

chat_bubble“Draft a client-ready weekly summary email for [Client Name]. Include a KPIs table, top 3 wins, top 3 concerns, and 3 action items for next week.”
chat_bubble“For each of my connected Meta Ads accounts, pull last 7 days: spend, conversions, CPA, ROAS. Highlight accounts that outperformed or underperformed their 30-day average by more than 20%.”
chat_bubble“Write a one-page monthly performance review for [Brand]. Compare this month to last month and the same month last year. Focus on trends, not tactics.”

Prompts for agencies managing multiple clients

If you run Meta Ads for 5+ brands, these four prompts replace most of your weekly data wrangling:

groups“For every connected Meta Ads account, pull last 7 days: spend, conversions, CPA, ROAS. Compare to prior 7 days. Highlight changes greater than 20%. Format as one client-ready email per account.”
groups“Across all my connected accounts, find campaigns where CPA increased more than 25% in the last 14 days. Explain likely causes and recommend corrective actions.”
groups“Review campaign-level ROAS across all my accounts for the last 30 days. Suggest where to shift budget to maximize total return.”
groups“Compare my 5 e-commerce clients’ Meta Ads performance. Who has the lowest CPA and highest ROAS? Identify patterns in targeting, placements, and creative that correlate with winners.”

Prompts for B2B marketers

Meta Ads in B2B means connecting Meta data with CRM pipeline data. Porter MCP bridges both so you can ask:

business_center“Match Meta Ads data with my HubSpot data. Calculate cost per SQL (sales-qualified lead) over the last 30 days. Which campaigns drive the most SQLs?”
business_center“Match Meta Ads leads with CRM closed-won deals. Which campaigns generated the highest total pipeline value in the last 90 days?”
business_center“For each Meta campaign, calculate lead-to-customer conversion rate. Which campaigns bring the highest quality leads, not just the most leads?”
business_center“Do leads from Meta Ads close faster or slower than other channels? Break down by campaign and target persona.”

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:

shopping_cart“Match Meta Ads spend with Shopify revenue for the last 30 days. Calculate true ROAS per campaign. Highlight campaigns below 2x and suggest optimization actions.”
shopping_cart“Find campaigns where spend went up but revenue dropped in the last 14 days. Diagnose likely inefficiency: targeting, creative fatigue, or market conditions.”
shopping_cart“Which products drove the most revenue from Meta Ads last month? Break down by campaign and ad creative. Suggest products to feature more heavily.”
shopping_cart“List campaigns with ROAS greater than 4x and stable CPA over the last 14 days. Recommend safe budget increases for the next 7 days.”

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.

hub“Pull Meta Ads spend, Google Ads spend, and Shopify revenue for the last 30 days. Calculate true ROAS per channel after deduplicating conversions. Which channel actually drove the most purchases?”
hub“Match Meta Ads campaigns with CRM closed-won deals for the last 90 days. Calculate cost per closed deal. Which campaigns delivered the highest pipeline value?”
hub“Pull Meta Ads, Google Ads, GA4, and Shopify data for the last 7 days. Build a unified daily performance snapshot: spend per channel, conversions per channel, blended CPA, blended ROAS. Highlight any anomalies.”

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.

Meta’s enforcement is behavior-based, not tool-based. Meta doesn’t ban accounts because you used Claude or an MCP. It bans accounts because of how the API was used: write access at scale, bursty traffic, aggressive budget changes, or automated browsing of Ads Manager. Read-only analytics is safe. Write automation without guardrails is not.
If you’re only using Porter MCP, you can skip the rest of this section. Porter MCP calls Meta’s reporting endpoints only: reads, never writes. Zero write surface = zero ban surface. You can read every campaign, ad set, ad, insight, and breakdown you want, as often as you want. The guidance below is for the path where you connect Claude Code (or any agent) directly to Meta’s write API: creating campaigns, bumping budgets, pausing ads, or driving the Ads Manager UI with browser automation. That’s where bans live.

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 the ads_management write scope, or the scope is never exercised.
  • Write endpoints (POST / DELETE on the same objects, plus pages_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:

“You guarantee compliance regardless of approval.” App Review, Tech Provider badge and Advanced Access change what you can do (scope breadth, rate-limit ceiling). They don’t change how safe you are. Accounts are judged 100% on what the API calls do in production.

Straight from Meta’s Developer Policy and Rate Limiting docs:

FactorBans?What it actually controls
Token type (OAuth vs system user)NoExpiration: ~60 days vs non-expiring
App Review / Advanced AccessNoRate limit tier: 60 pts (dev) vs 9,000 pts (standard), 300s vs 60s block on breach
Tech Provider & Business VerificationNoWhich advanced permissions unlock for managing third-party clients
Ad content policiesCriticalProhibited products, misleading claims, restricted verticals
API traffic shapeCriticalBurst calls, parallel accounts, no exponential backoff on 429s
Budget change cadenceYesHard caps: 4 ad set budget changes/hour, 10 account spend-cap changes/day
Mutation rateYes>100 write requests/sec per app+account = automatic block
Abrupt spend scalingYes>20% step increases flag as risk, separate from content review
API error rateYes>15% errors over 15 days = access-tier downgrade
API inactivityYes28 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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 / subcodeActionMeaning
17 / 2446079Back offUser request limit reached
613 / 1487742Back offToo many calls from this ad account
613 / 5044001Back offMutation rate exceeded (100 QPS)
4 / 1504022 & 1504039Back offApp-level insights throttling
80000–80014Back offBusiness Use Case rate limit breached
613 / 1487632Wait 1hAd set budget change cap (4/hour)
— / 1885172Wait 24hAccount spend-cap change limit (10/day)
190Re-authInvalid / expired access token
200Fix scopePermissions error, usually missing pages_manage_ads
100Fix codeInvalid 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:

visibility
Visibility
Did they see it? Impressions, Reach, Frequency, CPM, 3-second video views.
touch_app
Engagement
Did they interact? Clicks, CTR, CPC, Landing page views, ThruPlays, Page engagement.
check_circle
Conversion
Did they act? Purchases, Purchase value, Leads, Add to cart, App installs, ROAS.
trending_up
Efficiency metrics
CPA, CPL, ROAS, Hook rate (3s/imp), Hold rate (15s/3s), Thumbstop rate.
timer
Attribution windows
1-day click, 7-day click, 28-day click, 1-day view, mixed. Available on every action field.
campaign
Campaign & creative
Campaign name, objective, status, ad set name, optimization goal, ad name, creative image, creative video, headline, body text, call to action, landing URL.
filter_alt
Audience breakdowns (34 total)
Age, Gender, Country, Region, Placement, Publisher platform, Device, Product ID, Action type.
schedule
Time (13 total)
Hour, Day of week, Week, Month, Quarter, Year.
hub
Cross-channel
Google Ads, GA4, Shopify, TikTok Ads, LinkedIn Ads, HubSpot, Search Console, Klaviyo, and 17 more through the same MCP URL.

Full reference: Meta Ads fields list.

Frequently asked questions

How do I 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. Setup takes under 5 minutes.
How do I use Claude Code for Meta Ads?
Install Claude Code, add Porter’s MCP (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.
Will Meta ban my account if I use Claude or Claude Code?
Only if you cross into write automation without guardrails. Meta’s enforcement is behavior-based: burst API traffic, rapid budget changes, and browser automation on Ads Manager are what trigger bans, not which tool you use. Porter MCP is read-only, so it has zero ban surface. For write use cases, follow the 5-rule safety protocol in the article.
How much does it cost to connect Meta Ads to Claude?
Porter MCP has a free tier (unlimited queries for up to 3 ad accounts + 30 days of historical data). Claude Pro is $20/month (needed for custom connectors). Meta’s Marketing API itself is free, subject to rate limits.
Is Instagram Ads data included in the Meta Ads MCP?
Yes. Meta’s Marketing API treats Facebook and Instagram as one dataset. When you connect Meta Ads, Instagram Feed, Stories and Reels data are included automatically.
Is my data safe with Porter MCP?
Yes. Tokens are stored encrypted, traffic is HTTPS-only, and Porter does not use your campaign data to train any models. You can revoke the connector at any time from Claude Settings or your Porter dashboard.
How fresh is the data? Is it real-time?
Meta’s Marketing API refreshes every 15–30 minutes. Porter MCP pulls live, so your data is always within that window. No ad platform publishes sub-15-minute data via API, so that lag is Meta’s, not Porter’s.
Are there rate limits for Meta Ads data in Claude?
Yes. Meta caps standard-tier apps at 9,000 points per hour per app+account (1 point per read, 3 per write). Porter MCP batches requests and uses exponential backoff, so read-only analysis rarely hits them. If you hit a 429, wait 60 seconds and retry.
Can Claude actually create or pause ads?
Claude web and desktop are read-only via MCP. Claude Code can create, pause or modify ads, but only if you wire it up with Meta Marketing API write scopes and explicit permission. Porter MCP defaults to read-only for safety.
Why do Claude’s numbers sometimes differ from Ads Manager?
Three common reasons: (1) Attribution window: Ads Manager defaults to your UI setting; the API defaults to 7-day click. (2) Timezone: Meta UI uses your timezone; the API may return UTC unless told otherwise. (3) Refresh lag: the API updates every 15–30 minutes, so Ads Manager is slightly fresher. Fix: pin attribution in your prompt, e.g. “use 7-day click attribution and my Ads Manager timezone when calculating ROAS.”

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