Multi-Ad Creative Testing for Music Ads: Automatic Per-Video Pruning on Meta (2026)

A Meta multi-ad (flexible ad) holds up to 10 videos inside a single ad object (media_sourcing_spec) so Meta Andromeda can deliver the best variation to each viewer. The catch in standard Meta Ads Manager is that weak videos inside a multi-ad can quietly eat impressions while you cannot easily prune a single video without rebuilding the ad. In song.so, the Campaigns builder automatically groups batches of 5 to 10 generated videos into multi-ads, and the "Optimize multi ads" rule judges every individual video once via Meta video_asset breakdown starting at a quarter of your impressions gate (50 impressions by default): videos with zero link clicks or a cost per result above your RCPR benchmark are automatically removed by swapping a pruned creative onto the same ad ID, while the best video always stays.

By the song.so team

Why multi-ads (flexible ads) are central to Meta Andromeda music campaigns

When you export 30 to 120 video variations from the song.so bulk creative generator - such as 10 rotated clip orders combined with 10 text hooks, a lyrics-only version, and an overlay-only version - creating 120 separate single-video ads in one ad set hits Meta 50-ad limit and fragments impression delivery across too many ad IDs.

Multi-ads solve that by grouping related variations (up to 10 videos per ad) into one flexible ad creative. When you import generated videos into a Release Campaign in song.so, any creative group with 5 or more videos automatically defaults to Multi-Ad Creatives: one multi-ad for a clip with its up to 10 hook variations, one for all lyrics-only variants, and one for all overlay-only variants. See from creative generator to live Meta campaign.

Creative batch groupDefault ad format in song.soWhy this structure works
1 clip with 5 to 10 text hooks1 Multi-Ad (up to 10 videos)Tests all hook angles of the same visual clip inside one ad ID without hitting the 50-ad cap
All lyrics-only variants (up to 10)1 Multi-AdGroups pure lyric-caption variants into one concept
All cover-overlay-only variants (up to 10)1 Multi-AdGroups branded artwork-overlay variants into one concept
1 to 4 standalone videosSingle Ads (or optional Multi-Ad toggle)Gives standalone hero concepts their own dedicated ad ID

The hidden problem with multi-ads in Meta Ads Manager

In Meta Ads Manager, a multi-ad reports one blended row in the main table. To see which of the 10 videos inside it actually earned clicks or conversions, you have to open Breakdown -> By Dynamic Creative Element -> Video, and even then: first, URL tags like utm_content={{ad.id}} only identify the parent ad, not which video asset inside media_sourcing_spec was served; second, Ads Manager does not give you a simple "pause this one video inside the multi-ad" button that runs automatically on an impressions threshold.

Without per-video pruning, two or three weak hooks or slow opening clips inside a 10-video multi-ad can absorb 30 to 40 percent of the ad impressions at zero clicks, dragging down the whole multi-ad RCPR until the entire ad gets paused - killing the 2 or 3 winning videos buried inside it.

How song.so "Optimize multi ads" prunes individual videos automatically

To solve this, meta-ads-adset-select in song.so includes a dedicated hourly multi-ad optimization pass (controlled by the Optimize multi ads toggle in Automation Rules, ON by default). Every hour, it fetches Meta video_asset breakdown (spend, impressions, inline_link_clicks, and ViewContent actions per video asset) for every active multi-ad in your campaign.

Because utm_content is shared by all videos in the same multi-ad, song.so evaluates individual videos on their asset-level Meta link clicks and ViewContent cost per result (spend / results) against the exact same RCPR benchmark and tolerance percentage as your campaign rules. Each video inside a multi-ad is judged once:

Video delivery stage inside the multi-adImpressions threshold (when rule = 200)What song.so doesOptimization log action
1. Early learningUnder 1/4 of impressions rule (< 50 impressions)Waits; never removes a video on tiny sample noiseNone (still gathering data)
2. Quarter-gate dead-weight checkFrom 1/4 of impressions rule (>= 50 impressions) with 0 link clicks and 0 resultsRemoves the video from the multi-ad immediately so it stops wasting impressionsremove_video (Red badge in log)
3. Click-Without-Result grace window50 to 199 impressions with >= 1 link click but 0 results yetGives the video until the full impressions gate (200) to convert a click into a resultWaits until 200 impressions
4. Full evaluationHas >= 1 result (at >= 50 imp) OR reached full impressions gate (>= 200 imp)Compares video cost per result against the RCPR benchmark (+ threshold %): if it meets the benchmark, it passes permanently; if above, it is removedkeep_video (Green badge, never judged again) or remove_video (Red badge)
5. Best-video protectionAlways activeThe best-performing video in the multi-ad is never removed, ensuring at least 1 video remainsProtected

How a video is removed without losing the ad ID or campaign structure

Meta Graph API does not allow mutating an existing adcreative object in place. When song.so removes one or more failing videos from a multi-ad, it reads the current creative spec (object_story_spec and media_sourcing_spec.videos), filters out the failed video_id entries while keeping the surviving videos and their thumbnails, applies applyCreativeOptOut (so Meta AI enhancements and multi-advertiser ads remain strictly disabled), creates a new adcreative, and updates the existing ad to point to the new creative.

That means:

What changes on MetaWhat stays untouched
The adcreative attached to the ad now holds only the surviving videosThe ad_id itself stays identical, so utm_content={{ad.id}} attribution history in song.so is unbroken
The ad briefly re-enters Meta review with the cleaner video setAd set structure, budgets, and campaign history remain intact
Once only 1 video remains in the multi-ad, it is treated as a standard single-video adFrom that point on, the hourly ad optimizer judges it on true first-party song.so RCPR
If all videos in a multi-ad together reach the impressions gate (200) and none meets the RCPR benchmarkThe entire multi-ad is turned off (pause), respecting Prevent campaign death

End-to-end workflow: from 120 bulk variations to pruned multi-ad winners

Combine bulk creative export with multi-ad pruning for the highest-leverage testing loop in music marketing:

StepAction in song.soResult
1. Produce a batchCreate 5 to 10 clips in Edit, Cinematic, UGC Lipsync, or Upload mode and stack up to 10 text hooksUp to 120 distinct videos rendered in the background
2. Import as Multi-AdsOpen the Release Campaign wizard -> Import generated videos; groups of 5+ auto-select Multi-Ad CreativesEach clip + its hooks becomes 1 Multi-Ad (up to 10 videos) instead of 10 separate ads
3. Quarter-gate pruning (50 imp)Hourly optimizer checks video_asset breakdown once each video passes 50 impressionsVideos with 0 link clicks or poor CPR are stripped out automatically (remove_video)
4. Ad-level & ad-set convergence (200 imp)Surviving single-video ads and multi-ads are judged on verified first-party RCPR (utm_content)Budget concentrates on the exact hook and clip combinations that drive real Spotify streams

Read Meta ads automation rules explained and how automated Meta campaigns for music work for how multi-ad pruning fits into the full hourly optimization pass.

Worked example: pruning a 10-video hook batch inside one Multi-Ad

Suppose you export 10 hook variations of your chorus performance clip and import that group into your Release Campaign. Because the group has 10 videos (5 or more), song.so creates one Multi-Ad in each of your three ad sets (Broad, Genre, and Similar Artists). Your Analyze after impressions rule is set to the default 200 impressions, and your RCPR target is EUR 0.22.

Hour / MilestoneWhat happens inside the Multi-AdAction taken by song.so
Hours 1 to 6Meta distributes early impressions across 6 of the 10 videos; 4 videos have under 50 impressionsWaits; videos below 50 impressions (1/4 of 200) are not judged yet
Hour 8Video #3 and Video #7 cross 55 impressions with 0 link clicks and 0 ViewContent resultsRemoves Video #3 and Video #7 immediately (`remove_video`), swapping an 8-video creative onto the same ad ID
Hour 14Video #1 reaches 90 impressions with 2 ViewContent results at EUR 0.16 cost per result; Video #4 reaches 210 impressions with 1 result at EUR 0.41Video #1 is marked `keep_video` (green in log, never judged again); Video #4 is removed (`remove_video`)
Day 3Two winning hook videos remain in the Multi-Ad, both converting below EUR 0.20The Multi-Ad continues scaling with only the proven hooks receiving budget
If all 10 videos had failedCombined impressions cross 200 and no video meets EUR 0.22The entire Multi-Ad is turned off (`pause`), and an untested backup ad is activated if needed

Every video removal appears in your Optimization Log modal with its exact thumbnail, video name, impressions, link clicks, Meta results, and cost per result, and is included in your 12-hour or daily visual digest email.

When to use Multi-Ads vs Single Ads in music campaigns

ScenarioRecommended formatWhy
Testing 5 to 10 text hooks on the same visual clipMulti-Ad (auto-selected for 5+ videos)Lets Meta Andromeda match hook lines to viewer segments while song.so prunes 0-click hooks at 50 impressions
Testing 10 rotated clip orders from a bulk montageMulti-AdFinds the strongest opening 2-second visual cut without cluttering the ad set with 10 separate ads
Comparing a Cinematic 3-shot movie scene against a UGC Lipsync characterSeparate Single Ads (or separate Multi-Ads per concept)Gives each distinct creative format its own ad ID and first-party song.so RCPR measurement
Running a single hero video you want to force-deliver regardless of metricsSingle Ad with "force" in the nameBypasses both ad-level and multi-ad automation completely

FAQ

What is a multi-ad (flexible ad) in Meta music campaigns?

A multi-ad bundles up to 10 videos into a single Meta ad (media_sourcing_spec) so Meta Andromeda can test different hooks and visual openings while keeping your ad set well below the 50-ad limit.

How does song.so decide which videos to remove from a multi-ad?

With Optimize multi ads enabled (on by default), song.so checks Meta video_asset breakdown every hour. Once a video inside a multi-ad reaches a quarter of your impressions gate (50 impressions by default), it is removed if it has zero link clicks, or if its cost per result exceeds your RCPR benchmark.

Does a video that passes the multi-ad check get judged again later?

No. Each video inside a multi-ad is judged once. When a video meets the RCPR benchmark, song.so logs keep_video (shown in green in the Optimization Log) and never judges that video again.

What happens when only one video is left in a multi-ad?

The best video in a multi-ad is always protected from removal. Once only one video remains, the ad is evaluated like any standard single-video ad on verified song.so RCPR (utm_content).

When is an entire multi-ad turned off?

When the videos inside the multi-ad together reach your full impressions gate (default 200) and none of them meets the RCPR benchmark, the multi-ad itself is turned off.

Does removing a video from a multi-ad change the ad ID?

No. song.so creates a new creative without the removed video and swaps it onto the same Meta ad ID, preserving your utm_content={{ad.id}} click attribution history.