Settle the express checkout argument with your own numbers.
Checkoutlab A/B tests the payment methods in your Shopify checkout. Hide the express row, hide a method, or reorder the list, per market or across all of them. Read conversion per arm with a significance test next to it, then lock the winner in permanently.
Checkoutlab›Experiments
| Experiment | Type | Markets | Status | Checkouts | Conversion | Outcome |
|---|---|---|---|---|---|---|
| Express checkout global | Hide express checkout | All markets | Running | 1,284 | % | No clear winner yet |
| E2E express NL | Hide express checkout | NL | Paused | 12 | % | Not enough data |
| E2E reorder NL | Reorder payment methods | NL | Stopped | 0 | n/a | No data yet |
| E2E hide methods global | Hide payment methods | All markets | Stopped | 0 | n/a | No data yet |
One checkout, three things worth testing.
All three run on the same Shopify Function, so switching from one to the other costs nothing. What differs is which surface of the checkout the variant touches.
Hide express checkout
Removes the wallets from the express row at the top of checkout. They stay available in the payment method list below, so no payment option is lost. Needs Shopify Plus.
Hide payment methods
Removes payment methods from checkout entirely, in every placement. Use it to find out whether an option is pulling its weight in a market.
Reorder payment methods
Puts the methods you choose at the top of the list, in the order you set. Wallets cannot be reordered by Shopify, so this works on the regular payment method list.
The Netherlands is not Germany, and your checkout knows it.
Wallet use, preferred payment methods and trust in a one-tap checkout differ per country, so a single answer for every market is usually the average of two opposite ones. Checkoutlab targets markets directly, and lets a narrower experiment take over without anything being stopped.
Experiments›Express checkout global
Changes
Hides express row
Runs in
All markets
Traffic split
50 / 50
Measured
1,284 checkouts
Every experiment is set per market
An experiment names the markets it runs in, straight from your Shopify markets, and the app shows that back on the experiment and in the list. Everyone outside the selection keeps the checkout they already had, so a test in the Netherlands costs you nothing in the markets you are not asking about.
A rule is an experiment you redeemed: the winning configuration, applied to everyone in the markets it targets. Rules follow the same precedence as experiments, one rung lower: a running experiment on the same part of the checkout and the same market takes over until it is finished.
Nothing locked in yet
Redeem a finished experiment to create one.
The most specific market wins
Run a broad experiment and a sharper one at the same time. Where they meet, the narrower market targeting takes that visitor and the broad one keeps everywhere else. Nothing is blocked, nothing is paused, and the app shows you which experiment is actually running where.
The variant runs inside Shopify. The measurement runs on webhooks.
No second checkout, no redirect, no script that rewrites the page after it loads. A theme app embed assigns the visitor, a payment customization function carries out the change, and two order webhooks count the outcome.
Assignment on the storefront, the variant in the checkout
A theme app embed puts every visitor in an arm with a deterministic hash and writes it to a cart attribute. In the checkout, a payment customization function reads that attribute and hides or moves what the experiment says. The same visitor keeps the same arm across pages and sessions. When they have refused analytics consent, the app falls back to the cart token and stores nothing at all.
Change
Control sees
Checkout unchanged
Variant sees
No express row; wallets stay in the payment list
Wallets to hide
Needs Shopify Plus. On other plans the wallet also disappears from the payment list.
Measured from webhooks, so ad blockers don't eat your data
Checkoutlab has no web pixel. The denominator comes from the checkouts/create webhook and the numerator from orders/create, and both payloads carry the assignment. A pixel misses every checkout the browser never reports (a closed tab, a blocker, Shop Pay on another origin), and that loss is not guaranteed to fall equally on both arms.
Conversion
%Checkouts
2,998
Orders
1,420
Revenue
€99,467
AOV
€70.05
Then make the winner permanent
A finished experiment can be redeemed. Redeeming the variant turns its configuration into a rule: same type, same methods, same markets, now applied to 100% of the visitors it targets, and the experiment stops. Redeeming the control just stops it, because the variant lost and there is nothing to apply. Most A/B tools hand you a number and leave the implementation to you; this is the part that usually never gets done.
Ends the experiment. Lock in the variant to make it a permanent rule, or keep control to leave checkout as it was.
Control
45.9%
Variant
47.3%
Conversion · 1,284 checkouts · 598 orders
A verdict, not a dashboard to interpret yourself.
Conversion here is orders divided by checkouts, so the baseline sits around 50% instead of around 2%. That means an experiment reaches a verdict on far less traffic than a session-based one.
Experiments›Express checkout global · results
OutcomeNo clear winner yet
The difference of 1.8% could still be chance (p = 0.64). Keep it running.
Actual split
Variant 49.8% · Control 50.2% of checkouts
Set to 50% variant / 50% control
| Arm | Checkouts | Orders | Conversion | Revenue | AOV | vs control |
|---|---|---|---|---|---|---|
| Control Baseline | 1,506 | 707 | % | €49,311 | €69.75 | — |
| Variant Express row hidden | 1,492 | 713 | % | €50,156 | €70.34 | +1.8% |
Significance, in words
A two-sided two-proportion z-test at α = 0.05, sized for 80% power. Below 100 checkouts in an arm the page says so rather than showing you a difference that one order could flip.
Per market and per device
A variant that wins on mobile and loses on desktop averages out to “no difference”. The breakdowns show both, and say plainly that a segment is a lead to test next, not a result to ship.
A sample ratio check
If the real split differs from the configured one at p < 0.001, the page tells you not to trust the comparison. An SRM means the assignment or the measurement is broken, however pretty the difference looks.
Several experiments at once
Nothing is ever blocked. Where two experiments want the same surface of the checkout, the more specific market targeting wins and the app shows you exactly where each one actually applies.
Conditions on the cart
Narrow an experiment to carts over a threshold, or to one currency, with up to five conditions combined with And or Or. Evaluated at checkout, where a cart total is finally real.
No customer data collected
No names, no email addresses, no customer IDs, no addresses, no IPs. The app stores the arm, the market, the device class, the order total, and two Shopify identifiers so an erasure request can be acted on.
Questions merchants ask first.
If yours isn't here, the documentation goes deeper, and hello@root-agency.nl answers within one business day.
Only to hide the express checkout row. That uses a placement Shopify offers on Plus; on a lower plan Shopify ignores the placement and the wallet disappears from the payment method list entirely. That is a different experiment than the one you meant to run, so the app flags it. Hiding and reordering regular payment methods work on every Shopify plan.
Nothing until something reaches a shopper. Building experiments, editing them and previewing both arms on your storefront are free for as long as you like. Putting one live is the step that needs a plan, and it is also the moment results start arriving. The first time you do it, a 7-day trial opens: 1 experiment at a time, and no locking a winner in, because a rule keeps running after the trial ends. See Pricing.
The variant is a Shopify Function, which runs on Shopify's own infrastructure as part of the checkout, so there is no call to our servers while a shopper is paying. The payment customization switches itself off as soon as nothing is live, so nothing tags along for nothing.
Not when you hide the express row: the wallets stay in the payment method list, so every way to pay is still there. Hiding a payment method does remove it for the variant arm, which is the point of the experiment, so pick the method and the market deliberately and walk through both arms in the preview before you start.
Nothing breaks and nothing is refused. Experiments only meet when they touch the same surface, the express row or the payment method list. There the most specific market targeting wins for that visitor, with an experiment beating a locked-in rule at equal scope. The loser is not stopped; it keeps running wherever it does win, and the app shows you where that is.
The arm, the market handle, the device class, the order total and currency, and two Shopify identifiers (a checkout token and an order ID) so a deletion request can be acted on. No name, email, address, IP or customer ID is ever requested or stored. Rows are purged after 400 days by default, and you can set that anywhere from 30 days upwards in Settings. See Security & data processing.
The payment customization stops, so your checkout returns to normal for every visitor, locked-in rules included. Shopify sends us an erasure request 48 hours later and everything belonging to your shop is deleted. If you would rather not wait, Settings has a Delete all data button that does it immediately.
Stop guessing what the express row costs you.
Install Checkoutlab, switch on the theme app embed, and build your first experiment for free. You only start paying when it goes live.