pex
Unified Experiments Hub

Every experiment. One learning system.

Run tests on your website, your emails, your push notifications, your in-app surfaces, and your mobile app from one hub. Every outcome updates a shared belief graph, so your team’s learnings compound instead of evaporating when someone leaves.

One learning system

Surfaces

Same workflow whether it's a landing page or a push notification.

Web A/B, email, push, in-app, and mobile ship today. Landing page, creative, feature flag, and paid channel are reserved in the type system, ready when you are. The shipping ritual is identical for all of them: write a belief, pick a segment, set guardrails, launch.

  • Five surfaces ship today; four more are reserved and will turn on without you migrating anything.
  • Three-tier metrics on every surface: primary, secondary, and guardrails you can't win by breaking.
  • One segment-rule language across all nine, so “paid users in the US on mobile” means the same thing whether it's an email or a web variant.
Experiment
surface: "web_ab"
{
"name": "Hero social proof test",
"surface": "web_ab",
// one belief drives every surface
"hypothesis": "Social proof will lift signups",
"primaryMetric": { key: "signup", goal: "increase" },
"variants": [,
{ key: "a", name: "Control" },
// WebVariant
{
"key": "b",
"name": "Social proof + video",
"changes": [
{ "selector": "#hero", "type": "innerHTML", "value": "12,000 teams trust us" },
{ "selector": "#cta", "type": "attribute", "attr": "href", "value": "/signup?ref=proof" }
],
"screenshot": "https://cdn.apex.inc/prev_b.png"
}
],
"allocation": { type: "hash" },
"confidence": 72,
}

Hypothesis-driven

Every experiment starts from something you believe.

Most A/B tools drop you straight into a variant editor. Apex asks what you think is true about your users and why, turns it into a testable prediction, and ties the outcome back to the belief graph. No more winners without a written hypothesis. No more losers that leave no trace either.

  • Write the belief and the evidence up front; Apex drafts the testable prediction for you.
  • Confidence is scored 0–100 and updated with every outcome, win or loss.
  • Every belief lives in the shared graph, so learnings from one test feed the next one.

Belief

· confidence 62%

Visitors need social proof to trust us.

Formed from 4 support tickets + onboarding interviews

IF

Prediction

· confidence 72%

Adding testimonials + video will lift signups by +15%.

Written before the test. Falsifiable, dated, signed.

THEN

Test

Web + email, 14-day run, 15K visitors per variant.

Primary: signup_started. Guardrails: bounce, LCP.

Statistics

Frequentist rigor for your website. Bayesian bandits for your emails.

Web and mobile experiments run sequentially with α-spending control, so sample-size math holds up even when you peek. Lifecycle messaging runs on Thompson sampling, shifting traffic to the winning arm as posteriors update. Same platform, different math for different surfaces, nothing to configure.

Sequential test (SPRT)

Safe to stop the moment significance lands

Peeking-safe
Day 1
n = 1,200p = 0.420
Day 3
n = 5,800p = 0.180
Day 5
n = 12,400p = 0.070
Day 8
n = 21,800p = 0.032
Stop condition met Day 8. p < 0.05 with α-spending control. No false-positive inflation.

Fixed-horizon sample calc

Baseline rate (control)3.2%
MDE (min. detectable effect)+15%
Significance (α)0.05
Power (1 − β)0.80

Required per variant

18,432

Apex computes this automatically from your primary metric's historical rate and desired MDE.

Revenue Attribution

Every winner quoted in dollars, not percentages.

Most A/B tools say “Variant B won with 97% confidence.” Apex says “Variant B will generate $47,240 this year.” Template funnels for SaaS, PLG, and ecommerce plug into your Stripe integration and observed tenant data to project incremental revenue with calibrated confidence.

  • Headline $/year number on every experiment card, not a p-value anyone has to interpret.
  • Stage-by-stage observed lift multiplied by your actual revenue per conversion.
  • Confidence bands sized to your sample. The math is always expandable, never a black box.
funnel: upgrade
Source: Stripe + events
Live

Sign up

baseline
10,00010,420+420 (+4.2%)

Activate

62% of prev
6,2006,890+690 (+11.1%)

First purchase

39% of prev
2,4002,892+492 (+20.5%)

30-day retain

75% of prev
1,8002,238+438 (+24.3%)

Projected annual impact

+$47,240/yr

438 incremental retained customers × $108 ARPU

Confidence: high

The Ledger

Your team’s learnings don’t leave when the PM does.

525+ tests already live on the platform. Every experiment, whether promoted, discarded, or inconclusive, joins a permanent ledger with its belief update, its outcome, and a one-line quote that explains the “why.” Turnover, reorgs, and new hires stop resetting the clock.

Experiment ledger

525 tests · forever
exp_0429Apr 18promoted

Hero social proof + video

Social proof drives trust with mid-market

+34% signups
belief62%91%
exp_0428Apr 17promoted

Subject line: curiosity

Curiosity beats urgency for our audience

+29% open rate
belief54%82%
exp_0427Apr 15promoted

Push timing: 7pm vs 9am

Evening sends lift re-engagement

+41% opens
belief40%78%
exp_0426Apr 14discarded

Paywall: annual first

Monthly-first remains the safer default

−3% (not significant)
belief68%42%
exp_0425Apr 12promoted

In-app upgrade banner

Context beats generic upsell surfaces

+22% clicks
belief50%74%
exp_0424Apr 10inconclusive

Email preheader CTA

Re-run with 3× traffic or longer window

Underpowered (n=2.1K)
belief45%45%
exp_0423Apr 08promoted

Signup: 1-step vs 2-step

Fewer form fields always wins for us

+18% completion
belief55%81%
exp_0422Apr 06discarded

Push: emoji in title

Emoji hurts professional SaaS audience

−8% open (p < 0.01)
belief48%22%

Every test, promoted or discarded or inconclusive, joins the ledger. Belief graph updates.

+517 more

Beliefs updated

compound with every outcome

Ledger entries

permanent, across team changes

AI summaries

every test auto-debriefed

Graduate to Production

Ship the winner as code. Keep the ledger entry forever.

A shipped winner should live in your repo, not dangle as a runtime config from last quarter. Graduate a winner and Apex either serves 100% traffic from the snippet, opens a pull request through the SDK, or fires an MCP tool so your coding agent ships it. The experiment closes; the belief and the ledger entry persist.

  • One-click graduate: runtime flip, SDK patch, or an agent-opened PR.
  • Downstream experiments automatically inherit the winner as the new baseline.
  • No more &ldquo;is this still an A/B test or did we actually ship it?&rdquo; in standup.
Promote winner
exp_0429 · Ready

Winner confirmed

Variant B · “Social proof + video”

99.2% confidence · p = 0.003 · 21,800 visitors

Lift on signup

+34%

Incremental /mo

2,142

Projected /yr

+$127K

Ship Variant B to 100% of traffic

Live instantly. Ledger entry is preserved forever.

Graduating a winner clears the runtime experiment. The ledger entry stays permanent.

Developer-native

Works where you build.

The same Experiment entity is reachable from a one-line script tag, a typed SDK, or an MCP tool that any AI assistant can drive. No proprietary YAML, no handoff between “the marketing tool” and “the dev tool.” One API, three front doors. Pick whichever one your team already lives in.

  • Runtime snippet flips variants without a redeploy; your ops team can ship a test today.
  • TypeScript SDK with full type-safety over the Experiment union, so autocomplete works across every surface.
  • MCP tools so Claude, Cursor, or any coding agent can create, run, and graduate experiments for you.
// On every page. No redeploy needed to change variants.
const variant = await apex.getVariant('hero-copy', {
userId: currentUser.id,
});
 
if (variant.key === 'b') {
document.getElementById('hero').innerHTML = variant.payload.headline;
}
 
apex.track('signup_started', { source: 'hero' });

Why Apex

Standalone A/B tools only cover half the surfaces.

Optimizely tests web. Statsig tests features. Eppo runs the stats. None of them covers email, push, in-app, and mobile with one shared belief graph and a permanent ledger.

CapabilityApex

us

Optimizelycompare →Statsigcompare →Eppocompare →

Web A/B testing

DOM editor, redirects, screenshots

Email / push / in-app tests

One platform, one belief, Thompson bandits

Mobile native variants

Typed payload via SDK, SKAN-aware

Revenue attribution

$ figures per variant from connected integrations

Belief graph + learnings

Institutional memory across every test

Thompson sampling bandits

Bayesian allocation for comms surfaces

MCP / agent-native control

Create, graduate, inspect from any AI assistant

Get Started

From belief to shipped winner, in three moves.

No infrastructure to build. No stats team to spin up. Apex handles allocation, math, attribution, and the ledger. You just write down what you think and hit run.

1

Install the snippet or SDK

One line of script, or the SDK in the language you already use. Runtime-ready in minutes, no redeploy required to change variants.

<!-- in <head> -->
<script
  src="https://apex.inc/a.js"
  data-project="prj_..."
></script>
2

Define a belief

Say what you think is true about your users and why. Apex turns it into a testable prediction with a primary metric and guardrails.

New belief

I believe

“Trial-length copy confuses visitors on the pricing page.”

Because

3 support tickets this week + drop-off on pricing.

3

Launch across any surface

Pick one surface or many. Web + email can share a belief. Apex wires up allocation, stats, attribution, and the ledger automatically.

Web A/B
Email
Push
In-App
Mobile
FlagSoon

One system for every experiment.

Stop duct-taping Optimizely to Braze to Statsig to a spreadsheet. Run web, email, push, in-app, and mobile tests from one belief graph, and keep the learnings when the PM who ran them moves on.

No credit card · 525+ tests already live · MCP + SDK included