Do you know why CPM decreases when your Impression increase? Read here

Advertising CPMs are an average. 

Say that you have two articles, generating 100 views, comprised as following:
1. Article 1 produces 80 views
2. Article 2 produces 20 views

If Article 1 attracts higher-paying advertisers, and gives you a return of $6 per thousand views, whilst Article 2 only gives you a return of $1 per thousand views, Article 1 will generate $0.48 and Article 2 will generate $0.02, based on those views. Averaged out, this gives you $0.50 per 100 views, which is a CPM of $5. Notice how the article which attracts less money dilutes down the CPM by $1?

Now imagine that your views increase like this:
1. Article 1 produces 100 views
2. Article 2 produces 120 views

Instead of 100 views, you're now getting 220 views. However, the view increase of the less lucrative article leads to the dilution of the CPM. Article 1 produces $0.60. Article 2 produces $0.24. Total income for the two articles is $0.84, which is a definite increase above what was being earned previously with less views, but look at how the CPM is affected. (0.84 / 220) * 1000 gives you a CPM of $3.82. Ie, there are more views and earnings are clearly higher, but the CPM is significantly lower.

The trap many people fall into is that they think that their views multiplied by the CPM is what they are paid. In reality, CPM is just a measure of your average earnings per 1000 views across the board. You're paid based on each individual impression, and CPM is a way of measuring the average value of one thousand of these impressions.

As a more obvious example of the advertising value of individual views, look at Adsense. If you were to get 1 click at $0.48 from 50 views, for a total of $0.50 earnings (0.02 is from impressions, 0.48 from clicks), this is a click-through of 2%, and an RPM of $10. That 1 click, from one visitor, produces the bulk of the income, and RPM just tells you that if the conditions were exactly the same for 1000 views, rather than 50, you would be earning $10.

Now let's say that you get 100 views but no clicks, and just earn $0.04 from the impressions. This would give you an RPM of $0.40. The average value of 1000 views under these conditions is less than the value of 1000 views in the previous scenario. 

Take it in a different direction and say that the conditions are the same as in the first scenario, except you get 2 clicks from the same amount of views. Click 1 at a value of $0.48 and click 2 at a value of $0.37. Impressions at $0.02. The total earnings are then $0.87 for 50 views, with a CTR of 4%, and an RPM of $17.40. One view gave you that extra click, but this one view drives the RPM up to a much higher average.

As for what the income of each impression is based on, there is a wide variety of factors. Value of keywords (How much the advertisers will pay to target specific keywords), the amount of advertisers targeting the niche (Competition for a keyword drives up the cost), advertising budgets, amount of websites targeting the keywords (More sites showing ads for a keyword means the advertising is spread thinner), and how prestigious a site is (Advertisers will often pay more to target websites that are high quality and authoritative). Then you have factors like how many visitors click those ads, what they do after clicking, and how engaged they are in relation to active-view based advertisements.

If you take a look at how CPM changes during December and over Christmas you'll likely notice that it goes up. This is because advertisers see it as an important time to advertise and sell products. There are more advertisers vying for the same keywords, they are willing to pay more, and they have longer campaigns and larger budgets.
What is the solution?
Subscribe
Wait for the next post

No comments:

'; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();