VASTlint
Back to blog

Why IAS and DoubleVerify disagree lines up two logs and a missing node

A category split, a hop split, and a missing node sit together here and do not share a scale.

SourceFigureUnitWhat divergesSurfaceDate
MRCGIVT required, SIVT encouragedCategoryThe sophisticated slice need not matchMeasurementJune 2020
IASNearly 25× clicksCluster liftA named mobile scheme, after identificationMobileAugust 6, 2026
DoubleVerifyFraud under 1%Impression shareControls on, a later CTV cellCTVMay 7, 2026
MRCThe firm supplies a signalWho decidesThe platform or the client drops the requestPre-bidApril 11, 2025
Two verification reports diverge when the category differs, the hop differs, or a wrapper drops one AdVerifications node so one firm never saw the impression.
A discrepancy is a finding only after the two columns are the same object. Diagram by vastlint.org. An independent open-source project. The diagram restates figures already cited in this post.

Alex Sekowski · September 27, 2026 · 8 min read

Why IAS and DoubleVerify disagree is the search that starts from a spreadsheet you already have. People also type verification discrepancy, two verification tags with different IVT, and DoubleVerify and IAS reporting different numbers on the same campaign. The versus notes compare public studies. This one is about two exports with your campaign name on them.

Some of that gap is required by the standard. The MRC's June 2020 addendum makes general invalid traffic a shared list: data centers, declared crawlers, prefetch, tiny placements. Accredited measurers must apply it, so the general slice should be close. Sophisticated invalid traffic is encouraged, not required, and the methods differ, so two firms can agree on the list and disagree on hijacked devices, hidden ads, and spoofed apps. A buyer who bought both in order to get one number bought a second opinion on the slice the standard refused to standardize.

The rest of the gap is often the document. If a wrapper keeps one Verification node and drops the other, one firm is labeling impressions the other never received. vastlint checks whether those nodes are structurally present in VAST 2.0–4.4. It does not decide which sophisticated label was right.

The gap that is a category

Read the column header before the percent. If one export says GIVT and the other says total IVT, they are not the same subtraction. General filtration removes the shared list. Total IVT adds whatever sophisticated work that firm did. A jump when you switch vendors, or when you turn a second vendor on, can be the sophisticated scope turning on. The addendum says that difference is expected. It is not, by itself, evidence that one firm is loose.

Papyrus is what the sophisticated side looks like in a published case. IAS, on August 6, 2026, described hidden webviews in novel-reading apps, with nearly 25 times the click success rate versus other traffic it had already separated. A GIVT filter that strips known crawlers would leave that cluster in the log, because the devices are real phones. A second firm that did not name the cluster can report a quiet general rate on the same apps. The disagreement is the investigation, not a broken pixel, until you have checked the pixel.

The gap that is a hop or a population

A pre-bid flag and a post-bid rate are different moments. The MRC's April 11, 2025 memorandum says the measurement firm supplies a signal and the platform, or the client's configuration, decides the block. DoubleVerify's under-1-percent figure is what remained on CTV campaigns with controls on, published May 7, 2026. That is not IAS's opinion of the same impressions, and IAS's Papyrus ratios are not a CTV impression share. If your two exports are a block rate and a post-bid IVT rate, they disagree because one counts requests that never became impressions.

Population does the same work inside one campaign name. One firm may have scored the tagged impressions. The other may have scored a bid-stream sample, or a list of apps it already identified. The campaign name matches. The denominator does not. Write the denominator in the cell: tagged impressions, bid requests, named apps, open auction, controls on. Two percents with those labels filled in are allowed to differ. Two percents with the labels blank look like a vendor failure.

The gap that is a missing node

This is the discrepancy you can see without either firm's dashboard. Count Verification entries in the tag that served, not in the tag that was trafficked. A wrapper can keep the impression pixel and drop AdVerifications for one vendor. The campaign report then shows delivery, one firm shows measurement, and the other shows a hole that gets interpreted as a lower IVT rate or as a broken integration. It is a hole. The impressions were not classified. They were absent.

Duplicate vendor identifiers are a separate structural fault: the same vendor declared twice. Two different vendors in two nodes can both be legitimate. After the nodes are both present, a remaining sophisticated gap is the opinion you paid for. Before the nodes are both present, the gap is the tag. The how-to for that check is the AdVerifications note. The validator runs the same rules on the XML you paste.

Checks before you call it a vendor discrepancy

  • Are both columns GIVT, both SIVT, or one of each. Only the general list is required to be shared.
  • Are both columns the same hop: pre-bid suggestion, post-bid label, or a study after a scheme was named.
  • Are both columns the same denominator: tagged impressions, bid requests, or a named app list.
  • Did both Verification nodes survive the wrapper that actually served.
  • IAS Papyrus, August 6, 2026, and DoubleVerify's under-1-percent CTV cell, May 7, 2026, are public studies of different objects. They are not your campaign's discrepancy until the columns match.

A discrepancy is a claim that two firms saw the same impressions and subtracted different ones, and a missing verification node means one of them did not see the impressions at all.

measurement triage note

See which verification node the wrapper kept

Run VAST 2.0–4.4 tags against specification-derived rules so each Verification entry is present. Nothing is stored. This does not reconcile two IVT rates.

Paste the tag

XML opens the validator, and a live tag URL opens the tester.

Or test a live URL

Sources

GIVT is required and shared. SIVT is encouraged, and the methods can differ.

The buying question. This note is the report you have after you bought both.

What a dropped verification node does to the measurement.

The category split inside a single firm's IVT number.

Read another comparison in this set

All posts

Check the tag these notes describe

The rates above do not say whether AdVerifications survived the wrapper.