calendar Last updated: 5 November 2026
Meta Ads connected to ChatGPT for a campaign structure audit, on Windsor.ai
Data integration
Data Pipelines
Facebook Ads
How to's

The Meta Ads Structure Audit ChatGPT Users Keep Running

Try It Now

Connect your data in 1 minute. Free forever plan

Got insights from this post? Give it a boost by sharing with others!

Connect Meta Ads to ChatGPT through Windsor, and a pattern shows up fast: ChatGPT users pull setup and configuration fields, campaign objective, optimization goal, targeting, budget, creative, far more often than they pull spend and performance numbers. Claude and Copilot users lean toward reporting; ChatGPT users lean toward auditing whether the account is even built correctly.

This page is that audit, already assembled. Ten fields, pulled for every active ad set, checked against four things that waste budget without an error message, plus the exact prompts to pull the data and fix what’s wrong.

The audit fields

Pull these ten fields for every active ad set in the account:

  • campaign_objective: What the campaign is supposed to optimize toward
  • adsset_optimization_goal: What the ad set bids to optimize
  • adset_bid_strategy: How the ad set bids in the auction
  • adset_destination_type: Where a click lands (website, app, Messenger, Instagram Direct)
  • adset_targeting: The full audience spec: geo, age, interests, placements
  • adset_daily_budget: How much each ad set is allowed to spend per day
  • campaign_effective_status: Whether the campaign is active, not just not-paused
  • body: The ad copy running
  • title: The ad’s link title
  • call_to_action_type: The button shown on the ad

If any of these come back “not valid for fields param,” you’ve likely mistyped a field id rather than hit a real restriction, see the Facebook Ads “Field Not Valid” error guide for the exact fix per field.

The four checks

1. Objective vs. optimization goal mismatch

A campaign’s campaign_objective sets what Meta validates ads against; the ad set’s adsset_optimization_goal is what it bids on. The two can drift, a sales-objective campaign running an ad set optimized for link clicks or reach instead of conversions, which caps performance without ever throwing an error. Fix: update_adset to reset optimization_goal to match the objective.

2. Budget spread

Compare adset_daily_budget across active ad sets in the same campaign. Uneven splits, or too many active ad sets dividing a small total budget, mean each one exits the learning phase slower and none gets enough signal to optimize well. Fix: set_adset_budget to consolidate spend into fewer, better-funded ad sets.

3. Overlapping targeting

adset_targeting is a full JSON spec: geo, age, gender, interests, placements. When two active ad sets in the same campaign target substantially the same audience, they enter the same auction and bid against each other, raising your own costs. Fix: update_adset to narrow or differentiate targeting so ad sets stop competing with themselves.

4. Creative reuse across ad sets

Compare body, title, and call_to_action_type across ads in different active ad sets. The same creative running unchanged across several ad sets is not being tested, and it fatigues faster since the combined audience sees it more often. Fix: update_ad_creative to rotate in a different variant for at least one ad set. It builds a new creative with your changes and points the same ad at it.

The prompt that runs the audit

One prompt covers the pull and the analysis:

Pull campaign_objective, adsset_optimization_goal, adset_bid_strategy,
adset_destination_type, adset_targeting, adset_daily_budget,
campaign_effective_status, body, title, and call_to_action_type for
every active ad set in this account. Then flag:
1. Any ad set whose optimization goal doesn't match its campaign's objective
2. Active ad sets in the same campaign with daily budgets that differ by more than 3x
3. Active ad sets in the same campaign whose targeting overlaps significantly
4. Ads in different ad sets reusing the same body, title, and CTA
List what you find before changing anything.

Once you’ve reviewed the findings, a second prompt applies the fixes:

For the mismatched ad set, update its optimization goal to match the
campaign objective. For the two ad sets splitting budget unevenly,
rebalance their daily budgets. For the overlapping ad sets, narrow one
of their targeting specs so they stop competing with each other. Show
me the exact changes before applying them.

Example: the audit on our ME Beats account

We asked ChatGPT, through the Windsor.ai plugin, to run the first prompt on our own Meta Ads account, ME Beats. Every ME Beats ad set is paused today. We asked for the ad sets that spent money in the last 30 days instead of the active ones. Three ad sets in two campaigns qualified.

Meta Ads structure audit in ChatGPT with the Windsor.ai plugin on the ME Beats account

  • Objective vs. optimization goal: no mismatch. All three ad sets run in sales campaigns (OUTCOME_SALES) and optimize for website conversions (OFFSITE_CONVERSIONS).
  • Budget spread: ChatGPT marked this check “Cannot verify”, because adset_daily_budget is empty on all three ad sets. Both campaigns set the budget at campaign level, $30.00 a day each (campaign_daily_budget). In an account like this, add campaign_daily_budget to the prompt and use set_campaign_budget for the fix.
  • Targeting: ChatGPT marked this “Potential overlap”, but the two ad sets in MIDI 5 Email TEST are kept apart: the cold ad set targets a 1% lookalike of our customer list and excludes the list itself, which the Retarget ad set targets. Both use the same countries, age range and placements. The Vol.5 ad set (US, age 21 to 55, Advantage audience on) is in another campaign and outside check 3; ChatGPT still pointed out the shared US audience.
  • Creative reuse: no exact duplicate. All three ads share the title “SOUL MIDI DRUM PACK VOL.5 | AD2 PRESETS” and the Shop Now button, with three different body texts.

Nothing in the account changed; the prompt only lists findings.

Related reading

FAQs

Why does ChatGPT pull these structure fields instead of performance metrics?

Usage patterns through Windsor show ChatGPT connections requesting setup and configuration fields, objective, targeting, budget, creative, at a much higher rate than spend or performance fields, compared to Claude and Copilot on the same connector. It suggests ChatGPT is being used more for account audits than for reporting.

Tired of juggling fragmented data? Get started with Windsor.ai today to create a single source of truth

Let us help you automate data integration and AI-driven insights, so you can focus on what matters, growth strategy.
g logo
fb logo
big query data
youtube logo
power logo
looker logo