ab-testing-pricing について
Shopify、WooCommerce、BigCommerceやカスタムストアでの価格A/Bテストを計画・実施するためのスキルです。割り当て方法や指標、期間を適切に定め、誤った結論や顧客ごとの価格不一致を防ぎます。
主な機能
- 01プラットフォーム別の手法選択
- 02仮説・指標・トラフィック比率の設定
- 03価格バリアントと訪問者割り当て
- 04売上・コンバージョン・有意性の確認
- 05実験リスクとよくある問題の確認
活用シーン
- 01全体の価格変更前に売上影響を検証
- 02顧客セグメントごとの価格感度を比較
- 03複数商品の価格を並行してテスト
- 04可逆的な価格実験の記録と制限
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill ab-testing-pricingインストール後、Claude Code で/ab-testing-pricingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/conversion-event-tracking-and-variant-id/criteria.jsontask.mdevals/database-schema-and-deterministic-varian/criteria.jsontask.mdevals/statistical-significance-calculation-and/criteria.jsontask.md詳細
価格の A/B テスト
概要
価格の A/B テストでは、恒久的な変更を適用する前に、訪問者の一部にはある価格を、別の一部には異なる価格を提示するという、管理された実験を実施できます。これは最も効果の高い最適化の一つですが、リスクも非常に大きい手法です。テストの実施方法が不適切だと、顧客の信頼を損ない、誤解を招くデータが得られます。ほとんどのプラットフォームには価格の A/B テスト機能が標準搭載されていないため、専用アプリを使うか、独自に実装する必要があります。このスキルでは、主要な各プラットフォームで価格実験を適切に設定する方法を説明します。
このスキルを使う場面
- 価格をサイト全体に展開する前に、価格変更を裏付けるデータに基づいた証拠が必要な場合
- 顧客セグメントや商品カテゴリーごとに、価格感度をテストする場合
- 新しい価格モデル(例:$49.99 から $45.00 への変更)が収益に与える影響を評価する場合
- 互いに影響を与えずに、異なる商品で複数の価格実験を同時に実施する場合
- 規制や倫理上の要件により、価格テストの記録、期間の制限、取り消しが求められる場合
基本的な手順
ステップ 1:マーチャントのプラットフォームを特定し、適切な方法を選ぶ
| プラットフォーム | 推奨ツール | 理由 |
|---|---|---|
| Shopify | Intelligems または Neat A/B Testing アプリ | 価格バリアントの割り当て、セッションごとの割り当て維持、統計レポートに対応した、カスタムコード不要の Shopify ネイティブアプリです |
| Shopify Plus | Intelligems + Shopify Functions | Shopify Functions によってサーバー側で価格を上書きできるため、Plus で最も信頼性の高い方法です |
| WooCommerce | Nelio A/B Testing プラグインまたは Split Hero | WooCommerce の価格テストに対応した、WordPress ネイティブの実験用プラグインです |
| BigCommerce | Intelligems(BigCommerce に対応)または Google Optimize の代替ツール | BigCommerce の Price Lists API では、顧客セグメントごとにバリアント固有の価格を設定できます |
| カスタム/ヘッドレス | 独自のセッション振り分けとプラットフォームの価格 API を使用して構築 | 完全に制御できますが、統計データの追跡を独自に実装する必要があります |
ステップ 2:実験を設計する
ツールを設定する前に、次のパラメーターを定義してください。
- 仮説 — 「価格を $49.99 から $44.99 に下げると、訪問者あたりの収益が 5% 以上増加する」
- 主要指標 — コンバージョン率だけでなく、訪問者あたりの収益(RPV)を使います。価格を下げるとコンバージョン率は上がりますが、注文あたりの収益は減る可能性があります
- トラフィックの分割 — 50/50 が標準です。同じ商品で同時に実施するバリアントは 2 つまでにしてください
- 最短期間 — 平日と週末の変動を把握するため、少なくとも 7 日間実施します。理想的には 14 日間です
- 最小サンプルサイズ — 有意差計算ツールを使って算出します(abtestguide.com を利用してください)。勝者を決定する前に、各バリアントで少なくとも 100 件のコンバージョンを目指します
- 除外ルール — 旧価格で購入した既存顧客には、実験の途中で新価格を提示しないでください
ステップ 3:プラットフォームごとの設定
Shopify
Option A:Intelligems(ほとんどのマーチャントにおすすめ)
Intelligems は、Shopify 向けの価格テストアプリの中でも有力なアプリです。セッションの一貫性や統計的有意性に対応し、Shopify のチェックアウトとネイティブに連携します。
- Shopify App Store から Intelligems をインストールします
- Intelligems → Tests → New Price Test に移動します
- テストする商品を選択します
- バリエーション価格を設定します(例:$49.99 対 $44.99)
- トラフィックの分割比率を設定します(50/50 を推奨)
- サンプルサイズ計算ツールに基づいて、開始日と終了予定日を設定します
- Intelligems は永続的な Cookie を使って訪問者をバリエーションに割り当て、ダッシュボードで RPV、コンバージョン率、統計的有意性をレポートします
設定する主な項目:
- Sticky bucketing — 同じ訪問者には常に同じ価格が表示されるようにします(デフォルトで有効)
- Returning customer exclusion — Advanced Settings で、元の価格で以前に商品を購入したことのある顧客を除外します
- Minimum detectable effect — 価格変更を正当化する最低限の収益変化を設定します(例:5%)
Option B:Neat A/B Testing
シンプルな価格分割テストだけが必要な場合に適した、より軽量な代替手段です。
- App Store から Neat A/B Testing をインストールします
- 特定の商品またはコレクションを対象とするテストを作成します
- 価格のバリエーションとトラフィックの分割比率を設定します
- Neat のダッシュボードで結果を確認します
Option C:Shopify Plus — Shopify Functions(上級者向け)
細かく制御する必要がある Plus マーチャント向け:
- Shopify Function(Discount Function タイプ)を作成します
- 関数はカートのコンテキストと顧客 ID を受け取ります
- 顧客 ID/セッション ID に対して決定論的ハッシュを使用し、バリエーションに割り当てます
- 価格差と同額の固定額または割合による割引を適用します
- Shopify の注文 Webhook とカスタム分析ストアを通じてコンバージョンを追跡します
WooCommerce
Option A:Nelio A/B Testing プラグイン
- WordPress プラグインディレクトリから Nelio A/B Testing をインストールします
- Nelio A/B Testing → Add New Experiment → WooCommerce Product Experiment に移動します
- 商品を選択し、代替価格を設定します
- コンバージョン目標(その商品の購入)を設定します
- プラグインがセッションを追跡し、統計的有意性を含むコンバージョン率をレポートします
Option B:Google Optimize(サービス終了)の代替手段を使った手動設定
Google Optimize は 2023 年にサービスを終了したため、次のサービスをご検討ください。
- VWO(Visual Website Optimizer) — JavaScript による WooCommerce の価格テストに対応しています
- AB Tasty — WooCommerce とネイティブに連携するエンタープライズ向けサービスです
- Convert.com — WooCommerce に対応し、サーバーサイドテストもサポートしています
WooCommerce に関する重要な注意事項:クライアントサイドでの価格変更(JavaScript による変更)は表示上のものであり、実際のチェックアウト価格は変わりません。A/B テストツールが、表示価格だけでなく、WooCommerce の商品レベルまたは woocommerce_get_price フィルターを通じて価格を変更することを必ず確認してください。
BigCommerce
- BigCommerce の Price Lists 機能(Plus 以上で利用可能)を使用します。
- Products → Price Lists → Add Price List に移動します
- 「treatment」価格の価格リストを作成します
- 価格リストを特定の顧客グループに割り当てます
- 顧客を顧客グループに割り当て、コントロールグループ/トリートメントグループに分けます
- BigCommerce の組み込み分析機能、またはカスタムディメンションを設定した Google Analytics でコンバージョンを追跡します
または、訪問者の振り分けを自動管理する Intelligems for BigCommerce を使用します。
Custom / Headless
ヘッドレスのストアフロントでは、セッションの振り分け、価格の決定、コンバージョンの追跡を実装する必要があります。
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];
コンバージョンを追跡し、統計的有意性を計算します。
// 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 };
}
勝者が決まったら、プラットフォームの価格設定 API(Shopify Admin API、BigCommerce Catalog API)を使って価格を更新します。
ステップ 4:実験を監視して終了する
実験中は、以下の指標を追跡します。
| 指標 | 確認場所 |
|---|---|
| 訪問者あたりの収益(RPV) | Intelligems のダッシュボード、または注文データから計算 |
| バリエーションごとのコンバージョン率 | A/B テストツールの分析機能 |
| 統計的有意性(p 値) | A/B テストツール。p < 0.05 を目指します |
| バリエーションごとのサンプルサイズ | 結論を出す前に、事前に計算した最小数に達していることを確認します |
勝者を決定するのは、次の条件をすべて満たした場合に限ります。
- 事前に計算した最小サンプルサイズに達している(それより前に決定しない)
- p 値が 0.05 未満である
- 実験を少なくとも 7 日間実施している
勝者を決定したら、商品の価格を恒久的に更新して実験を終了します。
ベストプラクティス
- コンバージョン率だけでなく、訪問者あたりの収益(RPV)を使います — 価格を下げるとコンバージョン率は上がっても、収益が減る場合があります。RPV なら全体像を把握できます
- 割り当ての固定を必須にします — セッションにバリエーションを割り当てたら、常に同じ価格を表示します。価格が一貫しないと信頼を損ない、結果も歪みます
- 最小サンプルサイズを事前登録します — 実験を始める前に、必要なコンバージョン数を決めます。p < 0.05 になった時点ですぐに終了する(途中で結果を確認する)と、偽陽性率が上がります
- 既存顧客を除外します — 既存顧客に、購入時より安い価格を見せると、苦情や解約につながります
- 1 つの商品につき同時に実施する実験は 1 つだけにします — 同じ商品で実験を重複させると相互作用が生じ、結果を解釈できなくなります
- プロモーション中は実験を一時停止します — サイト全体のセールやマーケティングキャンペーンは、価格実験の結果に交絡をもたらします
- すべての注文でバリエーションの割り当てを記録します — 後から収益の帰属を監査できるよう、注文のメタデータにバリエーション ID を保存します
よくある落とし穴
| 問題 | 解決策 |
|---|---|
| ページを更新すると訪問者に異なる価格が表示される | A/B テストツールで、割り当てに永続的な Cookie またはサーバー側のセッションストレージが使用されていることを確認します |
| 結果を途中で確認し、初めて p < 0.05 になった時点で終了してしまう | 最小コンバージョン数(例:バリエーションあたり 200 件)を事前登録し、その数に達してから有意性を確認します |
| 価格変更が商品ページにのみ反映され、チェックアウトには反映されない | テストツールが表示価格だけでなく実際の価格を変更していることを確認します。カートとチェックアウトでも検証します |
| ボットによって訪問者数が水増しされ、結果が歪む | インプレッションを記録する前にボットのトラフィックを除外します。ほとんどの A/B テストツールにはボットフィルタリングが組み込まれています |
| フラッシュセール中に実験が実施される | サイト全体のプロモーション中は、すべての価格実験を一時停止します |
関連スキル
- @dynamic-pricing
- @price-rules-engine
- @coupon-management
- @discount-engine
- @demand-forecasting