Dynamic Flooring

Dynamic Flooring v2

Dynamic Flooring v2

Dynamic Flooring v2

Dynamic flooring helps protect the inventory against low quality ads, falling CPMs and with the right optimization increases revenue significantly.

The Assertive Yield Flooring is built for first price auctions with the goal to support all major platforms, providing transparency to DSPs resulting better results than what is possible within GAM and UPRs.

Upgrade from v1

v2 is completely different to v1. Configuration should start from scratch. The new version is more flexible and supports more use cases. The new version is also more accurate and provides better results as well as reporting.

Support for Floor Mappings as well as LineItem based floors is dropped, due to the increased availability and adoption of Unified Pricing Rules (UPRs) and the Prebid Flooring Module.

Supports

  1. Google Ad Manager (GAM) - Unified Pricing Rules (UPRs)
  2. Prebid Flooring Module
  3. Amazon TAM and UAM
  4. Server Side (e.g. RTB) (please reach out for details)

Requirements

  1. AY Tracking setup - min. version 2.25.0
  2. One week of data
  3. Enabled server-side (please request)
  4. Configuration and loading order

Prebid requirements

  1. Prebid flooring module
  2. optional: prebid currency module in case of multiple bid currencies

GAM Requirements

  1. ay_floor key/value (reportable)
  2. ay_hash key/value (custom dimension) -> please reach out if not possible for the instructions of how to set it up with Reportable Key/Values instead.
  3. UPR Rules

Amazon Requirements

  1. Two lines dev change to enrich the Amazon Slots with floors.

!! IMPORTANT !! Setups with randomly generated slotId's/prebid adUnitCodes are not supported out of the box, please let us know if this is the case on your site. If you are unsure you can run a Placement report (https://suite.assertiveyield.com/view/placements) -> if it returns thousands of rows it is the case.

Loading Order

Floors need to be set before the auction is initialized. For this to work the order of loading scripts is important and needs to be:

  1. AY Floor Prediction Model
  2. AY Client
  3. Prebid

The scripts can be loaded async. If they are not available in time floors will be skipped for the first pageview/auction. On following pageviews and auctions the files are available right away due to the browser cache.

GAM Setup

If you prefer us to set up the Key/Values and UPRs for you, please reach out to your point of contact.

Self setup:

  1. Create a new Key/Value called ay_floor with the values below and Include values in reporting ticked.
  2. Unified Pricing Rules, create a pricing rule for every targeting bucket (list below). Make sure to select the right key/value under Custom Targeting, and to change the Pricing Option to Set floor prices with the respected floor.
  3. For accurate attribution, make sure you set up Precise AdX and OB as well with a minimum of 10 values.
    1. If the use of a Custom Dimension with at least 10 values is not possible, please reach out for details on how to set up the attribution with Reportable Key/Values instead.
0.00
0.05
0.10
0.15
0.20
0.25
0.30
0.35
0.40
0.45
0.50
0.55
0.60
0.65
0.70
0.75
0.80
0.85
0.90
0.95
1.00
1.05
1.10
1.15
1.20
1.25
1.30
1.35
1.40
1.45
1.50
1.55
1.60
1.65
1.70
1.75
1.80
1.85
1.90
1.95
2.00
2.05
2.10
2.15
2.20
2.25
2.30
2.35
2.40
2.45
2.50
2.55
2.60
2.65
2.70
2.75
2.80
2.85
2.90
2.95
3.00

Prebid Setup

  1. ensure the Prebid Flooring Module priceFloors is available (you can check installed modules by executing pbjs.installedModules in the browser console)
  2. enable the Prebid Flooring Module by adding the following to your Prebid config:
pbjs.setConfig({ floors: {} });

Note: It has to be an empty {} since we are taking care of all the other configuration dynamically.

Amazon Setup (optional)

Before sending the slot object to Amazons fetchBids call please send them to AY for floor enrichment. Example:

if (assertive && assertive.addAmazonFloors) {
    amazonSlots = assertive.addAmazonFloors(amazonSlots);
}

apstag.fetchBids({ slots: amazonSlots }, function (bids) {
    // ...
});

Enable Dynamic Flooring

To enable dynamic flooring, set assertive.floor.enabled option to true and the assertive.floor.limit.percentage according to your traffic (please consult).

You may want to limit the floors to specific slots, in this case you can set the assertive.floor.limit.slotIds to an array of slotIds.

Full config:

window.assertive.floor = {
    enabled: true,
    currency: "USD", // Currency used by the Ad Server (GAM) (default "USD")
    prebid: true, // Enable Prebid Floors (default true)
    priceBuckets: { min: 0, max: 3, increment: 0.05 }, // Price Buckets for GAM UPRs (default {min: 0, max: 3, increment: 0.05})
    addToHashKey: true, // Add the floor to the hash key for accurate attribution (default true)
    limit: {
        slotIds: ["...", "..."], // Whitelist of slotIds to enabled reduction on (default all)
        percentage: 0.9, // Run on 90% of the users (default 98%)
    },
};

Note: enabling flooring force enables the tracking of unfilled impressions as these are required for the optimization and evaluation of the winning strategies.

Verify Flooring Setup

  1. After at least two hours, run a GAM report on the key/value to verify that the setup is working properly and the floors are within the expected line.
  2. Please share the report with us.

Full Example

Note: This is not a drop in example, please check the other pages for the details of each part.

<script>
window.assertive = {
    entityId: "< your entity id >", // your entity id from the dashboard see: https://suite.assertiveyield.com/welcome
    analytics: {
        logUnfilled: true, // enable unfilled logging for a better comparison
    },
};
window.assertive.hash = {
    generator: "server",
    values: 5000,
    key: function () {
        return [localStorage.getItem("ay_utm_s")].join("|");
    },
};
window.assertive.floor = {
    enabled: true,
    currency: "USD", // Currency used by the Ad Server (GAM) (default "USD")
    prebid: true, // Enable Prebid Floors (default true)
    priceBuckets: { min: 0, max: 3, increment: 0.05 }, // Price Buckets for GAM UPRs (default {min: 0, max: 3, increment: 0.05})
    addToHashKey: true, // Add the floor to the hash key for accurate attribution (default true)
    limit: {
        percentage: 0.4, // Run on 40% of the users (default 98%)
    },
};
</script>
<script async src="https://< your entity id >.ay.delivery/floorPrice/< your entity id >/js/floorPrice/linreg.min.js"></script>
<script src="https://< your entity id >.ay.delivery/client-v2.js" async></script>
This website uses cookies.   Learn more