Two features shipped together in this release because they answer the same question: which campaign should a given visitor see?
A/B testing, decided on the server
You can now run two designs of the same campaign against each other. Each visitor is assigned to one variant, the assignment holds for that visitor, and the results are reported side by side in the campaign dashboard.
The assignment happens on the server rather than in the browser. That matters more than it sounds. Client-side splits are visible to anyone who looks, they break when a visitor blocks scripts, and they produce the flicker where one design appears and is replaced by another. None of that applies here.
- Two variants per campaign, assigned per visitor and held for that visitor
- Impressions, signups and conversion rate reported per variant
- No flicker, because nothing is swapped after render
- Stop the test at any point and the winning variant continues on its own
If you have to guess which popup works, you are running a design exercise rather than a campaign.
Targeting down to a collection
Display rules can now be scoped to specific collections rather than the whole storefront. A campaign can run on one collection, everywhere except one collection, or on any combination you configure.
The obvious use is seasonal: a discount offer on the collection you are actually promoting, and nothing on full-price ranges. The less obvious one is suppression — stores frequently want a campaign everywhere but a particular range, and until now that meant not running it at all.
Both without touching your theme
Neither feature requires a theme edit or a developer. Targeting rules and variants are configured in the app dashboard, and the storefront extension picks them up on the next page load.
What we left out
We deliberately did not add multivariate testing. Splitting traffic across four or five variants sounds more powerful and in practice means no variant reaches a conclusion on the traffic a typical store has. Two variants, decided cleanly, is the useful version of this feature.
