How to Structure Meta Ads Campaigns, Ad Sets and Ads
- Difficulty
- Moderate
- You need
- A Meta ad account, a goal and your creative
- Optional
- Meta Pixel or Conversions API already sending events
On this page
A clear Meta ads campaign structure gives each level one job. The campaign sets the objective and, if you choose, the budget. Each ad set decides who sees the ads, where, when and what Meta optimizes for. The ads hold the creative. Keep campaigns to one result each, keep ad sets few and clearly different, and put creative variations at the ad level. This guide is part of our paid advertising guide.
You'll need access to a Meta ad account, a clear goal and your creative. Conversion tracking through the Meta Pixel or Conversions API makes step 7 possible.
What each level controls
Meta ads, across Facebook, Instagram and Meta's other apps, are built in three levels. Each level holds different settings, so the structure decides what you can control and compare.
| Level | What it decides | Main settings |
|---|---|---|
| Campaign | The result Meta works toward | Objective, special ad category, optional budget |
| Ad set | Who, where, when and how | Audience, placements, schedule, optimization, budget |
| Ad | What people see | Image or video, text, headline, link, call to action |
The same three-layer idea runs through Google Ads, with campaigns, ad groups and ads. The difference is where audience choices live. On Meta, the audience is set on the ad set, not on keywords. We compare the Google side in Google Ads account structure.
Steps
- Write down the one result each campaign is for.
Name the action you want, such as a lead form, a purchase, a booked call or a site visit. One campaign should chase one result. If you want leads and video views, that's two campaigns, because Meta optimizes each one toward a single objective.
- Choose the objective that matches that result.
Meta's API lists six outcome objectives: awareness, traffic, engagement, leads, app promotion and sales. Pick the one closest to the result you wrote down, not the one that sounds cheapest. A traffic objective finds people who click. A leads or sales objective looks for people likely to complete those actions, which is usually what a business wants.
- Declare a special ad category if one applies.
If your ads are about housing, employment, credit or financial products, or social issues, elections and politics, Meta requires you to declare a special ad category on the campaign. Housing, employment and credit ads limit some audience options, such as age, gender and ZIP code. Social issues, elections and politics ads have their own authorization rules. Declare it from the start, and check Meta's current rules for your industry before you plan the audience.
- Decide where the budget lives.
You can set one budget on the campaign and let Meta spread it across ad sets, or set a budget on each ad set. A campaign budget suits ad sets that share a goal. Ad set budgets suit tests where each audience must get a fair share. For how much to spend, see our post on the minimum ad budget.
- Keep ad sets few and clearly different.
Each ad set should differ in something that matters: the audience, the placements, the schedule or the optimization event. Two ad sets that differ only slightly split the budget without teaching you anything. We usually start with one or two broad ad sets and add more only to answer a specific question.
- Put creative variations at the ad level.
Add several ads to each ad set, each with a different idea: a different hook, format or offer. Meta's delivery system generally gives more delivery to the ads it predicts will do best. Check that each ad fits the placements you chose, such as vertical video for Reels and Stories, and that every claim matches the landing page.
- Check tracking before launch.
For leads or sales objectives, Meta needs to see the conversion. Make sure the Meta Pixel, the Conversions API or both are sending the events you chose, and that each ad set optimizes for the right one. Without working events, the campaign optimizes toward the wrong signal.
- Name every level to one convention.
Use the same pattern at each level, such as objective, offer and month for campaigns, audience and placement for ad sets, and hook and format for ads. Consistent names make it quick to filter reports and see which audience or creative is working.
- Launch, then let each ad set learn.
Meta reports a learning stage for each ad set while its delivery system works out who to show ads to. Significant edits to budget, audience, optimization or creative can restart that learning. Leave settings alone for long enough to read results, then change one thing at a time.
We cover tracking setup in Meta Pixel and Conversions API setup.
If you'd rather have the campaigns built, the creative made and the results read for you, our in-house ads team runs Meta campaigns alongside the creative.
The structure in Meta's own terms
Meta's Marketing API, the developer interface behind ad tools, shows the three levels plainly. Each level is its own object, linked to the one above it. This trimmed outline shows where the main choices sit:
{
"campaign": {
"objective": "OUTCOME_LEADS",
"special_ad_categories": []
},
"adset": {
"optimization_goal": "LEAD_GENERATION",
"billing_event": "IMPRESSIONS",
"targeting": {"geo_locations": {"countries": ["US"]}}
},
"ad": {
"creative": {"creative_id": "<your creative id>"}
}
}The objective and special ad categories belong to the campaign. The optimization goal, billing event and targeting belong to the ad set. The budget can sit on either: both objects have daily and lifetime budget fields. The ad points to a creative and nothing else. That's why changing an audience means editing an ad set, and testing a new hook means adding an ad.
Choosing an objective
The six outcome objectives cover most business goals. Here's how they line up with common results:
- Awareness. Reach as many relevant people as possible, or get them to remember the ad.
- Traffic. Send people to a website, an app or another destination.
- Engagement. Get messages, video views, post interactions or event responses.
- Leads. Collect contact details through a form, a call or a message.
- App promotion. Get app installs or actions inside an app.
- Sales. Drive purchases or other valuable actions on a website or app.
We cover the audience options for each ad set in Facebook ad targeting options.
If Google's automated campaigns are part of your plan too, Performance Max raises many of the same questions about goals, creative and tracking.
Troubleshooting
Ad sets compete for the same people
Cause: two or more ad sets target overlapping audiences in the same campaign or account. Meta then has to choose between your own ad sets for the same person, and results get split between them. This often happens when ad sets differ only slightly, such as two interest lists that mostly reach the same people.
Fix: merge ad sets that reach mostly the same people, as in step 5, and keep only those that differ in something that matters. Where you need separate ad sets, exclude one audience from the other, such as excluding past customers from a prospecting ad set. Then compare results over the same dates before deciding whether you need more ad sets at all.
An ad set barely spends
Cause: with a campaign budget, Meta moves spend toward the ad sets it predicts will do best, so some get very little. A small audience, a narrow placement choice or an optimization event that rarely happens can also hold delivery back. Very low budgets spread across many ad sets make all of these worse.
Fix: decide whether the ad set needs a set share of spend. If it does, give it its own budget or set a spending limit for it. Widen the audience or placements if they're very narrow, and check that the optimization event fires often enough to learn from. If the ad set still doesn't spend, merge it into another and test the idea at the ad level instead.
Results can't be compared across ad sets
Cause: the ad sets differ in several things at once, such as audience, placements, creative and optimization event, so no one can say which change made the difference. Inconsistent names and different date ranges add to the confusion, and conversions counted in different ways make the numbers meaningless side by side.
Fix: change one thing between ad sets when you want to compare them, and keep the ads the same across them. Rename everything to one convention, as in step 8, so reports filter cleanly. Compare the same dates and the same conversion event. For bigger questions, run a separate test campaign rather than reading the difference from everyday ad sets.
Common questions
How many ad sets should a Meta campaign have?
As few as your real differences require. Each ad set splits the budget and the data Meta's delivery system learns from, so many small ad sets often learn slowly. Start with one or two that differ in something that matters, such as audience or optimization event, and add another only when you have a clear question it will answer.
Should I set the budget at campaign or ad set level?
Use a campaign budget when the ad sets share a goal and you're happy for Meta to move money toward the best performers. Use ad set budgets when each ad set must get a set amount, for example to test two audiences fairly. Either way, keep the number of ad sets small, so each one gets enough spend to learn.
How many ads should each ad set have?
Enough to give Meta real choices, but not so many that each gets almost no delivery. A few clearly different ads, such as different hooks, formats or offers, usually tell you more than many small variations. Replace the weakest ads over time rather than adding more, and keep each ad's message true to the ad set's audience.
Do Facebook and Instagram ads need separate campaigns?
No. Facebook, Instagram and Meta's other apps are placements, chosen at the ad set level, so one campaign can run across them. Split them only when you need a different budget, message or creative for one app. Make sure your creative fits each placement you choose, such as vertical video for Reels and Stories.