What we refuse to do
Nothing leaves without a reason
Merchants are drowning in metrics they cannot act on and estimates they cannot trust. These are the rules we hold ourselves to, and each one is enforced in the product, not only written here.
- Reviewed 6 October 2026
A number next to a dollar sign is a promise
Analytics tools are full of numbers nobody can defend: estimated impact, projected lift, opportunity size. They are guesses in the costume of measurement, and merchants have learned to discount all of them.
So the rule is enforced in code, not in copy. The free scan prints no dollar figure, because a crawl has seen no shopper and no order. An estimate appears only once a store’s own sessions and orders are connected, and then as a range with its inputs shown. A figure is called revenue only when a 10% holdback on real orders has measured it. No published merchant results, and no receipts to show yet.
Never touch the live store on a hunch
Software that edits a storefront because it thinks it knows better is a liability, not a product. Nothing changes on a store until a person approves it, and the approval is recorded with who gave it and why.
Liftable never writes theme files, live or duplicate. A page change can only be shown through its theme app extension, a block the merchant switches on in the theme editor; shipping and discount tests run as Shopify Functions. The install never asks for permission to write themes, so the rule is not a preference: it is a permission the product does not have.
The agent proposes; policy decides; a runtime executes
Anything that would change a merchant’s store goes through one policy layer: an autonomy ladder per surface, guardrails (a margin floor, blackout windows, protected pages, a maximum number of live tests, a stop rule), and an approval. The model that drafts a change cannot start it or approve its own work, and a test that reached a live theme without a recorded, approved decision would be a top-severity bug, not a feature.
Refuse the test you cannot read
Most CRO tests read inconclusive because they were never going to reach an answer on that store’s traffic. A power check runs before every test and refuses one the store cannot read in a reasonable time, saying how many sessions it would need. Tests are sequential, so reading them often is free; they are never called early, and a p-value for a fixed-horizon test is never shown.
One store cannot see another
Every query is scoped to one store, by the database itself and not only by our code. There are no cross-store benchmarks of revenue, orders, sessions or conversion rates, and there will not be. The only thing pooled is the anonymised effect size of finished tests, kept only where enough stores and tests contributed that none can be recognised, and a store can opt out.
Say what you did not do
If a scan could not reach a page, it says so instead of quietly dropping the check. If a fix has no template the theme app extension can show, approving it records the decision and builds nothing, and the page says exactly that. Every comparison page carries a status chip on every Liftable cell, and some of them say ‘not built yet’.
The whole product is an argument that its numbers can be trusted. That argument fails the first time anything is rounded up.
Where each rule lives
Last reviewed against the product on 6 October 2026.
Scan your store.
See where your store is losing revenue and what to fix first. It is free, takes about a minute, and needs no install.