Drill-down from campaign to ad set to ad
Click campaign to expand into ad sets, click ad set to expand into ads. Per-level metrics + actions. Identify which adset or ad is driving issue.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Click campaign to expand into ad sets, click ad set to expand into ads. Per-level metrics + actions. Identify which adset or ad is driving issue.
Drill-down from campaign to ad set to ad
Ads Manager's 3-tier hierarchy lets you navigate from campaign β ad sets β ads. Drill-down switches the whole table to the next level (campaigns β adsets β ads) β clicking a campaign row changes the view to that campaign's ad sets (via
setLevel), and a breadcrumb takes you back up. It's a level switch, not an inline indented tree that expands children in place. Per-level metrics + actions per row. Critical for troubleshooting: "campaign ROAS is 1.5x β which ad set is dragging it down? Which ad within that ad set?"
Who is this for
Mediabuyers investigating underperformance. Anyone wondering "the campaign looks bad, but is it ALL ad sets or just one"?
The hierarchy
Campaign C1 (ROAS 1.5) β campaign-level rollupβββ Adset A1 (ROAS 2.8) β goodβ βββ Ad 1 (ROAS 3.2) β winningβ βββ Ad 2 (ROAS 2.3) β decentβββ Adset A2 (ROAS 0.8) β badβ βββ Ad 3 (ROAS 0.6) β losingβ βββ Ad 4 (ROAS 1.0) β break-evenβ βββ Ad 5 (ROAS 0.9) β losingβββ Adset A3 (ROAS 1.2) β below target βββ Ad 6 (ROAS 1.1) β below βββ Ad 7 (ROAS 1.3) β marginalThe campaign's 1.5x ROAS hides three different situations. Action plan emerges from drill-down:
- Adset A1: scale (winning)
- Adset A2: kill (losing)
- Adset A3: refresh creative or kill (marginal)
Per-ad granularity refines further (kill Ad 3, keep Ad 4 even if break-even β has potential).
How to drill down
Step 1: Find the campaign in Ads Manager
Filter / search to the campaign of interest.
Step 2: Click the row to drill in
Click anywhere on the campaign row (not on a per-row action button). The table switches to the ad-set level for that campaign (its ad sets replace the campaign list), with a breadcrumb showing where you are.
Step 3: Drill into ad sets
Click an ad set row β the table switches to the ad level for that ad set. Use the breadcrumb to step back up to campaigns or ad sets.
Step 4: Per-ad detail
Open an ad's detail to see:
- Full creative (image / video preview)
- Full copy (primary text, headline, description, CTA)
- Audience config snapshot
- Performance breakdown
- Actions (pause via inline toggle; "edit" opens the Campaign Creator Pro editor; duplicate)
Per-level metrics
Drilling down narrows from macro view (campaign-level decision) to creative-specific (which ad to keep).
Endpoints behind the drill-down
Verified apps/backend/src/routes/api/:
insights-campaigns.route.tsβ campaign-level metricsinsights-adsets.route.tsβ ad set-level metricsinsights-ads.route.tsβ ad-level metricsinsights-sync.route.tsβ sync trigger
Per-level data fetched lazily as you expand (not all loaded upfront).
Drill-down for specific use cases
"Which ad set in this campaign is converting?"
- Open campaign
- Expand ad sets
- Sort by Conversions descending
- Top ad sets are the converters
"Which ad in this winning ad set is the actual winner?"
- Expand the ad set
- Sort by ROAS descending (or CTR if conversion data sparse)
- Top ad is your winner β scale it up
"Which creative is the worst?"
- Drill into an ad set with many ads
- Sort by CTR ascending OR by conversions ascending
- Bottom ad = candidate to pause
"Where is spend going within a campaign?"
- Expand campaign + ad sets
- Sort ad sets by Spend descending
- Top spend = where most money flowing (often a CBO winner)
"Which audience is underdelivering?"
- Drill into ad sets
- Look at delivery columns (Impressions vs Reach)
- Low impressions = audience too narrow or bid too low
- Action: broaden audience or increase bid
Cross-level actions
Cascade behavior: pause campaign β all ad sets + ads also pause. Pause ad set β all ads in that ad set pause. Pause ad β only that ad pauses.
Level tabs + breadcrumb
The view is one level at a time (campaigns, ad sets, or ads), selected by level tabs / drill-down. A breadcrumb shows your current path (e.g. Campaign βΊ Ad set) and lets you jump back up a level. There is no "expand all" that shows every level inline at once.
Mobile drill-down
Mobile UI (mobile-ads-manager.tsx) supports drilling with simplified controls:
- Tap a row to drill into the next level
- Per-row swipe actions for pause/resume
- Full edit requires desktop
Performance considerations
- Campaign-level data: cached aggressively (5 min)
- Ad set + ad data: fetched on expand (1-3 sec lazy load)
- For very large hierarchies (1000+ ads in one campaign): pagination within the ad list
What you'll see during drill-down
- A breadcrumb showing your current level/path
- The table showing rows for the current level only (campaigns, or ad sets of a campaign, or ads of an ad set)
- Hover row β action controls appear (inline status toggle, etc.)
- Click a row β drill into the next level
- Per-row selection checkbox (for bulk actions; actions are level-scoped)
Common issues
- "Drilling in shows nothing": the parent may have no children (ad set with 0 ads). Check the ad set was created with at least one ad.
- "Wrong metrics on ad set vs campaign rollup": campaign aggregates ad sets; sometimes ad set data is stale and campaign refreshed (15-min sync lag). Refresh both.
- "Cannot find an ad I expected": it may be filtered out; check your status/date filters.
Best practices
Always drill before bulk action
Before pausing a campaign, drill in. Maybe one ad set is great + you'd kill it by killing the campaign. Drill to identify just the bad ad set + pause that instead.
Use drill to identify scale targets
Same approach: drill to find the ONE ad in a winning ad set that's the actual winner. Scale that one with higher budget; pause the rest.
Document findings in audit-friendly notes
When you pause something via drill, note WHY in a comment field (if available) OR in your team's runbook. Future you will thank you.
FAQ
How do I drill down from a campaign to its ad sets and ads in Wevion?
Click a campaign row in Wevion's Ads Manager and the table switches to that campaign's ad sets (a level switch, not an inline expand). Click an ad set row to switch to its ads, and use the breadcrumb to step back up. Open an ad's detail for the full creative, copy, audience config, and performance breakdown.
What happens when I pause a campaign during drill-down?
Pausing cascades down the hierarchy. In Wevion's Ads Manager, pausing a campaign also pauses all of its ad sets and ads. Pausing an ad set pauses all ads within that ad set, while pausing a single ad affects only that ad. Drill in first to pause just a bad ad set instead of killing the whole campaign.
How is the hierarchy displayed β as one big tree?
No. Wevion's Ads Manager shows one level at a time (campaigns, ad sets, or ads) and switches level as you drill, with a breadcrumb to go back up. There is no single inline tree that expands every level at once. Campaign-level data is cached (5 minutes); ad-set and ad data load when you drill into them.
Why does drilling in show nothing on some rows?
The parent likely has no children β for example, an ad set with 0 ads. Confirm the ad set was created with at least one ad. If an expected ad is missing, check your status and date filters.