Aggregation level is the reporting dimension in ChatGPT Ads that sets what each row of a performance report represents: a whole campaign, a single ad group, or an individual ad. It controls how your metrics are grouped for analysis, a separate choice from the time granularity that splits those same numbers by day or across the full range.
Choosing the right aggregation level decides whether you can see which ad group or ad is carrying a campaign or quietly draining it. Read everything at the campaign level and a strong ad can hide behind two weak ones, so you keep paying for losers you never isolate.
In ChatGPT Ads reporting, aggregation level is the grouping parameter you set in Ads Manager or pass to the Insights API to say what a single line of results should summarize. Set it to campaign, ad group, or ad, and every metric rolls up to that unit. The endpoint decides which entities are covered; aggregation level decides how finely they are broken out.
Three levels exist because a ChatGPT Ads account has three building blocks. A campaign holds budget and objective, an ad group holds bids and context hints, and an ad holds the title, copy, and image. Aggregation level maps to that hierarchy, so an ad-level report shows one row per ad while a campaign-level report folds those ads into one total.
Aggregation level pairs with time granularity, which controls whether each row covers one day or the whole date range. It differs from attribution windows. Those govern how conversions are counted; aggregation level governs how rows are grouped. AirOps pulls ChatGPT Ads metrics at each level alongside your organic AI search data, so campaign, ad group, and ad views sit next to the prompts you track.
Resources: See how ChatGPT ads targeting, specs, and conversion tracking fit together before reading reports
A ChatGPT Ads report is built in a fixed order, and aggregation level is the choice that shapes what comes out.
Pick the scope. Choose the account, a campaign, an ad group, or an ad as the entities you want to evaluate. In the Insights API this is the endpoint you call.
Set the level. Set aggregation level to campaign, ad group, or ad to tell the report what each row should represent.
Add granularity. Choose a time granularity so each row covers a single day or the full date range, splitting the same numbers across time.
Pull the metrics. The report returns impressions, clicks, spend, CTR, CPC, CPM, and conversions for every row at that level.
Export or read. View the table in Ads Manager or export it as CSV in cumulative or daily format for your own analysis.
The output tells you how each unit performed at the level you chose. It does not tell you which prompts or conversations triggered delivery, because ChatGPT Ads reporting stays aggregated by design and never exposes query-level data.
Aggregation level decides how clearly you can see where your ad budget is working, and that read is the one every renewal and scale-up decision ultimately depends on. The level you report at quietly sets the ceiling on how good your spend decisions can be.
Budget decisions need the ad group view. Budget sits at the campaign level, but the ad groups inside one campaign can perform very differently, so an ad-group report is what tells you where to shift spend first and where to cut.
Creative tests need the ad view. When you run several ads in a group, only an ad-level report shows which title and image actually earned the clicks, so you can confidently pause the weak ones and scale the winners.
Campaign-only reading hides losers. Read everything rolled up to the campaign and a single strong ad can mask two that waste spend, leaving you to renew a budget that is quietly leaking money you could have redirected weeks earlier.
SEO managers use aggregation level to compare ChatGPT Ads performance at the campaign level against their organic AI search gains on the same topics.
Growth marketers use aggregation level to drop to the ad-group view and move budget toward the buying situations that convert.
Content strategists use aggregation level to read ad-level results and see which headlines and hooks earn clicks before reusing them in organic pages.
ChatGPT Ads nests every ad inside an ad group and every ad group inside a campaign, and aggregation level simply picks which of those three tiers a report summarizes, so understanding the hierarchy is what lets you read any report correctly.
Time granularity is the sibling setting that decides whether each row covers one day or the entire date range, and because it stacks with aggregation level, the same campaign can produce a one-line summary or a day-by-day table depending on how you combine them.
ChatGPT Ads deliberately stops at these aggregate levels and never reports the individual prompts, conversations, or people behind the numbers, so no aggregation level will ever give you the query-level detail you may expect from traditional search platforms.
Pinpoint which ad group or ad drives results instead of guessing from a campaign total.
Compare performance across all three ChatGPT Ads levels: campaign, ad group, and ad.
Export CSV reports in cumulative or daily format at any level for your own models.
Reconcile ad-level clicks against Google Analytics 4 sessions to spot tracking gaps.
Spot underperformers early by reading the ad view before more budget commits.
Start at the campaign level for a quick health check, then drop to ad group and ad to find the cause of any swing.
Match the level to the decision: use the ad-group view for budget moves and the ad view for creative calls.
Pair every level with a time granularity so you can tell a one-day spike from a steady trend.
Export at the ad level in daily format when you need to reconcile ChatGPT Ads numbers against your own analytics.
Keep the same level across reports you compare, so week-over-week reads stay consistent.
Cross-reference the Conversions total with your event setup, since it can roll up several events at every level.
Avoid judging a whole campaign on its rolled-up total and stopping there. Competent marketers do this under time pressure, and it hides the one ad group or ad that is draining spend while the campaign average still looks acceptable.
AirOps: pulls ChatGPT Ads metrics at campaign, ad group, and ad level into the same view as your tracked prompts, so paid and organic AI search performance sit side by side.
OpenAI Ads Manager: the native dashboard and Insights API where you set aggregation level and export reports as CSV in cumulative or daily format.
Google Analytics 4: lets you reconcile ad-level clicks against landing-page sessions to confirm your ChatGPT Ads tracking lines up.
Open your reports. In Ads Manager, open the Campaigns, Ad Groups, and Ads tabs to see the same metrics presented at each level. This takes nothing but the access you already have, so you can do it this week.
Set your columns. Add the metrics you care about, impressions, clicks, spend, CTR, CPC, and conversions, so every level shows a consistent set you can compare cleanly.
Read top down. Start at the campaign view for the headline numbers, then open the ad-group and ad views to find what is actually moving them.
Export for analysis. Pull a CSV at the ad level in daily format so you can model the data outside the dashboard and join it to your other channels.
Connect the levels to decisions. Tie the ad-group view to budget moves and the ad view to creative choices, so every report you run ends in a concrete action.
Aggregation level sets whether a ChatGPT Ads report summarizes a campaign, an ad group, or an individual ad.
You choose it in Ads Manager or the Insights API, and it pairs with a time granularity setting.
Its ceiling is the aggregate itself: no level exposes the prompts, conversations, or people behind the numbers.
The main risk is reading only campaign totals, which can bury a losing ad inside an acceptable average.
The leverage lives in the ad-group and ad views, where budget and creative decisions actually get made.
Aggregation level and time granularity answer two different questions about the same report. Aggregation level sets the unit each row represents, whether that is a campaign, an ad group, or an ad. Time granularity sets the time span each row covers, either a single day or the entire date range you selected. The two settings stack, so one report can combine them in several ways. A campaign-level report with daily granularity gives you one row per day for the whole campaign, while an ad-level report with full-range granularity gives you one lifetime total per ad. Confusing the two is a common source of misread reports, because a number that looks low might be one day of a campaign instead of its complete performance. When you open any ChatGPT Ads report, confirm both settings before you draw a conclusion, since changing either one reshapes what the same underlying numbers appear to say.
Change it whenever the question in front of you changes, and skip the idea of a fixed schedule. A practical rhythm is to open the campaign level first in any review to see the headline numbers, then move to the ad-group level when a campaign looks off, and finally to the ad level when you need to know which creative is responsible. For a weekly check, many advertisers scan all three levels once and act on whichever one surfaces a problem. During a launch or a budget change, you may drop to the ad-group and ad levels several times a day while delivery stabilizes. Once a campaign is steady, a weekly pass at each level is usually enough. The level you spend the most time in should track the decision you are about to make, so budget reviews live at the ad-group level and creative reviews live at the ad level.
Your totals change because each aggregation level groups the same clicks, impressions, and conversions into a different number of rows. At the campaign level, every ad group and ad inside that campaign is folded into one combined figure. Drop to the ad-group level and that single figure splits into one row per ad group, and at the ad level it splits again into one row per ad. The grand total across all rows stays the same; what changes is how that total is distributed and displayed. Conversions can look especially different, because a single rolled-up Conversions number at the campaign level may represent several events firing across many ads. This is why a campaign can look healthy while one ad group inside it is clearly losing. If your totals seem off between two reports, check that both use the same date range and time granularity, since those settings move numbers as much as the level does.
Yes, you set the aggregation level yourself every time you open or pull a report. In Ads Manager you select it by moving between the Campaigns, Ad Groups, and Ads tabs, and in the Insights API you pass it as a parameter alongside the endpoint and the time granularity. It is a reporting control, so changing it never alters your campaign, your spend, or how ads are delivered; it only changes how finished results are summarized for you to read. What you cannot do is invent a level that does not exist. ChatGPT Ads offers exactly three, campaign, ad group, and ad, and there is no prompt-level, keyword-level, or audience-level breakdown beneath them. So you have full control over which of the three views you read and full control over the time span, but no control over how deep the platform will let you go. Plan your reporting around the three levels that exist.
There is no single correct aggregation level; the right one is whatever matches the decision the stakeholder is making. For an executive who wants to know whether ChatGPT Ads is worth continuing, the campaign level with its headline spend, clicks, and conversions is usually the right altitude. For a channel owner deciding where to move budget, the ad-group level is the useful benchmark, because it shows which buying situations earn their spend. For anyone judging creative, the ad level is the only view that answers the question. A good report often shows more than one level: a campaign summary for context, then the ad-group or ad detail that explains it. Avoid defaulting to the campaign level for every audience, because it flatters weak campaigns by hiding their worst performers. Match the depth to the reader, label the level clearly, and keep it consistent from one report to the next so trends stay readable.