Skip to content

appnexus adapter: AUCTION_PRICE macro in creatives causes revenue discrepancies #4777

Description

@nickogl

I'm not sure if this is the correct place to report this issue.

During my time working for a monetization partner, I noticed revenue discrepancies between Xandr's dashboard and our own analytics system. I intercepted many creatives from real production bid responses and consistently found the AUCTION_PRICE macro in one of the impression pixels there which is ultimately replaced on the client and then sent to Xandr's data collector. Reviewing the whole bidding pipeline end-to-end I identified this as the root cause. Here's how it works:

  • Assume auction currency is EUR.
  • Price of the posted bid CPM is e.g. 1.0 USD.
  • Prebid server performs currency conversion to EUR, which is worth more than USD, so the bid CPM is now e.g. 0.9 EUR.
  • Prebid.js replaces the AUCTION_PRICE macro with 0.9.
  • Xandr's data collector seems to accept 0.9 as the USD bid value, even though the original bid was 1.0 USD. I'm assuming they accept it as-is because of second price auction support, but I'm not sure.
  • Discrepancies were about the relative difference in value between EUR and USD (average ~15% over time).

Here's how we fixed it:

  • Replace AUCTION_PRICE macro with the original bid CPM and put it live.
  • Wait for a few days.
  • Run discrepancy calculation again.
  • Discrepancies were now minimal (<1%), thus proving the macro to be the root cause.

If no revenue share is deducted and the auction currency is USD (i.e. same as Xandr's bidding currency), this issue doesn't materialize.

This issue might also materialize in c2s auctions if the auction currency differs from the bid currency, but I haven't investigated it as much as s2s.

If you have any questions or need investigation assistance, don't hesitate to ask.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status
Research

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions