pex
Lifecycle Communications

Messaging that learns what actually converts.

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.

signuptriggerSubject A25%Subject B25%Subject C25%Subject D25%$activated0conversions · livegoal: activated

Catalog tuned to your business

A SaaS signup funnel doesn’t need the same sends as a checkout flow.

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.

  • Opinionated defaults for B2B SaaS, ecommerce, marketplace, and agency. The recommender sets the floor, not the ceiling.
  • Conversion-model aware: PLG, sales-assisted, and transaction each get a different trigger library on day one.
  • Event taxonomy per vertical ships with the SDK snippets, so the recommender has something to work with from the first visitor.

Catalog preview · vertical × conversion model

6 entries
O

Activation reminder at 48h

signup, no activation

Onboarding
O

First-value nudge

feature_discovered count < 3 @ 7d

Onboarding
M

Trial expiring

trial ends in 3d

Monetization
M

Plan upgrade nudge

usage_milestone reached 80%

Monetization
E

Feature discovery

feature_not_used @ 14d

Engagement
W

Reactivation welcome back

churned + returned

Winback
These are defaults for B2B SaaS / PLG. Override any entry. The recommender just sets the floor.

Block editor, not HTML hell

Compose once. A/B anywhere. Render right in every inbox.

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.

  • Drag to reorder, inline to edit, drop a variant onto any block to start a test.
  • Brand settings apply globally, so no per-email styling, no dropped &lt;td&gt;s, no &ldquo;why does this look different in Outlook?&rdquo;
  • Merge tags are typed against your event payload, so broken personalisation is a compile error, not a 6am bug report.
welcome.tsx · block editor
Preview
H

Hero

Welcome to {{product_name}}

S

Subject

4 variants under test

4v
C

Content

You're 2 steps away from your first...

2v
C

CTA Button

Activate my account

3v
F

Footer

Unsubscribe · Preferences

Block properties

Type

Subject

Variants

ABCD

Goal binding

account_activated

Schema

APEX_BLOCK_SCHEMAS.subject

Bayesian Bandits

Your winner gets more traffic today, not in two weeks.

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

0 sends observed

A

25.0%

B

25.0%

C

25.0%

D

25.0%

Variant A
Variant B
Variant C
Variant D

Posterior distributions · P(conversion | data)

Variant A

Rate

3.2%

Signal

132/4,120

Variant B
LEAD

Rate

5.8%

Signal

250/4,310

Variant C

Rate

4.1%

Signal

163/3,980

Variant D

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

A click is not a conversion.

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.

  • Per-template default goal, overridable per experiment, so the recommender ships you sensible defaults and you never have to configure anything to go live.
  • apex.trackGoal() from web, SDK, server, or MCP, so you can wire up wherever the conversion actually happens, not just where the click lands.
  • The Thompson sampler optimises goal_completed, not click_through. The email that got opened and never converted loses to the email that did.

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 TARGET

What Apex variants optimize

2.3%

Users complete first workflow

One goal definition powers three surfaces: experiment conversion rate, attribution, and lifecycle reporting.

Comms Intelligence

Apex tells you which messages you’re missing.

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 fires
pricing_viewed1,204 fires
signup_completed0 fires · missing

You fire signup but not signup_completed. Without it we can’t tell who finished onboarding, blocking 3 recommended sends.

Site scan · Puppeteer

crawling
https://apex.example.com
/pricing
match

Found: Start free trial CTA

Recommend: Trial welcome + 24h nudge

/signup/success
match

Found: Empty state with prompt

Recommend: Onboarding recovery

/app/dashboard
needs wireup

Found: 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.

trial_started.html
<!-- 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

Email, push, in-app: same hypothesis, different surface.

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.

  • Email via Amazon SES with tiered from-addresses per plan; web push via service workers and the Web Push Protocol; mobile push via APNs and FCM.
  • Shared variant IDs across every channel, so a winning subject line, push title, and in-app banner all live under the same experiment record.
  • Channel capability is an object property: when Apex ships a new channel, every existing experiment picks it up without a config change.

One experiment · three surfaces · shared variants

Email

notifications@apex.so

VARIANT B

Ready when you are, Chris

Activate now and complete your first workflow in under 5 min.

Web push

browser notification

VARIANT B

You're 1 step away

Complete your first workflow now.

Mobile push

APNs / FCM

VARIANT B

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

Describe it. Apex drafts three variants. Ship to test.

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.

  • Grounded in your brand voice and your past winners, not a generic &ldquo;best practice&rdquo; template library.
  • Variants land already-typed against your block schema, so there&rsquo;s no copy-paste step between the draft and the running test.
  • The same endpoint is exposed over MCP and the SDK, so your coding agent can propose and ship sends the same way you can.

/api/communications/generate

Why Apex

Everyone has email A/B testing. Nobody else has this.

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
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

Full capability
~
Partial
ENT
Enterprise only
Not supported

Get Started

Your first lifecycle send, live in two minutes.

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.

STEP 1

Install apex.js

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>
STEP 2

Pick your vertical

B2B SaaS, e-commerce, marketplace, agency, plus your conversion model (PLG, sales-assisted, transaction). Apex loads the right catalog.

STEP 3

Launch a recommended send

The recommender surfaces 3 messages your vertical should have. Pick one, and Apex generates variants, wires the trigger, and starts the bandit.

Your lifecycle deserves better than a static template library.

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.

2-minute setupFree to startBundled with attribution + experiments