Every documentation page now carries an ad for UI Builder Pro. It's the site's own product rather than an ad network, which shaped how it works.
Why nothing is written into the pages
The documentation is imported from Roblox, and a refresh overwrites every page. Anything I wrote into the files would vanish. So docs.controller.js inserts the cards into the rendered page instead (src/utils/docs-pro-promo.js).
Where the cards go
A card appears after the introduction, again in the middle of a long page, and at the foot. A short page gets only the foot card. The cards always land between a page's own top-level blocks, never inside a code sample, table or list.
The wording depends on the page. A page about interface building gets "Build this UI in a visual editor". The rest get "Design Roblox UI visually, then export it". The foot card lists what Free and Pro include and shows the builder's screenshot, which isn't drawn on a phone.
When it stays out of the way
The promo isn't shown to an account that already has Pro, in the desktop app, or when a signed-in account's plan can't be read within 1.5 seconds. If the plan check is slow, showing nothing is better than slowing the page or advertising Pro to someone who has it. A setting, docs-pro-promo-enabled=false, takes it off every page at once.
Measuring it
Each link is tracked by placement (docs_pro_ad_top_plans_click and so on) through the existing click events. Since it's first-party, there's no third-party request and no change to the Content-Security-Policy.
I checked it in headless Edge at three widths. There are 21 new unit tests, which include every one of the roughly 4,500 pages, so a page with an odd structure can't end up with a card in the wrong place unnoticed.