“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.”
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
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
Plus any Prebid-registered bidder — including your existing direct deals and server-side partners.
extra revenue typically recovered from inventory that came back unfilled.
LCP improvement measured when the tag is deferred until first scroll.
SSPs and identity modules configurable per market, per bidder, per size.
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.
-
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.
-
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.
-
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.
-
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.
<!-- 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.
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.
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.
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.
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 visitFast path — 20% shorter than baseline
Default configured timeout
Extended — more bids arrive in time
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.
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.
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.
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.
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.
Free
For sites getting serious about programmatic.
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
Growth
For publishers who want the full auction.
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.
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.
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
OptionalMost 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
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.
| 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.
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.
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.