Post-buy guide

Post-buy analysis in TV: what "it aired" does not tell you

A spot can be perfectly real, perfectly logged, and still fail the plan it was bought to fulfil. The verdict belongs on the row, not in the total.

By the Tilsim team · · 7 min read

Post-Buy Analysis TV: What "It Aired" Does Not Tell You

Post-buy analysis compares every spot that actually aired against the plan line it was supposed to fulfil — on channel, flight, week, daypart and length — and reports the ratings each group delivered. "It aired" answers one question: did the commercial go out. The plan asked six or seven. Which channel, which week, inside which flight, which daypart, what length, against which planned line. Post-buy is the discipline of asking all of them per spot, never in aggregate.

That distinction is not academic. Aggregate reconciliation — total spots planned versus total spots aired — is where disputes go to die. Both sides produce a number that is technically correct, and neither number explains the gap. Per-spot classification gives you something you can use: a list you walk line by line with a sales house, where each row already carries its own verdict.

What are the seven compliance statuses?

In TV Planner, every aired spot receives exactly one of seven statuses:

Why must the statuses be mutually exclusive?

One spot, one status. That single decision is what keeps the report arithmetic honest: the seven buckets partition the delivered inventory, so their shares sum to 100% and you can say "8.4% of aired spots were out_of_daypart" without anyone asking whether those spots were counted somewhere else too.

The common alternative is a flag model — one spot carries wrong_length = true and out_of_week = true and out_of_daypart = true. It looks richer. It destroys the summary: three flags inflate every category, the percentages sum to 160%, and the conversation collapses into "whose count are we using". A partition says less per row and far more per report.

Exclusivity has a cost, and it is worth naming: the classifier has to apply a fixed precedence. A spot on an unplanned channel is unplanned_channel, and asking whether it was also in the wrong daypart is meaningless, because there is no daypart to be wrong against. A spot outside the flight is out_of_flight and never out_of_week, because week membership only exists inside a flight. The hierarchy runs from "is there a plan context at all" down to "does this specific attribute match". Accept that ordering and every spot has one unambiguous home.

"Aired" and "credited" are two different totals

Here is the part that changes negotiations. Once spots are partitioned, ratings follow the partition: delivered TRP for matched spots, delivered TRP for everything else, reported separately.

A campaign can hit 98% of its spot count and land materially short of the rating goal it was bought against, because the misses cluster in the expensive slots. Ten spots that slid from prime into off-prime cost far more in rating points than ten that slid by one week. It runs the other way too: over-delivery on spots with ratings sitting exactly on plan is a different conversation with the sales house, and a friendlier one.

Length works the same way. Duration is weighted: a 30-second spot counts as 1.0 and shorter creatives count proportionally less. A wrong_length spot did air, was seen, and generated real exposure — it just did not generate the equivalent the plan paid for. Calling it a miss while also reporting its delivered rating is the whole point of keeping the two columns apart.

How good is the audience data underneath?

A status is a label; a rating is a measurement. TV Planner reads the raw Nielsen delivery files — the binary EVS/RDS/RSP originals, not the text export — and computes reach and frequency at the individual level against a universe of 2,295,613 people. Multi-day aggregation is weighted by universe, not averaged across daily percentages, which is how a monthly number quietly drifts from the official one.

We check ourselves against the official audience table cell by cell. Of 60,858 cells, all 21,548 non-zero cells match to within 0.5 of a person — Nielsen rounds to whole people — across 17 of 17 demographic breaks. We reproduce Nielsen's numbers: that is the claim we make, and the wording matters when someone asks where a figure came from.

Ingestion is idempotent by SHA-256. A re-sent file is skipped, not double-counted. A corrected day deletes the old rows and replaces them, so a revised delivery revises the post-buy instead of stacking on top of it. Anyone who has watched a reach number move because the same week loaded twice knows why that is a feature and not plumbing.

What we deliberately do not report

Post-buy in TV Planner does not tell you how much money you saved. Our CPP is a planning proxy — the data set contains no real transaction prices — so we publish no cost recovery, no ROI, no make-good valuations as product facts. What we hand over is the compliance partition and the delivered ratings behind it. The commercial conclusion is yours to draw, with your actual rates.

Two money layers live upstream, in TV Budgeting, and keep them separate in your own reporting: the Shop List budget declared to the seller, which sets the discount step, and the Execution budget actually spent. Reconcile delivery against the wrong one and you get confident nonsense.

Reports go out as frozen snapshots on revocable links. A snapshot is the number as of the day it was generated, so when a discussion resumes six weeks later, nobody is arguing against a report that quietly recomputed itself.

Where to start without software

Take last quarter's largest campaign and hand-classify a hundred spots into the seven buckets, precedence-ordered, one status each. If more than a handful land in no_lines, the problem is upstream in how the plan was structured, not in delivery. If the misses concentrate in a single status, you have found the conversation to have.

Done automatically against raw Nielsen files, with ratings attached to each bucket, that is what TV Planner produces. One market's data today — Moldova — and we would rather walk through a real report than a slide about one.

FAQ

What is post-buy analysis in TV advertising?

The comparison of what actually aired against what was planned, spot by spot, on channel, flight, week, daypart and length — plus the ratings delivered by each group. It is the evidence base for make-goods and for the next negotiation.

Why classify a spot as a miss if it aired and was seen?

Because the plan bought a specific position, not generic exposure. The spot's delivered rating is still reported. Compliance and delivery are two separate columns, and collapsing them is how disputes start.

Why exactly seven statuses?

Those are the independent ways a spot can diverge from a plan line, arranged so that each spot belongs to exactly one. Fewer statuses hide the cause; overlapping flags break the arithmetic.

Do you need Nielsen's text export or the raw files?

The raw delivery files. The text export carries an age band of 1–5 rather than exact age, so industry breaks such as 18–49 and 25–54 cannot be assembled from it — a limitation of the text export, not of Nielsen's data.

What happens when Nielsen sends a corrected day?

The file is identified by SHA-256, the previous rows for that day are removed and replaced, and the post-buy is recomputed. Re-sending an identical file changes nothing.

See it on a real report

Seven exclusive statuses, delivered ratings per bucket, computed from raw Nielsen files — that is what TV Planner does with a campaign's post-buy.

Request a demo →