View as Markdown

Prebid Server

ezoic is a built-in bidder in Prebid Server (Go) from v4.8.0. Adding it is config only. Complete the onboarding steps first: unregistered domains and app bundles get no bids.

Bidder code ezoic
Available since Prebid Server (Go) v4.8.0
User sync built in Releases newer than v4.10.0 (see User sync)
OpenRTB 2.6, site and app, banner / video / native

Enable the bidder

  • Self-hosted: upgrade to v4.8.0 or newer. The adapter is enabled in the default build. If you keep an explicit bidder allowlist, add ezoic.
  • Through a host: ask your host to enable ezoic for your account. No endpoint or credentials are needed on their side.

Add Ezoic to impressions

Add ezoic under imp.ext.prebid.bidder, directly or in your stored requests:

{
  "imp": [{
    "id": "1",
    "banner": { "format": [{ "w": 300, "h": 250 }, { "w": 336, "h": 280 }] },
    "ext": {
      "prebid": {
        "bidder": {
          "ezoic": {}
        }
      }
    }
  }]
}

{} is valid. You can add an optional placementId string, for example { "placementId": "sidebar-top" }. It is recorded for reporting and doesn't change bidding.

From Prebid.js (s2sConfig)

If your pages send bidders to Prebid Server through s2sConfig, add ezoic to the bidder list and to the ad units routed through it:

pbjs.setConfig({
  s2sConfig: [{
    accountId: '<your PBS account>',
    bidders: ['ezoic' /* , ...other server-side bidders */],
    defaultVendor: '<your host, if applicable>'
  }]
});
bids: [{ bidder: 'ezoic', params: {} }]

Apps (Prebid Mobile)

Prebid Mobile auctions run through your Prebid Server, so apps work the same way: enable ezoic on the server and include it in the stored requests your app's ad units use. No Ezoic SDK is needed. App bundles must be registered with Ezoic.

User sync

Ezoic matches users through an iframe sync. Matched users bid at noticeably higher rates, so turn it on for web inventory.

  • Newer than v4.10.0: the sync is part of the ezoic bidder config. Nothing to add.
  • v4.10.0 or older: add it to your Prebid Server config yourself (or ask your host to):
adapters:
  ezoic:
    usersync:
      iframe:
        url: "https://g.ezoic.net/ezoic/prebid/adapter/usersync-frame?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&r={{.RedirectURL}}"
        user_macro: "$UID"

ezoic then joins your normal /cookie_sync and /setuid flow. The sync honors TCF (vendor 347) and GPP, and sets no ID without consent where consent is required. To check it, call /cookie_sync with "bidders": ["ezoic"] and confirm a sync URL comes back.

What comes back

  • At most one bid per impression, in seat ezoic.
  • Banner and native (mtype 1 and 4): adm is self-contained markup that includes Ezoic's impression tracking. Render it in a standard iframe. No win notice is needed from your side.
  • Video (mtype 2): the bid carries a VAST URL. Prebid Server's standard video and cache flow handles it, and impression tracking is inside the VAST.

Privacy and identity

  • TCF v2 (user.consent, regs.gdpr), GPP (regs.gpp, regs.gpp_sid) and US Privacy (regs.ext.us_privacy) are honored and passed to all of Ezoic's demand.
  • user.eids from your request are forwarded. Requests without a matched user are still bid on, at lower expected prices.

Timeouts

Requests that reach Ezoic with less than about 250 ms left get a no-bid. Use an auction tmax of 800–1000 ms end to end. Ezoic needs no special per-bidder timeout.

Check that it works

  1. Endpoint reachability: POST any valid OpenRTB request to https://g.ezoic.net/ezoic/prebid/adapter/ortb. Before your inventory is approved it returns HTTP 204, which confirms the request parsed. 400 means malformed JSON.
  2. Through Prebid Server: run a test auction with "test": 1 (or ext.prebid.debug: 1) and look for ext.debug.httpcalls.ezoic in the response.
  3. Bids appear once the inventory is approved and demand matches.

Troubleshooting

Symptom Likely cause
No ezoic entry in debug httpcalls Bidder not enabled, missing from the imp's ext.prebid.bidder, or Prebid Server older than v4.8.0.
Always no-bid Inventory not approved yet (most common), under ~250 ms left on tmax, or a privacy-restricted request.
Bids, but a low rate ads.txt / app-ads.txt entries missing or stale, or floors above available demand.
Video bid has no adm Expected: Ezoic video bids carry the VAST by URL. Use the standard video cache flow.
CPMs lower than partner-reported gross Ezoic bids are net of revenue share.

Go-live checklist

  • Prebid Server v4.8.0 or newer, or your host confirms ezoic is enabled
  • Domains / app bundles registered and approved by Ezoic
  • ads.txt / app-ads.txt entries published
  • ezoic in your imps or stored requests
  • tmax of 800 ms or more end to end
  • Consent strings populated where they apply
  • User sync on for web inventory (built in after v4.10.0, manual before)
  • A debug auction shows ezoic in httpcalls
  • Start with low traffic and agree the ramp window with your Ezoic contact