Immersive Ads

The Immersive Ads system allows you to insert ad units into your experience that permit Roblox to programmatically serve ad content from advertisers to your active users. There are three ad formats that may be served in your experience:

  • Video Ads — A video up to 30 seconds that users can watch in-experience, which can either be click-to-play or autoplaying.
  • Image Ads — A static, non-clickable image within the 3D space.
  • Portal Ads — A static, non-clickable image with a door that teleports users into an advertiser's experience.
Video Ad Format (Autoplaying)
Video Ad Format (Click-to-play)
Image Ad Format
Portal Ad Format

Ad content is specific to the user, meaning two users might simultaneously see different display ads or teleport to different advertiser experiences from the exact same ad unit. If a user is ineligible to see ads, ad units display either a customizable fallback image or the Roblox logo.

To illustrate this concept, see the following three images of the same ad unit showing different content depending on the user. User A sees an ad promoting The Mystery of Duvall Drive experience while User B sees an ad promoting Beyond the Dark. User C doesn't see an ad at all from this ad unit because they are ineligible to see ads.

User A
User B
User C

Publisher Earnings From Immersive Ads

If your active users are eligible to see ads and meet the specific criteria from the advertiser, such as their country or device, you may be eligible to earn Robux according to how they interact with the ad content.

How publishers earn:

  • For video ads that are click-to-play, users must click on the ad to initiate the video to start playing. Advertisers bid on a "15 second view". Therefore, publishers earn when a user watches a video for at least 15 seconds. Publishers can implement a reward mechanism to incentivize a user to watch the view for at least 15 seconds to drive earnings.

  • For video ads that are autoplay, the video starts playing when a user looks at the ad and pauses when the user looks away. Advertisers bid on a video impression. Therefore, publishers earn for each video impression where an impression is when a user looks at the ad for at least 0.5 seconds, the ad occupies 1.5% of the viewport, the ad is viewed at an angle of up to 55 degrees, and with at least 50% of the video ads pixels visible.

  • Image ads are static, non-clickable images within the 3D space. Advertisers bid on an image impression. Therefore, publishers earn for each image impression. An image impression is when a user looks at the ad for at least 1 second, the ad occupies 1.5% of the viewport, the ad is viewed at an angle of up to 55 degrees, and with at least 50% of image ad pixels visible.

  • Portal ads are static, non-clickable images with a door that teleports users into an advertiser's experience. Advertisers bid on a teleport. Publishers earn for each successful teleport. A teleport is when a user enters the portal and arrives at the advertiser's experience.

To learn more about how advertisers are billed, you can refer to our overview on ads billing.

Roblox pays out earnings on the 25th of the following month from when you inserted ad units into your experience. For example, if you insert ad units during the month of March, your payout date for the viewable impressions and successful teleports from those ad units is April 25th. You can track your collective earnings from ad Immersive Ads either through the My Transactions or Group Transactions page. You can also analyze their overall performance through metrics graphs on the Creator Dashboard.

Publisher Eligibility

While anyone can insert ad units into their experiences, Roblox only serves ads into ad units if the experience or group owner and experience is eligible to serve ads. In Creator Hub, you can see and manage your publisher eligibility status in a new "Eligibility" tab on the Immersive Ads page.


Experiences must meet the following criteria to be eligible to be an ad publisher:

  • Your account must have 2-factor authentication (2FA) enabled.
    • For group-owned experiences, this requirement applies to the owner of the group.
    • If a publisher disables 2FA, they will lose eligibility.
  • You must be 18+ years of age.
    • For group-owned experiences, this requirement applies to the owner of the group.
  • Your account must be ID verified.
    • For group-owned experiences, this requirement applies to the owner of the group.
    • Requirement is persistent - if a publisher disables identity verification, they will lose eligibility.
  • Your experience must be Public. If a publisher makes the experience Private, the experience will lose eligibility.
  • You must complete the Experience Guidelines Questionnaire for your experience.
  • Your experience must maintain 2,000 unique visitors per month.
    • This is calculated and updated monthly, based on visitor data.
    • Bots cannot be included in visitor counts.
  • You must comply with the Roblox Terms of Use, the Community Standards, and the Advertising Standards.

User Eligibility

Even if your experience is eligible to serve ads, not all users are eligible to see ads, such as those under the age of 13 or users outside of a campaign's audience selection. If a user is ineligible to see ads, ad units display a fallback image of the Roblox logo to those ineligible users, but you can remove the ad units altogether as described in Removing Ad Units for Ineligible Users.

Inserting Ad Units



When you insert an ad unit into an eligible experience, it's important to check each image ad surface that displays the ad before you publish your experience to confirm whether or not the ad unit is valid and able to serve ads. For example, you can scale ad units to different sizes to match your experience's aesthetics, but they cannot become too small or large, otherwise they become invalid and cannot serve ads.

This ad unit is valid and can serve ads
This ad unit is invalid because it's too small; it cannot serve ads until you scale it to a valid size

Video Ads

Eligible users can see two types of video ads within Roblox experiences, depending on how the advertiser bids:

  • A click-to-play video ad is served when an advertiser bids on users viewing at least 15 seconds of the ad. Users initiate a video ad by clicking on the ad unit, which prompts the video to play in full-screen with sound on. Publishers are paid each time a video ad is watched for at least 15 seconds.
  • An autoplaying video is served when an advertiser bids on users seeing their ad, and starts playing with the sound off when a user looks at it. If they look away, the video pauses. The video ad includes controls to unmute and expand to full screen. Publishers are paid based on the number of impressions the ad receives.

To insert a video ad:

  1. From the Home or Model tab, insert a Block part into your experience.

    Part menu indicated in Home tab
  2. Scale the part to at least 8 studs wide and 4.5 studs tall, but no more than 32 studs wide and 18 studs tall.

  3. In the Explorer window, add an AdGui object to the part.

    1. Hover over the part and click the button. A contextual menu displays.
    2. From the menu, insert an AdGui.
  4. In the Properties window, with the new AdGui selected, navigate to the Face property and choose a face, or keep the default face.

  5. Ensure that the EnableVideoAds checkbox is enabled in order to show video ads. Otherwise, the unit will only show image ads.

To incentivize users to watch a click-to-play video ad for least 15 seconds, you may choose to implement a reward mechanism in your experience. A reward can only be given once per ad rotation, and ads rotate every 5 minutes. Choose an enticing reward, such as in-game currency or an in-game item, and ensure the reward is visible to users before they watch the ad. This can be through the UI or a sign next to the ad unit.

Implementing a reward for a video ad must be done in a Script using Enum.AdEventType. The following sample creates a function to reward users who watch an ad to completion:

Reward Mechanism for Video Ad

local function grantReward(PlayerId)
-- grant an in-game reward
end
local function showRewardPrompt(PlayerId)
-- show Prompt
end
local function hideRewardPrompt(PlayerId)
-- hide Prompt
end
local AdGui = script.Parent
AdGui.OnAdEvent = function(eventData)
local AdEventType = eventData.AdEventType
local PlayerId = eventData.PlayerId
if AdEventType == Enum.AdEventType.RewardedAdLoaded then
showRewardPrompt(PlayerId)
return true
elseif AdEventType == Enum.AdEventType.RewardedAdGrant then
grantReward(PlayerId)
hideRewardPrompt(PlayerId)
return true
elseif AdEventType == Enum.AdEventType.RewardedAdUnloaded then
hideRewardPrompt(PlayerId)
return true
end
return false
end

Image Ads

An image ad is a non-clickable static image that serves ads through an AdGui instance that you can place on block Part instances anywhere within the 3D space of an experience as long as nothing obstructs the view of the ad from users. The aspect ratio of the image scales with the face of the block you choose to display the ad content.

In order for the ad unit to be valid and serve ads once you publish the experience, you must ensure it meets the following criteria:

  • The block is within the Workspace.
  • The block is no smaller than 8 by 4.5 studs, and no larger than 32 by 18 studs.
  • The block doesn't include another AdGui or SurfaceGui object on the same face of the ad.

To insert an image ad:

  1. From the Home or Model tab, insert a Block part into your experience.

    Part menu indicated in Home tab
  2. In the Properties window, navigate to the Face property and choose a face, or keep the default face.

  3. Scale the part to at least 8 studs wide and 4.5 studs tall, but no more than 32 studs wide and 18 studs tall.

  4. In the Explorer window, add an AdGui object to the part.

    1. Hover over the part and click the button. A contextual menu displays.
    2. From the menu, insert an AdGui.

Once you publish the experience, users can see the ad unit in one of the following states:

StateDescriptionExample
ActiveThe ad unit is able to serve ads, and is currently serving an ad to a user.
InactiveThe ad unit is able to serve ads, but it isn't currently serving an ad to a user because of one of the following reasons:
  • The user is ineligible to see ads.
  • The user has seen too many ads in a short period of time.
  • There is low ad demand from advertisers during that time period.
  • There aren't any ads that target the user's criteria, such as their gender, device, or country.

Roblox serves a default fallback image instead.
InvalidThe ad unit isn't able to serve ads because it didn't meet the validation criteria.

Portal Ads

A portal ad is made up of two core components:

  • A static, non-clickable image.
  • A door that teleports users to an advertiser's experience.

The Creator Store includes portal ads that represent these core components through a BasePortal package. While this package must remain as-is outside of its scale, position, and rotation in order to remain valid and able to serve ads, portal ads also include a Decorative folder of both static and dynamic visual elements that display or hide according to the ad unit's state. You can customize these visual elements as long as the core components stay intact and without obstruction.

For example, the following two portal ad packages have the exact same core components, but they include different visual elements you can customize to change how these ad units look and feel within your experiences.

To insert a portal ad:

  1. Open the Creator Store.

    1. In the menu bar, navigate to the View tab.
    2. Select Toolbox. The Toolbox window displays with the Creator Store tab open.
  2. In the Categories section, click the See All button. All categories display.

  3. Click the Ads tile.

  4. Click any of the Portal template packages. The ad unit displays in the viewport.

  5. (Optional) Customize the visual elements that surround the ad unit by modifying elements within the package's Decorative folder.

Once you publish the experience, users can see the ad unit in one of the following states:

StateDescriptionExample
ActiveThe ad unit is able to serve ads, and is currently serving an ad to a user.
InactiveThe ad unit is able to serve ads, but it isn't currently serving an ad to a user because of one of the following reasons:
  • The user is ineligible to see ads.
  • The user has seen too many ads in a short period of time.
  • There is low ad demand from advertisers during that time period.
  • There aren't any ads that target the user's criteria, such as their gender, device, or country.

Roblox serves a default fallback image instead.
InvalidThe ad unit isn't able to serve ads because it didn't meet the validation criteria. The block surface that serves ads turns black, and the door becomes a concrete wall.

Removing Ad Units for Ineligible Users

Per Roblox's Advertising Standards, you must either hide, replace, or block ad content from users who are ineligible to see ads. By default, immersive ad units handle this by replacing ads with a fallback image of the Roblox logo for users ineligible to see ads. However, if you want to hide or remove the ad units entirely, you must use PolicyService:GetPolicyInfoForPlayerAsync() to return an AreAdsAllowed boolean that determines the eligibility of each user who accesses your experience to see ads, then include logic to modify ad visibility to ineligible users.

For example, the following code sample uses PolicyService:GetPolicyInfoForPlayerAsync() to check the eligibility of each user to see ads as they enter the experience. If AreAdsAllowed is true for a user, portal ads remain visible, but if it's false, the script destroys all of them. While this is a great strategy to remove ad content from users who are ineligible to see ads, it's important to note that destroying ad units may change your experience's gameplay if some users can see ad units while others cannot.


local Players = game:GetService("Players")
local PolicyService = game:GetService("PolicyService")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
-- Sample assumes a "Main Portal Template" model exists under Workspace
local mainPortal = Workspace:WaitForChild("Main Portal Template")
-- Get the policy info for the user
local success, result = pcall(PolicyService.GetPolicyInfoForPlayerAsync, PolicyService, player)
if success and result then
if not result.AreAdsAllowed then
-- Destroy the "Main Portal Template" instance on the user's client if ads are not allowed
mainPortal:Destroy()
end
else
print("Failed to get policy for player", player.Name, "| Exception:", result)
end

Viewing Immersive Ad Metrics

Once you insert ad units into your experience, the Creator Dashboard generates different types of metrics graphs to help you analyze the overall performance of your Immersive Ads. After about 48 hours of having Immersive Ads run in your experience, you can see how many video views, impressions, and teleports you're generating through your user base, how each ad unit format performs, and how many Robux you're earning from individual ad units.

By tracking these trends over time, you can make strategic decisions on the number of ad units you include per place, which format of ad unit you want to prioritize, and where you can place individual ad units to generate video views, impressions, and teleports.

To view Immersive Ad metrics:

  1. Navigate to your Creations page on the dashboard and select your experience.

  2. Navigate to the Monetization tab and select Immersive Ads.