Sign in

Blog · Board and management reporting

Advertising sales analytics for publishers and media teams

Compare booked advertising revenue, delivered inventory and realized selling rates from publisher exports. Work through a channel and advertiser example, with spreadsheet formulas and checks that separate paid fill from house advertising.

The short answerAdvertising sales analytics measures how publishers sell and deliver advertising inventory. Compare net bookings, paid impressions, paid fill and realized revenue per thousand impressions by advertiser and channel. Match orders to accepted delivery for the same period, keep house ads separate, and reconcile delivery revenue to finance before interpreting a booked-to-delivered gap as lost sales.

Advertising sales analytics measures a publisher's bookings, paid inventory fill and realized selling rates by advertiser and channel. Start with advertising orders and accepted delivery, then compare them with the inventory available during the same period. These measures show whether a revenue gap comes from fewer commitments, incomplete delivery or different rates.

Define the publisher's sales question

A media company's customer buys advertising inventory. The commercial review therefore asks what was sold, what ran and what revenue that delivery supports. It does not measure the advertiser's return on campaign spending; advertising analytics covers that separate question.

Keep three amounts distinct: net bookings assigned to the service period, revenue supported by accepted delivery, and revenue recognized by finance. In the example below, delivery revenue is an operating calculation for impression-priced orders. Finance must still reconcile it to the ledger, including any recognition adjustments.

Choose a reporting month and a consistent cutoff. Classify direct sales, other paid demand, house advertising and unfilled opportunities separately. If the file covers only direct-sold inventory, label that boundary rather than calling it the publisher's total business.

Prepare orders and inventory exports

The orders file needs advertiser ID, order-line ID, channel, service period, net booked impressions, net contracted rate and accepted paid impressions. Keep credit and cancellation records linked to their original order lines. Use business account identifiers; individual audience records are unnecessary for this comparison.

The inventory file needs channel, period, eligible requests, house impressions and any separately recorded unfilled requests. Aggregate order delivery to channel before matching it to inventory. Repeating a channel's request total on every advertiser row would multiply the denominator.

Define requests consistently. Here, each eligible request represents one impression opportunity, and every opportunity ends as one paid impression, one house impression or one unfilled opportunity. Video pods and multi-slot requests need their own comparable unit before this identity is usable.

Work the advertiser orders first

An illustrative US trade publisher reviews September 2026 at its agreed delivery cutoff. All orders below use net cost per thousand impressions, or CPM. There are no credits or fixed-fee placements in this example, and accepted delivery is billable at the contracted rate.

On an Orders worksheet, put these columns in A through G. Columns C, D and E come from the exports; F and G are calculated.

Advertiser Channel Booked impressions Net CPM (USD) Accepted paid impressions Net bookings (USD) Delivery revenue (USD)
Atlas Display 600,000 12.00 500,000 7,200 6,000
Beacon Display 400,000 12.00 300,000 4,800 3,600
Atlas Video 200,000 30.00 180,000 6,000 5,400
Beacon Video 200,000 30.00 120,000 6,000 3,600
Total 1,400,000 1,100,000 24,000 18,600

Enter these Excel formulas in F2 and G2, respectively, and fill down through row 5:

=C2/1000*D2
=E2/1000*D2

Atlas Display therefore has bookings of 600,000 / 1,000 × 12 = $7,200 and delivery revenue of 500,000 / 1,000 × 12 = $6,000. Its booked-to-delivered gap is $1,200. Rates are exact in this example; displayed percentages and combined rates below are rounded to two decimals after calculation.

Calculate paid fill and realized rates

Paid fill divides paid impressions by eligible requests. Realized CPM divides the associated net delivery revenue by paid impressions and multiplies by 1,000. For context, Google Ad Manager's metric definitions define total fill using total impressions over total ad requests; that broader numerator is why the word paid matters here.

On an Inventory worksheet, use columns A through H in this order:

Channel Eligible requests Paid impressions House impressions Unfilled opportunities Paid fill Delivery revenue (USD) Realized CPM (USD)
Display 1,000,000 800,000 50,000 150,000 80.00% 9,600 12.00
Video 500,000 300,000 100,000 100,000 60.00% 9,000 30.00
Total 1,500,000 1,100,000 150,000 250,000 73.33% 18,600 16.91

Use these formulas in C2, E2, F2, G2 and H2, then fill down for Video:

=SUMIFS(Orders!$E$2:$E$5,Orders!$B$2:$B$5,A2)
=B2-C2-D2
=IF(B2=0,"",C2/B2)
=SUMIFS(Orders!$G$2:$G$5,Orders!$B$2:$B$5,A2)
=IF(C2=0,"",G2/C2*1000)

Microsoft documents SUMIFS as summing values that meet specified criteria. Add period criteria when the source contains multiple months; channel alone is sufficient only because this example contains one month.

Calculate combined fill as 1,100,000 / 1,500,000 = 73.33%. Calculate combined CPM as 18,600 / 1,100,000 × 1,000 = $16.91. Neither figure is the simple average of channel percentages or rates.

Reconcile delivery before changing sales targets

The inventory identity is paid plus house plus unfilled equals eligible requests. Display checks as 800,000 + 50,000 + 150,000 = 1,000,000. Video checks as 300,000 + 100,000 + 100,000 = 500,000. Together, 1,100,000 + 150,000 + 250,000 = 1,500,000.

Compare the calculated unfilled opportunities with the independently exported unfilled count. The identity alone cannot catch missing paid delivery if unfilled is merely the balancing amount. Also match accepted impressions to the delivery report by order line before totaling revenue.

All-ad fill would be (1,100,000 + 150,000) / 1,500,000 = 83.33%. Showing that number alone would conceal the distinction between paid and house delivery.

The order-to-delivery gap is $24,000 - $18,600 = $5,400. Display contributes $12,000 - $9,600 = $2,400; Video contributes $12,000 - $9,000 = $3,000. Those gaps sum to $5,400, matching the advertiser-line calculation.

Sales owns the booking definitions; ad operations confirms delivery and inventory; finance checks adjustments and recognized revenue. Beacon Video has the largest line gap, $6,000 - $3,600 = $2,400, so investigate its delivery schedule first. A gap at the cutoff is not automatically a cancellation or permanent loss.

Use price realization by customer when discounts explain a selling-rate change. Use sales analytics versus sales intelligence for the broader boundary between measuring sales performance and gathering account information.

Where advertising sales analytics goes wrong

  • Counting house ads as paid sales. All-ad fill can rise while external revenue stays unchanged. Keep both numerators visible.
  • Repeating inventory by advertiser. Requests belong to the channel-period inventory record. Aggregate paid delivery before combining the files.
  • Mixing booked and delivered rates. Divide each revenue amount by its matching impressions. A booking numerator over delivered units overstates the realized rate.
  • Combining unlike inventory. Impression-priced display, fixed-fee sponsorships and video pods require explicit unit definitions before comparison.
  • Calling a timing gap lost revenue. Check service dates, accepted delivery, credits and makegoods with the responsible team before changing a forecast.

Covirage is not affiliated with Google or Microsoft.

Compare your publisher sales files in Covirage

Upload a sample of your own advertising orders and inventory exports, or a Google Sheet; Covirage maps the columns and its tools compute and check the figures. The external AI model explains the results with every figure traced to its rows. Create a free Covirage account, which takes about a minute, then set up your business and bring your files.

See revenue driver analysis for the supporting workflow.

Questions people ask

Is advertising sales analytics the same as campaign analytics?

Publisher sales analysis examines the revenue earned by selling advertising space or impressions. Advertiser campaign analysis examines spending and the responses it receives. The same placement appears on opposite sides of those businesses, so their revenue, cost and success measures differ.

Should house ads count toward fill rate?

They may count in an overall delivery measure, but they should not count as paid advertiser impressions. Report paid fill and all-ad fill separately, with their denominators stated. House advertising can occupy inventory without producing external advertising revenue.

Can booked advertising revenue be treated as earned revenue?

A booking records a commercial commitment. Delivery and finance records determine what has been fulfilled and recognized under the company's accounting policy. Keep the two amounts separate, and investigate timing, cancellations, credits and makegoods before interpreting their difference.

How should a publisher compare rates across channels?

Compare channels with matching units, revenue treatment and reporting periods. Revenue per thousand paid impressions is useful for impression-priced inventory, but sponsorships and fixed-fee placements may need separate measures. Changes in channel mix can move the combined rate without changing any individual selling price.