Stop staring at a blank template library. Apex reads your vertical, your event stream, and your site, then points at the exact lifecycle sends you haven’t built yet. Every send is tuned by the same Thompson bandit running your web tests.
Catalog tuned to your business
A PLG SaaS app and a high-velocity ecommerce store need different welcome flows, different nudges, and different reactivation patterns. Apex ships defaults that match your vertical and your conversion model on day one, then gets out of the way so you can override anything.
Catalog preview · vertical × conversion model
6 entriesActivation reminder at 48h
signup, no activation
First-value nudge
feature_discovered count < 3 @ 7d
Trial expiring
trial ends in 3d
Plan upgrade nudge
usage_milestone reached 80%
Feature discovery
feature_not_used @ 14d
Reactivation welcome back
churned + returned
Block editor, not HTML hell
Every block is a typed component in APEX_BLOCK_SCHEMAS: hero, content, CTA, divider, footer. Drop a variant onto any block and you’re testing. The preview is server-rendered with your brand applied, which means what you see is what Gmail, Outlook, and iOS Mail actually render.
Hero
Welcome to {{product_name}}
Subject
4 variants under test
Content
You're 2 steps away from your first...
CTA Button
Activate my account
Footer
Unsubscribe · Preferences
Block properties
Type
Subject
Variants
Goal binding
Schema
APEX_BLOCK_SCHEMAS.subjectBayesian Bandits
Lifecycle messaging doesn’t want to wait 14 days for a frequentist t-test to clear. Thompson sampling ships more of the winning subject line immediately while keeping a smart exploration slice. Every send updates the Beta posterior for its variant. Peeking-safe, no fixed sample size, no stats PhD required.
Traffic allocation · updating from Beta posteriors
A
25.0%
B
25.0%
C
25.0%
D
25.0%
Posterior distributions · P(conversion | data)
Rate
3.2%
Signal
132/4,120
Rate
5.8%
Signal
250/4,310
Rate
4.1%
Signal
163/3,980
Rate
2.7%
Signal
99/3,650
No peeking penalty · no fixed sample size
Every send updates the Beta posterior for its variant. Variant B has won 25% of next-hour traffic, and the exploration slice on A, C, and D keeps the sampler honest if conditions change.
Conversion goals, not vanity clicks
Apex variants optimise toward real business outcomes (account_activated, trial_started, purchase_completed), not the click-through rate that stopped predicting revenue a decade ago. The same goal definition powers your experiment conversion rate, your lifecycle attribution, and your funnel reporting, so every nudge and every bandit weight pulls toward the same number.
Click-through
What every other tool measures
18.4%
Users click the link
Signup
Step up. An intent signal.
6.1%
Users create an account
account_activated
APEX TARGETWhat Apex variants optimize
2.3%
Users complete first workflow
One goal definition powers three surfaces: experiment conversion rate, attribution, and lifecycle reporting.
Comms Intelligence
The hard part of lifecycle messaging is not the editor; it’s knowing what you should be sending. Apex reads your vertical, your event stream, and your site, then recommends the comms that are missing plus the exact code to wire them up.
Event-gap analysis
Observed in last 14 days
signup847 firespricing_viewed1,204 firessignup_completed0 fires · missingYou fire signup but not signup_completed. Without it we can’t tell who finished onboarding, blocking 3 recommended sends.
Site scan · Puppeteer
https://apex.example.com/pricingmatchFound: Start free trial CTA
Recommend: Trial welcome + 24h nudge
/signup/successmatchFound: Empty state with prompt
Recommend: Onboarding recovery
/app/dashboardneeds wireupFound: Password reset link
Recommend: Password reset transactional
Inline SDK wireup
Apex writes the tracking call for you, scaffolded from the comm’s trigger event and the payload your vertical expects.
<!-- add to /checkout/success -->
<script>
apex.track('trial_started', {
plan: 'pro',
email: user.email
});
</script>Or open a PR on your repo. Apex finds the insertion point.
Event gaps. The Apex snippet is already collecting events. We compare against what your vertical expects and flag what’s missing.
Site scan. Our Puppeteer layer crawls your marketing site, finds CTAs and flows, and maps them to comm opportunities.
Wireup. Every gap comes with the exact SDK snippet, and optionally a PR opened on your repo.
One experiment · three channels
A single experiment configuration runs across every channel it applies to. Same variants, same Thompson sampler, same significance math. When Variant B wins, it wins everywhere. No spreadsheet reconciliation and no “which tool is the source of truth?” debates in the standup.
One experiment · three surfaces · shared variants
notifications@apex.so
Ready when you are, Chris
Activate now and complete your first workflow in under 5 min.
Web push
browser notification
You're 1 step away
Complete your first workflow now.
Mobile push
APNs / FCM
1 step away
Tap to activate
Shared stats, shared sampler. The bandit weights Variant B across email, web push, and mobile push from a single Beta posterior, not three separate experiments that never compare.
AI that writes the next send
Apex reads your catalog, your past winners, your brand voice, and the audience you’re targeting, then drafts subject lines and body copy that match. The drafts feed straight into the experiment system. You ship the ones you like, the bandit picks the one your users actually respond to.
/api/communications/generate
Why Apex
Customer.io, Iterable, Braze, Klaviyo: they all send messages. None of them tell you which messages you’re missing. None of them share a bandit with your web experiments. None of them come bundled with attribution.
| Capability | Apexthis product | Customer.iocompare | Iterablecompare | Brazecompare | Klaviyocompare |
|---|---|---|---|---|---|
Email A/B testing Table stakes; everyone has it | |||||
Push + in-app messaging Unified across surfaces | ~ | ||||
Thompson bandits on messaging Bayesian, peeking-safe, no fixed sample | ENT | ||||
Conversion-goal optimization Optimizes toward real outcomes, not clicks | ~ | ~ | ~ | ||
Catalog recommendations Tells you which comms you're missing | |||||
Event-gap + site scan Crawls your site, reads your events | |||||
Inline SDK wireup Drops the code to fire missing events | |||||
Same system as web A/B tests One experiment framework, one belief graph | |||||
Included with platform Not a separate $60K/yr tool |
Get Started
No fly-in sales call, no 6-week onboarding, no “we’ll port your templates.” You keep what works and let Apex recommend what you’re missing.
Drop the 3 kB snippet on your site or wire up the SDK in your app. The event stream starts flowing immediately.
<script src="https://cdn.apex.so/apex.js"
data-project-key="YOUR_KEY"></script>B2B SaaS, e-commerce, marketplace, agency, plus your conversion model (PLG, sales-assisted, transaction). Apex loads the right catalog.
The recommender surfaces 3 messages your vertical should have. Pick one, and Apex generates variants, wires the trigger, and starts the bandit.
Messaging that reads your data, recommends what’s missing, and learns from every send, as part of the same platform your web experiments already run on. Not a separate tool. Not a separate bill.