A subscription test is often decided on paid conversion, at day 14 or day 30. Its value shows at day 90 or day 365. Stripe sends Probant subscription starts, payments, cancellations, and refunds; Probant keeps no email, name, or address from them. Each stopped test keeps being tracked, and the report flags when the decision reverses.
Club Lune, Maison Lune’s light bulb and maintenance subscription (€9 per month), tested from Feb 23, 2026 to Apr 24, 2026: full price vs. “first month at half price”. Fictional data (subscriptions, payments, cancellations, refunds, visitor by visitor). Differences, ranges, and readings are calculated by Probant.
On “Paid conversion (day 30)”, visitors who had reached day 30 when the test stopped; 95% range.
The team rolled out the promotion, which won on paid conversion.
The decision reverses over time. “First month at half price”, chosen on “Paid conversion (day 30)”, loses on retention (still subscribed) at day 90: from -44% to -18%. 5 other closed readings point the same way.
“MRR per visitor” and “Still subscribed” have exactly the same difference here: every active subscription is worth the same monthly amount (a single price), so MRR per visitor is the share still subscribed multiplied by that price. The two rows say the same thing.
Still paying, among those who started a subscription (trials included): A 100% (691 of 691, from 99% to 100%) · B 100% (1,466 of 1,466, from 100% to 100%). Described, not compared, because who subscribes depends on the variant.
“MRR per visitor” and “Still subscribed” have exactly the same difference here: every active subscription is worth the same monthly amount (a single price), so MRR per visitor is the share still subscribed multiplied by that price. The two rows say the same thing.
Still paying, among those who started a subscription (trials included): A 80% (553 of 691, from 77% to 83%) · B 26% (377 of 1,466, from 24% to 28%). Described, not compared, because who subscribes depends on the variant.
“MRR per visitor” and “Still subscribed” have exactly the same difference here: every active subscription is worth the same monthly amount (a single price), so MRR per visitor is the share still subscribed multiplied by that price. The two rows say the same thing.
Still paying, among those who started a subscription (trials included): A 55% (381 of 691, from 51% to 59%) · B 16% (232 of 1,466, from 14% to 18%). Described, not compared, because who subscribes depends on the variant.
No exposed visitor has reached day 365 yet, so nothing is read at this horizon.
The latest stopped tests, read again on their exposed visitors: does the decision hold over time?
For a test tracked in Subscriptions, exposed visitors are read again after the stop at day 90, 180, and 365 (MRR, retention, net revenue) to confirm the decision. Only readings closed for the whole cohort count, with simultaneous ranges.
An annual plan paid upfront collects twelve months at once: revenue collected at day 30 counts all of it, MRR counts a twelfth. The report shows both.
Delayed metrics: a visitor only counts once day N is reached. Decide on a short-delay metric and track the others.
Decide fast, follow up long. Decide on “Paid conversion (day 30)” or “MRR at day 30”: a short delay, with enough visitors to reach a conclusion. Track “Still subscribed at day 90” and “Net revenue collected by day 90” as secondary metrics, then the report’s cohort follow-up after the test stops (days 30, 90, 180, 365). It shows whether the decision reverses.
What the Maison Lune team did in Stripe. The demo doesn’t receive any events.
https://getprobant.com/api/v1/stripe/maison-lunecheckout.session.completed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.paid, invoice_payment.paid, charge.refunded.// At signup: the visitor ID comes from the form’s hidden field
// (data-probant-lead, Leads page) or from probant.leadId(); empty without the visitor’s consent.
const session = await stripe.checkout.sessions.create({
mode: "subscription",
line_items: [{ price: "price_…", quantity: 1 }],
client_reference_id: probantId || undefined,
subscription_data: { metadata: probantId ? { probant_id: probantId } : {} },
success_url: "https://your-app.com/welcome",
});Another billing system (Paddle, Chargebee, in-house) sends the same information through the API, with a key that has the “Send delayed conversions” permission.
# Without Stripe: a subscription’s state (monthly value, excluding tax)
curl https://getprobant.com/api/v1/subscriptions \
-H "Authorization: Bearer sk_…" -H "Content-Type: application/json" \
-d '{ "visitorId": "0190f2c4-…", "subscriptionId": "abo-42", "status": "active",
"startedAt": "2026-11-02T10:00:00Z", "occurredAt": "2026-11-02T10:00:00Z",
"monthlyValue": 29, "currency": "EUR" }'
# A refund, subtracted from payment “in-1042” already sent
curl https://getprobant.com/api/v1/conversions \
-H "Authorization: Bearer sk_…" -H "Content-Type: application/json" \
-d '{ "visitorId": "0190f2c4-…", "metric": "paiement", "externalId": "re-77",
"refundOf": "in-1042", "occurredAt": "2026-11-09T08:00:00Z", "value": 29, "currency": "EUR" }'Step-by-step guide and a sample paragraph for your privacy policy: documentation.