Pulls daily Facebook and Instagram ad spend, and unlocks the Meta Ads Agent โ a AI-orchestrated chat interface that lets you optimise your account in plain English with confirm-before-execute mutations.
What syncs
Per-ad-account daily spend pulled via the Meta Marketing API. Aggregated to monthly P&L on the dashboard.
Once connected, the Meta Ads Agent can read insights and propose changes via MCP tool calls.
Pulls 12+ months of spend on first connect.
Click Sync Now on the dashboard to refresh โ or let the agent do it on demand during a chat.
Setup
Generate a long-lived System User token in Meta Business Suite and grab your ad account ID.
ads_read permission. For long-lived tokens use the Token Debugger.act_ prefix.Common workflows
Connect both Google Ads and Meta Ads to see your total ad spend in one row, with combined ROAS and P&L.
Open the Meta Ads Agent and ask "why did CPA spike yesterday?" โ the agent inspects your account and explains in plain English.
"Pause every ad set with CTR below 1%" โ the agent proposes the list, you confirm, the changes execute as a batch.
Sending results back
Spend flowing in is half the loop. These two send your real outcomes back to Meta, so its optimisation learns from booked work rather than clicks.
When a call qualifies, it is reported to Meta server-side. Meta matches on a hashed phone or email alone rather than requiring a click id, so a qualified call with no fbclid is still reportable โ unlike the Google side, where it isn't.
The browser pixel and the server event share a browser-minted event id, so a single action is counted once rather than twice.
Meta accepts a valueless lead and optimises for lead count, so Lead fires at qualification. Purchase fires once, later, when a value first appears. Values are never re-sent against the same event โ Meta would either deduplicate or double-count it, and the response can't say which.
Connect your Facebook Page and lead-form submissions arrive in PPC TNT as leads like any other, attributed to the ad that produced them โ and forwarded on to your CRM if you've set a webhook.
One limit worth knowing up front: Meta rejects any event older than seven days, so this pipeline works on a short window by design. A value corrected after the Purchase event has fired cannot be communicated to Meta, and the app says so rather than silently re-sending.
Encrypted at rest, never displayed in plain text. Paired with the Meta Ads Agent for in-app optimisation.