Skip to content
Run this on autopilot — free
Workflow · Audits

Run a complete 10-section Meta Ads audit inside Claude

Time to first output: 10-15 minutes to run, once connected

What it does?

The prompt runs a 10-section Meta Ads audit via GoMarble MCP — pixel health, creative fatigue, wasted spend, audience overlap, learning phase issues, funnel balance, customer split, placement, creative format, and attribution — and returns one structured report with a priority action list.

What you need

  • Meta Ad Account ID (act_XXXXXXXXXX)

First, connect Claude to your ad accounts

Add GoMarble AI as a custom connector in Claude so it can pull your Meta Ads data directly inside the chat.

1

Sign up

Sign up on GoMarble using your work email.

2

Add a custom connector

Go to Claude Integrations and click "Add Custom Connector".

3

Add the following details

Enter the Name and URL below.

Name

GoMarble AI

URL

https://apps.gomarble.ai/mcp-api/sse

4

Finish setup

Click "Add" and then "Connect".

This page's setup instructions were re-verified fresh against HowItWorks.tsx and match the audit prompt's actual content — no stale/mismatched copy found.

The prompt

Paste this into Claude, update the Meta Ad Account ID, and run it to get the full 10-section audit report.

Lead-magnet prompt · free

# Meta Ads Account Audit — Powered by GoMarble MCP

## Setup
**Ad Account ID:** act_XXXXXXXXXX
← Replace this with your Meta Ads account ID before running

---

You are a senior performance marketing analyst. Using GoMarble MCP's Meta Ads tools, run a complete 10-point audit on the ad account above. Work through each section in order. Do not skip any section. Present a clean, structured report at the end with findings + action items for each.

---

## PRE-AUDIT SETUP

Before starting the audit, do the following:

1. Call `facebook_get_details_of_ad_account` for the account ID above

2. Note the account currency (all monetary values must use this currency)

3. Note the top spending campaigns and ad sets from account_structure

4. Identify the Primary Conversion Metric (PCM) by reading `promoted_object.custom_event_type` from the top ad sets — NEVER infer this from names

---

## AUDIT SECTION 1: Account Health + Pixel Check

**What to do:**

- Pull account-level spend, impressions, clicks, CTR, CPM, and conversions for last 30 days using `facebook_get_adaccount_insights` at level="account"

- Then pull the same metrics for the previous 30-day period (days 31–60) for comparison

- Pull the pixel list using `facebook_list_pixels` — check `last_fired_time` for each pixel

**Flag and report:**

- Spend spikes or drops greater than 30% week-over-week

- Any pixel where `last_fired_time` is more than 48 hours ago (broken or misfiring pixel)

- CTR or conversion rate drops greater than 20% vs prior period

- Any campaign with zero conversions in the last 14 days despite active spend

**Output:** Account health status (Healthy / At Risk / Critical), pixel status for each pixel, and a summary of any anomalies found

---

## AUDIT SECTION 2: Creative Fatigue

**What to do:**

- Pull ad-level insights with `time_increment=1` (daily) for the last 21 days using `facebook_get_adaccount_insights` at level="ad"

- Fields needed: `ad_name`, `ad_id`, `impressions`, `ctr`, `cpm`, `frequency`, `spend`

- Filter: active ads only (`ad.effective_status = ACTIVE`) and impressions > 0

- Fetch ALL pages before analyzing

**Flag and report:**

- Ads where frequency has crossed 3.0 AND CTR has dropped more than 20% compared to the first 7 days of the window

- Ads where CTR in the last 7 days is less than 50% of their CTR in days 1–7 of the window

- Sort flagged ads by spend (highest first)

**Output:** Fatigue score per ad (High / Medium / Low), current frequency, CTR trend direction, and recommended action (refresh creative / pause / monitor)

---

## AUDIT SECTION 3: Silent Budget Killers

**What to do:**

- Pull ad-level insights for last 30 days using `facebook_get_adaccount_insights` at level="ad"

- Fields needed: `ad_name`, `ad_id`, `adset_name`, `campaign_name`, `spend`, `impressions`, `ctr`, `cpm`, `actions`, `action_values`, `purchase_roas`

- Filter: active ads only, impressions > 0

- Sort by spend descending

- Fetch ALL pages

**Flag and report:**

- Ads with spend in the top 50% of the account BUT zero conversions in the last 30 days

- Ads where spend > 2× the ad set's average CPA target with zero conversions

- Ads where ROAS is less than 0.5 (spending more than double what they return)

- Calculate total wasted spend across all flagged ads

**Output:** Kill list table — ad name, spend, conversions, CPA/ROAS, and recommended action (pause immediately / reduce budget / watch)

---

## AUDIT SECTION 4: Audience Overlap

**What to do:**

- Pull all active ad sets using `facebook_list_adsets` — retrieve targeting details for each

- Group ad sets by the campaign they belong to

- For each campaign, compare targeting across its ad sets:

  - Same age range + same geo + same interests/behaviors = high overlap risk

  - Same custom audiences included without exclusions between ad sets = overlap confirmed

**Flag and report:**

- Ad set pairs within the same campaign that share identical or near-identical targeting with no exclusion audiences separating them

- Any campaign where zero ad sets have exclusion audiences configured

- Estimate the overlap risk level (High / Medium / Low) per campaign

**Output:** Overlap risk summary per campaign, flagged ad set pairs, and recommended fix (add exclusion audiences / consolidate ad sets / separate into different campaigns)

---

## AUDIT SECTION 5: Learning Phase Trap

**What to do:**

- Pull all active ad sets using `facebook_list_adsets`

- Check the `learning_stage_info` field for each ad set — this contains status and reasons

**Flag and report:**

- Any ad set with status = `LEARNING` — note how long it has been in learning

- Any ad set with status = `LEARNING_LIMITED` — this is the trap. Note the specific reason code:

  - `LOW_VOLUME` → not enough conversion events (fewer than 50/week)

  - `NOT_ENOUGH_BUDGET` → budget too low relative to bid/CPA

  - `AD_APPROVAL_ISSUE` → ads not approved

  - `CAMPAIGN_GROUP_BUDGET_OPTIMIZATION` → CBO distributing budget away

  - `ADS_ON` → too few active ads

- Any campaign where more than 50% of its ad sets are learning limited

**Output:** Learning phase status table — ad set name, status, reason, days in current status, and specific fix for each reason code

---

## AUDIT SECTION 6: Funnel Spend Ratio

**What to do:**

- Pull campaign-level insights for last 30 days using `facebook_get_adaccount_insights` at level="campaign"

- Fields needed: `campaign_name`, `campaign_id`, `spend`, `impressions`, `ctr`, `cpm`, `actions`, `purchase_roas`

- Separately pull ad set targeting details using `facebook_list_adsets` to classify each ad set as:

  - **Cold (TOF):** Broad/interest/lookalike targeting with no custom audience

  - **Warm (MOF/BOF):** Custom audiences (website visitors, engagers, video viewers)

  - **Hot (Retargeting):** Past purchasers, cart abandoners, existing customers

**Calculate and report:**

- % of total spend going to Cold vs Warm vs Hot audiences

- Healthy benchmark: approximately 60–70% Cold / 20–30% Warm / 10–20% Hot for a scaling account

- Flag if more than 80% of spend is cold (under-investing in retargeting) or more than 50% is hot (over-indexed on a shrinking audience pool)

- Show ROAS or CPL by funnel tier

**Output:** Funnel spend breakdown, tier-by-tier ROAS/CPL, and whether the ratio is Balanced / TOF-Heavy / BOF-Heavy with recommended rebalancing action

---

## AUDIT SECTION 7: New vs Returning Customer Split

**What to do:**

- Pull account-level and campaign-level insights for last 30 days using `facebook_get_adaccount_insights`

- Use `breakdowns=["user_segment_key"]` to segment delivery by Meta's internal customer classification:

  - **New Audience** — users with no prior interaction with your brand

  - **Engaged Audience** — users who have interacted with your brand but not purchased

  - **Existing Customers** — users who have previously purchased

- Fields needed: `campaign_name`, `campaign_id`, `spend`, `impressions`, `clicks`, `ctr`, `cpm`, `actions`, `action_values`, `purchase_roas`

- Filter: active campaigns only (`campaign.effective_status = ACTIVE`) and impressions > 0

- Run first at account level for the overall split, then at campaign level to see which campaigns are skewing toward existing customers

**Flag and report:**

- % of total account spend reaching New vs Engaged vs Existing audiences

- Any campaign where more than 40% of spend is going to Existing Customers — this signals the algorithm is re-converting your existing base rather than acquiring new buyers, inflating reported ROAS while true acquisition is lower than it appears

- Any campaign where Existing Customer ROAS is significantly higher than New Audience ROAS — indicates over-attribution risk (existing customers would likely have repurchased organically)

- Compare CPA/CPL for New Audience vs Existing Customers — if acquisition CPA is dramatically higher, it signals the account is running out of cold audience efficiency

- For Advantage+ Shopping Campaigns (ASC) specifically: flag if Existing Customer spend share exceeds Meta's recommended cap (typically 10–30% of ASC budget, configurable in campaign settings)

**Why this matters:** Meta's default reporting blends new customer acquisition cost with re-purchase cost. If 50% of your "conversions" are existing customers re-buying, your true new customer acquisition CPA is roughly 2× what's reported. Scaling decisions made on blended metrics will over-invest in retention at the expense of growth.

**Output:** Customer split table (spend %, impressions %, ROAS, CPA by segment — New Audience / Engaged Audience / Existing Customers), campaign-level flags for Existing Customer over-indexing, and recommended action:

- If Existing Customer % is high → add existing customer exclusion audiences to prospecting campaigns, or set ASC existing customer budget cap

- If Engaged Audience CPA is high relative to New Audience → review retargeting depth and frequency before increasing MOF spend

- If New Audience CPA is unacceptably high → diagnose creative fatigue or audience exhaustion (cross-reference Sections 2 and 6)

- If data is insufficient for the breakdown → note that `user_segment_key` requires a connected pixel with purchase event history; flag for manual verification in Meta Ads Manager's Breakdown menu

---

## AUDIT SECTION 8: Placement Breakdown

**What to do:**

- Pull account-level insights broken down by placement using `facebook_get_adaccount_insights`

- Use `breakdowns=["publisher_platform", "platform_position"]`

- Fields needed: `spend`, `impressions`, `clicks`, `ctr`, `cpm`, `actions`, `purchase_roas`

- Date range: last 30 days

- Filter: impressions > 0

**Flag and report:**

- Rank all placements by spend

- Calculate CPA or ROAS for each placement

- Flag any placement where:

  - Spend > 10% of total account spend AND ROAS is less than 50% of account average ROAS

  - CPM is more than 2× the account average CPM with no conversion advantage

- Specifically call out Audience Network performance — this placement frequently underperforms for conversion objectives

**Output:** Placement performance table (spend, CTR, CPM, CPA/ROAS per placement), top 3 placements to consider excluding or deprioritizing, and recommended placement exclusion list

---

## AUDIT SECTION 9: Creative Angle & Format

**What to do:**

- Pull ad-level insights for last 30 days using `facebook_get_adaccount_insights` at level="ad"

- Fields needed: `ad_name`, `ad_id`, `spend`, `impressions`, `ctr`, `cpm`, `cpc`, `actions`, `action_values`, `purchase_roas`, `video_play_actions`, `video_thruplay_watched_actions`

- Filter: active ads, impressions > 0, sort by spend descending

- Fetch ALL pages

**Group and compare:**

- Group ads by format: Video vs Single Image vs Carousel vs Collection

- For each format group: calculate average CTR, CPM, CPA/ROAS, and total spend share

- Within the top-spending ads, use `facebook_analyze_ad_creative_by_id_or_url` on the top 3 ads by spend to analyze creative angle, hook quality, persona, and messaging

**Flag and report:**

- The winning format by ROAS/CPA

- The losing format that is consuming disproportionate spend

- For video ads: calculate Hook Rate (3-sec views / plays × 100) and Hold Rate (ThruPlays / 3-sec views × 100) and flag any video with Hook Rate < 25% or Hold Rate below account average

- Creative angle patterns from the top performers (what message/angle/persona is winning)

**Output:** Format performance comparison, hook/hold rate table for video ads, creative angle summary for top ads, and recommended format + angle to double down on

---

## AUDIT SECTION 10: Attribution Window Audit

**What to do:**

- Pull account-level and campaign-level insights with multiple attribution window comparisons using `facebook_get_adaccount_insights`

- Use `action_attribution_windows=["1d_click", "7d_click", "1d_view"]` to retrieve conversion counts under each window

- Fields needed: `campaign_name`, `campaign_id`, `spend`, `actions`, `action_values`, `purchase_roas`

- Date range: last 30 days

- Do this at both account level (for overall picture) and campaign level (to identify which campaigns are most affected)

**Calculate and report:**

- For each campaign, compare: conversions reported under 7d_click vs 1d_click

  - **Attribution Inflation Ratio = 7d_click conversions ÷ 1d_click conversions**

  - Ratio > 3× means the campaign is heavily reliant on long-window attribution — the "last 7 days" may include conversions driven by other touchpoints

- Compare view-through conversions (1d_view) vs click-through conversions (1d_click)

  - Any campaign where view-through conversions exceed 30% of total reported conversions is likely over-attributed — especially retargeting and Advantage+ Shopping campaigns

- Flag campaigns where reported ROAS looks strong but shifts significantly when moving from 7d_click to 1d_click window

**Why this matters:** Meta's default reporting uses 7-day click + 1-day view attribution. If your ROAS is 4× on paper but drops to 1.8× on 1d_click only, your business decisions are being made on inflated data. This is the single most common reason reported Meta performance doesn't match actual revenue in Shopify or your CRM.

**Output:** Attribution comparison table per campaign (conversions and ROAS under each window), Attribution Inflation Ratio per campaign, view-through % of total conversions, and a "true performance" ranking of campaigns using 1d_click as the conservative baseline — flagging any campaign whose scaling decision should be revisited

---

## FINAL REPORT FORMAT

After completing all 10 sections, compile and present the findings in this structure:

---

### META ADS ACCOUNT AUDIT REPORT

**Account:** [Account ID]

**Currency:** [Account Currency]

**Audit Period:** Last 30 days

**Audit Date:** [Today's date]

---

**OVERALL ACCOUNT HEALTH:** [Healthy / At Risk / Critical]

**TOP 3 IMMEDIATE ACTIONS:**

1. [Most urgent action]

2. [Second most urgent action]

3. [Third most urgent action]

---

Then present each of the 10 sections with:
- **Status:** [Green / Yellow / Red]
- **Key Finding:** 1–2 sentence summary
- **Data:** The specific numbers that support the finding
- **Action Required:** The exact change to make, with entity names

End the report with a **Priority Action List** — all recommended changes ranked by estimated impact, with the specific ad set, campaign, or ad name called out for each.

---

*Audit powered by GoMarble MCP + Claude*

What you get back

  • Format: A structured 10-section audit report, returned directly inside Claude — each section includes a status, key finding, data, and action required, plus a ranked Priority Action List at the end. The 10 sections:
    • Account Health + Pixel Check
    • Creative Fatigue
    • Silent Budget Killers
    • Audience Overlap
    • Learning Phase Trap
    • Funnel Spend Ratio
    • New vs Returning Customer Split
    • Placement Breakdown
    • Creative Angle & Format
    • Attribution Window Audit
Upgrade

Want this automated?

Run the prompt above every Monday morning automatically. GoMarble Agents don't just deliver the report (Slack / email / in-app) — they can execute the recommended changes directly in your ad account, too. Offload the whole recurring task and stop doing it manually.

Try GoMarble Agents free →

FAQ

Does this modify anything in my ad account?
No — every step reads data via GoMarble MCP; the prompt only produces a report and recommendations.
How is the Primary Conversion Metric determined?
By reading promoted_object.custom_event_type from the top ad sets — the prompt explicitly says never to infer it from campaign names.
What counts as a 'fatigued' creative?
An ad where frequency has crossed 3.0 and CTR has dropped more than 20% vs. the first 7 days of the window, or where last-7-day CTR is under 50% of the window's first-7-day CTR.
What is the 'Attribution Inflation Ratio'?
7-day-click conversions divided by 1-day-click conversions per campaign; a ratio above 3x means the campaign leans heavily on the longer attribution window.
What does the audience overlap check look for?
Ad sets within the same campaign sharing near-identical targeting (age, geo, interests) with no exclusion audiences separating them.
What reason codes does the Learning Phase Trap section check?
LOW_VOLUME, NOT_ENOUGH_BUDGET, AD_APPROVAL_ISSUE, CAMPAIGN_GROUP_BUDGET_OPTIMIZATION, and ADS_ON.
What's the healthy benchmark for funnel spend split?
The prompt uses roughly 60-70% Cold / 20-30% Warm / 10-20% Hot as the benchmark for a scaling account.

Skip the prompt — let GoMarble do this for you.

Sign up, connect your ad accounts, and complete meta ads audit runs on every account, every week, automatically.