Ad integrations are ads that you incorporate into your game, whether through custom content or branded assets. These can include:
- Custom ad content that doesn't use Roblox ad formats, like immersive billboards, portals, or rewarded video.
- In-game self-promotional assets that count as advertising, like brand partnerships or promoting your own off-platform products and services. This includes creator-owned merchandise related to your game (for example, apparel or physical items featuring your game or characters).
Is your content advertising?
Roblox classifies content as an ad if the content:
- Is published in exchange for any form of compensation to promote a brand, product, service, event, or persona.
- Includes calls to action or promotes demand, attributes, information, or availability for specific off-platform products, services, events, or personas.
If any of your assets meet either of these criteria, you must register, label, and submit them through the ad integration registration process, even if you're promoting your own content inside your game.
For more information on what counts as advertising, see the Advertising section in the Roblox Community Standards.
Requirements
To run ad integrations in your game, you must:
- Make sure all ad integrations comply with the Community Standards and Advertising Standards.
- Submit all assets associated with your ad integration campaign to Roblox for review and approval before exposing them to users.
- Clearly and prominently disclose when content is an ad using simple, easy-to-understand language.
- Not include misleading or deceptive content to encourage user engagement (for example, offering free Robux).
- Only show rewarded video ads to users 13 and older.
Submit your ad integration
Running an ad integration is simple and involves four key steps:
This process helps make sure that your users receive clear and appropriate disclosures about what content is an ad, why they're seeing it, and who is responsible for it.
Campaign registration
To register your ad integration campaign:
- Go to the Ads Manager portal while signed into your Roblox account.
- Go to Ad integrations.
- Click Register.
- Under Integration details:
- Select the game you want to add the integration to.
- Enter the name of the advertiser. This is the name users see in ad disclosures within your game.
- Select an advertiser category from the drop-down options. If your advertiser doesn't fit into any of the available categories, select None of the above. The moderation team will review your submission and may update the category if needed.
- Select a start and end to the campaign.
- Enter a name for the campaign.
- Under Assets:
- Click Manage assets.
- Enter the IDs for all individual assets or models included in the ad campaign. If you haven't created them yet, you can register the campaign without assets and add them later.
- Click Save.
- Click Register.

As you fill out the form, the Your revenue share box updates with an estimated revenue share cost for the campaign. For more details, see Revenue share.
Before the campaign begins, you can edit the start date, end date, campaign name, and advertiser name. Once the campaign starts, only the end date can be updated.
We recommend registering campaigns as early as possible and submitting them at least 5 days before the campaign start date.
Asset creation
You can create ad integration assets before or after registering a campaign. To associate assets with a campaign, create them in Studio and use their asset ID during the campaign registration.
If you register a campaign without assets, make sure to edit the campaign and associate the assets before the campaign goes live.
Asset deployment
Before an ad integration campaign can go live, make sure all registered and moderated assets are implemented in your game. You must check user eligibility and add the required ad labeling and disclosure.
User eligibility
Check whether users are eligible to see the ad assets using GetCampaignEligibilityAsync.
local success, result = pcall(function()
return AdService:GetCampaignEligibilityAsync("your-campaign-id")
end)
if success and result.IsEligible then
print("The local player is eligible to see your campaign!")
else
print("The local player is not eligible— your campaign may not be shown to this player.")
end
If you update your game with ad assets before the campaign start date, GetCampaignEligibilityAsync will return a rejection until the campaign begins.
Labeling and disclosure
All ad assets have to include clear and accessible disclosure for users. To support this, Roblox provides standardized ad labels that are automatically rendered in games for assets associated with the ad integration campaign.
Ad labels indicate which parts of your game are advertisements, and allow users to identify the advertiser or report the ad.
RegisterDisclosureButton enables interactive disclosure when a user clicks or taps the ad label, providing additional information about the ad. You can find the placement ID from Ads Manager in the Manage Assets section. For example:
AdService:RegisterDisclosureButton(yourDisclosureButton, "your-placement-id")
Choose the right label type based on how your ad content appears in your game and how users interact with it. Different label types work better for different contexts.
| Label type | Description | Example |
|---|---|---|
| Floating ad label | Appears above, beside, or near an interactive 3D object in your game. Use it for freestanding, movable, or standalone sponsored objects, like branded vehicles, product displays, or charaacters within the environment. | ![]() |
| HUD-style ad label | A 2D label placed on the user's screen overlay or control layer. Use it for environments or areas where the entire location makes up the ad, like a branded store, a sponsored zone, or a virtual exhibition. | ![]() |
| Sticker-style ad label | Directly attached or embedded into the surface texture of a 3D object. Use it for flat or stationary surfaces featuring branded content, like sponsored billboards, branded wall murals, columns, or architectural elements. | ![]() |
When placing ad labels in your game, make sure to:
- Keep the ad label distinct and readable. The label should not be covered, distorted, or blended into surrounding visuals.
- Avoid letting nearby branding or decorative elements visually overpower the ad label. The disclosure should be the primary focus in its immediate area.
- Any aesthetic adjustments, like size or opacity, should not reduce clarity or make the label harder to recognize, interact with, or understand.
- When using subtle or highly stylized branding, make the ad label especially clear and visible on first encounter.
Asset submission and moderation
To submit additional assets or models to an existing ad integration campaign:
- In Ads Manager, go to Ad integrations.
- Click ⋮ ⟩ Manage assets next to the relevant campaign.
- Enter the IDs of the individual assets or models you want to add to the campaign.
- Click Save.
Roblox reviews and moderates all submitted assets, and their status directly affects your campaign status. Moderation is typically completed within 48 hours.
Campaign status
To check your campaign status, go to the Ad integrations page.
| Status | Description |
|---|---|
| Approved | The campaign has been approved for all audiences. |
| Completed | The campaign has reached its end date. |
| In review | The campaign is under review by the moderation team. While it's under review, the campaign is only shown to users aged 18 and over. |
| Limited | The campaign or an asset associated with the campaign has been approved for certain countries and age groups. |
| Paused | The campaign has been manually stopped from serving ads. |
| Rejected | The campaign has failed moderation review. This means that at least one registered asset violates the Roblox advertising standards. |
Asset status
Roblox also reviews and moderates all assets associated with a campaign. To check the status of your assets, go to the Ad integrations page and click ⋮ ⟩ Manage assets next to the relevant campaign.
| Status | Description |
|---|---|
| In review | The asset is under review by the moderation team. |
| Limited | The asset has been partially approved for certain countries and age groups. You can appeal this status. |
| Rejected | The asset has failed moderation review. You can appeal this status. |
To view the reason an asset was assigned a Rejected or Limited status, click ⋮ ⟩ Appeal status next to the asset. You can appeal the status and resubmit the asset for moderation by clicking Appeal.
Ad integration tags
Ad integration tags categorize content based on compliance with Community and Advertising Standards. During the moderation process, each ad asset is assigned one or more tags that determine the eligible audience for the campaign.
Tags have one of the following serving outcomes:
- Rejected: The entire campaign is prohibited under the Advertising Standards or contains content that violates the Community Standards, and can't be served to users.
- Limited serving: The entire campaign can only be served to specific users, and might be restricted by region or age.
- Full serving (Approved): The entire campaign is approved and can be served to all relevant users.
Campaign eligibility is determined by the most restrictive asset label applied to any of your registered assets. If one asset is rejected, GetCampaignEligibilityAsync returns false for all users.
For a full list of prohibited, regulated, and restricted advertising content, see the Advertising Standards.
Revenue share
Qualified visits
For active ad integration campaigns, revenue share costs are calculated based on qualified visits.
A qualified visit is a session in which a user engages with one or more branded assets from your campaign. Qualified visits match what Roblox reports to brands as ad engagements, based on Interactive Advertising Bureau (IAB) standards for time-in-view, occlusion, and size.
If a user engages with multiple branded assets during the same session, that session counts as a single qualified visit.
If the same user returns in a separate session and engages with a branded asset again, that session counts as a new qualified visit.
Cost per 1,000 visits (CPTV)
Cost per 1,000 visits (CPTV) represents the amount Roblox charges you for qualified visits.
Rates vary by region and align with common advertising industry pricing models. As a general guideline, creators typically charge brands an average CPTV of $4 to $5 globally. Integrations that deliver higher engagement, longer time spent, or stronger outcomes may charge higher rates.
The following table shows CPTV rates for the first 28 days of a campaign:
| Tier | Markets | CPTV (first 28 days) |
|---|---|---|
| US | United States | $1.50 |
| Tier 1 | United Kingdom, Canada, Australia, New Zealand, Nordics | $0.75 |
| Tier 2 | Western Europe, Japan, South Korea | $0.20 |
| Tier 3 | Global floor | $0.05 |
After the first 28 days, all qualified visits are billed at a flat CPTV rate of $0.10 for the rest of the campaign, up to a maximum campaign duration of 12 months.
For the complete list of countries in each tier, see Markets.
Markets
The following markets are grouped into tiers for CPTV pricing. The United States has its own tier and isn't listed below.
| Region | Country code | Country |
|---|---|---|
| APAC | AU | Australia |
| APAC | NZ | New Zealand |
| EMEA | DK | Denmark |
| EMEA | FI | Finland |
| EMEA | IS | Iceland |
| EMEA | IE | Ireland |
| EMEA | IM | Isle of Man |
| EMEA | MT | Malta |
| EMEA | NL | Netherlands |
| EMEA | NO | Norway |
| EMEA | SJ | Svalbard and Jan Mayen |
| EMEA | SE | Sweden |
| EMEA | CH | Switzerland |
| EMEA | GB | United Kingdom |
| US & Canada | AS | American Samoa |
| US & Canada | CA | Canada |
| US & Canada | NU | Niue |
| Region | Country code | Country |
|---|---|---|
| EMEA | AD | Andorra |
| EMEA | AT | Austria |
| EMEA | BE | Belgium |
| EMEA | HR | Croatia |
| EMEA | CY | Cyprus |
| EMEA | FO | Faroe Islands |
| EMEA | FR | France |
| EMEA | DE | Germany |
| EMEA | GI | Gibraltar |
| EMEA | GR | Greece |
| EMEA | GL | Greenland |
| EMEA | GG | Guernsey |
| EMEA | HK | Hong Kong |
| EMEA | IT | Italy |
| EMEA | JP | Japan |
| EMEA | JE | Jersey |
| EMEA | LI | Liechtenstein |
| EMEA | LU | Luxembourg |
| EMEA | MC | Monaco |
| EMEA | PT | Portugal |
| EMEA | SM | San Marino |
| EMEA | KR | South Korea |
| EMEA | ES | Spain |
| EMEA | TW | Taiwan |
| Region | Country code | Country |
|---|---|---|
| APAC | BN | Brunei |
| APAC | KH | Cambodia |
| APAC | CN | China |
| APAC | FJ | Fiji |
| APAC | ID | Indonesia |
| APAC | LA | Laos |
| APAC | MO | Macao |
| APAC | MY | Malaysia |
| APAC | MV | Maldives |
| APAC | FM | Micronesia |
| APAC | MM | Myanmar (Burma) |
| APAC | PH | Philippines |
| APAC | SG | Singapore |
| APAC | TH | Thailand |
| APAC | TL | Timor-Leste |
| APAC | VN | Vietnam |
| EMEA | AF | Afghanistan |
| EMEA | AL | Albania |
| EMEA | DZ | Algeria |
| EMEA | AO | Angola |
| EMEA | AM | Armenia |
| EMEA | AZ | Azerbaijan |
| EMEA | BH | Bahrain |
| EMEA | BD | Bangladesh |
| EMEA | BY | Belarus |
| EMEA | BJ | Benin |
| EMEA | BT | Bhutan |
| EMEA | BA | Bosnia and Herzegovina |
| EMEA | BW | Botswana |
| EMEA | BG | Bulgaria |
| EMEA | BF | Burkina Faso |
| EMEA | BI | Burundi |
| EMEA | CV | Cabo Verde |
| EMEA | CM | Cameroon |
| EMEA | TD | Chad |
| EMEA | KM | Comoros |
| EMEA | CI | Cote d'Ivoire |
| EMEA | CZ | Czechia |
| EMEA | CD | Democratic Republic of the Congo |
| EMEA | DJ | Djibouti |
| EMEA | EG | Egypt |
| EMEA | GQ | Equatorial Guinea |
| EMEA | EE | Estonia |
| EMEA | SZ | Eswatini |
| EMEA | ET | Ethiopia |
| EMEA | PF | French Polynesia |
| EMEA | GA | Gabon |
| EMEA | GE | Georgia |
| EMEA | GH | Ghana |
| EMEA | GU | Guam |
| EMEA | GN | Guinea |
| EMEA | GW | Guinea-Bissau |
| EMEA | HU | Hungary |
| EMEA | IN | India |
| EMEA | IQ | Iraq |
| EMEA | IL | Israel |
| EMEA | JO | Jordan |
| EMEA | KZ | Kazakhstan |
| EMEA | KE | Kenya |
| EMEA | KI | Kiribati |
| EMEA | XK | Kosovo |
| EMEA | KW | Kuwait |
| EMEA | KG | Kyrgyzstan |
| EMEA | LV | Latvia |
| EMEA | LB | Lebanon |
| EMEA | LS | Lesotho |
| EMEA | LR | Liberia |
| EMEA | LY | Libya |
| EMEA | LT | Lithuania |
| EMEA | MG | Madagascar |
| EMEA | MW | Malawi |
| EMEA | ML | Mali |
| EMEA | MH | Marshall Islands |
| EMEA | MR | Mauritania |
| EMEA | MU | Mauritius |
| EMEA | YT | Mayotte |
| EMEA | MD | Moldova |
| EMEA | MN | Mongolia |
| EMEA | ME | Montenegro |
| EMEA | MA | Morocco |
| EMEA | MZ | Mozambique |
| EMEA | NA | Namibia |
| EMEA | NR | Nauru |
| EMEA | NP | Nepal |
| EMEA | NC | New Caledonia |
| EMEA | NE | Niger |
| EMEA | NG | Nigeria |
| EMEA | MK | North Macedonia |
| EMEA | MP | Northern Mariana Islands |
| EMEA | OM | Oman |
| EMEA | PK | Pakistan |
| EMEA | PW | Palau |
| EMEA | PS | Palestine |
| EMEA | PG | Papua New Guinea |
| EMEA | PL | Poland |
| EMEA | QA | Qatar |
| EMEA | CG | Republic of the Congo |
| EMEA | RE | Reunion |
| EMEA | RO | Romania |
| EMEA | RW | Rwanda |
| EMEA | WS | Samoa |
| EMEA | ST | Sao Tome and Principe |
| EMEA | SA | Saudi Arabia |
| EMEA | SN | Senegal |
| EMEA | RS | Serbia |
| EMEA | SC | Seychelles |
| EMEA | SL | Sierra Leone |
| EMEA | SK | Slovakia |
| EMEA | SI | Slovenia |
| EMEA | SB | Solomon Islands |
| EMEA | SO | Somalia |
| EMEA | ZA | South Africa |
| EMEA | SS | South Sudan |
| EMEA | LK | Sri Lanka |
| EMEA | SD | Sudan |
| EMEA | TJ | Tajikistan |
| EMEA | TZ | Tanzania |
| EMEA | GM | The Gambia |
| EMEA | TG | Togo |
| EMEA | TO | Tonga |
| EMEA | TN | Tunisia |
| EMEA | TR | Turkiye |
| EMEA | TM | Turkmenistan |
| EMEA | TV | Tuvalu |
| EMEA | UG | Uganda |
| EMEA | UA | Ukraine |
| EMEA | AE | United Arab Emirates |
| EMEA | UZ | Uzbekistan |
| EMEA | VU | Vanuatu |
| EMEA | WF | Wallis and Futuna |
| EMEA | EH | Western Sahara |
| EMEA | YE | Yemen |
| EMEA | ZM | Zambia |
| EMEA | ZW | Zimbabwe |
| LATAM | AI | Anguilla |
| LATAM | AG | Antigua and Barbuda |
| LATAM | AR | Argentina |
| LATAM | AW | Aruba |
| LATAM | BB | Barbados |
| LATAM | BZ | Belize |
| LATAM | BM | Bermuda |
| LATAM | BO | Bolivia |
| LATAM | BR | Brazil |
| LATAM | VG | British Virgin Islands |
| LATAM | BQ | Caribbean Netherlands |
| LATAM | KY | Cayman Islands |
| LATAM | CL | Chile |
| LATAM | CO | Colombia |
| LATAM | CK | Cook Islands |
| LATAM | CR | Costa Rica |
| LATAM | CW | Curacao |
| LATAM | DM | Dominica |
| LATAM | DO | Dominican Republic |
| LATAM | EC | Ecuador |
| LATAM | SV | El Salvador |
| LATAM | GF | French Guiana |
| LATAM | GD | Grenada |
| LATAM | GP | Guadeloupe |
| LATAM | GT | Guatemala |
| LATAM | GY | Guyana |
| LATAM | HT | Haiti |
| LATAM | HN | Honduras |
| LATAM | JM | Jamaica |
| LATAM | MQ | Martinique |
| LATAM | MX | Mexico |
| LATAM | MS | Montserrat |
| LATAM | NI | Nicaragua |
| LATAM | PA | Panama |
| LATAM | PY | Paraguay |
| LATAM | PE | Peru |
| LATAM | PR | Puerto Rico |
| LATAM | BL | Saint Barthelemy |
| LATAM | KN | Saint Kitts and Nevis |
| LATAM | LC | Saint Lucia |
| LATAM | MF | Saint Martin |
| LATAM | PM | Saint Pierre and Miquelon |
| LATAM | VC | Saint Vincent and the Grenadines |
| LATAM | SX | Sint Maarten |
| LATAM | SR | Suriname |
| LATAM | BS | The Bahamas |
| LATAM | TT | Trinidad and Tobago |
| LATAM | TC | Turks and Caicos Islands |
| LATAM | VI | U.S. Virgin Islands |
| LATAM | UY | Uruguay |
| LATAM | VE | Venezuela |
FAQ
Will I be billed for every visit to a branded integration?
Each qualified visit is billed once per session. If a user engages with 10 branded assets during a single session, it counts as 1 qualified visit. If the same user returns across 10 separate sessions and engages with a branded asset each time, it counts as 10 qualified visits.
This approach is consistent with other advertising formats, where the same user can generate multiple engagements over time.
Will I always be charged the maximum cost?
No. You're charged the lower of:
- The actual cost calculated from your branded visits.
- Your locked-in maximum cost.
What are the invoicing and payment terms?
Roblox issues invoices at the end of each quarter for campaigns that ended during that quarter. Payment is due within 90 days of the invoice date, giving you time to receive payment from the brand before paying Roblox.
What happens if I change the dates of my campaign?
If you change your campaign dates, the additional cost is calculated using the same rate as your original locked-in maximum cost.
For example, if you lock in a maximum cost of $5,000 for a 7-day campaign and then extend the campaign to 14 days, your maximum cost increases to $10,000.
For campaign days beyond the initial 28-day pricing period, qualified visits are billed at the flat CPTV rate of $0.10.
What are some options for reducing the actual cost of my planned campaign?
If your estimated campaign cost is higher than the amount you're able to charge the brand, consider adjusting the campaign configuration to reduce costs:
- Reduce the number of campaign days. Shortening the campaign duration is the simplest way to reduce costs.
- End the campaign after reaching a target number of impressions. You can toggle the campaign off in Ads Manager at any time. While a campaign is off, GetCampaignEligibilityAsync returns false for all users.
Is there a maximum cost for deals?
Yes. All campaigns in 2027 have a hard cap of $400,000.


