Ad Personalization
Segment-aware ad frequency control. Show more ads to non-spenders, fewer to whales.
Overview
BaseplateAds uses player segments and Remote Config to intelligently control ad frequency. Non-spenders see more ads (they monetize via ads). Whales see fewer (they monetize via IAP — don't annoy them). All controlled from the dashboard.
Quick Start
local BaseplateAds = require(game.ServerStorage.Baseplate.BaseplateAds)
BaseplateAds:Init({
baseplateConfig = BaseplateConfig,
baseplatePlayer = BaseplatePlayer,
})
-- Before showing an ad, check if we should
if BaseplateAds:ShouldShowAd(player) then
local reward = AdService:CreateAdRewardFromDevProductId(12345)
AdService:ShowRewardedVideoAdAsync(player, reward)
BaseplateAds:RecordAdShown(player)
end
Dashboard Config Keys
Control ad behavior from Remote Config — no code changes needed:
| Key | Default | Description |
|---|---|---|
ads_enabled | true | Global kill switch for all ads |
ads_maxPerSession_nonSpender | 5 | Max ads per session for non-spenders |
ads_maxPerSession_spender | 1 | Max ads per session for spenders |
ads_cooldownSeconds | 180 | Minimum seconds between ads |
API Reference
BaseplateAds:ShouldShowAd(player, adType?) → boolean
Checks: global toggle, cooldown, per-session limit (by segment), and Roblox ad availability.
BaseplateAds:RecordAdShown(player, adType?)
Call after successfully showing an ad to update counters.
BaseplateAds:GetAdStats(player) → { shown, maxAllowed, cooldownRemaining }
Get current ad state for a player (useful for UI, e.g. showing "Watch ad for reward" button only when available).