PricePoint

PricePoint is a web component for pricing research using Van Westendorp methodology. Find the optimal price point your users are willing to pay with validated price sensitivity analysis.

@sensefolks/pricepoint WCAG 2.1 AA

PricePoint Features

  • 💰 Van Westendorp price sensitivity analysis
  • 📊 Identifies optimal price range and thresholds
  • WCAG 2.1 AA accessible out of the box
  • ⌨️ Full keyboard navigation (Tab, Enter)
  • 🔊 Screen reader optimized with ARIA labels
  • 🎨 Fully customizable via CSS Parts
  • 📱 Mobile-first responsive design
  • 🌐 Works with React, Vue, Angular, and vanilla JS

When to Use PricePoint

Embed PricePoint where pricing decisions happen:

  • Pricing pages — understand willingness to pay
  • Upgrade/paywall screens — optimize conversion pricing
  • Trial-to-paid flows — find the right price for conversion
  • Cancellation flows — discover price sensitivity of churning users

Installation

CDN (Recommended)

html
<!-- Modern browsers (ES modules) -->
<script type="module" src="https://unpkg.com/@sensefolks/pricepoint/dist/sf-pricepoint/sf-pricepoint.esm.js"></script>

<!-- Legacy browsers -->
<script nomodule src="https://unpkg.com/@sensefolks/pricepoint/dist/sf-pricepoint/sf-pricepoint.js"></script>

NPM

bash
npm install @sensefolks/pricepoint

Usage

HTML

html
<sf-pricepoint 
  survey-key="your-survey-uuid" 
  completion-message="Thank you for your feedback!">
</sf-pricepoint>

React

jsx
import '@sensefolks/pricepoint';

function App() {
  return (
    <sf-pricepoint 
      survey-key="your-survey-uuid" 
      completion-message="Thank you!">
    </sf-pricepoint>
  );
}

Vue

vue
<template>
  <sf-pricepoint 
    survey-key="your-survey-uuid" 
    completion-message="Thank you!">
  </sf-pricepoint>
</template>

<script>
import '@sensefolks/pricepoint';
export default {name: 'App'};
</script>

API Reference

Properties

Property Attribute Type Default Description
surveyKey survey-key string UUID of the survey to load
completionMessage completion-message string 'Thank you for your response!' Message shown after submission

CSS Parts

Style the component using CSS Parts:

css
sf-pricepoint::part(survey-container) {
  /* Main container */
}
sf-pricepoint::part(heading) {
  /* Step headings */
}
sf-pricepoint::part(price-input) {
  /* Price input field */
}
sf-pricepoint::part(currency-symbol) {
  /* Currency symbol */
}
sf-pricepoint::part(button) {
  /* All buttons */
}
sf-pricepoint::part(error-message) {
  /* Error messages */
}

Accessibility

  • Full keyboard navigation (Tab, Enter)
  • ARIA labels and live regions for screen readers
  • Price validation with accessible error messages
  • Focus indicators and high contrast mode support
  • Respects prefers-reduced-motion

Browser Support

Browser Version
Chrome88+
Firefox85+
Safari14+
Edge88+
IE11✅ (ES5 build)