social-proof-widgets について
ECストアに購入通知、訪問者数、レビュー徽 badge、在庫表示などのソーシャルプルーフを追加するスキルです。プラットフォーム別の設定方法と、ウィジェットがコンバージョンに与える影響の検証を案内します。
主な機能
- 01ストアのプラットフォーム別ツール選定
- 02購入・訪問者通知
- 03レビュー徽章と低在庫表示
- 04表示対象とルールの設定
- 05A/Bテストの案内
活用シーン
- 01商品ページへの最近の購入通知の追加
- 02訪問者数やレビュー徽章の表示
- 03実在庫に基づく低在庫メッセージの表示
- 04全体展開前のウィジェット効果の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill social-proof-widgetsインストール後、Claude Code で/social-proof-widgetsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/dom-safe-purchase-notification-toast-wid/criteria.jsontask.mdevals/review-badge-with-schema-org-markup-and-/criteria.jsontask.mdevals/social-proof-data-api-with-redis-visitor/criteria.jsontask.md詳細
ソーシャルプルーフウィジェット
概要
最近の購入通知、訪問者数、レビューのバッジ、在庫僅少のインジケーターなどのソーシャルプルーフウィジェットは、購入への不安を軽減し、商品ページのコンバージョン率を10~30%向上させます。ShopifyやWooCommerceでは、専用アプリ(Fomo、TrustPulse、ProveSource)を使えば、コードを書かずにこれらのウィジェットを導入できます。カスタムウィジェットの構築が必要なのは、特定のデザイン要件があるヘッドレスストアの場合に限られます。
このスキルを使う場面
- 商品ページへのアクセス数は多いものの、コンバージョン率が低い場合
- レビューがなく、ほかの信頼性を示す要素が必要な新商品の販売を開始する場合
- ソーシャルプルーフ要素がCVRに大きな影響を与えるか検証する場合(A/Bテストが必要です)
- リアルタイムの購入通知を追加したい場合
- 実際の在庫データに基づく在庫僅少の緊急性表示を構築する場合
基本手順
ステップ1:適切なソーシャルプルーフツールを選ぶ
| プラットフォーム | 最適な用途 | Shopify | WooCommerce | BigCommerce | 価格 |
|---|---|---|---|---|---|
| Fomo | リアルタイムの購入通知 | App Store | プラグイン | JS 経由 | $19+/mo |
| TrustPulse | 最近の購入+リアルタイムの訪問者数 | — | プラグイン | JS 経由 | $5+/mo |
| ProveSource | あらゆるプラットフォーム、高度なカスタマイズ | App Store | JS 経由 | JS 経由 | 無料プラン、$20+/mo |
| Judge.me | レビュー数バッジ+購入確認済みバッジ | App Store | プラグイン | App Marketplace | 無料プラン、$15/mo |
| カスタム | ヘッドレスストア、特定のデザイン要件 | API 経由 | API 経由 | API 経由 | 開発費用 |
推奨: ShopifyではFomo(購入通知に最適)、WooCommerceではTrustPulseを使います。レビューのバッジには、既存のレビューサービス(Judge.me、Yotpo)を使いましょう。これらのサービスには、星評価のバッジが標準で含まれています。
ステップ2:ソーシャルプルーフウィジェットを設定する
Fomoを使ったShopify
- Shopify App StoreからFomoをインストールします
- Fomo → Events → Shopify Ordersに移動します。Fomoがストアの最近の注文を自動的にインポートします
- 通知テンプレートを設定します:
- 表示内容:名と都市(例:「Sarah from Chicago just purchased…」)
- 商品名と画像を表示します
- 過去48時間以内の情報を表示します
- Fomo → Designに移動し、通知トーストの位置とスタイルをカスタマイズします(デフォルトは左下です)
- Fomo → Rulesに移動し、以下を設定します:
- 商品ページのみで表示します(URLに
/products/を含むページ) - カートページとチェックアウトページでは非表示にします
- ウィジェットを表示する前に、最低3件の通知を表示します(イベントが1件のみのウィジェットが表示されるのを防ぎます)
- 商品ページのみで表示します(URLに
- Fomo → A/B Testingに移動して、ウィジェットと対照群でスプリットテストを実施します。サイト全体で有効にする前に、必ず効果を測定してください
TrustPulseを使ったWooCommerce
- WordPressのプラグインディレクトリからTrustPulseをインストールします
- TrustPulse → Create Campaignに移動し、Recent Activityを選択します
- 以下を設定します:
- データソース:WooCommerce Recent Orders
- 表示内容:顧客名、都市、購入商品
- 表示対象:過去7日間の注文
- ターゲティングルールを設定します。商品ページとショップページのみで表示し、チェックアウトページは除外します
- 訪問者数ウィジェットを表示するには、2つ目のOn Fireキャンペーン「現在X人がこの商品を閲覧中」を作成します。表示前の訪問者数の最低しきい値を5に設定します
ProveSourceを使ったBigCommerce
- ProveSourceに登録し、Storefront → Script ManagerからストアにJavaScriptスニペットを追加します
- 連携設定を使って、BigCommerceストアをProveSourceに接続します
- ProveSourceのダッシュボードから、最近の購入通知と訪問者数ウィジェットを設定します
カスタム/ヘッドレス
ヘッドレスストアでは、ソーシャルプルーフAPIとクライアントウィジェットを構築します:
// GET /api/products/:id/social-proof
// Returns real data only — never fabricate counts
export async function getProductSocialProof(req: Request, res: Response) {
const productId = req.params.id;
const [recentOrders, reviewSummary, stockLevel] = await Promise.all([
db.orderLineItems.findAll({
where: { productId, createdAt: { gte: subHours(new Date(), 48) } },
include: ['order.shippingAddress'],
limit: 10,
}),
db.productReviews.aggregate(productId),
db.productVariants.findMinStock(productId),
]);
// Anonymize PII — first name and city only
const recentPurchases = recentOrders.map(item => ({
firstName: item.order.shippingAddress.firstName,
location: `${item.order.shippingAddress.city}, ${item.order.shippingAddress.stateCode}`,
timeAgo: formatTimeAgo(item.createdAt),
productName: item.productName,
}));
return res.json({
recentPurchases,
reviews: { average: reviewSummary.avgRating, total: reviewSummary.total },
stockLevel: {
isLow: stockLevel > 0 && stockLevel <= 5,
quantity: stockLevel,
isSoldOut: stockLevel === 0,
},
});
}
クライアント側の購入通知トースト。XSSを防ぐためにDOMメソッドを使用します:
class SocialProofToast {
private queue: Array<{ firstName: string; location: string; productName: string; timeAgo: string }> = [];
private isShowing = false;
async init(productId: string) {
const response = await fetch(`/api/products/${productId}/social-proof`);
const data = await response.json();
this.queue = data.recentPurchases.slice(0, 5);
this.showNext();
}
private showNext() {
if (this.queue.length === 0 || this.isShowing) return;
const purchase = this.queue.shift()!;
this.isShowing = true;
const toast = document.createElement('div');
toast.className = 'sp-toast';
const strong = document.createElement('strong');
strong.textContent = `${purchase.firstName} from ${purchase.location}`; // textContent prevents XSS
const span = document.createElement('span');
span.textContent = ` purchased ${purchase.productName}`;
const time = document.createElement('time');
time.textContent = purchase.timeAgo;
toast.appendChild(strong);
toast.appendChild(span);
toast.appendChild(time);
document.body.appendChild(toast);
setTimeout(() => {
toast.remove();
this.isShowing = false;
setTimeout(() => this.showNext(), 8000); // 8-second gap between toasts
}, 5000);
}
}
ステップ 3:在庫僅少の緊急性を示すインジケーターを追加する
在庫僅少を伝えるメッセージ(「残り 3 点!」など)は効果的に緊急性を促しますが、実際の在庫数だけを表示してください。顧客に気づかれたとき、偽の緊急性は信頼を損ないます。
Shopify の場合: Shopify App Store から Urgency Bear または Hurrify をインストールします。実際の Shopify 在庫数を読み取り、商品ページに「残り X 点」のメッセージを表示します。
WooCommerce の場合: WooCommerce に組み込まれている在庫僅少表示を有効にします。
- WooCommerce → Settings → Products → Inventory に移動します
- Show stock management at product level を有効にします
- Enable low stock threshold を有効にし、値を 5 に設定します
- 在庫がしきい値を下回ると、WooCommerce は商品ページに「在庫は残り 3 点です」と自動的に表示します
カスタムしきい値: CSS を使って、数量に応じて在庫僅少メッセージのスタイルを設定します。
ステップ 4:ソーシャルプルーフの効果を A/B テストする
サイト全体に導入する前に、必ずテストしてください。Fomo と TrustPulse には、どちらも A/B テスト機能が組み込まれています。
手動で A/B テストする場合:
- プラットフォームの実験ツールを使い、訪問者の 50%にウィジェットを表示します
- 少なくとも 2 週間、各グループで 200 件以上のコンバージョンを計測します
- グループ間でコンバージョン率、AOV、訪問者あたりの売上を比較します
- 統計的に有意な向上(p < 0.05)が見られた場合にのみ、ウィジェットを残します
ベストプラクティス
- 実際のデータだけを表示する — 購入数を偽ったり、訪問者数を捏造したりすると、発覚した際に信頼を損ないます。ウィジェットを表示する前に、最低しきい値(イベント 5 件以上)を設定してください
- 購入通知を匿名化する — 表示するのは名と都市名だけにし、注文 ID、フルネーム、メールアドレスは決して含めないでください
- ソーシャルプルーフを非同期で読み込む — ページの読み込み後に
requestIdleCallbackを使って取得し、クリティカルレンダリングパスを決してブロックしないでください - カートページとチェックアウトページではウィジェットを非表示にする — チェックアウト中の購入通知はコンバージョンの妨げになります。これらのページでは無効にしてください
- 通知頻度に上限を設ける — 1 ページセッションあたりトーストを最大 3 件まで表示し、間隔を 8 秒以上空けてください
- 顧客由来のデータにはすべて
textContentを使う — XSS の脆弱性を防ぐため、顧客の名前や所在地にinnerHTMLを決して使わないでください
よくある問題
| 問題 | 解決策 |
|---|---|
| トースト通知がスパムのように感じられる | セッションあたり 3 件に制限し、間隔を 8 秒空け、カート/チェックアウトでは非表示にします |
| ウィジェットによってコンバージョンが低下する(A/B テストでマイナスの効果が示された) | すぐに無効にします。導入を断念する前に、配置、文言、タイミングを変えてテストします |
| Google の検索結果にレビューのバッジが表示されない | AggregateRating のスキーマがサーバー側でレンダリングされていること(クライアント側の JS だけではないこと)を確認し、Google Rich Results Test で検証します |
| 在庫僅少インジケーターの数量が間違っている | ポーリングではなく、在庫変更の Webhook を購読します。古いデータは誤った緊急性を生みます |
| ソーシャルプルーフウィジェットによってページの読み込みが遅くなる | ページがインタラクティブになった後、すべてのソーシャルプルーフウィジェットを非同期で読み込みます。requestIdleCallback または setTimeout(fn, 0) を使います |
関連スキル
- @review-generation-engine
- @conversion-rate-optimization
- @exit-intent-popups
- @ugc-campaign-management
- @ab-testing-ecommerce