Meta Ads · Workflow guide
Meta Ads creative fatigue report with an AI agent
Have your AI agent compare Meta Ads performance by ad, flag likely creative fatigue with evidence, and propose the next test, with budgets left to marketers.
Who this is for: Performance marketers managing enough active ads that manual review becomes a spreadsheet exercise.
Before you start
- A Meta Marketing API connection with reporting access to the intended ad account and the required asset assignment.
- An agent granted access to insights and the supporting ad metadata, without creative publishing or budget-change permissions.
- Agreed attribution settings, account timezone, objective, and a minimum spend or impression threshold for review.
In your Loggie workspace, connect Meta Ads, create an agent identity, and review its access. On the agent’s machine, use Node.js 20 or later and initialize the CLI:
npm install -g @loggie-ai/cli
loggie init
loggie discoverEnter the agent’s Loggie key through the initialization prompt. Keep provider credentials in the connection setup, not in the agent prompt. Use the connection slug returned by discovery in the examples below.
Step-by-step workflow
Define the symptoms you want to investigate
Creative fatigue is a hypothesis, not an API field. A useful queue combines movement in frequency, click-through rate, cost, and the conversion action that matters to your campaign. A rising cost alone can also reflect auction pressure or tracking changes.
Start with one ad account and compare two completed periods of equal length. Keep attribution settings and conversion definitions fixed. Agree on a minimum volume so a handful of impressions cannot dominate the brief.
Read ad-level insights through the connected account
After connecting Meta Ads in Loggie, initialize the CLI for your reporting agent. Replace meta-ads with the discovered connection slug and AD_ACCOUNT_ID with your account’s numeric ID. The connection base URL supplies the configured Graph API version.
The starter call reads a recent period at ad level. Add explicit time ranges for matched comparisons. Follow paging cursors and preserve the attribution settings returned or configured for the report.
loggie discover meta-ads --endpoint '/act_{ad_account_id}/insights' --method GET loggie call meta-ads GET /act_AD_ACCOUNT_ID/insights --query 'level=ad&date_preset=last_7d&fields=ad_id,ad_name,impressions,reach,frequency,spend,clicks,ctr,actions&limit=100' --prettyBuild a queue with evidence for each candidate
Join the periods on ad ID. Compare frequency, CTR, spend, and the chosen action count. Read the action_type values rather than assuming every action is a purchase. Keep campaign objectives separate when their success measures differ.
For each candidate, list the observed movement and at least one alternative explanation. Ask whether the audience, placement mix, or conversion tracking changed before proposing a replacement creative.
Turn the queue into a test brief
Give the creative team the ad identifier, performance context, and a proposed test with one clear variable. For example, test a different opening while holding the offer and audience constant. A recommendation should be easy to inspect and disagree with.
Leave pausing ads, publishing creative, and changing spend to the marketer’s existing review process. Schedule the analysis in the agent runtime and retain previous results to distinguish new candidates from ones already under review.
Meta Ads agent prompt
Adapt this prompt to your connected account and the scope you have approved.
Compare ad-level performance across the two approved periods. Use the agreed action_type and attribution settings. Flag possible fatigue only above the minimum volume. For each candidate, show frequency, CTR, spend, and the selected conversion count for both periods; include an alternative explanation and one test idea. Do not pause, publish, or change spend.Example Meta Ads report
Example output with invented data.
Creative fatigue queue: Spring prospecting, last 7 days vs prior 7
(min. $500 spend; purchases, 7-day click attribution, USD)
1. "UGC unboxing v2"
Frequency 1.8 → 3.1 · CTR 1.6% → 1.0% · Purchases 24 → 18
Spend $2,140 → $2,210
Likely fatigue. Also check: audience expansion turned on 5 days ago.
Test: a new opening 3 seconds, same offer and audience.
2. "Founder story 30s"
CPA $38 → $52, frequency flat at 1.4
Probably not fatigue: CPM rose 31% across the account. Watch for now.
No ads paused, published, or rebudgeted.Success checks
- Match one candidate’s metrics with Ads Manager using identical dates, attribution settings, and reporting level.
- Confirm that the conversion action is selected by action_type and that currency is stated.
- Check pagination and verify that no ad or budget changed during the run.
Pitfalls
- An insights endpoint appearing in discovery does not establish account eligibility or token scope; inspect actual API errors.
- Breakdowns can change which metrics are available or comparable. Add them only for a specific follow-up question.
- Reach from overlapping ads cannot be summed into unique account reach.
- Do not compare ads with different objectives as though their raw cost per action means the same thing.