social-proof-widgets

Display real-time social proof including recent purchases, review counts, visitor counts, and verified buyer badges to build trust and boost conversions

11 stars

Best use case

social-proof-widgets is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Display real-time social proof including recent purchases, review counts, visitor counts, and verified buyer badges to build trust and boost conversions

Teams using social-proof-widgets should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/social-proof-widgets/SKILL.md --create-dirs "https://raw.githubusercontent.com/finsilabs/awesome-ecommerce-skills/main/skills/marketing-growth/social-proof-widgets/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/social-proof-widgets/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How social-proof-widgets Compares

Feature / Agentsocial-proof-widgetsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Display real-time social proof including recent purchases, review counts, visitor counts, and verified buyer badges to build trust and boost conversions

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Social Proof Widgets

## Overview

Social proof widgets — recent purchase notifications, visitor counts, review badges, and low-stock indicators — reduce purchase anxiety and increase conversion rates by 10–30% on product pages. For Shopify and WooCommerce, dedicated apps (Fomo, TrustPulse, ProveSource) install these widgets without code. Building custom widgets is only necessary for headless stores with specific design requirements.

## When to Use This Skill

- When product pages have good traffic but low conversion rates
- When launching a new product that lacks reviews and needs other trust signals
- When testing whether social proof elements meaningfully impact CVR (A/B test required)
- When wanting to add real-time purchase notifications
- When building a low-stock urgency display based on actual inventory data

## Core Instructions

### Step 1: Choose the right social proof tool

| Platform | Best For | Shopify | WooCommerce | BigCommerce | Price |
|----------|---------|---------|-------------|-------------|-------|
| **Fomo** | Real-time purchase notifications | App Store | Plugin | Via JS | $19+/mo |
| **TrustPulse** | Recent purchases + live visitor count | — | Plugin | Via JS | $5+/mo |
| **ProveSource** | All platforms, highly customizable | App Store | Via JS | Via JS | Free tier; $20+/mo |
| **Judge.me** | Review count badge + verified buyer badge | App Store | Plugin | App Marketplace | Free tier; $15/mo |
| **Custom** | Headless stores, specific design needs | Via API | Via API | Via API | Dev cost |

**Recommendation:** Use **Fomo** for Shopify (best purchase notifications) and **TrustPulse** for WooCommerce. For review badges, use your existing review platform (Judge.me, Yotpo) — they include star rating badges automatically.

### Step 2: Set up social proof widgets

---

#### Shopify with Fomo

1. Install **Fomo** from the Shopify App Store
2. Go to **Fomo → Events → Shopify Orders** — Fomo automatically imports recent orders from your store
3. Configure the notification template:
   - Display: first name and city (e.g., "Sarah from Chicago just purchased…")
   - Show the product name and image
   - Display within the last 48 hours
4. Go to **Fomo → Design** to customize the position and style of the notification toast (bottom-left by default)
5. Go to **Fomo → Rules** and set:
   - Show only on product pages (URL contains `/products/`)
   - Hide on cart and checkout pages
   - Minimum 3 notifications to show before displaying the widget (prevents showing a widget with only 1 event)
6. Go to **Fomo → A/B Testing** to split-test the widget against a control group — always measure lift before enabling sitewide

---

#### WooCommerce with TrustPulse

1. Install **TrustPulse** from the WordPress plugin directory
2. Go to **TrustPulse → Create Campaign** and select **Recent Activity**
3. Configure:
   - Data source: WooCommerce Recent Orders
   - Display: customer name, city, product purchased
   - Show: orders from the last 7 days
4. Set targeting rules: show only on product and shop pages; exclude checkout
5. For the visitor count widget, create a second **On Fire** campaign: "X people looking at this right now" — set a minimum visitor threshold of 5 before displaying

---

#### BigCommerce with ProveSource

1. Sign up for **ProveSource** and add the JavaScript snippet to your store via **Storefront → Script Manager**
2. Connect your BigCommerce store to ProveSource via the integration settings
3. Configure recent purchase notifications and visitor count widgets from the ProveSource dashboard

---

#### Custom / Headless

For headless stores, build a social proof API and client widget:

```typescript
// 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,
    },
  });
}
```

Client-side purchase notification toast — using DOM methods to prevent XSS:

```typescript
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);
  }
}
```

### Step 3: Add low-stock urgency indicators

Low-stock messaging ("Only 3 left!") drives urgency effectively — but only show real inventory counts. Fake urgency destroys trust when customers notice it.

**In Shopify:** Install **Urgency Bear** or **Hurrify** from the Shopify App Store — they read your actual Shopify inventory and display "Only X left" messages on product pages.

**In WooCommerce:** Enable WooCommerce's built-in low-stock display:
1. Go to **WooCommerce → Settings → Products → Inventory**
2. Enable **Show stock management at product level**
3. Enable **Enable low stock threshold** and set to 5
4. WooCommerce automatically shows "Only 3 in stock" on product pages when inventory falls below the threshold

**Custom thresholds:** Use CSS to style the low-stock message based on quantity levels.

### Step 4: A/B test social proof impact

Always test before deploying sitewide. Both Fomo and TrustPulse have built-in A/B testing.

For manual A/B testing:
1. Enable the widget for 50% of visitors using your platform's experimentation tool
2. Measure for at least 2 weeks and 200+ conversions per group
3. Compare conversion rate, AOV, and revenue per visitor between the groups
4. Only keep the widget if it shows statistically significant lift (p < 0.05)

## Best Practices

- **Only show real data** — fabricated purchase counts or invented visitor numbers erode trust when discovered; use a minimum threshold (5+ events) before showing any widget
- **Anonymize purchase notifications** — show first name and city only; never include order IDs, full names, or email addresses
- **Load social proof asynchronously** — fetch after page load using `requestIdleCallback`; never block the critical render path
- **Hide the widget on cart and checkout pages** — showing purchase notifications during checkout distracts from conversion; disable on these pages
- **Cap notification frequency** — show a maximum of 3 toasts per page session with 8+ second gaps between them
- **Use `textContent` for all customer-derived data** — prevents XSS vulnerabilities; never use `innerHTML` with customer names or locations

## Common Pitfalls

| Problem | Solution |
|---------|----------|
| Toast notifications feel spammy | Limit to 3 per session; add 8-second gaps; hide on cart/checkout |
| Widget hurts conversion (A/B test shows negative lift) | Disable immediately; test with different placement, copy, or timing before abandoning |
| Review badge not appearing in Google search results | Ensure AggregateRating schema is server-rendered (not just client-side JS); verify with Google Rich Results Test |
| Low-stock indicator showing wrong quantity | Subscribe to inventory change webhooks rather than polling; stale data creates false urgency |
| Social proof widget slowing page load | Load all social proof widgets asynchronously after page interactive; use `requestIdleCallback` or `setTimeout(fn, 0)` |

## Related Skills

- @review-generation-engine
- @conversion-rate-optimization
- @exit-intent-popups
- @ugc-campaign-management
- @ab-testing-ecommerce

Related Skills

social-commerce

11
from finsilabs/awesome-ecommerce-skills

Sync your catalog to Instagram, TikTok, and Facebook to enable shoppable posts and in-app checkout directly from your social content

wishlist-save-for-later

11
from finsilabs/awesome-ecommerce-skills

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

storefront-theming

11
from finsilabs/awesome-ecommerce-skills

Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode

search-autocomplete

11
from finsilabs/awesome-ecommerce-skills

Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch

responsive-storefront

11
from finsilabs/awesome-ecommerce-skills

Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion

recently-viewed-products

11
from finsilabs/awesome-ecommerce-skills

Show shoppers the products they recently browsed using browser storage so they can easily pick up where they left off on your store

quick-view-modal

11
from finsilabs/awesome-ecommerce-skills

Let shoppers preview product details and add items to cart from the listing page without navigating away, reducing friction in the shopping flow

product-page-design

11
from finsilabs/awesome-ecommerce-skills

Design high-converting product detail pages with image galleries, variant selectors, social proof, and clear calls-to-action that drive add-to-cart

product-comparison

11
from finsilabs/awesome-ecommerce-skills

Let shoppers select multiple products and compare them side-by-side in a table with highlighted differences to help them make the right buying decision

mega-menu-builder

11
from finsilabs/awesome-ecommerce-skills

Build a rich navigation mega menu with product images, category highlights, featured banners, and keyboard-accessible dropdowns for large catalogs

image-zoom-360

11
from finsilabs/awesome-ecommerce-skills

Boost product confidence with high-res image zoom, 360-degree spin views, and inline video so shoppers can examine products closely before buying

faceted-navigation

11
from finsilabs/awesome-ecommerce-skills

Let shoppers filter products by multiple attributes simultaneously with URL-shareable filter state, instant results, and mobile-friendly controls