Back to Bidders

GoAdserver

Features

Bidder Code goadserver Prebid.org Member no
Prebid.js Adapter yes Prebid Server Adapter no
Media Types display, video, native Multi Format Support will-bid-on-any
TCF-EU Support no IAB GVL ID none
GPP Support usnat, usstate_all, usp DSA Support yes
USP/CCPA Support yes COPPA Support yes
Supply Chain Support yes Demand Chain Support no
Safeframes OK yes Supports Deals yes
Floors Module Support yes First Party Data Support yes
Endpoint Compression check with bidder ORTB Blocking Support yes
User IDs none Privacy Sandbox check with bidder

Note

GoAdserver is a self-hosted, multi-tenant ad serving platform with a built-in OpenRTB 2.5 Prebid Server endpoint. One adapter (goadserver) serves every deployment — the specific ad server is selected per-ad-unit via params.host, and the publisher’s SSP campaign authentication token (issued in the GoAdserver panel) is passed via params.token. Publishers running multiple GoAdserver instances can mix and match them in a single Prebid.js config by setting different params.host values on different ad units.

Requests are POSTed to https://{params.host}/openrtb2/auction. The token lands in the outgoing BidRequest as site.publisher.id, which the GoAdserver auction handler uses to resolve the publisher account.

For setup or to obtain a token, contact support@goadserver.com.

Bid Parameters

Name Scope Description Example Type
host required The GoAdserver deployment’s public domain. The adapter POSTs to https://{host}/openrtb2/auction. "ads.example.com" string
token required SSP campaign authentication token from the publisher’s GoAdserver panel. Forwarded as site.publisher.id. "a1b2c3d4..." string
floor optional Per-bid CPM floor (USD). Honored only when the Price Floors module hasn’t already set imp.bidfloor. 0.50 number
subid optional Per-impression sub-identifier for stats attribution (page section, A/B group, etc.). Emitted as imp.ext.goadserver.subid and logged against the bid in GoAdserver reporting. "article_page" string
deals optional Array of private marketplace deal objects attached to this impression. Each entry maps to OpenRTB imp.pmp.deals[]: id (required), bidfloor, bidfloorcur, at, wseat[], wadomain[]. See example below. see below Object[]
outstreamRendererUrl optional Override URL for the outstream video renderer script. Defaults to https://{host}/prebid-outstream.js, which every GoAdserver deployment hosts. Set this to self-host or bundle a custom player. "https://cdn.pub.example.com/my-outstream.js" string

Deals / Private Marketplace

bids: [{
  bidder: 'goadserver',
  params: {
    host: 'ads.example.com',
    token: 'your-sspcampaigns-hash',
    deals: [
      { id: 'DEAL_XYZ', bidfloor: 2.50, bidfloorcur: 'USD' },
      { id: 'DEAL_ABC', bidfloor: 1.00, at: 1, wseat: ['agency-42'] }
    ]
  }
}]

Deal objects are forwarded verbatim to downstream DSPs. Winning bids return with bid.dealid, surfaced by Prebid.js as bid.dealId for GAM line-item targeting.

Outstream Video

Outstream is supported via the standard mediaTypes.video.context: 'outstream' setting. When a video bid is returned for an outstream ad unit, the adapter attaches a Prebid.js Renderer that loads the GoAdserver-hosted outstream player. The player parses the VAST XML, injects a muted auto-playing <video> element into the slot, and fires impression / click trackers — no publisher-side renderer configuration is required.

const adUnit = {
  code: 'outstream-1',
  mediaTypes: {
    video: {
      context: 'outstream',
      playerSize: [[640, 360]],
      mimes: ['video/mp4']
    }
  },
  bids: [{
    bidder: 'goadserver',
    params: {
      host: 'ads.example.com',
      token: 'your-token'
      // outstreamRendererUrl: 'https://cdn.pub.example.com/my-outstream.js' // optional override
    }
  }]
};

Test Parameters

const adUnits = [
  {
    code: 'top-banner',
    mediaTypes: { banner: { sizes: [[728, 90], [970, 250]] } },
    bids: [{
      bidder: 'goadserver',
      params: {
        host: 'ads.example.com',
        token: 'your-sspcampaigns-hash',
        floor: 0.50
      }
    }]
  },
  {
    code: 'preroll',
    mediaTypes: {
      video: {
        context: 'instream',
        playerSize: [[640, 480]],
        mimes: ['video/mp4']
      }
    },
    bids: [{
      bidder: 'goadserver',
      params: { host: 'ads.example.com', token: 'your-sspcampaigns-hash' }
    }]
  },
  {
    code: 'native-1',
    mediaTypes: {
      native: {
        title: { required: true },
        image: { required: true },
        sponsoredBy: { required: true }
      }
    },
    bids: [{
      bidder: 'goadserver',
      params: { host: 'ads.example.com', token: 'your-sspcampaigns-hash' }
    }]
  }
];

Multi-Deployment Example

Two ad units auctioned against two different GoAdserver deployments in one request:

pbjs.addAdUnits([
  {
    code: 'slot-a',
    mediaTypes: { banner: { sizes: [[300, 250]] } },
    bids: [{
      bidder: 'goadserver',
      params: { host: 'deployment1.example.com', token: 'token-a' }
    }]
  },
  {
    code: 'slot-b',
    mediaTypes: { banner: { sizes: [[728, 90]] } },
    bids: [{
      bidder: 'goadserver',
      params: { host: 'deployment2.example.com', token: 'token-b' }
    }]
  }
]);

The adapter relies on Prebid.js’s standard consent plumbing via ortbConverter. No bidder-specific consent handling is required on the publisher side. GoAdserver reads each signal from both its OpenRTB 2.6 location and the 2.5 ext location, and forwards it to every demand partner it calls:

  • US Privacy (regs.ext.us_privacy) and GPP (regs.gpp + regs.gpp_sid)
  • GDPR (regs.ext.gdpr, user.ext.consent). The values are forwarded only; see the GVL note below.
  • COPPA (regs.coppa). When set, user identifiers (user id, buyer uid, EIDs, user data segments) are removed from downstream requests, IP addresses are truncated, and no user sync is offered.

User sync pixels carry the auction’s consent values. GoAdserver does not set its cookie when GDPR applies and no consent string is present.

GVL ID: GoAdserver is not registered with the IAB Global Vendor List, so tcfeu_supported is false. EU publishers whose CMP enforces the GVL may see bid requests dropped before the auction.

DSA Transparency

When the request carries regs.ext.dsa, it is forwarded to demand partners and every returned bid includes ext.dsa, which Prebid.js surfaces as bid.meta.dsa. Bids that would fail the DSA Control module are filtered server-side, so the next-best bid can win the slot. These are bids with no DSA object when dsarequired is 2 or 3, and bids whose adrender conflicts with the request’s pubrender.

Blocking

Request-level bcat and badv and per-impression battr (banner and video) are forwarded to demand partners and enforced on their bids:

  • A blocked tier-1 category such as IAB25 also blocks its subcategories.
  • A blocked advertiser domain also blocks its subdomains.

Set them through first-party data:

pbjs.setConfig({
  ortb2: {
    bcat: ['IAB25', 'IAB26'],
    badv: ['competitor.example']
  }
});

"Send All Bids" Ad Server Keys

These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters.
hb_pb_goadserver hb_bidder_goadserver hb_adid_goadserver
hb_size_goadserver hb_source_goadserver hb_format_goadserver
hb_cache_host_goadse hb_cache_id_goadserv hb_uuid_goadserver
hb_cache_path_goadse hb_deal_goadserver

Back to Bidders