Native ads

Rather than delivering fixed ad layouts like standard banners, DSPs send individual assets, such as texts, images, and links. The app or site (SSP) then combines these assets into an ad unit that matches its organic content in fonts, colors, and padding.

To keep this process unified, the IAB released the OpenRTB Native Ads Specification.

How it works

Everything revolves around native assets. The publisher defines the list of assets needed to render the ad within the Bid Request. Each asset gets a unique ID, and the DSP must return a response matching these IDs.

Key asset types:

  • title: Ad title with a character limit (for example, up to 25 characters).
  • image: Main image (for example, 1200x627) or an icon/logo (50x50).
  • data: Various text elements:
    • desc: Description that appears below the ad title.
    • sponsored: Brand name, such as "Sponsor: Nike".
    • rating: App rating from 1 to 5 stars.
    • ctatext: Button text, such as "Buy now" or "Download".

Native format features

  • Impression tracking: Unlike banner ads where the DSP controls the impression pixel directly within the HTML code, native ads rely on the publisher's app or site to trigger the URLs provided in the eventtrackers array. If there is a mistake in the developer's code and these tracking links aren't fired, the ad will effectively run for free: impressions won't be counted, and no charges will occur.

  • JSON stringification: The native object is passed as a string inside the adm field: "adm": "{\"native\":{...}}". If quotes aren't escaped properly, this can cause parsing errors on the SSP side.

  • High CTR: Since native ads match the look and feel of organic content, users click them much more often than standard banners.

  • Various image sizes and cropping: SSPs often request a large image (such as 1200x627) while notifying DSPs that they may crop it to fit other aspect ratios (like 1:1 or 4:3) during rendering. For this reason, keep the main subject centered within the safe zone.

Sample request

By default, the native request object is passed in the imp.native.request field. This object is typically passed as an escaped JSON string, but we've formatted it as a regular JSON object below so you can easily read it.

{
  "id": "req-native-777",
  "imp": [
    {
      "id": "imp-1",
      "native": {
        "request": {
          "native": {
            "ver": "1.2",
            "plcmtcnt": 1, 
            "assets": [
              {
                "id": 1,
                "required": 1,
                "title": { "len": 90 } 
              },
              {
                "id": 2,
                "required": 1,
                "img": { "type": 3, "wmin": 1200, "hmin": 627 } 
              },
              {
                "id": 3,
                "required": 0,
                "data": { "type": 2, "len": 140 } 
              },
              {
                "id": 4,
                "required": 1,
                "data": { "type": 12, "len": 15 } 
              }
            ]
          }
        }
      }
    }
  ],
  "site": {
    "domain": "news.com",
    "page": "https://news.com/tech"
  }
}

Response example

With standard banner ads, the DSP sends the complete creative HTML code inside the adm field. For native ads, the adm field contains a JSON string (shown here in expanded view). The DSP must respond with the same asset IDs that the SSP requested.

Alert

The eventtrackers URL array is a critical element. Since DSPs don't provide HTML code, they can't embed impression pixels on their own. They pass these links to the publisher, who must fire a GET request to each URL the moment the native ad appears on the user's screen.

{
  "id": "req-native-777",
  "seatbid": [
    {
      "seat": "dsp-22",
      "bid": [
        {
          "id": "bid-555",
          "impid": "imp-1",
          "price": 3.50,
          "adm": "{\"native\":{\"link\":{\"url\":\"https://click.domain.com/promo\",\"clicktrackers\":[\"https://dsp.com/click?bid=555\"]},\"assets\":[{\"id\":1,\"title\":{\"text\":\"Everyday sneakers\"}},{\"id\":2,\"img\":{\"url\":\"https://cdn.domain.com/ad_1200x627.jpg\",\"w\":1200,\"h\":627}},{\"id\":3,\"data\":{\"value\":\"Feel light on your feet. Get yours today for 20% off.\"}},{\"id\":4,\"data\":{\"value\":\"Buy now\"}}],\"imptrackers\":[\"https://dsp.com/imp?bid=555\"]}}"
        }
      ]
    }
  ]
}