Raxx · internal docs

internal · gated

ADR 0152 — Funnel pricing and trial decisions: annual Pro $390, 7-day Pro-only trial, Founders unchanged

Status: Accepted Date: 2026-10-31 UTC Deciders: Kristerpher Henderson (operator decisions for the first-run funnel, 2026-10-29 UTC); recorded under card #4820 Scope: The prices, billing intervals, trial and intro offers for Free, Pro and Pro+ on web and iOS, and the paywall defaults. Decision record only: no code, and no Stripe or App Store Connect configuration (that is #4836). Supersedes: The Pro price and annual figures in docs/marketing/pricing-v2.md (Pro $29 per month) and docs/marketing/pricing.md (Pro $29 per month, $290 per year), and the 2026-05-19 "paid on signup, no trial" posture as it applied to Pro. That posture still holds for Pro+ and for Founders. Refs: Epic #4818; cards #4821, #4830, #4831, #4832, #4834, #4836; ADR-0007 (iOS billing via in-app purchase); ADR-0071 and ADR-0075 (Queue is the billing authority); ADR-0016 and Founders Promo epic #204 (see section 2.6).


1. Context

The first-run funnel (epic #4818) adds a paywall after signup. Eighteen cards build web, iOS, copy and analytics surfaces that all quote prices and trial terms. Until this record, the numbers lived in three places that disagree:

The operator decided on 2026-10-29 UTC to offer annual Pro at launch and a 7-day trial on Pro only. This ADR is the single authoritative record of those numbers. Cards read prices and offers from here; vendor ids are written back here (section 3).

2. Decision

2.1 Tiers and monthly prices

Tier Monthly price Notes
Free $0 Always free.
Pro $39 per month
Pro+ $79 per month

Founders is the Pro+ introductory offer: $29 per month for the first 6 months, then $79 per month. It is explicitly not a tier. Its entitlement tier is pro_plus; founders is a billing and cohort label only. This is unchanged by this record.

2.2 Annual Pro

Annual Pro is offered at launch at $390 per year ($39 x 10, about 2 months free). It needs a Stripe annual price and an App Store Connect annual subscription product in the existing subscription group; setup is tracked in #4836.

No annual price for Pro+ is decided here. The app.raxx.ios.proplus.annual mapping in backend_v2/api/services/entitlement.py is forward-compatibility only; no such product or price is to be created or sold under this record.

2.3 Which offer applies to which product

Product Billing interval Price Free trial Intro offer
Free n/a $0 n/a none
Pro monthly $39 per month 7 days none
Pro annual $390 per year 7 days none
Pro+ monthly $79 per month none Founders: $29 per month for 6 months, then $79
Pro+ annual not decided none none

The trial applies to both Pro prices. Pro+ has no trial; its one intro-offer slot is Founders. The Founders offer never attaches to Pro, and the trial never attaches to Pro+. On web, the Founders discount coupon must never be applied to a Pro price: it is a fixed $50 off and would take Pro $39 to zero. A test in #4831 asserts this.

2.4 Trial mechanics

Web (Stripe, Queue is billing authority) iOS (StoreKit 2)
Trial 7-day trial on the Pro monthly and Pro annual prices. Card required at checkout. Apple introductory offer (free, 7 days) on app.raxx.ios.pro.monthly and app.raxx.ios.pro.annual.
Eligibility Decided server-side by Queue. isEligibleForIntroOffer, never inferred from local state. The offer is shown only when eligible.
What the customer sees Price, charge date and a cancel link. The Apple-provided, localized price and period strings; never hard-coded.
Cancel One confirm click on /account/billing. Apple subscription settings.
Reminder One day-5 email, sent only if the trial was not cancelled, from the customer-facing sender. No Raxx-sent reminder for Apple-managed trials (per #4831). Apple's reminder behavior for free trials is not documented as a guarantee, so none is assumed; #4832 and #4836 verify it in the sandbox, and a missing Apple reminder is an open question for PM.
State Queue billing_subscription: status trialing and trial_end. Entitlement mapped from the product id (app.raxx.ios.pro.* maps to pro).

Cancelled before the trial ends (web). Default, recorded as the decision: Pro access continues to the trial end date and the customer is not charged. Cancelling stops the conversion to a paid subscription; it does not end access early. At the trial end date the entitlement drops to Free. #4831 follows this record for the access end date.

Day-5 reminder timing. The reminder is promised on day 5 of 7. Stripe's built-in trial-ending event is documented to fire 3 days before the trial ends (day 4), so the day-5 send needs its own scheduled send keyed on the trial end date, or the copy changes. #4831 confirms which.

2.5 Paywall defaults

2.6 This trial is not the Founders Promo engagement loop

Two different things have been called a "trial" in this repo. They must not be conflated in code, copy or cards.

Pro 7-day trial (this ADR) Founders Promo window (ADR-0016, epic #204)
What it is A subscription trial on a paid Pro plan. A card is on file, and it converts to a paid subscription at day 7 unless cancelled. A time-based engagement window designed in April 2026 for the Founders cohort (founder_trial table, FounderTrialService, daily sweep with 30, 14, 7 and 1 day warnings, grace, lapse), originally free Pro-tier paper trading with no card.
Current status Decided 2026-10-29; built by #4831 and #4832. The free-window model was retired by the 2026-05-19 pricing lock. Founders is now a paid Pro+ intro offer; the 6-month period is a price window, not a free window. The design remains in docs/architecture/founders-trial-engine.md; no founder_trial code exists on develop.
State store Queue billing tables. Raptor founder_* tables (design).
Who gets it Any eligible public signup choosing Pro. The Founders cohort only.
Customer wording "7-day free trial". Not "trial". Existing Founders copy already calls the 6-month period a "pricing window" (frontend/getraxx-landing/src/pages/PricingPage.jsx, FAQ). Wording is not fixed here (section 2.7).

Nothing built for the Pro trial reuses the Founders warning ladder, scheduler or tables, and nothing in the Founders design implies a card-on-file trial.

2.7 Customer copy

This record fixes numbers and mechanics, not wording. Copy is owned by marketing-strategist and cleared through #4835 where attorney-gated. Customer copy names no broker, payment processor or data vendor. On iOS, the platform-required subscription-management wording is the only place Apple is named.

3. Product and price ids (ids only, no secrets)

Ids already present in the repo are recorded now. Rows marked "pending #4836" are written back by #4836 when the objects exist; that card does not close until they are recorded here.

System Item Id or config name Status
App Store Connect App record 6778650155 exists
App Store Connect Subscription group "Raxx Pro Subscriptions" 22164259 exists
App Store Connect app.raxx.ios.pro.monthly ($39 per month) record 6781305735 exists; 7-day intro offer pending #4836
App Store Connect app.raxx.ios.pro.annual ($390 per year) record 6781305904 draft, missing metadata; closest available price point to $390 per year and 7-day intro offer pending #4836
App Store Connect app.raxx.ios.proplus.monthly ($79 per month; Founders intro) record 6781305906 exists; no trial; Founders intro unchanged
Stripe Pro monthly price ($39) pending #4836 id recorded by #4836
Stripe Pro annual price ($390 per year) pending #4836 test and live ids recorded by #4836
Stripe Pro+ monthly price ($79) price_1Tnfq0I3o3OLvhqqrRTiSeNn, config STRIPE_PRO_PLUS_PRICE_ID exists; unchanged
Stripe Founders intro coupon (6-month repeating, on the Pro+ price only) config STRIPE_FOUNDERS_COUPON_ID exists; unchanged

4. Consequences

5. Alternatives considered

Form: a new pricing doc under docs/marketing/. Rejected. The marketing pricing docs are research artifacts with their own anchors and unverified competitor data, and two of them are exactly what went stale. A third doc invites the same drift. An ADR is indexed in docs/architecture/adr/INDEX.md, is cited by number from cards, and sits beside ADR-0007, ADR-0071 and ADR-0075, which govern the billing paths these decisions constrain.

Not decided here (future cards): annual Pro+ pricing, a trial on any other plan, and a paywall-ordering experiment (before or after first value) after launch data.