Route—Route Shipping Protection
The dark pattern had to go. Conversion went up anyway.
Package protection is Route’s core revenue line, sold inside the checkout of the merchant brands that install it. Attach rate leaned on a preselected checkbox, and Shopify was moving to ban exactly that as a dark pattern. I redesigned the widget to present protection as part of the shipping method rather than as a bolt-on add-on. The checkbox came out, conversion moved from 56% to 71%, and the projection was roughly $15M in additional annual revenue if every merchant adopted it.
- 56% → 71%
- Checkout conversion
- +25%
- Relative lift
- ~$15M
- Potential additional annual revenue
The Problem—The whole company rode on one checkbox
The entire business model came down to a single moment: a shopper, mid-checkout, in someone else’s store, deciding whether to add protection to their order.
We converted 56% of them, and a preselected checkbox was doing a lot of that work. At Route’s scale a single point of checkout conversion was worth millions a year.
Then Shopify started cracking down on dark patterns, and a box that opts a shopper in while they are looking somewhere else is squarely one of them. Unchecking it by default was the honest answer and an unaffordable one.
Unchecking the box was the right thing to do.
It was also going to cut our attach rate in half.

Before
Research—We were arguing with the wrong objection
The obvious answer was persuasion: better copy, a clearer icon, a sharper value prop. So we tested it rather than assuming it. A series of A/B tests ran copy against copy, more explanation against less, different wording for the same coverage. The shortest and simplest version won every time.
That is a strange result if shoppers are weighing an offer, and an obvious one if they are not reading it. The preselected checkbox pointed the same way. It performed too well for a line people were stopping to consider.
- Sitting on its own line below shipping, protection wore the visual grammar of an extended warranty at an electronics counter.
- That is a pattern shoppers are used to declining, and they decline it fast.
- The offer was being sorted, not evaluated. No amount of copy fixes a decision made before the copy is read.
They were not rejecting protection.
They were rejecting an add-on.
The Solution—Stop selling it, start shipping it
01—Move protection into a decision shoppers already expect
Nobody resists choosing a shipping method. It’s required, familiar, and the tradeoff is obvious. So protection went into that choice instead of next to it.
02—Price the option, not the add-on
Instead of Economy at $7.00 plus a separate $2.15 line, the widget offers “Economy with Shipping Protection, $9.15” beside plain Economy. Same price, same coverage, entirely different question.
03—State the coverage on the option itself
Damage, loss, or theft, sitting on the line a shopper is already reading rather than behind a tooltip.
04—Be honest about what a default is
A preselected shipping method is still a default, and it still benefits from inattention. What changed is what the shopper is defaulted into: a choice they have to make anyway, both prices visible, the cheaper option one tap away. That is a better deal than a charge appended to a total they had already accepted, and it is a claim I can defend.
05—Give merchants the switch
Every merchant set their own default, and any of them could leave the free option selected instead. That cost us attach rate, and it meant nobody could claim a pattern had been forced on their store. Most kept shipping protection as the default.

Merchants control their own shipping methods, and can keep the free option selected by default.
Outcome—What happened
The preselected checkbox came out, which is what the policy change demanded, and attach rate went up rather than down.
- 71%
- Conversion, from 56%
- ~$15M
- Potential additional annual revenue
A note on the numbers
The 71% came from a test across three merchants, run shortly before I left Route. I quote it as a strong early result rather than a settled figure, and the revenue number is what that rate would be worth at full adoption, not what was booked. I have not had access to the data since.
Learnings—Key takeaways
Check the question before improving the answer
Better copy was the obvious answer and it was the wrong one. The win came from changing what category the thing appeared to belong to. When a metric won’t move, verify you’ve correctly identified what the user thinks they’re being asked.
Constraints kept it honest
The constraint was not taste, it was Shopify tightening its rules while our number sat on the thing being banned. Defending the checkbox would have bought a little time. Giving it up forced the better design, and the better design beat what we were protecting.
Do the hard thing before it is forced on you
We had wanted protection inside the shipping options from the start. It was technically difficult, so it kept losing to easier work on the widget until a policy change made it unavoidable. Doing it sooner would have compounded the attach rate we eventually gained and put real distance between us and anyone still selling protection as an add-on.
Next

