I was recently at an AI Summit at the Meta offices in Sydney (picture related).
First takeaway was that the chat bot built into Ads Manager is actually decent at reporting. Try it out. You can ask it pretty general questions and it’s got decent answers.
But the key takeaway to be honest was the big discrepancy in uptake in the room. There were some people who had just spun up a Claude account for the session and others who were already automating, “everything strategy, then delegating”.
I was probably in the middle of the group: daily reports pulling through from the Meta MCP from managed accounts, starting creative brainstorming with, ‘Give me a few riffs on this theme,’ and doing some forward planning — especially for Black Friday.
In general, there’s not a lot of uptake with AI creative yet. I’m using it for copy, over which I then do a strong editorial pass and expansion, but I don’t trust the imagery and I especially don’t trust the video. I am hearing reports of AI video doing really well for some advertisers. For those I think the actual skill is in the briefs.
It was a good reminder that these tools do have their strengths — large scale data processing being a good one and agents that can run reporting tasks being another, imo — and that we people have our strengths too: ambition, ideas, and each other.
Related: it was great to shake hands with my reps and make a few new industry friends.
Also proud to append that I flew home after an airport beer and immediately won (back-to-back!) trivia at Landers Pocket.
Here’s the brief I use to automate reporting for my managed Meta accounts:
NOTE: This brief assumes you’ve connected your LLM of choice (ChatGPT, Claude, whatever) through to the Meta MCP already. If you have trouble accessing the MCP (like if your account has the MCP access flag set to false, which your LLM can report back to you), talk to your Meta rep.
Copy and paste this into your LLM, with the {{ bits in curly brackets replaced with your relevant data }} and schedule the task for 9am every morning.
You are running the daily {{ paste brand name }} Meta Ads performance report. Use the Meta Ads MCP (connector ID: b5ae07b6-bbed-4e61-bad7-8bf3d57dc9dd) to pull data for ad account {{ paste ad account ID here }} ({{ paste ad account name here }}).
Today’s date: use the current date. Define:
- LAST 7 DAYS = yesterday back 7 days (e.g. if today is Jun 10, last 7d = Jun 3–9)
- PREV 7 DAYS = the 7 days before that (e.g. May 27–Jun 2)
STEP 1: Pull account-level overall metrics (both periods)
Fields: amount_spent, result_values, actions (filter for omni_purchase or fb_pixel_purchase), purchase_roas Pull for both LAST 7 DAYS and PREV 7 DAYS date ranges.
STEP 2: Pull daily breakdown for LAST 7 DAYS
Same fields + time_increment: “1” to get per-day data. You need this for the attribution adjustment.
STEP 3: Pull regional breakdown (both periods) [OPTIONAL]
If you’re running campaigns in regions other than AU, this is helpful for isolating regional performance.
Breakdowns: country. Group results into:
- Australia (AU)
- United Kingdom (UK)
- United States (US)
- in bold — as required
Fields: amount_spent, purchase_roas, actions (omni_purchase) Use limit: 50 to keep response size manageable.
STEP 4: Pull ad-level data (both periods)
Fields: ad_name, ad_id, campaign_id, amount_spent, purchase_roas, frequency, impressions Pull for both periods. Use limit: 100.
STEP 5: Pull campaign names
Use ads_get_ad_entities or equivalent to get campaign names for the campaign IDs you saw in Step 4. You need these to label ads in the report based on which campaign they are currently running in.
CALCULATIONS
MER
MER = Total Ad Spend ÷ Purchase Conversion Value (lower = more efficient) Purchase Conversion Value comes from result_values (action_values:offsite_conversion.fb_pixel_purchase or similar pixel purchase field).
Attribution Adjustment (LAST 7 DAYS only)
The previous period is fully attributed. The last 3 days of the current period are under-reported due to Meta’s 7-day click / 1-day view window. Apply these fill-rate multipliers to the daily revenue for those days:
- T-1 (yesterday): × 1.82
- T-2 (2 days ago): × 1.33
- T-3 (3 days ago): × 1.11
- T-4 and earlier: × 1.00 (no adjustment)
Sum the adjusted daily revenues to get ADJUSTED LAST 7D REVENUE. Calculate BLENDED MULTIPLIER = Adjusted Revenue ÷ Raw Revenue.
Report both raw and attribution-adjusted MER side by side.
Ad-Level Attribution Adjustment
Apply the same BLENDED MULTIPLIER (calculated above) to all ad last-7d ROAS figures. Show:
- Prev 7d ROAS
- Last 7d raw ROAS
- Last 7d adjusted ROAS
This prevents incorrectly pausing ads due to attribution lag.
REPORT FORMAT
Produce a markdown report with the following sections:
A. Overall Spend vs. Reported Revenue
Table: Spend, Revenue (raw), Purchases, CPM, CTR, CPC — last 7d vs prev 7d with % change.
B. MER (Media Efficiency Ratio)
- Raw MER table (both periods + change)
- Per-day attribution table showing raw vs adjusted revenue for each day of last 7d
- Adjusted MER table (raw last 7d / adjusted last 7d / prev 7d)
- Plain-English interpretation of what the adjustment means
C. Regional Breakdown
Two tables (last 7d and prev 7d): Region | Spend | Revenue | MER | Purchases Then a period-over-period change table. Key observations bullet points.
D. Burning-Out Creative (Flag for Replacement)
Ads where last-7d adjusted ROAS declined materially vs prev 7d OR is below breakeven.
For each ad, show:
- Ad name and ID
- Campaign: [campaign name]
- Prev 7d ROAS | Last 7d raw ROAS | Last 7d adjusted ROAS (% change)
- Spend (prev → last 7d) and frequency trend
- Brief interpretation and recommended action
Group into: 🔴 High Priority — Replace Now | 🟡 Watch Closely — Showing Fatigue
E. High-Performing Creative (Worth Recreating)
Ads where last-7d adjusted ROAS held or improved vs prev 7d and remains above breakeven.
For each ad, show:
- Ad name and ID
- Campaign: [campaign name]
- Prev 7d ROAS | Last 7d raw ROAS | Last 7d adjusted ROAS (% change)
- Spend trend
- Brief interpretation and creative brief recommendation
Summary Flags Table
| Priority | Action | Quick-reference table of the top 6–8 actions from sections D and E.
NOTES
- Use amount_spent (not spend) and result_values (not action_values) — these are the correct Meta API field names
- All figures in AUD
- Breakeven ROAS for {{ brand }} is approximately {{ paste ROAS target }} (adjust if you have better information)
- Add footer: Data source: Meta Ads Manager ({{ paste ad account name }} — ID {{ paste ad account ID here }}). Revenue = Meta pixel-attributed purchase value.
