---
title: "Claude Meta Ads — Conversions API + MCP for Facebook Ads | Adscriptly"
description: Connect Claude to your Meta Ads data through the Adscriptly MCP server, and send first-party conversions back to Meta through the Conversions API with event-id deduplication. Read-only account access; no campaign-management permission requested.
image: https://adscriptly.com/opengraph-image.png
canonical: https://adscriptly.com/claude-meta-ads
source: https://adscriptly.com/llms.txt
---
MCP Server

# Claude Meta Ads

Two halves of the same loop. Adscriptly sends your first-party conversions into Meta through the Conversions API — deduplicated against the browser pixel, matched on hashed identifiers, reconciled against what Meta says it received. Claude reads the other half: what Meta spent, and what actually converted.

Said plainly, because it matters more than a claim: Claude cannot change your Meta campaigns. The Meta connection is read-only, and the MCP write tools cover Google Ads. If you need an assistant that edits budgets and bids today, that is [Claude Google Ads](https://adscriptly.com/claude-google-ads).

[Send conversions to Meta](https://adscriptly.com/signup?next=/dashboard/signals) [Read the setup docs](https://adscriptly.com/docs/mcp)

## What Meta actually receives

One conversion, from the moment it happens to the moment Meta confirms it. Every stage below is a thing the delivery worker really does.

Captured first-party

The pixel records the conversion on your own domain, so it survives Safari, blockers, and an expiring cookie.

- browser event
- server event
- visitor_token

Matched

Meta needs something to match on. An event with none of the three is recorded and reported as unmatchable rather than sent to be silently dropped.

- hashed identifier
- fbc
- fbp

Deduplicated

The browser copy and the server copy carry the same id, so Meta counts one conversion instead of two.

- event_id
- fbq(..., { eventID })

Delivered

Sent through the Nango connection, so the access token is resolved at send time and never lands in our database or our logs.

- Conversions API
- every 5 minutes

Reconciled

Meta answers a half-processed batch with a 200. We compare what came back against what we sent, so a batch that half-landed is never recorded as a clean success.

- events_received
- partial-batch detection

Keptapproval

Every conversion is written down before it is sent. Turning delivery off stops the sending, not the recording.

- delivery ledger

## Connect Claude in three steps

The same hosted endpoint serves both platforms. Add it once; the Google Ads tools and your Meta account context arrive together.

Claude.ai

1. Customize → Connectors → Add custom connector.
2. Paste https://adscriptly.com/api/mcp, select Connect, then sign in to Adscriptly.

Claude Code

1. claude mcp add --transport http adscriptly https://adscriptly.com/api/mcp
2. claude mcp login adscriptly

ChatGPT

1. Settings → Security and login → Developer mode.
2. Create an app at chatgpt.com/plugins with https://adscriptly.com/api/mcp as the server URL.

## What it is allowed to do

The honest version, including the part that is not built yet.

Meta permission ads_read. Adscriptly reads accessible ad accounts and aggregate performance, and does not request campaign-management permission. Campaign changes Not available from Claude today. The MCP write tools cover Google Ads only. Conversions API Live. Server-side delivery with event-id deduplication against your browser pixel. Access token Held by the connection and resolved at send time. It is never stored in our database or written to our logs. Authentication OAuth 2.1 with Dynamic Client Registration and S256 PKCE, same endpoint as the Google Ads tools.

## Questions

### Can Claude change my Meta campaigns?

No, and we would rather say so than imply otherwise. The Adscriptly MCP write tools cover Google Ads. The Meta connection is ads_read, so Claude can reason over Meta account performance but cannot edit budgets, bids, or creative.

### So what does Claude actually do for Meta today?

It reads. You can ask it what Meta spent against what actually converted, because Adscriptly holds both sides — the ad-account performance and the first-party conversions it delivered back through the Conversions API.

### How is this different from installing the Meta pixel?

The browser pixel is one copy of the event and it is the copy most likely to go missing. Adscriptly sends a server-side copy through the Conversions API with a matching event id, so Meta gets the conversion even when the browser copy never arrives, and still counts it once.

### Will it double-count my conversions?

No. The browser and server copies share an event_id, which is the identifier Meta deduplicates on. Pair your fbq call with the id from window.adscriptly to get the same guarantee on events you fire yourself.

### What happens if Meta rejects a batch?

Meta reports a partially-processed batch as a 200 with a lower events_received count. We compare the two numbers and record the shortfall, so partial delivery shows up as partial rather than as success.

## Stop losing conversions to the browser.

Free for 7 days, then $129/mo. We'll remind you 3 days before your first charge. Cancel anytime.

[Get Started For Free](https://adscriptly.com/signup?next=/dashboard/ai-chat) [Read the docs](https://adscriptly.com/docs)[![](https://img.logo.dev/claude.ai?token=pk_Gqyn4kIpSmSBRdvJf3B-Yw&size=76&format=png) Connect Claude with  
Google & Meta Ads in 1 click ›](https://adscriptly.com/marketing-mcp)
