Monitoring AdSense performance

Most webmasters check their AdSense earnings at least once a day. AdSense home dashboard displays current earnings in context with previous earnings and most relevant reports:

AdSense home dashboard

Looking at the estimated Yesterday number, your experience tells you is it within the expected range or not, plus the dashboard shows comparison to the same day last week. But even when revenue looks normal, it is important to check other performance metrics to detect trends not yet visible in cumulative results.

The dashboard provides several widgets for overall performance, most profitable ad units, channels, countries, sites, platforms and bid types. Some widgets let you compare current performance with a previous date range, while other graphically show performance day by day. You can show and hide widgets from the main view clicking the corresponding pin icon.

Still, provided reports are also cumulative. For example, considering all differences between mobile and desktop ads performance, you may want to check best ad units on mobile and desktop separately. And not for all countries, but only for United States. You can create such report in Performance reports - My reports - New report - Report type > Ad units, Platforms - Filter > Countries United States:

Custom report

Checking detailed custom reports is more time consuming, so you can save it and schedule to be delivered to your email address:

Scheduled report

Once in your inbox, you can save the attached .csv report and analyze it programmatically.

If you go programmatic, you can also use AdSense Management API to directly query your AdSense account from code. There is sample code in C#, Java, PHP, Python and Ruby to get started. For example, in C# you can get all ad units, channels and generate a earnings report for a channel or an ad unit:

var reportRequest = service.Accounts.Reports.Generate(
    adSenseAccount.Id, startDate.ToString(DateFormat), endDate.ToString(DateFormat));
reportRequest.Filter = new List
{
    "AD_CLIENT_ID==" + ReportUtils.EscapeFilterParameter(adClientId),
    "CUSTOM_CHANNEL_NAME==" + ReportUtils.EscapeFilterParameter("Top")
    //"AD_UNIT_CODE==123456789"
};
reportRequest.Metric = new List
{
    "PAGE_VIEWS", "EARNINGS"
};
var reportResponse = reportRequest.Execute();

For a list of all available metrics and dimensions see reference documentation.

Finally, when you have detected a change in performance, the Ads Monitor service can offer you an explanation showing changes in ads style and content in the given time period.