Meta Average CPA: The Greatest Scam of the Century?

Or, with less clickbait: This is why you don't target new and existing customers in the same Meta campaign.

Consider the campaign in the screenshot below. It's an ASC campaign with a target average cost set at 301 kr.

At first glance, it appears to be performing well. The cost per acquisition (CPA) is 346 kr., which is only 14% higher than the average target cost of 301 kr. In my opinion, this is within the accepted range with an target average cost campaign, and it'll probably decrease closer to 301 kr. once delayed attribution comes into play.

So, everything's going well, right?

Not exactly. It turns out that everything is f*cked. You just can't see it until you segment the performance on new versus existing customers.

Looking at the screenshot, we're seeing excellent CPA results from our existing customers, as indicated by the green box at the top. However, the CPA from new customers, shown by the red box at the bottom, is as close as it gets to burning money— it's more than double our target CPA.

In other words: we're bleeding money on our customer acquisition, but it's all covered up by a great CPA on orders from existing customers. And Meta considers this a-okay because the average CPA is close to our target. Crazy, right?

The problem is that Meta reports the average CPA by the "normal" average; taking the total revenue and dividing it by the number of orders. “Of course!” you might say. “It’s the definition of average?!” And yes, you’re right. But I honestly expected Meta to use a weighted average, especially when using cost controls. It just makes more sense. See the differences here:

  • Normal average; what Meta does: 27349.53 kr./79 orders = 346.2 kr.

  • Weighted average; what Meta should do: 111.17*(5002.49/27,347.04)+657.27*(22,347.04/27,349.53) = 557.38 kr.*

Notice how they can't hide the bad new customer CPA when weighted by spending? A weighted average puts more emphasis on whatever gets the most of the factor we're weighing it by. In the above case, the amount spent.

Could this be intentional by Meta? It's hard to say. Maybe I'm stupid to expect them to use a weighted average.

Conclusion

Don't target new- and existing customers in the same campaign (or ad set). It makes it extremely difficult to assess the performance of your campaigns if your goal is to acquire new customers. Which it should be. You can sustain your business on existing customer revenue for a while, but there's only a finite amount of water in the well of existing customers. Without attracting new customers, your business is bound to fail.

If you want to target existing customers, do it separately with a very low budget. Like 2-5% of the budget for new customers. It’s more than enough to hit your existing customers plenty of times with current CPMs.

Godspeed,
Mathias

PS: So you're equally fucked if you look at average ROAS. Same problem.

*: Fixed a minor type in the calculation. Doesn’t change the result.