Should the price go inside the paywall button or above it?
Most apps keep price out of the button: only 11.6% of 1,886 primary CTAs embed a price, while a further 8.2% show the price in the copy above the button, and roughly 80% show no price in the extracted CTA-adjacent copy at all [1][2][3]. The dominant pattern is a soft CTA verb with the price living in the surrounding line — not on the button itself.
Only 11.6% of 1,886 primary paywall CTAs embed a price; 8.2% show it just above the button — July 2026.
The finding: the button rarely carries the price
| Where the price sits | Primary CTAs | Share |
|---|---|---|
| Inside the button text | 219 | 11.6% [1] |
| Above the button (adjacent copy) | 155 | 8.2% [2] |
| No price in extracted CTA-adjacent copy | 1,512 | 80.2% [3] |
So among CTAs where a price is visible near the button, price-above-the-button (8.2%) and price-in-button (11.6%) are the same order of magnitude, but both are minorities — the norm is a button with no price on it and often no price in the immediately adjacent copy either [1][2][3].
What each pattern looks like
Price in the button is a direct, transactional style — the number is the commitment:
Price above the button pairs a soft verb with the offer detail in the line above — e.g. PictureThis's "Continue" under "Try 7 days free, then $39.99/year" [5]. This is the more common shape overall given that 'Continue' (21.2%) and 'Start' (16.9%) lead the primary-CTA verbs [6].
How to apply this
Default to keeping the price out of the button and placing it in a clear line above — that matches the majority pattern and pairs naturally with the dominant soft verbs ('Continue', 'Start') [3][6]. Put the price *in* the button when you want a maximally transparent, transactional feel (common in price-forward categories like Graphics & Design) — it's a legitimate ~12% pattern, not a mistake [1]. Whichever you choose, if there's a trial, the price should still appear somewhere adjacent as a trial-then-price line so the renewal terms are clear. Treat in-button vs above-button as an A/B test, since both are established.
Caveats
'No price visible' (80.2%) means no price in the *extracted CTA-adjacent copy* only — prices on plan cards or elsewhere on the screen aren't captured, so this is 'price outside the button/CTA area,' not 'no price on the paywall' [3][7]. Price detection uses a currency-symbol/decimal + period-unit regex; primary-role CTAs only (39% unknown-role excluded) [8]. Whole-percent rounding applies.
The numbers
| Stat | Computed from |
|---|---|
| Price inside the button: 219/1,886 (11.6%) | price_in_cta_share: 219/1886 = 11.6% |
| Price above the button only: 155/1,886 (8.2%) | price_above_cta_only_share: 155/1886 = 8.2% |
| No price in adjacent copy: 1,512/1,886 (80.2%) | price_above_cta_only_share note: 1,512 = 80.2% |
| Zeus, iam, Elevate price-in-button examples | qualitative price in CTA entries |
| PictureThis 'Continue' + 'Try 7 days free, then $39.99/year' | qualitative picturethis 7-day entry |
| Continue 21.2%, Start 16.9% lead CTA verbs | cta_verb_families: continue 399 (21.2%), start 318 (16.9%) |
| 'No price visible' = adjacent copy only, not whole screen | smallSampleWarnings: price not visible framing |
| 39% CTA rows role='unknown', excluded | universe note |
Sources & citations
- [1] Lazyweb Research analysis of 1,886 primary paywall CTAs (~800 tracked apps), July 2026. Price-in-button via currency/decimal + period-unit regex on cta_text; 219 rows. ↩
- [2] Lazyweb Research analysis of 1,886 primary paywall CTAs (~800 tracked apps), July 2026. Price-above-button = no price in button but price in adjacent title/subtitle; 155 rows. 'No price' (1,512) means adjacent copy only. ↩
Source: Lazyweb Research — proprietary analysis of real, in-market app screens. Cite as Lazyweb Research, 2026-07-07.