DSP Integrations

From LoopMe Wiki
Jump to: navigation, search

The LoopMe Exchange provides access to global video and rich media interstitial inventory on both websites and applications.

This doc serves as an integration guide and FAQ for our OpenRTB 2.3 Marketplace integration. Please consult the document on the demand support centre and the changelog at the bottom of this guide the latest updates.


Onboarding Process

Step 1: Set up test campaigns and test environment: use LoopMe self-testing page (http://testbed.loopme.cool/) to confirm successful bid response.

Step 2: Contact LoopMe POC to confirm successful test and prepare for live testing. DSP should provide LoopMe with live endpoint.

Step 3: Pre-Live Test: LoopMe will request you to set up active/paying campaigns targeting low scale inventory, as well as specifying the countries / Mobile OS’s you are able to start on.

Step 4: Live Test: LoopMe will start sending low amounts of live traffic as discussed with DSP.

Step 5: Compare Discrepancy: LoopMe and the DSP will share the number of impressions and revenue counted daily for the first 5 days. Once the discrepancy is below 5% LoopMe will give the green light to scale up QPS.

Step 6: Scaling Traffic: LoopMe will inquire about the full list of countries / Mobile OS’s and QPS limitations to open traffic as required.

Auction Flow on the LoopMe Exchange

1. LoopMe receives an ad request from a mobile device. 2. LoopMe makes an http POST request to all partner bidder http endpoints (each bidder must respond within 200 ms total roundtrip) 3. LoopMe runs a second price auction based on all the valid responses from the bidders. 4. LoopMe pings the winning bidder’s nurl(s) to notify the DSP of a win 5. LoopMe sends down the winning bid’s HTML and imptrackers to the client after substituting all auction macros. 6. The mobile device pings the imptrackers url(s) after the ad markup is rendered.


Key Integration Details

Note: It is highly recommended that you read this section in full before you begin integration testing.


OpenRTB Version

The LoopMe Exchange supports OpenRTB 2.5. Please find documentation here.

Response times

We expect an answer under 100ms. If a bid response is received after the timeline, this will result on a bid failed => Timeout.


Endpoint

Please provide to your account manager with the URL of your server where we will send you bid requests, according to the openRTB standard. This should only be sent to your account manager after successful self-testing.


Macro Substitution

LoopMe RTB handles a subset of the substitution macros described in the OpenRTB standard (Any other macro described in the standard will be replaced with an empty string). All macros must be formatted as ${MACRO_NAME}


Supported Macro substitution:

¥ ${AUCTION_PRICE} : The win price for this bid, this may not be the same price ad the bid price in case of second price auctions. ¥ ${AUCTION_CURRENCY} : The currency of the auction price. ¥ ${AUCTION_ID} : ID of the bid request (BidRequest.id) ¥ ${AUCTION_BID_ID} : ID of the bid request (BidResponse.bidid) ¥ ${AUCTION_SEAT_ID} : ID of the bidder seat for whom the bid was made. ¥ ${AUCTION_AD_ID} : ID of the ad markup the bidder wishes to serve (bid.adid)

Note that is it possible to require auction price encoding by adding an encoding algorithm flag in the macro, the only algorithm supported at the moment is the base64 encoding. This can be used using following macro ${AUCTION_PRICE:B64}.

Macro substitution is supported for the following fields: • seatbid.bid.nurl • seatbid.bid.adm


Currency

We support only USD currency. Bid requests containing other currencies will be rejected. We will provide the winning price in USD currency.


Domain

The “adomain” or advertiser’s primary or top-level domain for advertiser checking. Provide the “adomain” in the bid response, it’s a require field for us.


Seat ID

A seat identifies a specific buyer. A seat allows publishers to know the buyer using your platform to allow access and track their commercial agreements. Since some premium publishers do not accept any ads from unknown seats it is a required part of the integration.

Note: If no seat is specified or if the “wseat” parameter is missing in the bidrequest object, it means that it is an OPEN AUCTION, all of your buyers are allowed to bid.

The requirements for the bidresponse.seatbid.seat object: • Alphanumeric (azAZ09) • Max length of 40 characters • Ideally min 8 characters

Deal

LoopMe supports fixed price deals


DNT, LMT and COPPA

LoopMe RTB requests may contain values for the DNT, LMT, COPPA fields.

• dnt = 1 as global identifier for “do not track” signaling to the bidder to not behaviorally target a user per OBA guidelines.

• lmt = 1 will be set when the mobile limit ad tracking is set on an android or iOS device

• bidrequest.regs.coppa = 1 will be set when the user is known to be a child under the age of 13, or the app is a child directed application

Nurl and Impression tracking

Nurl

bidresponse.seatbid.bid.nurl: this is an optional variable to notify a bidder when they won the auction. This does not guarantee that an impression is served, nor does LoopMe bill an impressions when this tracker is triggered


Billable Video Impressions

LoopMe considers a video start event a billable impression. Please include your impression trackers in the <Tracking event="start"> object in the VAST XML in the adm field of the bid response.


Billable Rich Media Impressions

LoopMe considers a viewable impression to be billable

Video 3rd Party Tracking

LoopMe supports adding multiple 3rd party tracking events in the VAST XML response. We support triggering 3rd party tracking events in: - <Tracking event="start> - <Tracking event="firstQuartile"> - <Tracking event="midpoint”> - <Tracking event="thirdQuartile"> - <Tracking event="complete"> - In the future additional VAST tracking events will be supported.


VAST Support

VAST Versions

LoopMe RTB supports VAST 2.0, VAST 3.0 and VPAID bid responses


VAST XML Requirements

The submitted VAST XML should be compliant to the VAST standards. Limitations: - LoopMe only supports Linear VAST video. - LoopMe only supports MP4 video

Please ensure you have the following VAST fields to pass LoopMe validations: - <Ad id=""> : please use a unique ID per campaign - <Creative id=""> : please use a unique ID for the submitted creative - <Duration> - <MediaFile type=””>: “video/mp4” is the only supported value - <MediaFile bitrate=””> - <MediaFile delivery=””>: "progressive" is the only supported value - <MediaFile width=””> - <MediaFile height=””>


Multiple bid responses

LoopMe RTB supports multiple bids for each seat represented in the bid response. Our RTB consider all bids from all seats, exclude the ones that do not match blocklist or are invalid, and take the highest of the remaining eligible bids across each seat.


Impressions per auction

LoopMe RTB supports 1 impression per auction, hence all bids would all be competing for a single impression.


SSL

Loopme RTB only supports SSL creatives.

If you have any specific requirements or questions regarding SSL (creative or OpenRTB integration), please let your account team know.