No, they are definitely losing money on each domain, each year.
What they charge covers only the base price of the domain and the additional ICANN fee. Don’t forget that they also have to cover the cost of the card transaction which, no matter how good a deal they get from their payment processor, has to include some sort of % and interchange fee. On $8.03, a normal business using Stripe would pay around 54 cents (2.9% + 30c), my guess is that Cloudflare is losing around 40 cents (1.9% + 25c) per domain per year.
Charging only for the “cost” of the domain, but not the transaction fee, is sheer marketing genius because it creates a powerful marketing message and, by building in a small loss, it makes it pretty much impossible for any of the existing registrars to compete on price.
It only makes sense for Cloudflare to eat that loss because they do actually have a range of useful paid services that a relatively high percentage of users are likely to buy at some point. The existing registrars simply do not have services to upsell that are attractive enough, exclusive enough or profitable enough to justify the same per-domain loss.
Yes, most of the hundreds of thousands of services out there do not require users to change their NS. I am talking about the mere hundreds that DO require that, usually because, like Cloudflare, they are doing some fancy network stuff. An example I gave was Netlify.
Sure, but I am talking about the behavior of users, not rational human beings. I am saying that it only takes ONE user to become upset and spend 3 minutes submitting an online complaint to ICANN to throw the entire model into jeopardy.