Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 129 additions & 24 deletions dev-docs/bidders/nativo.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,147 @@
layout: bidder
title: Nativo
description: Prebid Nativo Bidder Adapter
pbjs: true
pbs: true
media_types: banner, native, video
multiformat_supported: will-bid-on-one
floors_supported: true
biddercode: nativo
gvl_id: 263
media_types: banner, video, native
tcfeu_supported: true
usp_supported: true
userIds: all
biddercode: nativo
sidebarType: 1
privacy_sandbox: topics
coppa_supported: false
gpp_supported: true
schain_supported: true
dsa_supported: false
floors_supported: true
fpd_supported: false
pbjs: true
pbs: true
pbs_app_supported: true
prebid_member: false
multiformat_supported: will-bid-on-one
userIds: all
ortb_blocking_supported: true
---

### Note
## Note

The Nativo Bidder adapter requires setup before beginning. Please contact us at <prebiddev@nativo.com> beforehand.

### Bid Params
## Adapter Behavior

The Nativo Prebid Server adapter (both PBS-Go and PBS-Java) is a **pure pass-through adapter**. It forwards the full OpenRTB bid request to Nativo's endpoint without transformation. The only modification made by Prebid Server core is rewriting `imp[].ext` — stripping the `ext.prebid.bidder.nativo` routing wrapper so the bidder receives `ext.bidder` directly.

The Java implementation uses the shared `GenericBidder` class, making it functionally identical to the Go adapter.

Media type detection (banner, video, native) is determined at response time by inspecting the matched `imp` object.

## Bid Params

#### Prebid Server
### Prebid Server

Prebid Server primarily relies on the OpenRTB specification for its field definitions, along with widely recognized extensions that have become semi-standard within the industry.
The Prebid Server adapter requires **at least one** of the following identifiers on each impression. They are passed through in `imp[].ext.bidder` and `imp[].tagid` as standard OpenRTB fields.

`imp[].tagid` is the preferred integration method. This allows Nativo to set up a single catchall placement that will auto-create new placements based on a configurable request threshold on unique tagids (20k is default).

`placementId` should be reserved for unique use cases.

**At least one of `tagid`, `placementId`, or `gpid` must be provided.**

{: .table .table-bordered .table-striped }
| Name | Scope | Description | Example | Type |
|------------------------------|-------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|-----------|
| `imp.tagid` | required - preferred | Represents the Ad Slot Tag ID, which is the primary identifier linked to a specific placement ID within the Nativo platform. Read more about [tagid in the oRTB 2.6 docs](https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#324---object-imp-) | `placement_tagid_example` | `string` |
| `imp.ext.nativo.placementId` | required if no tagID | Refers to the unique Placement ID assigned by the Nativo platform. | `12345678` | `integer` |
| `imp.ext.gpid` | required if no other ID is provided | Represents the Ad Slot GP ID. It is another layer of identification tied to a placement ID within the Nativo platform. Read more about [gpid in the prebid docs](/features/pbAdSlot.html#the-gpid) | `/22888152279/publication/placement/gpid_example` | `string` |

#### Prebid JS
| Name | Scope | Description | Example | Type |
|----------------|----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------|-----------|
| `imp.tagid` | optional (preferred) | The Ad Slot Tag ID — a standard OpenRTB field and the recommended identifier. See [OpenRTB 2.6 imp.tagid](https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/2.6.md#324---object-imp-). | `homepage_infeed_atf` | `string` |
| `placementId` | optional | The unique Placement ID assigned by the Nativo platform. Set by the publisher in `imp[].ext.prebid.bidder.nativo.placementId` — Prebid Server translates this to `imp[].ext.bidder.placementId` before forwarding the request to Nativo. Reserved for unique use cases. | `12345678` | `integer` |
| `imp.ext.gpid` | optional (standard Prebid field) | The Global Placement ID (GPID). Used as a fallback if neither `tagid` nor `placementId` is present. See [GPID docs](https://docs.prebid.org/features/pbAdSlot.html#the-gpid). | `/22888152279/publication/placement/gpid_example` | `string` |

#### Example OpenRTB request to Prebid Server (banner)

```json
{
"id": "request-1",
"site": {
"page": "https://example.com/article",
"publisher": { "id": "pub-123" }
},
"imp": [{
"id": "imp-1",
"tagid": "homepage_infeed_atf",
"banner": {
"format": [{ "w": 300, "h": 250 }]
},
"ext": {
"gpid": "/123456/homepage_infeed_atf_1",
"prebid": {
"bidder": {
"nativo": {
"placementId": 12345678
}
}
}
}
}],
"tmax": 1000
}
```

#### What Nativo's endpoint receives

Prebid Server rewrites `imp[].ext`, stripping the `ext.prebid.bidder.nativo` routing wrapper. `placementId` is promoted from `imp[].ext.prebid.bidder.nativo.placementId` → `imp[].ext.bidder.placementId`:

```json
{
"id": "request-1",
"site": {
"page": "https://example.com/article",
"publisher": { "id": "pub-123" }
},
"imp": [{
"id": "imp-1",
"tagid": "homepage_infeed_atf",
"banner": {
"format": [{ "w": 300, "h": 250 }]
},
"ext": {
"gpid": "/123456/homepage_infeed_atf_1",
"bidder": {
"placementId": 12345678
}
}
}],
"tmax": 1000
}
```

If no params are provided, Nativo receives `"ext": { "bidder": {} }` and relies on `imp.tagid` or `imp.ext.gpid` for placement matching.

#### Example with native format

```json
{
"imp": [{
"id": "imp-1",
"tagid": "homepage_infeed_atf",
"native": {
"request": "{\"ver\":\"1.1\",\"layout\":1,\"adunit\":2,\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"len\":90}},{\"id\":2,\"required\":1,\"img\":{\"type\":3,\"wmin\":300,\"hmin\":200}}]}"
},
"ext": {
"gpid": "/123456/homepage_infeed_atf_1",
"prebid": {
"bidder": {
"nativo": {
"placementId": 12345678
}
}
}
}
}]
}
```

### Prebid.js

{: .table .table-bordered .table-striped }
| Name | Scope | Description | Example | Type |
|---------------|----------|---------------------------------------------------------------------------------|--------------|-----------|
| `placementId` | required | Publication placement ID value from the Nativo Platform | `13144370` | `integer` |
| `url` | optional | Publication url value associated with placement ID value in the Nativo Platform | `https://test-sites.internal.nativo.net/testing/prebid_adpater.html` | `string` |

| Name | Scope | Description | Example | Type |
|---------------|----------|-------------------------------------------------------------------------|-------------------------------|-----------|
| `placementId` | required | Publication placement ID value from the Nativo Platform | `13144370` | `integer` |
| `url` | optional | Publication URL associated with the placement ID in the Nativo Platform | `https://example.com/article` | `string` |
Loading