OĞUZ EROL · MarkdownTR
Open MarkdownClose
Source: https://oguzerol.com/en/managing-meta-ads-with-claude/

Guide

# Managing Meta Ads With Claude

[Oğuz Erol](https://oguzerol.com/en/about-me/)  |  11 min read  |  Published: 20 August 2026  |  Updated: 22 October 2026

## Quick summary

Connect Claude to Meta ads, build a precise report, verify metrics against Ads Manager and prepare controlled changes. Includes prompts and troubleshooting.

Managing Meta ads with Claude means reading account data through a connector, analysing it and using whatever actions the connection actually exposes. **Start by producing a clearly defined report from the correct account and reconciling it with Ads Manager.** A successful connection does not prove access to every account or every write operation.

This guide is for people managing their own Facebook/Instagram ads or reviewing a company’s advertising. It covers setup, a first read-only prompt, metric calculations, change proposals and troubleshooting. The prompts are my suggested workflow, not a promise that every connector supports every requested field or action.

## How Claude, MCP and the ad account fit together

MCP, the Model Context Protocol, lets Claude call tools exposed by an external service. For Meta, check three separate layers:

| Layer | Question | What it does not prove |
| --- | --- | --- |
| Connection | Can Claude reach the server? | Access to the intended ad account |
| Account permissions | Which account IDs and actions can this session access? | Access to every tool or portfolio account |
| Request | What should happen to which object, account and date range? | That the action is commercially sensible |

Meta’s official endpoint is `https://mcp.facebook.com/ads`; the starting reference is [Meta’s Ads MCP setup documentation](https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-get-started). **During this 22 October 2026 update, Meta’s help pages returned access restrictions, so I could not reconfirm the current tool inventory.** Rather than promise a universal feature list, this guide shows how to inspect your own session’s tools and account scope. Anthropic’s setup and permission documentation was checked for this update.

## Add the connector to Claude

1. In Claude, open **Customize → Connectors → Add custom connector**.
2. Give it a recognisable name and enter `https://mcp.facebook.com/ads` as the remote MCP server URL.
3. Complete the authentication flow. Check that you are using the intended Facebook identity and business context; do not paste passwords or access tokens into chat.
4. Ensure the connector is enabled in the relevant conversation. Before reviewing campaigns, verify account access with the prompt below.

In Team/Enterprise organisations, adding the connector may require an administrative role; each user’s service authentication is a separate step. If labels change, consult [Anthropic’s custom connector guide](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp). Check current plan limits there rather than treating a copied pricing table as permanent.

Use this first connection check:

```
Read only. Summarise the Meta tools available in this conversation using
their actual tool descriptions. Separate read and write tools; do not call
any write tool.
List the ad account IDs and names you can access.
My intended account is [ACCOUNT_ID].
Read and confirm its name, currency and time zone if those fields are available.
Do not guess missing fields. If that account is absent, do not select another.
```

Check the **name and ID together**. Similar names, retired accounts and accounts using different currencies are easy to confuse. If the ID is absent, resolve identity and permissions rather than silently reporting on a different account.

## Connect through Claude Code

Claude Code users can add the HTTP server definition in a terminal:

```
claude mcp add --transport http meta-ads https://mcp.facebook.com/ads
```

Then use `/mcp` inside Claude Code to inspect status and any required authentication. Adding the definition and reaching **Connected** are different stages. Resolve “Needs authentication” or “Failed” before querying account data.

| Scope | Intended use |
| --- | --- |
| Default `local` | Your local definition for this project |
| `--scope user` | Your definition across all your projects |
| `--scope project` | Configuration shared through the project’s `.mcp.json` |

Sharing a project definition does not automatically share the OAuth user’s advertising permissions. Do not put tokens in project files. Claude.ai connectors can be available in Code under a qualifying subscription sign-in; check `/mcp` before defining the same URL twice. API-key sign-in does not imply the same connector inheritance. Source: [Claude Code MCP documentation](https://code.claude.com/docs/en/mcp), checked 22 October 2026.

## Your first report needs a specification

A useful report states its account, dates, time zone, currency, measured event, attribution settings and filters. “Conversions” alone is not a sufficient metric name: a submitted form, purchase and messaging event represent different outcomes.

Replace these example dates with your own completed, equal-length periods. Do not compare a partial current day with a finished day.

```
Read only. Do not change any campaign, ad set, ad or budget.
Account: [ACCOUNT_ID]. Verify currency and account time zone.
Compare 8–14 October 2026 with 1–7 October 2026. Exclude today.
Use campaign level. Include campaigns that spent during the period even
if they are paused now. Check every page of returned results.

Columns: campaign ID/name, spend, impressions, link clicks,
[EXACT CONVERSION EVENT], and cost per that event.
State attribution settings, action-reporting date basis if available,
filters, breakdowns and retrieval time above the table.
If a field or parameter is unavailable, mark it unverified; do not substitute
a different event. Calculate total ratios from total numerator/denominator,
not by averaging row percentages.

Separate measured findings, possible explanations and verification steps.
Disclose missing data before recommending action.
```

A filter for “currently active” can omit campaigns that spent during the selected period but are paused today. Stopping after the first result page is likewise not a complete account report. An empty or failed response is not proof of zero performance.

Meta’s official SDK distinguishes date range, reporting level, breakdowns, attribution and reporting-time parameters. This supports defining a report precisely; it does not prove all those parameters are exposed by MCP. Source: [Meta AdAccount/Insights definitions](https://github.com/facebook/facebook-python-business-sdk/blob/main/facebook_business/adobjects/adaccount.py).

## Read metrics precisely

| Metric | Definition to establish | Common mistake |
| --- | --- | --- |
| Spend | Account currency and period | Adding different currencies directly |
| Impressions | Number of displays | Treating it as unique people |
| Clicks | All clicks, link clicks or outbound clicks? | Treating every click as a website visit |
| Results/conversions | Exact event and attribution definition | Combining forms, messages and purchases as “sales” |
| Cost per event | Spend / chosen event count | Reporting zero cost when there were no events |
| CTR | Selected click type / impressions | Taking a simple average of campaign percentages |
| ROAS | Attributed purchase value / spend in the same currency | Treating it as profit or cash received |

Meta lists `clicks`, `inline_link_clicks`, `outbound_clicks`, `actions`, `conversions` and `results` separately. State which field each report column represents. Source: [Meta AdsInsights fields](https://github.com/facebook/facebook-python-business-sdk/blob/main/facebook_business/adobjects/adsinsights.py), checked 22 October 2026.

### Fictional example: how cost per form rises by 50%

This example demonstrates arithmetic, not client performance or an industry benchmark. Both periods use the same currency, form event and attribution definition.

| Period | Spend | Forms | Cost per form |
| --- | --- | --- | --- |
| Previous | TRY 1,000 | 50 | TRY 20 |
| Following | TRY 1,200 | 40 | TRY 30 |

Spend rose 20%, forms fell 20%, and cost per form rose **50%**, calculated as `(30/20−1)×100`. Correct arithmetic does not establish that creative fatigue caused the change. Tracking changes, traffic mix, offer, landing page and lead quality need separate investigation.

For CTR, suppose one campaign has 10,000 impressions and 100 link clicks (1%), while another has 1,000 impressions and 100 link clicks (10%). Total CTR is `(100+100)/(10,000+1,000)` = **approximately 1.82%**, not 5.5%. With zero conversions, CPA is undefined, not zero. Do not sum unique-person measures such as reach across rows to manufacture an account total; request the appropriate reporting-level total where available.

A Meta-attributed form and a CRM-qualified lead belong in separate columns. For industrial and B2B businesses, more forms do not necessarily mean more suitable buying organisations. Use only approved methods to link identities and share business data.

## Reconcile with Ads Manager before diagnosing tracking

Start with one campaign on one day. Align the following, in order:

1. **Account ID and currency:** rule out another account with a similar name.
2. **Dates and time zone:** check boundaries, inclusion of today and account time zone.
3. **Level and filters:** campaign versus ad set, including objects whose status changed.
4. **Metric and event:** distinguish link clicks from all clicks and forms from messages.
5. **Attribution and reporting-time basis:** check which interaction and date receive the event.
6. **Breakdowns, pagination and retrieval time:** establish whether results are complete and were fetched at comparable times.

Until these definitions match, “tracking is broken” or “Claude calculated incorrectly” is premature. Retain raw rows and the calculation so each total can be traced. Reusing the specification next time separates performance changes from reporting-definition changes.

## Three controls before changing an account

A **prompt instruction** expresses what you want Claude to do. A **client tool permission** controls when Claude may invoke a tool. **Meta account permissions and server rules** determine whether the service accepts the operation. None replaces the others.

Do not assume every write produces a fresh confirmation. Anthropic supports persistent tool permissions, and Research can run connector tools without further approval. For reporting, disable write tools where possible and limit account access to what is needed. That is a concrete control beyond merely writing “do not change anything”. Source: [Anthropic connector permissions](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp).

Creating a paused object and **editing an already active object** are different operations. If a tool description specifies an initial status, inspect it; do not generalise that behaviour to every update. Object status, parent status, scheduling and other account conditions jointly affect delivery eligibility.

### A copyable change-proposal prompt

```
Do not apply anything yet. Prepare proposed changes for [ACCOUNT_ID] only.
For every row include:
- Object type and ID (campaign/ad set/ad) and its current name.
- Field to change, current value and time it was read.
- Proposed value, currency/unit, and whether a budget is daily or lifetime.
- Evidence supporting the proposal, separately from the unproven hypothesis.
- Affected scope, intended timing and possible side effects.
- Rollback field and previous value.
- The read operation that will verify the applied result.
If evidence is insufficient, specify the missing check instead of an action.
```

Immediately before applying an authorised change, reread the current value: another person may have changed it. Afterwards, read the object again and confirm that only the intended field changed. Restoring an old setting does not undo historical spend or ads already delivered.

**Do not blindly retry a timed-out creation request.** The operation may have succeeded while its response was lost. Read the object and any available activity record before retrying, or you may create a duplicate campaign or ad.

## Connection and reporting troubleshooting

| Symptom | First check |
| --- | --- |
| Connector absent | Correct Claude account, organisation role and conversation enablement |
| Needs authentication / 401 | Authentication flow and session; keep secrets out of chat |
| Connected but account missing | Facebook identity, business context, account role and exact ID |
| Reads work but writes fail | Tool scope, account permission, server policy and actual error |
| Empty report | Dates, level, filters, event and all result pages |
| Different totals in Ads Manager | The definition-alignment sequence above |
| Creation/update times out | Read actual state before retrying |

These are starting points, not proof of a single cause. Resolve necessary scope with the authorised administrator instead of using another connection to bypass a denied permission.

## Data handling and disconnecting

Using Meta’s official server does not mean report data stays out of Claude. Remote connectors added in the Claude application connect through Anthropic’s infrastructure; that is different from an HTTP server configured directly in Claude Code. In Code, tool results supplied to the model also enter the conversation context. Use the organisation’s approved account and data conditions; do not request customer lists or personal fields the report does not need. The application connector architecture is explained in [Anthropic’s connector documentation](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp).

Disabling a connector for a conversation, removing it from Claude and revoking access at Meta are different actions. Remove the connection in Claude’s Connectors screen. To remove a local Claude Code definition:

```
claude mcp remove meta-ads
```

Success does not prove that other sessions or every Meta-side permission have been revoked. Review the relevant service’s granted application/connection permissions too, then verify in a new session that a read-only request no longer has access. Previously exported reports do not disappear when a connection is removed.

## Frequently Asked Questions

### Do I need to build a separate API application?

Using the official remote MCP connection and developing a direct Marketing API integration are different approaches. First inspect the official connection’s tools for your account. A direct API integration is a separate solution whose application, permissions, authentication and error handling you must manage.

### Can Claude change my ad budget?

Only if the connected tools and account permissions expose that operation. A budget example in a guide does not establish your session’s permissions. Read the current value, prepare the proposal and verify the object after any authorised application.

### Are conversions in Claude’s report sales?

Not unless the selected event represents a purchase. Even then, an attributed advertising event and a CRM-confirmed order, cancellation or payment may be different records. Show the event name and its business-system counterpart separately.

### Should I let it optimise every campaign autonomously?

First establish measurement definitions, business objectives, budget scope and change limits. Claude can generate hypotheses and proposals; unsupported causal claims should not justify changes. Start with a narrow action whose object ID and rollback value are explicit.

### Does a failed connection require a third-party connector?

No. Check authentication, account ID, organisation policy and tool scope first. An alternative integration requires its own data and permission assessment; it is not a way to bypass an existing denial.

## From a verified report to a business decision

For me, the connector’s value is making it easier to examine which campaigns bring suitable enquiries. That is why I approach [Meta ads management](https://oguzerol.com/en/meta-ads-management/) together with report definitions, measurement checks and lead quality. Begin with one account, explicit dates, a named event, an Ads Manager reconciliation and a proposal that can be reviewed before execution.

[Back to top ↑](https://oguzerol.com/en/managing-meta-ads-with-claude/#icerik)

## You may also find these useful

[Facebook Ads ExpertStop guessing with Facebook ads. Pixel setup, audience strategy, and daily optimization. Account structure set up properly. Message me on WhatsApp.](https://oguzerol.com/en/facebook-ads-specialist/)[How I Manage My Google Ads Accounts With Claude SkillsThe workflow of one consultant managing multiple Google Ads accounts with Claude Skills: MCC access, automated reports, and decisions that still need a human.](https://oguzerol.com/en/how-i-manage-google-ads-accounts-with-claude-skills/)[Meta Ads SpecialistI manage Facebook and Instagram ads: measurement first (pixel, Conversions API), then audience and creative testing, with reporting on results, not spend.](https://oguzerol.com/en/meta-ads-management/)

[Browse all articles →](https://oguzerol.com/en/articles/)