Know why revenue moved, not just that it did.
adstack is a configuration-driven advertising runtime and measurement pipeline for digital publishers. It replaces hand-maintained ad tags with reviewable configuration, and records every auction so a change in revenue has an explanation attached to it.
One runtime, the whole delivery path
Slot definition through to rendered impression, configured per site rather than coded per site.
Slot definition and placement
Ad positions declared in configuration, including in-article insertion that counts content blocks rather than guessing at pixels.
Header bidding and price floors
Demand configured per site and per placement, with floors applied where the auction outcome is known and the ad request has not yet gone out.
Consent, properly sequenced
The consent platform is asked while configuration is still loading, so privacy compliance costs the page nothing it did not already spend.
Experiments that can be settled
Arms are assigned before anything reads configuration, bucket ranges are version-controlled, and every arm is recorded against the revenue it produced.
Refresh and viewability
Refresh policy expressed as configuration, driven by what the reader actually saw rather than by a timer alone.
Reviewable configuration
Every site's setup is version-controlled and linted before it ships, so review, blame and rollback come as standard rather than as a console audit log.
Measurement is the product, not a report
Most advertising stacks can tell you what happened. Far fewer can tell you why, because the auction detail is discarded before anyone thinks to ask. adstack keeps it.
How it is built
A publisher's page is the business. These are the constraints the platform is held to.
- It degrades
- Every component has a defined behaviour when it fails, and the failure is announced rather than swallowed. A page that reports nothing still earns; a page that does not render still costs.
- It stays light
- A single runtime of roughly sixty kilobytes with no third-party dependencies, and nothing added between the auction settling and the ad request going out.
- It stays honest
- A wrong number is worse than a missing one. Gaps are counted and carried rather than left to be inferred, so a quiet dataset can be told apart from a broken one.
- It extends sideways
- New behaviour arrives as a subscriber to an event bus or as a configuration field, never as a change to the sequence that puts ads on the page.
Talk to us
adstack is built and in production use. If you run advertising on a publisher site and want to see it, get in touch.