OpenAI Ads — US Non-Brand launch setup (Lumosity)
New prospecting channel. Setup spec + copy, grounded in this account's non-brand learnings (target the
adult memory + cognitive-training intent that actually subscribes; steer away from free / IQ-test /
puzzle / kids intent that piles up signups but never subs). Account brand = Lumos Labs Inc.
⚠️ How OpenAI Ads differ (read first)
- Targeting = "context hints" (conversation topics/keywords that "guide matching but aren't exact-match"),
NOT keyword match. So we organize by intent theme and aim the hints at sub-intent conversations. - Manual CPC per ad group. The $4.00 default is high vs our other channels (~$0.70 Display, ~$2–3
Search) — start lower (see bids). "Strong delivery" at $4 just means you win auctions, not that it's efficient. - Objective = Clicks → the platform optimizes to clicks, not subs. Same rule as everywhere in this
account: judge on cost per L2 sub + cash ROAS on our side, never on clicks/CTR. - Copy limits: Headline ≤50 chars, Description ≤100 chars. Image: square PNG/JPG ≥256×256.
Campaign
| Field | Value | Why |
|---|---|---|
| Campaign name | Lumosity | US | Non-Brand | OpenAI Ads |
|
| Objective | Clicks | only option — track subs on our side |
| Locations | United States only | US subs 10–16× better than INTL; don't repeat the ROW/LatAm cheap-signup trap |
| Locations to exclude | — | |
| Daily budget | $75–100/day to start | new/unproven; scale only after cost/sub is readable |
| Default destination URL | https://lumosity.com/ |
better: a memory / brain-training landing page + UTMs (below) |
Structure: one campaign, 3 ad groups to start (#4 optional). One campaign keeps a shared daily budget;
if you want hard per-theme budget control, split ad groups into separate campaigns instead.
Bid rationale: at ~$2 CPC and a realistic ~3–4% click→sub, that's ~$50–65/sub if it converts like our
best Search; conversational clicks may convert worse, so start conservative and raise only if delivery is thin.
Ad group 1 — Memory (adults) ⭐ best intent, bid highest
Our top-subbing theme (cognitive training $42/sub, brain training for memory $65, memory games for adults).
- Max CPC:
$2.50 - Destination URL:
https://lumosity.com/(+ UTM below) - Context hints:
improving memory; memory exercises for adults; how to remember things better; memory training; brain training for memory; staying mentally sharp with age; keeping your mind sharp - Ads:
| # | Headline (≤50) | Chars | Description (≤100) | Chars |
|---|---|---|---|---|
| 1a | Sharpen Your Memory with Lumosity |
33 | Train memory, attention & focus with 60+ science-based games. Personalized, ~10 min a day. |
89 |
| 1b | Brain Training for a Sharper Memory |
35 | Exercise your memory with games built on cognitive science. Track your progress over time. |
89 |
Ad group 2 — Brain training / daily mental fitness
The habit/fitness framing — brain training, brain exercises, cognitive training.
- Max CPC:
$2.25 - Context hints:
brain training; brain exercises; daily brain workout; mental fitness; cognitive training; keeping my brain active; how to train my brain - Ads:
| # | Headline (≤50) | Chars | Description (≤100) | Chars |
|---|---|---|---|---|
| 2a | Your Daily Brain Workout |
24 | Turn brain exercise into a daily habit. 60+ games train memory, focus & problem-solving. |
87 |
| 2b | Science-Based Brain Training |
28 | A personalized brain workout built on cognitive science. Trusted by 100M+ people. ~10 min/day. |
94 |
Ad group 3 — Brain games for adults (secondary, bid lower)
Games intent subs less than memory/training — keep it but bid down.
- Max CPC:
$1.75 - Context hints:
brain games for adults; mentally challenging games; games to keep your brain active; adult brain games; fun games for the mind - Ads:
| # | Headline (≤50) | Chars | Description (≤100) | Chars |
|---|---|---|---|---|
| 3a | Brain Games Built for Adults |
28 | 60+ mentally challenging games. Train memory, speed & logic in ~10 minutes a day. |
80 |
| 3b | Fun Brain Games That Challenge You |
34 | Keep your mind active with fun, science-based brain games. Personalized to you. |
78 |
Ad group 4 — Focus & mental speed (optional test)
- Max CPC:
$2.00 - Context hints:
improving focus; concentration; attention span; thinking faster; mental processing speed - Ads:
| # | Headline (≤50) | Chars | Description (≤100) | Chars |
|---|---|---|---|---|
| 4a | Sharpen Focus & Mental Speed |
28 | Games that train attention, focus & processing speed. Built on cognitive science, ~10 min/day. |
93 |
| 4b | Think Faster. Focus Longer. |
27 | Train attention and mental speed with 60+ science-based games. Personalized daily workouts. |
90 |
Two guardrails (do not skip)
- ⚠️ No health-outcome claims. Do NOT say it prevents/reverses dementia, Alzheimer's, or age-related
cognitive decline — Lumosity settled with the FTC (2016, $2M) over exactly those claims. All copy above
is fitness-framed ("sharpen," "train," "keep sharp") — the safe lane. Keep the same discipline on the LP. - No "free" / "test" / "quiz" language in hints or copy. Those are the exact intents that generate
signups but ~0 subs across this account (US non-brand + INTL ES/FR test terms). Sell training & progress
for adults.
Measurement (since it optimizes to clicks)
- UTM the destination URL so it compares cleanly next to Search/Display/PMax, e.g.:
https://lumosity.com/?utm_source=openai&utm_medium=cpc&utm_campaign=us_nonbrand&utm_content=ag1_memory - Judge each ad group on cost per L2 sub + cash ROAS (our side), NOT clicks/CTR.
- Kill-switch: if an ad group pattern-matches the Display/INTL failure mode — cheap clicks, lots of
signups, ~0 subs — pause it. Expect ~2–3 weeks before cost/sub is readable (sub lag). - Benchmarks to beat: PMax ~$116/sub, best non-brand Search $60–150, brand ~$5 (brand not comparable —
this is prospecting). If OpenAI Ads can't get under ~$150/sub after tuning, it's not worth scaling.
Conversion tracking — OpenAI Pixel via GTM (full implementation)
Pixel = oaiq. Pixel ID: Hsqd7Y8jn6AStNjXPE92Ms. Deploy via GTM Custom HTML (no native OpenAI
template exists yet — checked the Community Template Gallery). We mirror the account's existing per-channel
pattern (Bing/Meta): reuse the existing dataLayer events, create new OpenAI triggers, gate on aDPS - OpenAI consent signal.
🔑 Track TWO events — judge on the paid sub, not the signup. OpenAI's sample event is
registration_completedwithamount:0(a signup). If that's all we track, we'd judge this channel on
signups = the cheap-signup trap that killed INTL/Display. So we fire Registration (secondary) and
the paid Subscription with the real cash amount (the KPI: cost/sub, cash ROAS — same definition asSubscription - L2 Purchase).
Step 0 — What already exists (reuse it, don't rebuild)
- GTM container + CMP (Usercentrics) with per-vendor consent signals:
DPS - Microsoft Ads,DPS - Meta,DPS - Datadog(DPS = the data-processing/consent flag). - DataLayer events already fire for registration and purchase (that's what
Bing Registration Event
andBing Purchase(Purchase equals true) triggers listen to). We reuse those same dataLayer events —
do NOT add new pushes. - Purchase value/currency variables already exist (used by the Bing/Meta purchase tags). Reuse the SAME
variables so every channel reports an identical amount.
Step 1 — Add OpenAI as a consent vendor + create DPS - OpenAI
- In Usercentrics (CMP): add OpenAI Ads as a vendor/processing purpose (Marketing/Advertising
category), so users can consent to it like Meta/Microsoft. - In GTM → Variables → User-Defined Variables: open an existing
DPS - Meta(orDPS - Microsoft Ads)
variable, note how it reads consent, then createDPS - OpenAIthe same way, pointing at OpenAI's
consent state. It must resolve totruewhen marketing consent for OpenAI is granted.
Step 2 — Create the Data Layer Variables (if not already present)
GTM → Variables → New → Data Layer Variable:
DLV - purchase_value→ Data Layer Variable Name = the key yourpurchaseevent pushes for value (reuse
the same key the Bing/Meta purchase tags read, e.g.valueorecommerce.value).DLV - currency→ the currency key (e.g.currency), default valueUSD.DLV - transaction_id→ the order/subscription ID key (for de-duplication).
Step 3 — Tag 1: OpenAI Pixel – Base (Custom HTML)
- Tag type: Custom HTML. Paste the base setup script from the OpenAI "Set up your data source" screen:
(Ensure the Pixel ID<script>!function(w,d,s,u){/* OpenAI oaiq base setup code from the pixel screen */}(window,document,'script','...'); oaiq('init','Hsqd7Y8jn6AStNjXPE92Ms');</script>Hsqd7Y8jn6AStNjXPE92Msis in the init — add theoaiq('init',...)line if the
copied snippet doesn't already include it.) - Trigger: All Pages (reuse existing). (Optional stricter privacy: also add a trigger exception, or
fire onConsent Initialization - All Pages, if you want the base gated by consent too.) - Advanced → Tag firing options: Once per page.
Step 4 — Trigger + Tag 2: Registration (secondary)
Trigger — GTM → Triggers → New → Custom Event (OpenAI Registration Event):
- Open the existing
Bing Registration Eventtrigger, copy its Event name (the dataLayer custom
event string), and use the same value here. - This trigger fires on some custom events → add condition:
DPS - OpenAIcontainstrue
(mirrors how Bing gates onDPS - Microsoft Ads).
Tag — Custom HTML (OpenAI – Registration):
<script>oaiq("measure","registration_completed",{type:"customer_action",amount:0,currency:"USD"});</script>
- Trigger:
OpenAI Registration Event. - Advanced → Tag Sequencing → Fire a tag before this tag fires:
OpenAI Pixel – Base(sooaiqexists).
Step 5 — Trigger + Tag 3: Subscription / Purchase ⭐ (the KPI)
Trigger — GTM → Triggers → New → Custom Event (OpenAI Purchase):
- Mirror
Bing Purchase: same Custom Event, conditionsPurchaseequalstrueANDDPS - OpenAIcontainstrue.
Tag — Custom HTML (OpenAI – Subscription Purchase):
<script>oaiq("measure","purchase",{
type:"customer_action",
amount:{{DLV - purchase_value}},
currency:"{{DLV - currency}}",
transaction_id:"{{DLV - transaction_id}}"
});</script>
- Trigger:
OpenAI Purchase. - Advanced → Tag Sequencing → setup tag:
OpenAI Pixel – Base. - ⚠️ Verify OpenAI's canonical purchase event name in their pixel/event reference —
registration_completed
is only their signup example. If their standard is e.g.checkout_completed/subscription_started, use that
string (keep the realamount). Thetransaction_idpowers de-dup.
Step 6 — DataLayer contract (what the site must already push)
No new work if Bing/Meta purchase tracking works — the same events drive OpenAI. Confirm on the
subscription-success step the site pushes (example shape):
window.dataLayer.push({
event: 'purchase', // same custom event Bing Purchase listens to
Purchase: true,
value: 12.00, // real first-cycle cash amount (not 0)
currency: 'USD',
transaction_id: 'SUB-123456'
});
And on registration/signup confirmation, the same event Bing Registration Event already uses.
Step 7 — QA in GTM Preview
- GTM → Preview, load the site → base pixel should fire on every page, once.
- Complete a test signup →
OpenAI – Registrationfires once,amount:0. - Complete a test subscription →
OpenAI – Subscription Purchasefires once, with the real value +
USD + transaction_id. - Toggle consent OFF for OpenAI → confirm the two event tags do NOT fire (
DPS - OpenAIgate works). - Cross-check in OpenAI's pixel diagnostics that events arrive with the right value; watch for
double-fires on thank-you-page reloads (thetransaction_idshould de-dup).
Step 8 — Publish
GTM → Submit → version-name it (e.g. Add OpenAI Ads pixel + reg/purchase) → Publish.
Head-placement caveat: GTM Custom HTML fires slightly after <head> load — fine for a measurement pixel.
If you need the base truly first, hardcode only the base snippet in <head> and use GTM for the two events.
Image
Square ≥256px. Test the brand mark (bouncing-ball logo) vs a clean game/brain visual — native in-chat
placements often do better with a simple, legible product image than a logo.
Created 2026-07-16. Grounded in campaigns/00_keyword-device-year.md (what subs vs not) +../conversion-events-reference.md (judge on L2 subs). New channel — revisit after 2–3 weeks of data.