Drop in your creatives, point at an ad that performs, and its objective, targeting and copy become the template for the whole batch. Before anything is created you get a preview of the exact set that would be built — produced by the same planner that runs the launch, so what you approve is literally what executes.
Why it's built this way
Every decision here is about the gap between what an operator thinks they configured and what actually goes live.
Unlike the tool this replaces. Every other live-account write in the product is confirm-gated, and a bulk creator that goes live by default is the one place a misconfiguration spends real money before anyone reads the preview.
The dry run is a server round trip, not a local guess, and the same planner builds both. A preview computed by different code than the launch is one that eventually lies. It performs no writes at all.
Point the batch at ad sets already in the account instead of duplicating them — so a new creative round lands in the audience that's already learned, rather than restarting it.
The source ad's copy loads into the fields once; after that the fields are the truth. Clearing a headline clears it on the launched ads, because silent inheritance ships copy somebody deliberately deleted.
The schedule card prints the ad account's timezone, not your browser's. Meta reads a naive start time in the account's zone, so scheduling midnight from London for a Los Angeles account is eight hours out unless you can see which clock applies.
Media uploads first and the launch references it afterwards. A slow upload never holds the configuration form hostage, and a failed launch never means re-uploading eleven files.
The flow
Read-only. It is one-to-one with the workspace, resolved from your Meta connection, so there is no picker to get wrong.
Drag and drop, or paste an https:// link for anything past the inline cap. Uploads go to the ad account's own library — not to our storage.
A three-column campaign → ad set → ad picker. The chosen ad's objective, targeting and copy become the template for the batch.
Where the ads land, and how they divide — including joining ad sets that already exist rather than creating parallel ones.
The dry run, rendered as the table it returns: every ad set, every ad, and whether each is being created or joined.
Headlines and primary text, Meta's creative enhancements, and where the ads publish. An asset-feed probe reports what the account will accept before you commit.
Returns a job id, and the right rail polls it live — backing off as it goes and stopping dead on a terminal status.
Where it earns its keep
Copy what works, preview exactly what would be built, and create it all paused — in one page.