# Track programmatic ad performance

Learn how to read revenue, CPM, fill rate, and delivery for programmatic ads in the Programmatic Dashboard, by placement, ad source, device, and country.

The Programmatic Dashboard in Business Account reports what your programmatic ads earn and how they deliver across your social experience. Use it to measure revenue, find the placements, formats, and demand partners that perform best, and adjust your presets. It brings together ad-server reports, content-level performance, and CDN and delivery insights.

Programmatic reporting is part of [Monetize](https://begenuin.com/developers/browse-by-products/monetize/monetize-what-it-does-and-where-to-start). To set up the ads it reports on, see [Set up programmatic ads in your feeds](https://begenuin.com/developers/browse-by-products/monetize/how-do-we-set-up-programmatic-ads-to-generate-automated-ad-revenue).

## Open a report

1. In your Business Account, go to **Monetize** > **Programmatic** > **Dashboard**.
   ![The Programmatic Dashboard in your Business Account on the AdServer tab, with Last 30 Days selected, a Video format filter, and tiles for Inventory, Impression, Revenue, CPM, CTR, and Completion Rate.](https://cdn.sanity.io/images/lnrtvsvr/development/eaef239445399b3e10755ae000b23f2977b56038-1879x910.jpg)
   *Step 1: The dashboard opens on the AdServer report, with date presets and headline metrics.*
2. Choose a report type: **AdServer**, **Content**, or **CDN**.
3. Choose a date range: **Today**, **Yesterday**, **Last 7 Days**, **Last 30 Days**, or **Custom**.
4. Check the time zone. The time zone is configurable per brand.

| Report type | What it shows |
| --- | --- |
| AdServer | Revenue, impressions, and CPM |
| Content | Performance of videos that carry ads |
| CDN | Delivery and playback performance |

Compare a short date range with a long one to separate short-term changes from long-term trends.

## Read the core metrics

The dashboard reports the industry-standard metrics used to judge monetization:

| Metric | What it tells you |
| --- | --- |
| Impressions | How many times ads were served |
| Revenue | Total earnings from ads |
| CPM | Revenue per 1,000 impressions |
| CTR | How often viewers engaged with ads |
| Completion Rate | The percentage of video ads watched to the end |
| Inventory | Available ad slots |
| Fill Rate | The percentage of ad slots successfully filled |

Pick the metrics that match your goal:

- **Revenue**: CPM and Revenue.
- **Engagement**: CTR and Completion Rate.
- **Supply efficiency**: Fill Rate.

Revenue is CPM-based earnings, counted per 1,000 impressions. It combines paid partnership and programmatic demand.

## Break down performance

Split any metric by dimension to see where it comes from:

| Dimension | What it shows |
| --- | --- |
| Supply (Placements) | Which placements generate the most revenue |
| Demand (Ad Sources / SSPs) | Which demand partners perform best |
| Device / OS | How web, iOS, and Android compare |
| Geography | The top-performing countries |
| Format | How video, display, and native ads compare |

![The Top Ad Sources and Top OS charts in the Programmatic Dashboard, comparing requests, inventory, impressions, and revenue for two date ranges, with Android, iOS, Chrome OS, and Fire OS listed.](https://cdn.sanity.io/images/lnrtvsvr/development/f8ecf9e71a6c55fee2ff4a85e4fc89fa895764a6-1875x912.jpg)
*Top Ad Sources and Top OS split delivery by demand partner and operating system.*

![Country and Top Channels breakdowns in the Programmatic Dashboard, listing inventory and impressions for Malaysia, Singapore, United States, Korea, and Australia, and for one channel.](https://cdn.sanity.io/images/lnrtvsvr/development/2af5da6894bac65aa83a2923ef1bf88002145def-1876x910.jpg)
*Country and channel breakdowns show where inventory and impressions come from.*

To analyze performance per placement, use **Supply** > **Channels**.

Ready-made views show where to scale or optimize:

- **Top Ad Sources**
- **Top Channels**, covering placements and embeds
- **Top OS**
- **Top Countries**

The dashboard offers these report options:

| Option | Values |
| --- | --- |
| Reporting views | Supply, Demand, Custom |
| Revenue views | Totals, Ratios, Custom |
| Formats | Video, Display, All |
| Data granularity | Placement, platform, geography |
| Real-time data | Live reporting |

**Live Data reporting** shows data in real time, though some aggregated figures might arrive with a slight delay.

## Act on what you find

| What you see | What to do |
| --- | --- |
| High impressions but low revenue on a placement | Check its CPM and fill rate, then switch to a different preset, for example from Balanced to Aggressive |
| One SSP has a low fill rate | Lower that ad server's Traffic Rate in Demand Settings, or switch it off. You can also choose a different ad server under Add demand sources in the preset |
| High impressions but a low completion rate | Reduce ad frequency and adjust the in-stream ad types, for example by removing mid-roll |
| iOS earns a better CPM than web | Select Custom settings in the preset, and raise ad density on its iOS tab |

Learn how to change presets in [Create and manage monetization presets](https://begenuin.com/developers/browse-by-products/monetize/how-can-a-brand-configure-and-control-ad-monetization-using-presets-in-the-brand-control-center).

Ad servers and their traffic rates are set in **Demand Settings**, under **Settings** > **Ad Configuration**. Each Google Ad Manager and Pangle server has its own traffic rate, and all Header Bidding servers share one.

A Header Bidding server you switch off stays configured but receives no traffic.

A low fill rate has three common causes: low demand from SSPs, strict targeting, and low-quality inventory.

For revenue and net margin per impression by placement and partner, see [Margin Reporting](https://begenuin.com/developers/browse-by-products/supervised-intelligence/margin-reporting).

## Limitations

- **No predictive analytics**: Optimization is manual.
- **No automated recommendations**: The dashboard doesn't suggest changes, so deciding what to change takes human analysis.
- **No A/B testing insights**: Compare variations manually.
- **No cross-brand benchmarking**: Data covers your own brand only.

## See also

- [Margin Reporting](https://begenuin.com/developers/browse-by-products/supervised-intelligence/margin-reporting)
- [Set up programmatic ads in your feeds](https://begenuin.com/developers/browse-by-products/monetize/how-do-we-set-up-programmatic-ads-to-generate-automated-ad-revenue)
- [Create and manage monetization presets](https://begenuin.com/developers/browse-by-products/monetize/how-can-a-brand-configure-and-control-ad-monetization-using-presets-in-the-brand-control-center)
- [Genuin Ad Server](https://begenuin.com/developers/browse-by-products/monetize/genuin-ad-server)
- [Revenue reporting, payouts, and the Wallet](https://begenuin.com/developers/get-started/any-business/revenue-reporting-payouts-and-the-wallet)
