MRAID

1. What is MRAID?

  • MRAID (Mobile Rich-Media Ad Interface Definitions), is a framework for mobile advertisers and publishers that allows rich media ad creatives to run across all compliant devices and applications. It is a standard developed by the Interactive Advertising Bureau (IAB) in late 2011. MRAID is designed for publishers who want to do direct sales with more engaging ads as well as those who want to work with ad networks that support rich media creatives.

2. What MRAID formats are supported by the MoPub SDK?

  • We fully support the MRAID 1.0 standard per the IAB MRAID 1.0 specification.
  • We also fully support the MRAID 2.0 standard per the IAB MRAID 2.0 specification for our newer SDKs. Please see below for instructions on how to properly target between MRAID 1.0 and 2.0 inventory.
  • Third-party ad calls are acceptable, but fourth-party ad calls are NOT (i.e. a rich media tag wrapping another rich media tag).

3. Does MoPub support MRAID 2.0?

  • Yes. MoPub SDKs 3.3+ include full MRAID 2.0 support. Please see question #7 for details on how to properly differentiate and target MRAID 1.0 vs MRAID 2.0 inventory.

4. How can I check how my MRAID tag will look/function in MoPub inventory?

5. What percentage of MoPub inventory supports MRAID in the Marketplace?

  • As of January 10, 2017:
    • iOS: 98% of auctions
    • Android: 90% of auctions

6. What is the standard discrepancy we should expect from MRAID?

  • 5% average, 10% maximum. Most testing has come in at ~5% impression discrepancy between MoPub and third-party reporting.

7. How can I properly identify and target MRAID-supported bid responses?

  • Applies to Both DSPs and Server-to-Server Partners
    • MRAID 1.0 Only:
      • The request imp.banner.api field will contain the value 3 to indicate support for MRAID 1.0 only.
    • Both MRAID 1.0 and MRAID 2.0:
      • The request imp.banner.api field will contain the value 3 AND 5 to indicate support for both MRAID 1.0 and MRAID 2.0

8. What do I need to do to serve an MRAID creative?

  • There are two fields in the bid response that you as the serving DSP must pay attention to when serving an MRAID tag to MoPub inventory.
  • You have a choice of implementing EITHER option, or both, but at least one option must be used.
    • Option 1a – RTB 2.3 DSP:
      • Add the following field:value to the seatbid.bid.ext object of your bid response:
      • "crtype": "MRAID 1.0"
        • OR
      • "crtype": "MRAID 2.0"
        • OR
      • "crtype": "MRAID playable"
    • Option 1b – Server-to-Server Partner:
      • Add the following field:value to the seatbid.bid object of your bid response:
      • "crtype": "MRAID 1.0"
        • OR
      • "crtype": "MRAID 2.0"
    • Option 2 – Both DSPs and Server to Server Partners (Option 1a or 1b is preferred)
      • Include the following to the start of your ad markup/mraid tag:
        • <script src="mraid.js"></script>

9. What do I need to do to serve MRAID Video?

  • In addition to the crtype field from question #8 there is one additional required field when serving MRAID Video. bid_response.seatbid.bid.attr
    • Details: This integer array field indicates the type of creative being served. Per section 5.3 of the IAB Open RTB 2.3 specification, the value ‘6’ indicates the creative is of type “In-Banner Video (Auto-Play)”, the value ‘7’ indiciates the creative is of type “In-Banner Video Ad (User Initiated)”
    • Valid value(s): 6 or 7 (This field must contain the integer 6 or 7)
    • Example: "attr": [6]
  • You can also find an MRAID Video bid response example on our MoPub OpenRTB 2.3 documentation.

10. What do I need to do to serve an MRAID Playable ad?

  • In addition to the crtype field from question #8 there is one additional required field when serving MRAID Playables. bid_response.seatbid.bid.attr
    • Details: This integer array field indicates the type of creative being served. Per section 5.3 of the IAB Open RTB 2.3 specification, the value ‘13’ indicates the creative is of type “User Interactive (e.g., Embedded Games)”
    • Example: "attr": [13]
  • Additional documentation on playable ads can be found here.

11. Which third-party rich media partners are certified on the MoPub platform?

  • DSP partners can leverage any creative vendors of their choosing that are explicitly following MoPub best practices, per our documentation here and on this page.

  • While we cannot advise which vendor is most optimal for you, we do recommend that whichever vendor you choose, you perform your own Self-Testing.

  • Self-Testing will allow you to see your creative in action to better understand the user experience. It will also help you ensure that your creative is in tip-top shape when being displayed on the MoPub platform.

12. Can we run our own MRAID tags built in-house?

  • Yes, but it is your responsibility to test for proper functionality and reporting before flighting your campaign on MoPub. Please refer to the previous question for additional details.

13. Are there any file size restraints on MoPub?

  • Below are our best practice on file sizes for various creative formats (including MRAID):
Creative Type Optimal Ok Suboptimal
HTML/MRAID 200-300kb 700kb 1mb+
VAST/MRAID Video 2-3mb 5mb 10mb+
Native 200-300kb 700kb 1mb+

14. Does MoPub have any best practices for building MRAID tags in-house?

  • Be mindful of opening links and impression tracking
    • Opening links:
      • Per the MRAID spec, all MRAID ads are required to leverage the mraid.open() method when the a user clicks to go to a landing page. Using href anchor tags or window.open or window.location to open links will result in click-tracking discrepancies
    • Impression Tracking:
      • A common MRAID oversight is handling specifically how/when an impression is counted.
    • Note: DSP and server-to-server impression tracking is handled by the MoPub SDK . The following only applies to MRAID creatives and vendors that require separate tracking in the markup:
  • A common mistake is to count an impression when the MRAID tag is called from your servers instead of programmatically detecting when the ad has been actually shown to the end-user.
  • Your tag must implement logic such that your impression trackers are fired only when the MRAID ad becomes viewable to the end-user.
  • The MoPub SDK will broadcast the mraid.viewableChange() event when the app calls for the MRAID tag to be displayed and the ad becomes viewable to the user (“SHOW” state).
  • Your tag should implement logic such that it waits and listens for the SDK to fire the mraid.viewableChange() event BEFORE firing its impression tracker.
  • Pseudo-code for this impression-firing logic is as follows:

    if ( mraid.viewableChangeEventWasDetected() )
       if( mraid.isViewable() == true)
             fireMyImpressionTrackers();
       else if ( mraid.isViewable() == false)
             doNothing();
    

15. What are your close button requirements?

  • The interstitial ad sizes the close button is provided by our SDK. If the creative specifically requests to control the close functionality they must leverage the mraid.useCustomClose method.

16. Can we see what MoPub’s MRAID implementation looks like?

17. Any known MRAID bugs or limitations?

  • All Android interstitials are “double-fetched” due to pre-caching. This means IF you are counting impressions based on tags being called from your servers, Android interstitial tags will be double counted.
  • iOS Only: URLs without protocols fail to load on SDK versions below 4.4. It is recommended that you use https so that you can show your MRAID assets on all SDK versions.
  • Impression Tracking:
    • The demand partner’s impression tracker (nURL for server-to-server and imptracker RTB 2.3 DSP) along with other impression trackers fire when our ad template detects the mraid.viewableChange() == true event as broadcasted by the MoPub SDK when the interstitial webview becomes viewable to the user. This logic is dependent on the MRAID.ready event
    • The impression trackers will not fire if the mraid.eventListeners for ready or viewableChange have been removed from our ad template as a result of your tag’s removal of MoPub’s mraid.eventListeners.
    • Troubleshooting:
      • If the nurl or imptracker does not fire as expected, please ensure the your tag is NOT calling the mraid.removeEventListener method for the MRAID.ready or MRAID.viewableChange events
      • Here is part of the code we use to fire the impression tracker:
      var handleViewableChange = function() {
          if (mraid.isViewable() === 'true' || mraid.isViewable() === true) {
              webviewDidAppear();
          }
      };
      mraid.addEventListener(mraid.EVENTS.READY, function(e) {
          mraid.addEventListener('viewableChange', handleViewableChange);
          handleViewableChange();
      

Last updated October 10, 2018

TWITTER, MOPUB, and the Bird logo are trademarks of Twitter, Inc. or its affiliates. All third party logos and trademarks included are the property of their respective owners.

© 2018 MoPub Inc.