skills/pricing-promotions/ab-testing-pricing/SKILL.md
Test different price points with proper statistical rigor to find the revenue-maximizing price while tracking conversion rate and margin impact
npx skillsauth add finsilabs/awesome-ecommerce-skills ab-testing-pricingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Price A/B testing lets you run controlled experiments — showing one price to a segment of visitors and a different price to another — before committing to a permanent change. This is one of the highest-leverage optimizations available, but also one of the riskiest: a poorly executed test destroys customer trust and produces misleading data. Most platforms do not have native price A/B testing, so this requires either a dedicated app or a custom implementation. This skill walks you through setting up price experiments correctly on each major platform.
| Platform | Recommended Tool | Why | |----------|-----------------|-----| | Shopify | Intelligems or Neat A/B Testing app | Native Shopify apps that handle price variant assignment, session stickiness, and statistical reporting without custom code | | Shopify Plus | Intelligems + Shopify Functions | Shopify Functions allow server-side price overrides — the most reliable approach on Plus | | WooCommerce | Nelio A/B Testing plugin or Split Hero | WordPress-native experiment plugins with WooCommerce price testing support | | BigCommerce | Intelligems (supports BigCommerce) or Google Optimize alternatives | BigCommerce's Price Lists API can set variant-specific prices per customer segment | | Custom / Headless | Build with your own session bucketing + platform pricing API | Full control but requires custom statistical tracking |
Before setting up any tool, define these parameters:
Option A: Intelligems (recommended for most merchants)
Intelligems is the leading Shopify app for price testing. It handles session stickiness, statistical significance, and integrates with Shopify's checkout natively.
Key settings to configure:
Option B: Neat A/B Testing
A lighter-weight alternative if you only need simple price split tests:
Option C: Shopify Plus — Shopify Functions (advanced)
For Plus merchants who need full control:
Option A: Nelio A/B Testing plugin
Option B: Manual with Google Optimize (sunsetted) replacements
Since Google Optimize was discontinued in 2023, consider:
Important WooCommerce note: Client-side price changes (JavaScript-based) are cosmetic only — they do not change the actual checkout price. Always ensure your A/B testing tool changes the price at the WooCommerce product level or through the woocommerce_get_price filter, not just the displayed number.
Alternatively, use Intelligems for BigCommerce which manages the visitor bucketing automatically.
For headless storefronts, you need to implement session bucketing, price resolution, and conversion tracking:
import crypto from 'crypto';
// Deterministic variant assignment by session ID
function assignVariant(
experimentId: string,
sessionId: string,
variants: { id: string; weight: number }[] // weights must sum to 100
): string {
const hash = parseInt(
crypto.createHash('sha256')
.update(`${experimentId}:${sessionId}`)
.digest('hex')
.slice(0, 8),
16
) % 100;
let cumulative = 0;
for (const variant of variants) {
cumulative += variant.weight;
if (hash < cumulative) return variant.id;
}
return variants[variants.length - 1].id;
}
// Usage: get the price for a visitor
const variantId = assignVariant('exp_price_widget_pro', sessionId, [
{ id: 'control', weight: 50 }, // $49.99
{ id: 'treatment', weight: 50 }, // $44.99
]);
const prices = { control: 4999, treatment: 4499 }; // cents
const priceForVisitor = prices[variantId];
Track conversions and calculate statistical significance:
// Two-proportion z-test for statistical significance
function zTest(
controlConversions: number,
controlVisitors: number,
treatmentConversions: number,
treatmentVisitors: number
): { pValue: number; significant: boolean } {
const p1 = controlConversions / controlVisitors;
const p2 = treatmentConversions / treatmentVisitors;
const pPooled = (controlConversions + treatmentConversions) / (controlVisitors + treatmentVisitors);
const se = Math.sqrt(pPooled * (1 - pPooled) * (1 / controlVisitors + 1 / treatmentVisitors));
if (se === 0) return { pValue: 1, significant: false };
const z = Math.abs((p2 - p1) / se);
// Approximate p-value (two-tailed)
const pValue = 2 * (1 - normalCDF(z));
return { pValue, significant: pValue < 0.05 };
}
Use your platform's pricing API (Shopify Admin API, BigCommerce Catalog API) to push price updates once a winner is declared.
Track these metrics during the experiment:
| Metric | Where to find it | |--------|-----------------| | Revenue per visitor (RPV) | Intelligems dashboard; or calculate from your orders data | | Conversion rate by variant | Your A/B tool's analytics | | Statistical significance (p-value) | Your A/B tool; aim for p < 0.05 | | Sample size per variant | Ensure you hit your pre-calculated minimum before concluding |
Declare a winner only when:
After declaring a winner, update the product price permanently and end the experiment.
| Problem | Solution | |---------|----------| | Visitor sees different price on refresh | Ensure your A/B tool uses persistent cookies or server-side session storage for bucketing | | Peeking — stopping at first p < 0.05 | Pre-register a minimum conversion count (e.g., 200 per variant) and only check significance after reaching it | | Price change only affects the product page, not checkout | Ensure the test tool changes the actual price, not just a displayed number — verify in the cart and checkout | | Bots inflate visitor counts and skew results | Filter bot traffic before recording impressions; most A/B tools have bot filtering built in | | Experiment runs during a flash sale | Pause all price experiments during site-wide promotions |
tools
Let shoppers save products to a wishlist, share it with friends, and get notified when saved items come back in stock or drop in price
development
Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode
development
Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch
development
Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion