How programmatic advertising works, and where OCM sits in it
A plain-English guide to how online adverts are bought and sold, the two very different businesses OCM runs, and the technical terms at the centre of the dispute with Index Exchange, Magnite and OpenX.
OCM sells advertising space for websites and apps through exchanges, and keeps a commission. It never buys ads.
A managed web business (lower volume, higher margin, low fraud risk) and a wholesale in-app/CTV business (high volume, thin margin).
What the in-app/CTV unit keeps from each dollar the exchanges pay it, before salaries and overheads, and shared with a partner.
Index Exchange only ever carried OCM's web business, yet terminated in the same week as the exchanges that carried in-app traffic.
Who is who
Every online advert passes between two sides. The sell side represents whoever owns the screen space; the buy side represents the advertiser. The exchange sits in the middle.
Publisher
Owns a website or app with space for ads. OCM's customer.
OCM (Orange Click Media)
Represents many publishers, connects them to exchanges, runs the technology and billing, and takes a commission.
Exchange, or SSP
Index Exchange, Magnite, OpenX. Runs the auctions, collects from buyers and pays OCM after taking its fee.
Advertiser
The brand paying for the advert, e.g. a retailer, often through an agency.
Buying platform, or DSP
Software that bids automatically for each ad slot on the advertiser's behalf. Amazon runs its own.
Measurement vendor
Independent companies (e.g. HUMAN, Pixalate) that check whether a real person saw the ad. Their findings drive refunds.
How an ad is bought, in about a tenth of a second
When a page or app screen loads, an auction runs for each ad slot before the page has finished loading. Step through it below.
Three ways the same slot can be sold
| Deal type | Who can buy | Price | Typical use |
|---|---|---|---|
| Open auction | Any buyer connected to the exchange | Set by bids in real time | The bulk of OCM's volume, web and app |
| Private marketplace (PMP) | Invited buyers only, via a deal ID | Floor price agreed in advance | Premium publishers, specific advertisers |
| Programmatic guaranteed (PG) | One buyer | Fixed price, fixed volume | Direct campaigns delivered automatically |
How ads are priced
Ads are priced per thousand views, the CPM. A β¬2.00 CPM means the advertiser pays β¬0.002 for one ad being shown. Revenue is the sum of millions of these fractions of a cent, which is why volume matters so much in the app business.
Where one advertiser dollar goes (in-app/CTV wholesale)
Buy-side fees are an illustrative industry figure. The exchange fee reflects OCM's contracts (Magnite 20%; Index pays OCM 80β85%). The OCM line uses the in-app unit's recorded ~6.6% margin on what the exchange pays OCM (H1 2026).
After the sale: measurement and clawbacks
The auction settles in milliseconds, but the money settles 60β90 days later. In between, the buyer's measurement vendor may decide that some views were not real, and the buyer can reclaim that money. The refund travels back down the chain.
OCM's two businesses, side by side
Both run through the same kind of exchange account, but they differ in who OCM deals with, how many hands the traffic passes through, and how much fraud risk they carry.
| Web: managed publishers | In-app & CTV: wholesale | |
|---|---|---|
| What | Ads on websites OCM manages directly, mostly Greek news, sport and lifestyle titles; operating since 2014 | Ads inside mobile apps and connected-TV apps, worldwide |
| Who OCM deals with | The publisher itself | About 20 specialist wholesale partners who aggregate thousands of apps |
| Control | OCM installs its own code (Prebid) and manages ads.txt | Relies on partners' onboarding and on measurement vendors |
| Hops before the exchange | Two (site β OCM) | Three or more (app β partner β OCM) |
| Margin | Higher | Thin: ~6β7% at unit level, shared with a partner |
| Fraud exposure | Very low: Greek ad prices are below what bot fraud needs to pay | Higher: where industry fraud concentrates |
| Exchanges used | Index Exchange (web only), Magnite, OpenX | Magnite, OpenX (never Index) |
Revenue vs. what OCM keeps
Headline revenue is large; the share OCM keeps is small. The grid shows it for the in-app/CTV unit.
Of every $100 the in-app/CTV unit billed in 2024
2024 is the last full year with the profit split recorded. OCM's $4 is before salaries, office and technology costs.
In-app/CTV unit by year
| Period | Revenue | Unit profit | Margin |
|---|---|---|---|
| 2024 | $19.31M | $1.23M | 6.4% |
| 2025 | $20.91M | $1.52M | 7.3% |
| H1 2026 | $9.75M | $0.64M | 6.6% |
Source: OCM wholesale billing reports.
What each exchange billed through OCM's accounts
| Exchange | Carried | 2024 | 2025 | JanβAug 2026 |
|---|---|---|---|---|
| Index Exchange | Web only | $0.40M | $0.50M | $0.33M |
| Magnite | Web In-app/CTV | $5.32M | $5.31M | $3.68M |
| OpenX | Web In-app/CTV | β¬1.14M | β¬4.04M | β¬0.76M |
Gross amounts, before OCM pays publishers and partners. OpenX shown net of UK VAT. Source: OCM's accounts.
Invalid traffic (IVT)
An advert is paid for on the basis that a person could see it. IVT is any view where that was not the case: a bot, a server, a hidden ad, an automatic refresh.
The industry splits it in two. GIVT (general) is known crawlers and data-centre traffic, which is easy to filter. SIVT (sophisticated) is bots that imitate people, device farms and fake apps. Some IVT exists in all traffic; buyers are refunded for it, and exchanges deduct it from what they pay sellers. The simulation shows how the measured rate differs by type of supply.
Simulated stream. Each line is a sampled impression checked by a measurement vendor; the counters run on batches. Rates are illustrative.
What OCM's own statements showed before the terminations
| Exchange (deduction line) | May 2026 | Jun 2026 | Jul 2026 | Aug 2026 |
|---|---|---|---|---|
| Magnite (IVT) | 0.17%* | 0.51% | 2.73% | none stated |
| OpenX (DSP invalid traffic) | 0.24% | 0.31% | 1.25% | 1.25% |
| Index (all adjustments) | n/a | 0.71% | 0.11% | 0.50% |
*April 2026 IVT, deducted in May. Source: OCM's invoices.
schain, sellers.json and ads.txt: the paper trail
Every bid request carries a record of each company it passed through: the supply chain object (schain). Each company is identified by an ID that anyone can look up in its public sellers.json file. Websites and apps publish ads.txt / app-ads.txt files listing who may sell their space.
Together these let a buyer such as Amazon trace an impression hop by hop, and attach a finding to a specific seller ID.
Show what the schain looks like inside a bid request
Bots, and why fraud targets some traffic and not other traffic
Common forms of ad fraud
Data-centre bots
Servers loading pages. The easiest to detect.
Device farms
Racks of real phones running apps automatically.
App spoofing
Low-value apps pretending to be popular ones to attract higher bids.
Hidden or stacked ads
Ads loaded where nobody can see them.
The economics
Faking a view costs money. Fraud only pays when the price of the ad is higher than that cost.
Illustrative. Greek web inventory trades at low prices, below the break-even for sophisticated fraud; global in-app and CTV inventory trades higher.
Timeline of events
Magnite actively onboards OCM to a new product trial and runs a site analysis on an OCM website. No quality concerns raised.
Call with Magnite about content signals and improving performance.
Magnite terminates both seller accounts "effective as of the date of this notice", citing Β§7.2. No prior suspension, notice or cure window.
Magnite's SVP says OCM was "flagged as part of some recent Amazon IVT issues" and that clawbacks "will likely be withheld" from final payments. OCM offers to restrict the account to web only.
Index Exchange closes OCM's web-only account "effective immediately", citing "anomalous traffic".
After OCM points to the 90-day clause, Index withdraws the immediate termination and gives notice to 24 December, but keeps the account suspended under cl. 2.3(b) and declines to share findings.
OpenX stops bidding, describes OCM's bids as "unmarketable" and says it is "pausing activity". No formal termination.