Hall 8 Stand C016

Enriched inventory earns
70% more revenue

The moment a reader opens your page, Neuwo has already told every bidder what it is about. Start a trial on your own inventory, right here.

Ausra Putvinskiene
Johannes Harju

Get your token

Two to three weeks on your own domains. No contract, no card.

Why it moves

What the bidders get

IAB Content and Audience taxonomy

Every page classified into both taxonomies, in the format demand systems already read.

No cookie, no identifier

The signal describes the page, so it survives every privacy change coming at you.

Real results Neuwo ON vs OFF
+70%
Revenue uplift on enriched inventory
+80%
Paid impressions
+39,9%
Buyer clicks
+17
Premium buyer networks

Implementation

Live in one deploy

Your ad units do not change and nothing new goes on your pages.

  1. 1

    Put the module in your Prebid build

    Tick Neuwo RTD Module on the Prebid.js download page and use the file it builds, or add rtdModule and neuwoRtdProvider to your own build. Keep every module you already build with. Build options in the docs

    shell
    gulp build --modules=rtdModule,neuwoRtdProvider
  2. 2

    Paste the configuration

    Drop this in wherever your other pbjs.setConfig calls live. Your token and endpoint are already in it. Every configuration option

    javascript
    pbjs.setConfig({
      realTimeData: {
        auctionDelay: 500,
        dataProviders: [
          {
            name: "NeuwoRTDModule",
            waitForIt: true,
            params: {
              neuwoApiUrl: "<Your Neuwo Edge API Endpoint URL>",
              neuwoApiToken: "<Your Neuwo API Token>",
            },
          },
        ],
      },
    });
  3. 3

    Send the categories to Google demand

    This lifts Neuwo's categories out of the auction and hands them to Google Publisher Tag as Publisher Provided Signals, so Ad Manager can pass them to your demand channels. The Ad Manager walkthrough

    javascript
    // segtax 6 = IAB Content Taxonomy 2.2, segtax 4 = IAB Audience Taxonomy 1.1
    const neuwoSegments = (data, segtax) =>
      (data || [])
        .filter((d) => d.name === "www.neuwo.ai" && d.ext?.segtax === segtax)
        .flatMap((d) => (d.segment || []).map((s) => String(s.id)));
    
    pbjs.que.push(function () {
      pbjs.onEvent("bidRequested", function (bidRequest) {
        const content = neuwoSegments(bidRequest.ortb2?.site?.content?.data, 6);
        const audience = neuwoSegments(bidRequest.ortb2?.user?.data, 4);
    
        const taxonomies = {};
        if (content.length) taxonomies.IAB_CONTENT_2_2 = { values: content };
        if (audience.length) taxonomies.IAB_AUDIENCE_1_1 = { values: audience };
        if (!Object.keys(taxonomies).length) return;
    
        // setConfig replaces the whole pps object, so send both taxonomies at once
        googletag.cmd.push(() => googletag.setConfig({ pps: { taxonomies } }));
      });
    });

    Publisher Provided Signals is an Ad Manager 360 feature, and the taxonomies still have to be switched on per demand channel in the Ad Manager interface.

The full guides

Every option on the RTD module, and the six Ad Manager screens with screenshots.

Hall 8 | Stand C016 23-24 September 2026

Prefer to talk it through? Come and find us at the stand.