A business owner once showed us his Meta Ads account: one campaign, six ad sets, each running three or four different visuals, 25 euros of daily budget spread across all of it. He wanted to "test several angles at once." Three weeks later, no ad set had enough data to tell which one worked, cost per lead was twice what it should have been, and half the ads barely got any delivery. This wasn't a creative problem or a targeting problem. It was a structure problem.

The structure of a Meta Ads campaign, meaning how many campaigns, ad sets and ads you run, and at which level you place the budget, directly determines how fast the algorithm learns and how stable your cost per lead ends up being. On a modest budget, this is often the factor that matters most, ahead of the message or the visual itself.

The three layers of a Meta Ads campaign

A Meta Ads campaign is organized into three nested layers.

The campaign carries the objective (here, lead generation) and, if you enable campaign budget optimization, the overall budget envelope.

The ad set carries targeting, placements, scheduling and, if you're not budgeting at the campaign level, the budget for that specific ad set.

The ad carries the visual, the copy and the link or form. Several ads can live inside the same ad set and compete against each other for delivery.

Every extra layer splits your data. That's the core point to understand before building anything.

Where to place the budget: campaign or ad set

Meta offers two ways to manage budget.

Campaign-level budget (Advantage+ campaign budget, often called CBO in older guides) lets the algorithm automatically split spend across your ad sets based on which one is performing best at any given moment. It has been Meta's default setting for several updates now, and it's what we recommend in the vast majority of cases for a local business running a limited budget.

Ad set-level budget lets you manually fix how much each ad set spends, independent of the others. This still makes sense in one specific case: when you need to guarantee that a geographic zone, an audience, or a product gets a minimum budget no matter what, for example to honor a contractual commitment or to balance spend evenly across several cities.

For nearly every service business starting out or running on 15 to 50 euros a day, campaign-level budget avoids the most common mistake: splitting money evenly across several ad sets when only one of them is actually getting good results. Letting the algorithm reallocate automatically saves time and money, as long as you don't give it too many options to compare, which brings us to the real issue.

Why splitting too much kills the learning phase

Meta needs a minimum volume of actions (leads, in your case) on an ad set to exit its learning phase and stabilize delivery. Below that threshold, the algorithm keeps testing broadly, delivery stays unstable and cost per result swings sharply from one day to the next.

Concretely, for a leads objective, an ad set is generally considered to need around 50 conversions per week to reach stable delivery. That's an order of magnitude, not a hard limit written into Meta's code, but it points to the right instinct: the more ad sets you run, the more you divide that volume, and the longer each one takes to exit learning, if it ever does on a small budget.

The math is simple. With 20 euros a day and a cost per lead around 15 to 25 euros for a high-ticket service business, you generate roughly one lead a day, or 7 a week. Concentrated in a single ad set, those 7 leads start producing a usable signal within a few weeks. Spread across four ad sets, each one gets fewer than two leads a week: none of them ever exits the learning phase, and you never actually find out which one was working.

That's the trap of "I want to test everything at once." Every variable you add, one more audience, an isolated placement, a separate age bracket, cuts the budget in half without adding any leads. The lead count stays the same, just diluted. You're not testing anything, you're just slowing everything down.

The simple structure that works to get started

For a local business launching or restarting Meta lead generation on a daily budget of 15 to 40 euros, the following structure limits the risk of diluting the learning phase:

A single active campaign per objective. There's no need to duplicate the campaign to "separate" two offers before volume justifies it: two active campaigns automatically split your budget into two pools that each learn twice as slowly.

A single ad set at launch, with an audience broad enough to let the algorithm find the right people (the finer points of targeting, including the choice between Advantage+ and a tighter manual setup for high-ticket offers, are covered in detail in our article on local Meta Ads targeting). A second ad set is only justified when you're testing a structural variable, for example two geographic zones too far apart to share the same audience, or a broad audience against a retargeting list.

Three to six ads inside that single ad set, with real variation between them: one hook that speaks to the problem, one that speaks to the outcome, a product visual and a customer or proof-based visual. Meta handles the delivery split toward whichever ones perform, which effectively gives you creative testing without multiplying ad sets. Beyond six or seven ads in the same set, delivery spreads too thin without real gain, each variant collecting too little data to be judged fairly.

This structure fits in one sentence: one campaign, one ad set, several ads competing for the same budget. That's deliberately few levers, and it's exactly what lets you get a usable signal on a modest budget.

When to add complexity

Adding a second ad set, a second campaign, or manually managed ad set-level budgets becomes worthwhile once a stable signal already exists: a cost per lead that repeats over several weeks, enough volume to feed two ad sets without dropping back below the learning threshold, or an explicit business need (two sales territories run by two separate teams, for instance).

In that case, the same logic applies one notch up: every new ad set needs to receive enough budget to generate its own weekly volume of leads. Adding an ad set that only gets 3 or 4 euros a day tests nothing, it simply slows down the set that was already working by pulling budget away from it.

Creative testing follows the same patience rule: let a set of ads run long enough to judge on stable numbers before refreshing it, a method covered in our article on Meta Ads creative testing.

What to take away

On a limited budget, the best Meta Ads structure is almost never the most sophisticated one, it's the simplest one that gives the algorithm enough volume to learn. One campaign, one ad set with budget managed at the campaign level, and three to six ads competing for delivery: that's the baseline that produces a readable cost per lead within a few weeks, before you even start optimizing targeting or creative.

If you want us to look at your current account structure and tell you plainly what's diluting your budget, that's usually the first thing we check with a new client.