Skip to content
Hosted in Europe. Your test data is stored in the European Union.Hosted and stored in EuropeLearn more

Measure what matters, down to the margin.

Define a conversion without touching code. Each metric tells you in advance what it can detect. Margin is computed on your real orders, with each product’s cost.

Metrics · Maison Lunewhat a four-week test can detect
Revenue per visitordetects from 4.6%Primary
Conversion ratedetects from 3.7%Secondary
Add to cartdetects from 5.5%Secondary
Return ratedetects from 13.9%Guardrail
Replayed on marginFree returns highlighted
Revenue per visitor+3.4%
Margin per visitor-8.9%
0:37 · no sound, looping
Read the transcript

What should you actually measure? A click becomes a metric without a line of code, and margin is calculated from your orders.

Define a conversion without code. A click on the page becomes a goal. Events your site already sends are suggested as metrics once they reach 5 visitors in 30 days.

Each metric shows what it can detect. The smallest effect visible in four weeks, next to the typical gain of your past tests (+3.7%). CUPED tightens the bars: up to 6% less variance.

Margin is calculated from your orders. Back-office orders, the cost of each product, and store fees: margin per visitor is calculated on the server, and your costs don’t go through the page.

A revenue winner can lose on margin. “Free returns highlighted”: +3.4% in revenue per visitor, but -8.9% in margin, range -12.5% to -5.1%.

These metrics are in the demo, no sign-up needed.

Metrics that show what they’re worth.

The visuals come from the demo store’s metric catalog: detectable effects and durations are computed by the engine from its traffic.

Define a conversion without touching code.

A click, a form submission, or a page visit is enough: point at the element on your page, and Probant counts the conversion. Events your site already sends with probant.track are suggested as metrics, with a prefilled form.

  • Suggested from 5 distinct visitors in 30 days, up to six names
  • A dismissed name doesn’t come back
  • For a lead generation site, the conversion can come from your CRM, days later
New metricwhere the conversion comes from
  • Site eventprobant.track(…)Sent by your code, with an amount if needed
  • ClickClick on [data-cta]Point at the element on your page
  • FormForm submission #devisCounted on submit
  • PageVisit to /merci*A URL or a pattern
Received without a metric

An event name sent by at least 5 visitors in 30 days that no metric tracks yet is suggested with a prefilled form.

Each metric tells you in advance what it can detect.

For each metric, Probant computes the smallest effect visible in four weeks, from the last 7 days of traffic. In the demo, two of the six decision metrics can see a typical store winner (+3.7%) within that time.

CUPED narrows ranges using each visitor’s history over the 14 days before their first exposure: up to 6% less variance in the demo, on “Add to cart”. Without history, the difference stays raw and the report says so.

Smallest detectable effectin four weeks
MetricWithout CUPEDWith CUPEDReading
Revenue per visitor4.6%4.5%Slow
Conversion rate3.7%3.6%Slow
Add to cart5.5%5.4%Slow
Product click1.8%1.8%Sensitive
Margin per visitor4.6%4.5%Slow
Average order value2.7%—Sensitive
Return rate13.9%—Reliable guardrail
Page speed (LCP)0.93%—Reliable guardrail
JavaScript errors69.3%—Threshold finer than the measurement

A test has one primary metric, secondary metrics, and guardrails.

The primary metric decides the test. Secondary metrics shed light on the result without creating false winners, because they are corrected together. Guardrails stop a test that harms something. Everything is chosen in the test plan and locked at launch.

  • Rates, averages, and ratios, such as average order value
  • Outliers capped at the chosen percentile (95th percentile, 99th percentile, and 99.9th percentile), so one unusual order can’t decide on its own
  • Editing a metric after launch doesn’t change a running test
Test metricslocked at launch
Primaryonedecides, at planned checkpoints
Secondaryup to eightcorrected together (Holm)
Guardrailsup to fiveautomatic stop beyond the limit
Outlierscapped at the 99th percentileoptions: 95th percentile, 99th percentile, and 99.9th percentile

“No worse than” and “equivalent” can be decided too.

A redesign, a simplification, or a cost saving doesn’t need to win: it just needs to cost nothing. The test plan offers three objectives: “Do better”, “No worse than”, and “Equivalent”. The tolerated margin is chosen before launch (1%, 2%, 3%, 5%, and 10%), with no default value, and the duration follows from it. Such a test is read once, at the end, and doesn’t name a winner.

A retention metric counts visitors who return, or send an event, within a window after their exposure, up to day 90. As a primary metric, the window adds to the duration: for day 7 to day 14, 34 days instead of 20 days.

Add to cartbaseline rate 8.2%
MarginNo worse thanEquivalent
2%454 days608 days
3%202 days270 days
5%73 days98 days
10%19 days25 days

Durations computed by the engine, on the demo’s mobile product page traffic.

Margin, computed on your orders.

A revenue winner can sell more while earning less. Probant matches orders to exposed visitors and computes margin on the server, with each product’s cost.

Orders come from your back office.

Orders arrive through Shopify webhooks or the orders API, with their line items, refunds, and returns. Product costs are read from Shopify every night, imported as CSV, or sent with each line item. Payment and shipping fees are set once for the workspace.

  • Cost as of the order date: a price increase doesn’t rewrite the past
  • Neither cost nor margin goes through the script or the page
  • Without a connected back office, the page can send the purchase’s line items: Probant derives a gross margin, before returns
Margin of an ordercomputed on the server
Net revenueexcluding tax−Products keptat cost−Payment1.4% + €0.25−Shipping€6.90

Refunds deducted; an item returned to stock no longer counts in the cost.

No margin verdict without known costs.

Margin is shown only if at least 90% of matched revenue has a known cost, in a single currency. Below that, the report explains why and lists the products without a cost that weigh the most. In the demo, 96.7% of revenue is covered.

Cost coveragethreshold 90%
96.7% of revenue has a known costProducts without a cost, best sellers first
Christmas edition candle€7,7042.5% of revenue
Build-your-own gift box€2,4000.8% of revenue

A revenue winner can lose on margin.

The Margin screen replays your stopped tests, up to the 12 most recent, with the same rules. In the demo, “Free returns highlighted” gained +3.4% in revenue per visitor; the margin per visitor difference was -8.9% (range -12.5% to -5.1%). The discounts sold more while earning less.

  • three revenue winners out of six replayed tests
  • one loser on margin, one with no margin conclusion
  • Margin per visitor can also be a test’s primary metric
Replay on marginsix stopped tests
TestRevenueMarginReading
Countdown timer on flash sales+0.5%-12.0%Loses on margin
Free shipping from €60+5.8%0.0%Wins on revenue, margin not conclusive
Free returns highlighted+3.4%-8.9%Wins on revenue, loses on margin
Shipping costs shown on the product page+2.1%+4.1%Wins on revenue and margin
Complementary products in the cart+3.1%+2.5%Nothing settled
Strikethrough prices in red-3.4%-6.0%Loses on margin

In detail.

Sources
Event sent by the site, click, form submission, page visit, back-office orders, CRM conversions, Stripe subscriptions.
Per test
One primary metric, up to eight secondary metrics and five guardrails, locked at launch.
Corrections
Secondary metrics corrected together with the Holm method; ratios with the delta method, the visitor remaining the randomized unit.
CUPED
History of the same metric over the 14 days before the visitor’s first exposure.
Retention
A window from day N to day M after exposure, up to day 90.
Internal traffic
Up to 50 IP address ranges filtered out on receipt. No address is kept.
Costs
Shopify (nightly and on demand), CSV of up to 20,000 rows, or cost sent with each line item. One invalid value rejects the whole file.
Fees
Payment rate and fixed amount, shipping cost per order. Empty by default, so nothing is made up.

Frequently asked questions.

Do I need a developer to measure a conversion?

Not for a click, a form, or a page: the goal is set in Probant, on your page. For a value only your code knows, such as an amount, one probant.track line is enough.

What happens without product costs?

Nothing is estimated. The screens say that no cost is known and tests are judged on revenue. Margin appears as soon as costs cover enough revenue.

What about a lead generation or subscription site?

A qualified or signed lead can come from your CRM days after the visit, and a subscription is tracked in Stripe: net revenue, retention, cohort tracking. The dedicated pages cover both.

Next: Reports

See this feature in the demo, on the screen this page describes, or move on to the next one.

  • Open demo, no sign-up
  • Free to start, no overage charges
  • Database and compute in Amsterdam, with Scaleway