Skip to content

Header Bidding Engine v2 — now self-serve

Higher yield.
Faster pages.
One single script.

ssm.codes is the header bidding and ad management platform publishers use to run parallel Prebid and Amazon TAM auctions, adapt every auction to the visitor's device and network, and recover the revenue that unfilled inventory usually throws away.

Configure everything from a dashboard. We compile your tag and push it to the edge in seconds. No wrapper code to maintain, no ad ops ticket queue.

  • Free tier forever
  • Keep your own GAM and SSP contracts
  • TCF 2.0 and CCPA out of the box
Google Certified Publishing Partner

ssm.codes is built by SSMAS, a Google Certified Publishing Partner — vetted by Google on product quality and on publisher outcomes.

One integration, the whole demand stack

Google Ad Manager Amazon TAM Xandr Magnite PubMatic Index Exchange OpenX Criteo TripleLift Sovrn GumGum Conversant Seedtag Taboola Outbrain Yahoo Fluct Logicad Google Ad Manager Amazon TAM Xandr Magnite PubMatic Index Exchange OpenX Criteo TripleLift Sovrn GumGum Conversant Seedtag Taboola Outbrain Yahoo Fluct Logicad

Plus any Prebid-registered bidder — including your existing direct deals and server-side partners.

5–15%

extra revenue typically recovered from inventory that came back unfilled.

up to −300 ms

LCP improvement measured when the tag is deferred until first scroll.

20+

SSPs and identity modules configurable per market, per bidder, per size.

< 10 s

from clicking Save to your new tag live on the CDN, cache purged.

The problem

Most publishers are choosing between revenue and page speed. You shouldn't have to.

A hand-rolled Prebid wrapper is a permanent engineering commitment: every new bidder, consent update or timeout experiment turns into a release. Meanwhile a fixed two-second auction punishes users on a phone in a tunnel exactly as much as it punishes your Core Web Vitals, and every unfilled slot silently deletes an impression you already paid to produce.

Auctions that fit the user

Prebid and Amazon TAM run at the same time under one timeout, and that timeout flexes with the visitor's real network and hardware — shorter on fast devices, longer on 3G, skipped entirely when bidding would only add latency and no bids.

Nothing loads before it matters

A prefetch queue reads scroll direction and speed to request slots just before they are needed, batching by proximity. Above-the-fold stays instant; below-the-fold stops taxing your first paint.

Empty is never the answer

When Ad Manager comes back with no fill, the slot cascades through still-valid bids, shopping demand and native fallback creatives — with frequency caps, so recovery never becomes a user-experience problem.

How it works

From signup to live tag in an afternoon.

You keep your Ad Manager network, your SSP contracts and your payment relationships. We replace the wrapper layer and the ad ops busywork around it.

  1. 01

    Let the wizard read your site

    Give us a URL. A real headless browser loads your pages on desktop and mobile, accepts your consent banner, scrolls to the bottom and inventories every Ad Manager slot and Prebid unit it finds — matched by GPID, element id or ad unit path. You review the list and name things properly.

  2. 02

    Configure in the dashboard, not in a repo

    Bidders and bid adjustments, price granularity, floors, identity modules, consent behaviour, refresh rules, lazy-load strategy per placement. Every knob that normally lives in a wrapper config file lives in a form with sane defaults.

  3. 03

    Drop in one script tag

    One line in your page head. If your slots are already hardcoded in the page, our header-bidding units attach to them without you moving a single div — we intercept the Ad Manager calls and inject demand before the request goes out.

  4. 04

    Save, and it's already live

    Each save compiles a bespoke, minified build of your tag — only the code your configuration actually needs — versions the previous one for rollback, ships it to the CDN and purges the cache. Under ten seconds, no deploy window.

index.html 1 line
<!-- ssm.codes SmartTag -->
<script async src="https://scripts.ssm.codes/your-site.js"></script>
  • consent checked before any partner loads
  • Prebid + TAM requested in parallel
  • combined targeting handed to GPT in one request
  • unfilled slots cascade to recovery demand

Already have your own setup? Header-bidding units bolt onto slots you define yourself, so you can pilot ssm.codes on a single placement — or a single page template — and compare it against your current wrapper before committing.

Platform capabilities

Everything an ad ops team asks for, in a dashboard your developers never have to open.

The list below is not a roadmap. It is what ships in the current version, available to configure the moment your account exists.

Demand and auction

Every buyer competing, at the same time

A single engine orchestrates client-side and server-side demand, hands one consolidated set of targeting keys to Ad Manager, and re-runs a fresh auction on every refresh so you are never serving stale bids.

Parallel Prebid + Amazon TAM

Both auctions fire simultaneously under a unified timeout instead of queueing behind each other, with a hard safety guard so a slow partner can never hold your page hostage.

20+ SSPs, configured per bidder

Activate any Prebid-registered bidder, set per-bidder bid adjustments, cap how many bidders enter a given auction, and run them all at once or in primary and secondary waves.

Bidder targeting by market

Restrict partners to the geographies where they actually pay — Western Europe, North America, LATAM, APAC, MENA, or an explicit country list — instead of paying latency for bids that never come.

Server-side bidding

Move partners to Prebid Server, single or multi-server, with presets for the major vendors or your own endpoint, to cut client-side weight without losing the demand.

Price floors, including AI floors

Global and per-size floors, per-media-type overrides, skip rates and deal-floor handling — plus optional machine-learned dynamic floors on higher tiers.

Identity that survives cookie loss

Twenty-plus identity modules — UID2, ID5, SharedID, RampID, Criteo, Yahoo ConnectID and more — resolved in parallel with floors so identity never lengthens your auction.

Price granularity you control

Low, medium, high, dense, auto or fully custom buckets, with currency conversion, send-all-bids and deal-inclusion rules for your Ad Manager line item setup.

A real debug mode

Inspect bids per ad unit and per bidder, intercept responses to test line items, and see exactly which partner won and why — without shipping a debug build.

Placements

Ad units that behave like part of your product

Define a placement once and control precisely when it requests, where it renders, how it collapses and what happens when it fails — per device, per template, per market.

Five loading strategies

Smart adaptive prefetch, request-on-load with Ad Manager rendering, delegated GPT lazy load, wait-for-DOM-selector for single-page apps, and fire-on-first-scroll for stickies.

Attach to slots you already have

Header-bidding units target Ad Manager slots defined in your own page code, matched by ad unit path or div id, so your templates stay exactly as they are.

Sticky and anchor formats

Native top or bottom anchors from Ad Manager, or your own sticky templates, with positioning that survives empty responses and later refresh cycles.

Any size, including fluid and out-of-page

Arbitrary size lists per unit, fluid and 1×1 support, out-of-page formats, plus device targeting so a placement can exist on mobile only.

Fallback units and run conditions

If a placement comes back empty, load a different one instead. Gate any unit behind a JavaScript condition so it only appears where it should.

Visual placement preview

See the largest selected size rendered in a device frame before you publish, including the mobile anchor mock, so you catch layout mistakes off-production.

Drag-and-drop inventory management

Search and filter dozens of units by type, device, size, loading mode or partner flags, reorder them, and edit any one of them in a side panel.

Tags for reporting sections

Label units by template or page section and carry those labels through to reporting, so "category pages underperform" becomes a number rather than a hunch.

Privacy and quality

Compliance is the default, not a project

Consent state decides what loads, in what mode, for every visitor — and traffic that no buyer wants to pay for never reaches the auction in the first place.

IAB TCF 2.0, wired in

The tag reads your CMP, resolves the consent string and maps it to four distinct behaviours: full auctions, non-personalised with limited partners, Limited Ads only, or legacy fallback when no CMP responds.

CCPA, GPP and COPPA handling

US Privacy and Global Privacy Platform signalling, California-specific partner blocking, and a COPPA flag for inventory aimed at younger audiences.

Partner load order that respects policy

Ad Manager warms up in parallel to save time, but partners that require consent — Amazon among them — are only fetched once the consent signal is actually resolved.

Invalid traffic screening

Suspected bot and fraud traffic is classified before the auction and excluded from bid requests, so you are not paying bandwidth or reputation for impressions nobody will buy.

Heavy-ad and brand-safety controls

Automatic recovery when Chrome unloads a heavy creative, page-wide and per-slot category exclusions, and optional SafeFrame enforcement where you need containment.

Internal-traffic detection

Visitors who load more than five pages in a day are flagged, so your own team and your power users can be excluded from experimental or lower-quality demand.

Insight and control

Change something, then find out whether it worked

Metrics, our analytics suite, reports revenue, consent and page vitals in real time, plus the experiment tooling to prove a configuration change actually earned its keep.

Revenue and fill analytics

Impressions, CPM and fill broken down by placement, device, country, bidder, network and page section, updated in near real time rather than tomorrow morning.

Consent analytics

Opt-in, opt-out and personalisation rates by market — the numbers you need to argue about your CMP design with evidence.

Core Web Vitals monitoring

LCP, CLS, INP and FCP tracked from real visits alongside your ad performance, so the trade-off between the two stops being invisible.

Exports and warehouse feeds

On Scale and Enterprise, pull the same rows the dashboard uses as CSV or feed them straight into your warehouse, so your BI stack and our numbers never disagree.

Built-in timeout A/B testing

Split a percentage of traffic onto a shifted timeout for a fixed date range and read the result straight from Ad Manager via a targeting key.

Custom events

Track the interactions that matter on your site with your own parameters, and segment revenue by them.

Escape hatches for engineers

Inject your own JavaScript at four defined lifecycle points, push custom targeting key-values, and keep your bespoke logic without forking anything.

Versioned builds and rollback

Every published tag is archived by date, so reverting a configuration decision is a matter of minutes.

Speed

The only ad stack that gets out of the way when it should.

Search rankings and bounce rates are revenue lines too. Our engine treats page performance as a constraint it has to respect, not a cost you absorb quietly.

Defer everything until the first scroll

On content sites where scrolling is near-certain, the entire tag can wait for the user's first scroll before doing any work at all. In our measurements this typically moves First Contentful Paint 50–200 ms earlier, Largest Contentful Paint 100–300 ms earlier and Total Blocking Time down 30–100 ms, at the cost of a slightly later first ad.

Adaptive auction timeouts

The tag reads the connection's round-trip time and downlink plus the device's memory and cores, then shortens the auction by up to 20% for capable visitors, extends it by 20% on 3G, and skips bidding entirely on 2G or memory-starved devices where the auction would time out anyway.

Three layers of lazy loading, one decision

GPT's native fetch and render margins, per-placement viewport observers, and our own directional prefetch queue all cooperate instead of fighting. You pick a strategy per placement; the engine resolves the rest, with tighter margins on mobile where data is expensive.

Network-aware auction budget

live per visit
4G · 8 cores · 4 GB+ 1 200 ms

Fast path — 20% shorter than baseline

Baseline 1 500 ms

Default configured timeout

3G · RTT 700–1800 ms 1 800 ms

Extended — more bids arrive in time

2G · ≤ 1 GB RAM skipped

Straight to Ad Manager — no wasted wait

Browsers without the network APIs simply fall back to your configured timeout. Nothing breaks, nothing throws.

Yield recovery

Your unfilled rate is a revenue line you have never been able to bill.

When a slot comes back empty, most stacks collapse the div and move on. Ours runs a cascade — and because every stage is frequency-capped and viewport-aware, recovery stays invisible to the reader.

Stage 01

PostBid

Bids from the original auction that lost to Ad Manager are often still valid. Rather than discard them, the slot renders the highest remaining bid in a contained frame, rotating weighted by CPM until the next refresh — only while the container is actually on screen, and with the option to exclude specific partners or networks.

Stage 02

Shopping referrals

Commerce demand, keyed to static keywords or keywords you compute per page, served in standard IAB sizes and localised to the visitor's country. You control the share of traffic that sees it and preview the actual creatives before anything goes live. API credentials stay server-side, never in the browser.

Stage 03

Direct-link creatives

A library of native-feeling fallback templates in multiple languages, split by traffic share, each with its own 24-hour impression cap and minimum interval. The last resort still earns something — and looks better than a collapsed hole in your layout.

Caps you set, not caps you hope for

Maximum impressions per rolling 24 hours and a minimum gap between them, tracked per placement and per recovery source.

Audience exclusions

Hide recovery demand from your own team, from high-frequency visitors, or from environments you have flagged as non-human.

Or keep full control

Prefer your own house creative? Switch to house mode and Ad Manager fills the gap with a snippet you own end to end.

And a refresh engine that respects the rules

Refresh on a timed interval, when a tab regains focus, on resize, on single-page-app navigation, or on browser back and forward — with the 30-second minimum and a per-session cap enforced in the engine itself, per placement. More impressions per session, without the policy risk of a homemade refresh script.

30 s
hard minimum between reloads
per-unit
opt in or out placement by placement

Pricing

Free to start. Priced as software, never as a cut of your revenue.

Wrappers that take 10–30% of your programmatic revenue get more expensive precisely as you get better at this. We charge a flat monthly fee by volume, so every euro of uplift you earn stays yours. No minimum term on monthly plans, no penalty for leaving, and guided setup is optional — free if you pay annually.

Monthly Annual Save ~15% Setup fee waived

Free

For sites getting serious about programmatic.

€0

free forever

Up to 1M ad impressions / month

Create your tag
  • 1 site, 1 tag, up to 15 placements
  • Header Bidding Engine v2 with Prebid.js
  • Up to 6 bidders in the auction
  • Google Ad Manager integration
  • Smart lazy load and refresh engine
  • Sticky and anchor formats
  • TCF 2.0, CCPA and COPPA handling
  • Self-serve dashboard and instant CDN builds
  • Delivery reporting in your dashboard
  • Documentation and community support
Most popular

Growth

For publishers who want the full auction.

€199

per month, billed monthly

Up to 10M ad impressions / month

Start 30-day trial
  • Everything in Free, plus:
  • Up to 3 sites, unlimited placements
  • Unlimited bidders and bid adjustments
  • Amazon TAM, including multi-format
  • Adaptive timeouts and full lazy load
  • Price floors and identity modules
  • Core Web Vitals tracked next to your revenue
  • Email support, next business day

Scale

For teams running yield as a discipline.

€749

per month, billed monthly

Up to 50M ad impressions / month

Talk to us
  • Everything in Growth, plus:
  • Up to 10 sites and sub-accounts
  • Server-side bidding via Prebid Server
  • Full unfilled-recovery suite
  • AI dynamic price floors
  • Timeout A/B testing and custom events
  • Invalid traffic screening
  • Metrics, our analytics suite, with 12-month history
  • Named account manager and shared Slack channel

Enterprise

For networks, groups and premium portfolios.

Custom

annual contract

Unlimited volume and sites

Request a proposal
  • Everything in Scale, plus:
  • Unlimited sites, users and sub-accounts
  • SSO and granular role permissions
  • Dedicated Prebid Server infrastructure
  • Custom bidder and adapter onboarding
  • Managed yield service, optional revenue share
  • Uptime SLA with support escalation path
  • Metrics with custom retention and warehouse feeds
  • MSA, DPA and security review support

Guided setup

Optional

Most publishers self-serve in an afternoon, and we would rather you did. But if you want our ad ops team to do it, they audit your existing Ad Manager inventory, build the tag with you and stay on the launch. It is an add-on, never a requirement — and it is included at no cost on every annual plan.

  • Ad Manager and placement audit before we change anything
  • Tag built, tested on staging, then published with you
  • Bidder and Amazon TAM onboarding paperwork handled
  • Two weeks of post-launch tuning and a yield review
€499

one-off, on monthly plans

Ask about guided setup

Over your volume?

€15 per additional million impressions on Growth, €9 on Scale. We warn you before you cross, and we never stop serving your ads.

Add-ons

Managed yield service, extra sites, extended data retention and dedicated Prebid Server capacity are available on Growth and above.

Prefer revenue share?

If you would rather we earn only on measured uplift, we offer a share-of-incremental model on Enterprise agreements. Ask us.

Prices in EUR, excluding VAT. Ad impressions are measured by our engine and shown in your dashboard.

What's in each plan

The free plan is a complete product, not a demo. It runs real auctions against real demand on a real site.

What's in each plan
Capability Free Growth Scale Enterprise
Header Bidding Engine v2 (parallel auctions)
Prebid.js bidders in the auction 6 Unlimited Unlimited Unlimited
Amazon TAM
Server-side bidding (Prebid Server) Dedicated
Adaptive timeouts and device skipping
Directional prefetch lazy load
Defer tag until first scroll
Price floors
AI dynamic floors
Identity modules
Unfilled recovery cascade
Sticky and anchor formats
Attach to your existing GAM slots
TCF 2.0 / CCPA / GPP / COPPA
Invalid traffic screening
Timeout A/B testing and custom events
Delivery reporting in dashboard
Metrics (our analytics suite) 12 months Custom
Sites included 1 3 10 Unlimited
Support Docs and community Email, next day Named manager + Slack SLA and escalation

Why publishers trust SSMAS

Our relationship is based on trust — the same team behind ssm.codes.

“It is very reassuring to leave your project in such professional hands. They always respond quickly, show a lot of interest and above all, they give you good vibes.”

Pati Ventana
Publisher

“At SSMAS they are committed to exceeding your expectations, providing you with high-quality services to propel your business to new levels of success.”

Fco Javier Gonzalez Bernal
COO

“I have seen the results by myself, we are on the right track, it has been a great decision to work with ssmas. Put a monetization expert in your life!”

Javier Romero
Publisher

FAQ

The questions publishers actually ask us

Do I need my own Google Ad Manager account?

Yes, and that is deliberate. Your Ad Manager network, your SSP contracts and your payment relationships stay yours — we sit in front of them as the wrapper and management layer. If you do not have direct SSP deals yet, we can introduce you to partners and help with the onboarding paperwork, but the contracts are still signed in your name.

How much work is the integration?

One script tag in your head, and a wizard that inventories your existing ad slots for you. If your slots are hardcoded in your templates, header-bidding units attach to them without any markup changes — the only requirement is that our script executes before your page calls the Ad Manager service. Most publishers are live on a staging environment the same day.

Will this slow my site down?

That is the assumption we built the product to break. You can defer the whole tag until the first scroll, adapt the auction budget to each visitor's device and connection, skip bidding entirely for visitors on 2G or low-memory phones, and lazy-load below-the-fold placements with a prefetch queue that reads scroll direction. Core Web Vitals are tracked in the same dashboard as your revenue so the trade-off is always visible.

What happens if I go over my impression limit?

Nothing breaks and nothing stops serving — that would be punishing you for growing. You get a notification as you approach the threshold, and additional volume is billed at a flat rate per million. If you are consistently over, moving up a plan is cheaper, and we will tell you that.

Can I really run a production site on the free plan?

Yes. The free plan runs the same auction engine, the same consent handling and the same build pipeline as the paid ones. What is gated is scale and the advanced yield features — Amazon TAM, adaptive timeouts, floors, unfilled recovery, server-side bidding and deeper analytics. Plenty of sites will never need to leave it, and that is fine.

Why flat pricing instead of revenue share?

Revenue share means your bill grows every time your yield team does something clever, and it makes the vendor's incentive to increase ad load rather than ad quality. A flat fee keeps our incentives on retention: you stay because the product works. If you specifically prefer to pay only on measured uplift, we offer that as an Enterprise arrangement.

How do you handle GDPR and consent?

The tag reads your CMP through the IAB TCF 2.0 API and maps the result to distinct behaviours: full auctions on consent, non-personalised delivery with a reduced partner set on partial consent, Limited Ads when consent is refused. Partners with policy requirements are only loaded after the signal resolves. US Privacy, Global Privacy Platform and COPPA flags are supported, and consent rates are reported by market.

Can I migrate away if it does not work out?

Monthly plans have no minimum term — remove the script tag and you are out, with your Ad Manager setup untouched because we never took it over. We keep versioned builds of every tag you publish, and we will export your configuration on request.

Do you support single-page apps and infinite scroll?

Yes. Placements can wait for a CSS selector to appear in the DOM, refresh on history navigation or URL change, and be re-requested as new content mounts. Sticky and anchor formats keep their positioning through empty responses and refresh cycles.

Who is this not for?

If you sell all of your inventory direct and run no programmatic demand, a header bidding wrapper will not help you much. If you need a full managed service where someone else owns your yield strategy end to end, that is our Enterprise engagement rather than the self-serve product.

More answers in the help centre

See what your inventory is actually worth.

Create a tag on the free plan and run it on one page template. You will know within a week whether the auction, the page speed and the unfilled numbers moved — and you will not have signed anything to find out.

No credit card. No minimum term. Your Ad Manager account stays yours.