Hi there,
Thanks for reaching out!
Happy to give you some of my initial thoughts on this. It's a really common problem, and tbh, a very frustrating one. You've set aside a budget you're happy to spend, and Meta just won't take your money. The good news is, it's almost never a technical glitch. It's the algorithm sending you a very clear signal that something in your campaign setup is acting as a bottleneck.
The solution isn't as simple as just cranking up the budget or ticking a hidden box. It's usually a combination of your audience being too small or exhausted, and your campaign objective not giving the algorithm enough high-quality signals to work with. We'll need to look at both of these things to get your ads spending properly and, more importantly, delivering results.
TLDR;
- Your ads aren't spending because your audience is likely too small, too specific, or exhausted for your $280/day budget. The algorithm can't find enough people to serve ads to efficiently.
- The "Instagram Messages" objective is a low-intent goal. You're telling Meta to find people who like to chat, not people who are likely to become customers, which is a much smaller and less valuable pool of users.
- The most important piece of advice is to switch your campaign objective to 'Conversions' and send users to a dedicated landing page. This gives the algorithm a much stronger signal to optimise for and opens up a larger, higher-quality audience pool.
- You need to implement a structured testing plan, systematically trying broader interest-based audiences and lookalikes to find scalable pockets of customers.
- This letter includes an interactive Audience Saturation Calculator to help you diagnose if your audience is too small for your budget.
We'll need to look at your Audience... It's probably too small or stale
Right, let's get straight to the heart of the matter. When a Meta campaign underspends consistently, the number one culprit, maybe 9 times out of 10, is the audience. You've given the algorithm a daily budget of $280, but you've also given it a set of targeting parameters. The algorithm's job is to find people *within those parameters* who are most likely to perform your desired action (sending a message) at the most efficient cost.
If that pool of people is too small, the algorithm runs out of options very quickly. It'll show the ad to the few obvious candidates on day one, which explains why you sometimes have days of normal spending. But on day two, it struggles to find new people. Rather than blowing your budget on users it knows are very unlikely to convert, it simply throttles the spend. This is actually a feature designed to protect your budget, even if it doesn't feel like it.
Think of it like fishing. You've told your boat captain (the algorithm) you want to catch a specific type of fish (people who will message you) in a small, specific cove (your targeting). On the first day, you catch all the easy ones. After that, you're just waiting around because the cove is nearly empty. To catch more, you either need to move to a bigger fishing ground or change the type of fish you're looking for.
There are two key metrics you need to watch here: Audience Size and Frequency.
Audience Size: When you set up your ad set, Meta gives you a "Potential Reach" estimate. For a $280/day budget, you'd ideally want this to be in the high hundreds of thousands, if not millions. If your audience is only, say, 50,000 people, you're going to exhaust it incredibly quickly. The algorithm can't find enough new people each day to spend the full budget on.
Frequency: This metric tells you, on average, how many times each person reached has seen your ad. If this number starts creeping up past 2 or 3 within a week or two, it's a massive red flag. It means you're just showing the same ads to the same few people over and over again. They've either taken action already or they've decided they're not interested. Either way, spending more money on them is a waste. This is what we call audience saturation.
I've put together a little calculator to help you visualise this. Pop in your daily ad spend and your estimated audience size, and it'll give you a rough idea of how quickly you might be saturating your audience. It's an estimation, but it powerfully illustrates how a small audience can cripple a healthy budget.
I'd say you need to rethink your targeting strategy from the ground up
So, the immediate fix is to give the algorithm a bigger, better pond to fish in. This doesn't mean just removing all your targeting and hoping for the best. It means being strategic about how you expand. A lot of people make the mistake of creating these incredibly complex audiences, layering dozens of interests on top of each other, thinking they are creating a 'perfect' customer profile. In reality, they are just shrinking their audience to a point where Meta can't operate effectively.
Here's a more structured approach, based on what we see working across many accounts. We need to think in terms of a funnel: Top (cold), Middle (warm), and Bottom (hot).
Top of Funnel (ToFu) - Finding New People: This is where the bulk of your $280/day budget should go, and where the expansion needs to happen.
- -> Stop Hyper-Layering: Instead of targeting people who like "Small Business" AND "Marketing" AND "Entrepreneurship," test these as separate, distinct ad sets. Let each interest stand on its own. You'll get a much larger audience and you can clearly see which interest group is actually performing, rather than guessing which part of your complex stack is working.
- -> Target the Pain, Not the Demographic: Forget generic interests. Your ideal customer is defined by their nightmare, not their demographic. What is the specific, urgent, expensive problem you solve? Find interests related to that problem. For example, if you sell a project management tool, instead of targeting "Project Manager" as a job title, target interests like "Asana," "Trello," or followers of productivity gurus. You're targeting people who are already actively engaged in solving the problem you fix. This is a far stronger signal.
- -> Use Lookalike Audiences (Correctly): If you have any data at all (e.g., a list of past customers, people who have messaged you before, website visitors), you can create Lookalike audiences. These are often the best-performing cold audiences. But you must prioritise. A lookalike of your *best customers* is far more valuable than a lookalike of everyone who ever visited your website. You can refer to this priority list. Start from the top and work your way down as you get more data.
- Lookalike of highest value previous customers
- Lookalike of all previous customers
- Lookalike of people who initiated checkout
- Lookalike of people who added to cart
- Lookalike of all website visitors
Middle/Bottom of Funnel (MoFu/BoFu) - Retargeting: This involves showing ads to people who have already interacted with you (e.g., visited your Instagram profile, watched your videos, visited your website). These audiences are high-intent but they are *small*. You cannot sustain a $280/day budget on retargeting alone. It will lead directly to the underspending problem you're facing. Retargeting should be a smaller, separate campaign with a much lower budget, designed to bring warm leads back, not to find new ones.
Broad Interests
Lookalikes (1-5%)
Website Visitors
Video Viewers
IG/FB Engagers
Added to Cart
Initiated Checkout
You probably should change your campaign objective
Now for the second, and arguably more important, part of the puzzle. Your campaign objective. You're running "Instagram message advertising." This tells Meta's algorithm to find one very specific type of person: someone who is likely to tap the "Send Message" button.
Here's the uncomfortable truth: you are actively paying the world's most powerful advertising machine to find you people who are good at chatting, not people who are good at buying. The algorithm does exactly what you asked. It seeks out users who are 'clicky' on message buttons, who have a history of starting conversations. These users are often not in demand by other advertisers who are optimising for sales or leads, so their attention is cheap. But they are often tire-kickers, people with questions, or simply bored users. They are rarely high-intent, ready-to-buy customers.
When you optimise for a low-intent action like a message, you get low-intent users. The pool of these people who also happen to be inside your specific targeting is probably quite small, which is another major reason your campaign is starving for air and can't spend its budget.
The solution is to raise the bar. You need to switch your campaign objective to Conversions. This requires a bit more setup, but it completely changes the game.
- Create a simple landing page: This is a single webpage with one goal: to get the user to take a specific, valuable action. This could be filling out a lead form, signing up for a trial, or making a purchase. It should have persuasive copy and be free of distractions.
- Install the Meta Pixel: This is a small snippet of code on your website that tracks actions. You'll tell the pixel what a 'Lead' or 'Purchase' event is.
- Change your campaign objective: Instead of 'Engagement' (for messages), you'll select 'Sales' or 'Leads' and tell the campaign to optimise for the specific pixel event you set up.
Now, you are giving the algorithm a much, much better command: "Go find me people who are not just likely to click, but who have a history of actually buying things or filling out forms on websites." This is a completely different type of user. They are higher-intent, more valuable, and critically, the pool of these users is vastly larger. The algorithm will now have a much easier time spending your $280 budget finding these people.
Yes, your cost per *action* will be higher than your current cost per *message*. But the quality of that action will be exponentially better. One qualified lead from a conversion campaign is worth more than 50 dead-end message chats. We see this time and time again. I remember one B2B software client who came to us with this exact problem. We switched them to a conversion campaign aimed at free trial signups. Their spend issues vanished, and we ended up generating 4,622 registrations for them at just $2.38 each. Those were users in the product, not just names in an inbox.
You'll need a structured testing plan
Okay, so we've established we need bigger, better audiences and a more valuable campaign objective. But you can't just change everything at once. You need a methodical way to test these new ideas to find what works. This is where a proper campaign structure comes in.
I'd recomend setting up a new campaign using Campaign Budget Optimisation (CBO). This lets you set the budget at the campaign level ($280/day), and Meta will automatically distribute it to the best-performing ad set within that campaign. This is perfect for testing.
Inside this single campaign, you'll create multiple ad sets. Each ad set will target ONE of your new, broader audience ideas. For example:
- Ad Set 1: Targeting a broad interest, e.g., "Shopify" (if you sell to e-commerce owners).
- Ad Set 2: Targeting another broad interest, e.g., "Klaviyo".
- Ad Set 3: Targeting a 1% Lookalike of your past customers.
- Ad Set 4: Targeting a different 1% Lookalike, maybe based on website visitors.
Within each of these ad sets, you should have 3-4 of your best ads (creatives). Don't just use one. Give the algorithm different images, videos, and headlines to work with. It will automatically figure out which ad works best for which audience.
Here's what that structure looks like visually:
CBO Conversion Campaign ($280/day)
Audience: Interest A
Audience: Interest B
Audience: LAL (Purchasers)
Now, you launch this campaign and let it run for 3-5 days without touching it. This gives the algorithm time to learn. After this learning phase, you can start to make decisions. You'll likely see that CBO has started to favour one or two of the ad sets, and that your spending issue has resolved because the overall potential reach is now massive. You can then turn off the poorly performing ad sets and introduce new ones to test against your winners. This becomes an ongoing process of optimisation, not a 'set and forget' task.
This is the main advice I have for you:
To pull this all together, here is a summary of the issues and the actionable steps I'd recomend you take to not only solve the underspending but to build a much healthier, more scalable advertising account.
| Problem | Diagnosis | Recommended Action |
|---|---|---|
| Inconsistent Underspending (Spending ~50% of $280/day budget) |
The target audience is too small, too specific, or exhausted. The algorithm has run out of new, relevant people to show ads to within your current targeting parameters. |
|
| Low-Quality Engagement (Optimising for "Messages") |
The "Messages" objective targets users who are likely to chat, not users who are likely to become valuable customers. This is a low-intent action with a limited audience pool. |
|
| Inefficient, Unstructured Approach (Likely one campaign, one ad set) |
Without a structured testing framework, it's impossible to identify which audiences and creatives are working, leading to wasted spend and slow progress. |
|
As you can see, it's not just about setting up an ad and hoping for the best. It's a proper process of understanding your audience, defining your goals, optimising your targeting, creating compelling ads, and fine-tuning your landing page. The underspending is just a symptom of a deeper strategic issue. By fixing the core strategy, you'll find the spending takes care of itself, and the results will be far more impactful for your business.
This all goes to say: you may benefit from working with someone with expertise in scaling Meta campaigns. An experienced eye can often spot these bottlenecks much faster and implement a robust testing structure that saves you a lot of time and wasted ad spend in the long run.
We offer a completely free, no-obligation 20-minute strategy session where we can look at your ad account together and I can give you some more specific pointers. It's often the fastest way to get clarity and a solid plan of action. If that sounds helpful, just let me know.
Hope this helps!
Regards,
Team @ Lukas Holschuh