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' }
}]
}
]);
Consent & Privacy
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
IAB25also 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 |