# Facebook Ad Cost Calculator: Estimate Budget, CPM and Results

> Most cost calculators hand you someone else's CPM. This one takes your numbers and tells you what you can afford, whether you can afford to learn, and which lever to pull first.
- **Author**: Marxx
- **Published**: 2026-10-02
- **Category**: Agency operations
- **URL**: https://marxx.ai/posts/facebook-ad-cost-calculator

---

Most Facebook ad cost calculators do the same unhelpful thing: they hand you somebody else's CPM and multiply.

That number is an average across every advertiser, country, objective and season on the platform. Your auction is a jewellery brand in Jaipur in October, or a dental clinic in Pune on a Tuesday. The average has no opinion about either.

So this calculator doesn't guess your CPM. **It takes your numbers and tells you what they imply** -- how much budget buys how many results, what you can afford to pay, whether you have enough spend to exit the learning phase, and which single lever is worth fixing first.

## The calculator

<div style="font-family:-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;border:1px solid #dfe3e8;border-radius:14px;padding:0;margin:16px 0;overflow:hidden;background:#fff">
<div style="background:#0f1218;color:#fff;padding:16px 20px">
<div style="font-size:16px;font-weight:700;letter-spacing:-.01em">Facebook ad cost calculator</div>
<div style="font-size:13px;color:#9aa3b5;margin-top:3px">Enter what you know. Leave the rest at the defaults and change them as you learn.</div>
</div>
<div style="padding:18px 20px">
<div style="display:flex;gap:16px;flex-wrap:wrap">

<div style="flex:1 1 230px;min-width:220px">
<div style="font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#7a8396;font-weight:700;margin-bottom:10px">Your inputs</div>

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">Monthly budget (INR )</label>
<input id="mx-budget" type="number" value="300000" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:11px;box-sizing:border-box;background:#fff;color:#111">

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">CPM -- cost per 1,000 impressions (INR )</label>
<input id="mx-cpm" type="number" value="220" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:11px;box-sizing:border-box;background:#fff;color:#111">

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">CTR -- click-through rate (%)</label>
<input id="mx-ctr" type="number" step="0.01" value="1.2" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:11px;box-sizing:border-box;background:#fff;color:#111">

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">Landing page conversion rate (%)</label>
<input id="mx-cvr" type="number" step="0.01" value="4" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:11px;box-sizing:border-box;background:#fff;color:#111">

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">Lead-to-sale close rate (%) -- set to 100 for ecommerce</label>
<input id="mx-close" type="number" step="0.1" value="20" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:11px;box-sizing:border-box;background:#fff;color:#111">

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">Average order / deal value (INR )</label>
<input id="mx-aov" type="number" value="4500" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:11px;box-sizing:border-box;background:#fff;color:#111">

<label style="display:block;font-size:13px;color:#39404d;margin-bottom:3px">Gross margin (%)</label>
<input id="mx-margin" type="number" step="1" value="45" style="width:100%;padding:8px 10px;border:1px solid #d3d8e0;border-radius:7px;font-size:14px;margin-bottom:4px;box-sizing:border-box;background:#fff;color:#111">
</div>

<div style="flex:1 1 300px;min-width:260px">
<div style="font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#7a8396;font-weight:700;margin-bottom:10px">What that buys</div>
<div style="background:#f6f8fa;border:1px solid #e4e8ee;border-radius:10px;padding:13px 15px;margin-bottom:12px">
<table style="width:100%;border-collapse:collapse;font-size:13.5px;color:#273040">
<tr><td style="padding:4px 0">Impressions</td><td id="mx-imp" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Clicks</td><td id="mx-clicks" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Cost per click</td><td id="mx-cpc" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Leads / conversions</td><td id="mx-leads" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Cost per lead</td><td id="mx-cpl" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Sales</td><td id="mx-sales" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0;border-top:1px solid #e0e5ec">Cost per acquisition</td><td id="mx-cpa" style="text-align:right;font-weight:700;border-top:1px solid #e0e5ec">--</td></tr>
<tr><td style="padding:4px 0">Revenue</td><td id="mx-rev" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">ROAS</td><td id="mx-roas" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Gross profit after ad spend</td><td id="mx-profit" style="text-align:right;font-weight:700">--</td></tr>
</table>
</div>

<div id="mx-verdict" style="border-radius:10px;padding:12px 14px;font-size:13.5px;line-height:1.55;margin-bottom:12px">--</div>

<div style="background:#f6f8fa;border:1px solid #e4e8ee;border-radius:10px;padding:13px 15px">
<div style="font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#7a8396;font-weight:700;margin-bottom:8px">Break-even and budget floor</div>
<table style="width:100%;border-collapse:collapse;font-size:13.5px;color:#273040">
<tr><td style="padding:4px 0">Max CPA you can pay</td><td id="mx-maxcpa" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Max CPM at your CTR and CVR</td><td id="mx-maxcpm" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Monthly budget for one ad set to learn</td><td id="mx-floor" style="text-align:right;font-weight:700">--</td></tr>
<tr><td style="padding:4px 0">Ad sets your budget can actually support</td><td id="mx-adsets" style="text-align:right;font-weight:700">--</td></tr>
</table>
</div>
</div>

<div style="flex:1 1 220px;min-width:210px">
<div style="font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#7a8396;font-weight:700;margin-bottom:10px">Which lever to pull</div>
<div style="font-size:12.5px;color:#6b7383;margin-bottom:10px;line-height:1.5">Extra monthly sales from improving each input by 10%, everything else held still.</div>
<div id="mx-levers"></div>
<div id="mx-lever-note" style="font-size:12.5px;color:#39404d;line-height:1.55;margin-top:10px;padding-top:10px;border-top:1px solid #e4e8ee"></div>
</div>

</div>
</div>
<script>
(function(){
  var ids=['mx-budget','mx-cpm','mx-ctr','mx-cvr','mx-close','mx-aov','mx-margin'];
  function g(id){var e=document.getElementById(id);var v=e?parseFloat(e.value):NaN;return isNaN(v)?0:v;}
  function money(n){if(!isFinite(n)||n<=0)return '--';return 'INR '+Math.round(n).toLocaleString('en-IN');}
  function num(n){if(!isFinite(n)||n<=0)return '--';return Math.round(n).toLocaleString('en-IN');}
  function set(id,v){var e=document.getElementById(id);if(e)e.textContent=v;}
  function model(b,cpm,ctr,cvr,close){
    var imp=cpm>0?(b/cpm)*1000:0;
    var clicks=imp*(ctr/100);
    var leads=clicks*(cvr/100);
    var sales=leads*(close/100);
    return {imp:imp,clicks:clicks,leads:leads,sales:sales};
  }
  function run(){
    var b=g('mx-budget'),cpm=g('mx-cpm'),ctr=g('mx-ctr'),cvr=g('mx-cvr'),close=g('mx-close'),aov=g('mx-aov'),margin=g('mx-margin');
    var m=model(b,cpm,ctr,cvr,close);
    var rev=m.sales*aov, gp=rev*(margin/100), profit=gp-b;
    set('mx-imp',num(m.imp));
    set('mx-clicks',num(m.clicks));
    set('mx-cpc',m.clicks>0?money(b/m.clicks):'--');
    set('mx-leads',num(m.leads));
    set('mx-cpl',m.leads>0?money(b/m.leads):'--');
    set('mx-sales',num(m.sales));
    set('mx-cpa',m.sales>0?money(b/m.sales):'--');
    set('mx-rev',money(rev));
    set('mx-roas',rev>0&&b>0?(rev/b).toFixed(2)+'x':'--');
    var pe=document.getElementById('mx-profit');
    if(pe){pe.textContent=(isFinite(profit)?'INR '+Math.round(profit).toLocaleString('en-IN'):'--');pe.style.color=profit>=0?'#1f7a5a':'#c23a52';}

    var maxCpa=aov*(margin/100);
    var maxCpm=(ctr>0&&cvr>0&&close>0)?maxCpa*(ctr/100)*(cvr/100)*(close/100)*1000:0;
    set('mx-maxcpa',money(maxCpa));
    set('mx-maxcpm',money(maxCpm));
    var cpa=m.sales>0?b/m.sales:0;
    var floor=cpa>0?cpa*50*(30/7):0;
    set('mx-floor',money(floor));
    set('mx-adsets',floor>0?Math.max(0,Math.floor(b/floor)):'--');

    var v=document.getElementById('mx-verdict');
    if(v){
      if(!isFinite(cpa)||cpa<=0){v.textContent='Fill in the inputs to see a verdict.';v.style.background='#f6f8fa';v.style.border='1px solid #e4e8ee';v.style.color='#39404d';}
      else if(cpa>maxCpa){v.innerHTML='<b>Underwater.</b> Your CPA of '+money(cpa)+' is above the '+money(maxCpa)+' your margin can carry. Every sale costs you money. Fix the funnel before adding budget.';v.style.background='#fdf0f2';v.style.border='1px solid #f3cdd5';v.style.color='#8c2639';}
      else if(cpa>maxCpa*0.7){v.innerHTML='<b>Thin.</b> CPA of '+money(cpa)+' against a '+money(maxCpa)+' ceiling leaves little room for a bad week. Worth fixing the weakest lever before scaling.';v.style.background='#fdf7ec';v.style.border='1px solid #f0dcbd';v.style.color='#8a5a16';}
      else {v.innerHTML='<b>Workable.</b> CPA of '+money(cpa)+' sits comfortably under the '+money(maxCpa)+' ceiling. Scaling is a volume question now, not a maths one.';v.style.background='#f1f8f4';v.style.border='1px solid #cde5d8';v.style.color='#1f6b4d';}
    }

    var base=m.sales;
    var tests=[
      {k:'CPM',s:model(b,cpm*0.9,ctr,cvr,close).sales,t:'a 10% cheaper CPM'},
      {k:'CTR',s:model(b,cpm,ctr*1.1,cvr,close).sales,t:'10% more clicks per impression'},
      {k:'Landing page',s:model(b,cpm,ctr,cvr*1.1,close).sales,t:'a 10% better landing page'},
      {k:'Close rate',s:model(b,cpm,ctr,cvr,close*1.1).sales,t:'10% better closing'},
      {k:'Budget',s:model(b*1.1,cpm,ctr,cvr,close).sales,t:'10% more budget'}
    ];
    tests.forEach(function(t){t.d=t.s-base;});
    var max=Math.max.apply(null,tests.map(function(t){return t.d;}));
    var host=document.getElementById('mx-levers');
    if(host){
      host.innerHTML='';
      tests.slice().sort(function(a,c){return c.d-a.d;}).forEach(function(t){
        var w=max>0?Math.round((t.d/max)*100):0;
        var row=document.createElement('div');
        row.style.marginBottom='9px';
        row.innerHTML='<div style="display:flex;justify-content:space-between;font-size:12.5px;color:#39404d;margin-bottom:3px"><span>'+t.k+'</span><b>+'+(t.d>0?t.d.toFixed(1):'0')+'</b></div>'+
          '<div style="height:8px;border-radius:99px;background:#eceff3;overflow:hidden"><div style="height:100%;width:'+w+'%;border-radius:99px;background:'+(w>=100?'#1f7a5a':'#9fb0c4')+'"></div></div>';
        host.appendChild(row);
      });
      var best=tests.slice().sort(function(a,c){return c.d-a.d;})[0];
      var note=document.getElementById('mx-lever-note');
      if(note&&best&&best.d>0){note.innerHTML='Right now, '+best.t+' is worth more than any other 10% improvement -- including the budget increase. Start there.';}
      else if(note){note.textContent='';}
    }
  }
  ids.forEach(function(id){var e=document.getElementById(id);if(e){e.addEventListener('input',run);e.addEventListener('change',run);}});
  run();
})();
</script>
</div>

*If the calculator doesn't load, the same maths is written out in full below -- it runs fine on paper.*

## How the maths actually chains

Six numbers, five multiplications. Everything in paid social cost estimation is this chain, and every "advanced" calculator is this chain with more boxes.

| Step | Formula |
|---|---|
| Impressions | (Budget / CPM) x 1,000 |
| Clicks | Impressions x CTR |
| Cost per click | Budget / Clicks |
| Leads | Clicks x Landing page conversion rate |
| Cost per lead | Budget / Leads |
| Sales | Leads x Close rate |
| **Cost per acquisition** | **Budget / Sales** |
| ROAS | (Sales x Average order value) / Budget |

Two things fall out of this that most people miss.

**Budget is the weakest lever in the chain.** It scales results linearly and nothing else. Every other input is multiplicative -- a 10% better landing page improves the output by the same amount as 10% more money, and it costs nothing per month thereafter. The calculator's third column ranks this for your specific numbers, and for most accounts the budget bar is not the tall one.

**CPM is the only input you don't control directly.** You influence it -- through audience size, placement, creative and timing -- but you don't set it. Everything to the right of CPM in that chain is yours.

## The number that decides everything: your max CPA

Before asking what Facebook ads cost, answer what you can pay.

**Max CPA = average order value x gross margin.**

That's your ceiling at break-even. Most teams should target somewhere around 60-70% of it to leave room for a bad fortnight, returns and the fact that reported conversions and bank deposits are never quite the same number.

Run it backwards and you get the useful version -- the **maximum CPM you can afford**:

> Max CPM = Max CPA x CTR x landing page CVR x close rate x 1,000

If your affordable CPM comes out below what your category's auction actually costs, no amount of optimisation fixes it. That's a pricing, margin or offer problem wearing a media costume, and it is genuinely common. The calculator shows this as the "Underwater" verdict.

## The budget floor nobody puts in a calculator

Meta's own guidance is that an ad set needs roughly **50 optimisation events per week** to get through the learning phase and stabilise. That gives you a hard floor that has nothing to do with ambition:

> Weekly floor per ad set = 50 x your CPA
> Monthly floor per ad set ~= 50 x CPA x 4.3

At a INR 2,000 CPA, one ad set needs about INR 4.3 lakh a month to learn properly. If your whole budget is INR 3 lakh, you do not have a budget for four ad sets -- you have a budget for zero, split four ways, all of them permanently in learning.

This is the single most common structural fault in small and mid-size accounts, and it's arithmetic rather than opinion. The calculator shows how many ad sets your budget can actually support. If the answer is one, run one.

<div style="font-family:-apple-system,Helvetica,Arial,sans-serif;background:#0f1218;border-radius:12px;padding:18px 22px;margin:14px 0;color:#e8eaf0">
<div style="font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8b93a7;font-weight:700;margin-bottom:12px">The three questions in order</div>
<div style="display:flex;gap:12px;flex-wrap:wrap">
<div style="flex:1 1 180px;background:#171b24;border-radius:9px;padding:13px 15px"><div style="color:#8ab6ff;font-weight:700;font-size:13.5px;margin-bottom:6px">1. What can I pay?</div><div style="font-size:13px;color:#aab2c2;line-height:1.55">AOV x margin. If you skip this one, the rest is decoration.</div></div>
<div style="flex:1 1 180px;background:#171b24;border-radius:9px;padding:13px 15px"><div style="color:#f0a04b;font-weight:700;font-size:13.5px;margin-bottom:6px">2. Can I afford to learn?</div><div style="font-size:13px;color:#aab2c2;line-height:1.55">50 events per ad set per week. Fewer ad sets, properly fed.</div></div>
<div style="flex:1 1 180px;background:#171b24;border-radius:9px;padding:13px 15px"><div style="color:#7fd1a8;font-weight:700;font-size:13.5px;margin-bottom:6px">3. Which lever is cheapest?</div><div style="font-size:13px;color:#aab2c2;line-height:1.55">Usually not budget. Often the landing page.</div></div>
</div>
</div>

## Why your CPM is what it is

CPM is an auction outcome, not a price list. Five things move it, roughly in order of how much:

**1. How many people want the same person this week.** Categories cluster. Here are three Indian finance advertisers in the same auction, bidding for the same credit-curious user on the same days:

<div style="display:flex;align-items:flex-start;gap:8px;overflow-x:auto;padding-bottom:6px;margin:8px 0">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/101699202601341/2294195898088412/2cb6808a.jpg" alt="Pice Meta ad: need quick cash? Instant loan, zero paperwork, up to Rs 25 lakhs with ten-minute disbursal" style="flex:0 0 32%;height:auto;border-radius:8px">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/156759887826821/2390072938075698/9799131c.jpg" alt="Paisabazaar Meta ad: say yes and the loan is yours -- pre-approved loan up to 10 lakh with paperless documentation" style="flex:0 0 32%;height:auto;border-radius:8px">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/102992856214133/901024809582912/e471c7f1.jpg" alt="GoodScore Meta ad: increase your credit score to 750+ for Rs 99 a month with personalised consultation" style="flex:0 0 32%;height:auto;border-radius:8px">
</div>

Pice, Paisabazaar and GoodScore are not competitors in any product sense -- a loan app, a marketplace and a credit-score service. In the auction they are, because they want the same impression. Your CPM in lending is set by how many of these are funded this quarter, not by your creative.

**2. Season.** Festive periods compress a year of retail intent into six weeks and every brand bids into it at once.

<div style="margin:8px 0">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/761670563910663/816866677544954/84a51f3b.jpg" alt="Milkbasket Meta ad: Yay it&#39;s Diwali time -- up to 60% off on cleaning essentials" style="width:100%;max-width:380px;height:auto;border-radius:10px;display:block;margin:0 auto">
</div>

The budget you modelled in August does not buy the same impressions in October. If your calculator says INR 3 lakh buys X results, that's an August X. Plan festive separately or you'll report a failure that was actually a price change.

**3. Audience size.** Narrow audiences cost more per impression because you're competing for a smaller pool. A tight audience can still be cheaper per *result* -- judge at CPA, never at CPM.

**4. Placement mix.** Excluding Audience Network and Reels to protect brand safety removes the cheap inventory first. That decision has a price; it belongs in the calculator as a higher CPM, not in a quarterly surprise.

**5. Creative.** Relevance pulls CPM down. The clearest public proxy is shelf life -- ads that stay live for months are the ones the auction keeps rewarding:

<div style="display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin:8px 0">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/150787921641794/1989106641738540/b304f32a.jpg" alt="Catalina Tropical Lodge Meta ad: why didn&#39;t we book this sooner? While you&#39;re hesitating, others are already enjoying paradise" style="flex:0 0 46%;max-width:320px;height:auto;border-radius:10px">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/216441552303101/953937887229125/4ecd7083.jpg" alt="Hormone Specialist Meta ad: four years, two products, that&#39;s the standard -- built different on purpose" style="flex:0 0 46%;max-width:320px;height:auto;border-radius:10px">
</div>

Catalina's hesitation hook has run **83 days**; Hormone Specialist's four-years-two-products founder piece **77**. Against that, a launch burst:

<div style="display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin:8px 0">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/786827864757998/1032503469290823/d01cade3.jpg" alt="boAt Meta ad: POV, your personality is done playing it safe -- Stone 900 coming soon" style="flex:0 0 46%;max-width:320px;height:auto;border-radius:10px">
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/242576885792454/1544080587359440/838f3895.jpg" alt="Bikanervala Meta ad: two big store openings this week, two cities one legendary taste" style="flex:0 0 46%;max-width:320px;height:auto;border-radius:10px">
</div>

boAt's teaser ran 5 days, Bikanervala's store-opening 3. Nothing wrong with either -- they're announcements with an expiry. But an account built entirely from announcements pays the learning phase over and over, and that shows up as a CPM problem when it's really a creative-calendar problem.

## Four ways the calculator's output will lie to you

1. **Your CTR is from your best ad, your CPM is from your worst week.** Mixing a good number with a bad one produces a forecast that matches no real month. Use blended account averages from the same period.
2. **Reported conversions overstate reality.** Attribution windows, view-through and modelled conversions all inflate. Compare Meta's number to your own backend before you trust the ROAS line.
3. **Frequency isn't in the model.** Costs rise as you exhaust an audience, so a forecast built at today's frequency breaks at triple the budget. The chain is linear; the auction isn't.
4. **Offline conversions are invisible unless you send them.** For any business where the sale closes on a call or a site visit -- clinics, solar, education, property -- the calculator's close-rate box is doing work that Meta can't see at all unless you're feeding conversions back.

## The version of this that uses your real numbers

Everything above is estimation. The useful version replaces every input with what your account actually did -- blended CPM by campaign and season, CTR by format, conversion rate by landing page, close rate by source -- and then flags where the chain is leaking.

That's an audit, and it's the thing worth doing before you change a budget. Marxx runs one across your full creative history rather than the last thirty days, and writes the fix next to each flag rather than handing you a list of symptoms.

**[Book a free account audit](/book-a-demo)** -- we'll run your numbers through this chain live and show you which lever is actually costing you money.

## FAQs

### How much do Facebook ads cost?

There is no useful universal answer -- CPM is an auction outcome that varies by category, audience, placement, geography and season. The answerable question is what you can afford to pay: average order value x gross margin gives your maximum CPA, and everything else works backwards from there.

### What is a good CPM on Facebook?

One below the maximum your margin can carry at your conversion rates. Published averages tell you about other people's auctions. Calculate your own ceiling instead, then judge the number you're actually being charged against it.

### How much budget do I need to start Facebook ads?

Enough for one ad set to get roughly 50 optimisation events a week -- about 50 x your expected CPA per week, or around 215 x CPA per month. Below that you're paying for a permanent learning phase rather than for results.

### Why did my CPM suddenly increase?

Most often seasonality or auction competition rather than anything you did. Check whether the rise is category-wide before rebuilding campaigns -- and check frequency, because an exhausted audience raises costs on its own.

### Should I lower CPM or improve conversion rate?

Usually conversion rate. CPM is an auction outcome you only influence; the landing page and the offer are entirely yours, and in the chain above a 10% improvement to either is worth the same as 10% more budget -- permanently, and for free.

### Does a lower CPM mean better performance?

No. Cheap impressions shown to the wrong people are the most common way to waste a budget efficiently. Judge at cost per acquisition; CPM is an input, not a result.

### How do I estimate costs for a new account with no data?

Start with a competitor's visible creative and your own margin maths rather than a published average: set your max CPA from AOV and margin, assume conservative CTR and conversion rates, and treat the first month's spend as the cost of replacing those guesses with your own numbers.

---
- [More Agency operations articles](https://marxx.ai/posts/category/agency-operations)
- [All articles](https://marxx.ai/posts)