Documentation

Installation

Direct Include

<script src="https://your-domain.com/packages/script/dist/index.js"></script>

Build from Source

git clone https://github.com/your-username/simple-nps
cd simple-nps/packages/script
npm install
npm run build

The built file will be in packages/script/dist/index.js.

Configuration

Configure the script by setting window.simpleNpsConfig before calling initSimpleNps():

window.simpleNpsConfig = {// Google Analytics 4 Measurement ID (optional)
  gaId: "G-YOUR-MEASUREMENT-ID",

  // Internationalization settings
  i18n: {
    en: {
      intro: "How likely are you to recommend us to a friend or colleague?",
      followUp: {
        detractor: "Sorry to hear that. What could we improve?",
        passive: "Thanks for the feedback. What would make this better?",
        promoter: "Great! What do you love most about our service?"
      },
      placeholder: "Tell us more...",
      submit: "Submit",
      thankYou: "Thank you for your feedback!"
    }
  },

  // Default language (defaults to 'en')
  defaultLanguage: "en",

  // Custom styling (optional)
  customCSS: "
    .simple-nps-container {
      /* Your custom styles */
    }
  "
};

Internationalization

The script supports multiple languages. Add language objects to the i18n configuration:

window.simpleNpsConfig = {
  i18n: {
    en: {
      intro: "How likely are you to recommend us?",
      followUp: {
        detractor: "What could we improve?",
        passive: "What would make this better?",
        promoter: "What do you love most?"
      },
      placeholder: "Tell us more...",
      submit: "Submit",
      thankYou: "Thank you for your feedback!"
    },
    es: {
      intro: "¿Qué probabilidad hay de que nos recomiendes?",
      followUp: {
        detractor: "¿Qué podríamos mejorar?",
        passive: "¿Qué haría que esto fuera mejor?",
        promoter: "¿Qué es lo que más te gusta?"
      },
      placeholder: "Cuéntanos más...",
      submit: "Enviar",
      thankYou: "¡Gracias por tu comentario!"
    },
    fr: {
      intro: "Quelle est la probabilité que vous nous recommandiez?",
      followUp: {
        detractor: "Que pourrions-nous améliorer?",
        passive: "Qu'est-ce qui rendrait cela meilleur?",
        promoter: "Qu'aimez-vous le plus?"
      },
      placeholder: "Dites-nous en plus...",
      submit: "Soumettre",
      thankYou: "Merci pour vos commentaires!"
    }
  },
  defaultLanguage: "en"
};

The script will use the browser's language if available, otherwise fall back to the default language.

Analytics Integration

The script integrates with Google Analytics 4 to track NPS events:

Automatic Events

  • nps_score_selected - When user selects a score (0-10)
  • nps_feedback_submitted - When user submits feedback text
  • nps_dismissed - When user closes the NPS

Event Parameters

// Example: nps_score_selected event
gtag('event', 'nps_score_selected', {
  'score': 9,
  'category': 'promoter', // 'detractor', 'passive', or 'promoter'
  'custom_parameter_1': 'value'
});

Customization

CSS Styling

The script includes default styles, but you can override them:

/* Target the container */
.Simple-nps {
  font-family: 'Your Custom Font';
  border-radius: 12px;
}

/* Style the score buttons */
.simple-nps-container .score-button {
  background-color: #your-color;
  border-radius: 8px;
}

/* Style the selected score */
.simple-nps-container .score-button.selected {
  background-color: #selected-color;
}

/* Style the feedback textarea */
.simple-nps-container .feedback-textarea {
  border: 2px solid #your-border-color;
}

Positioning

The script uses absolute positioning by default. Key CSS classes:

  • .simple-nps-container - Main container
  • .simple-nps-overlay - Background overlay
  • .simple-nps-content - Content container
  • .simple-nps-score-buttons - Score button container
  • .simple-nps-score-button - Individual score buttons

API Reference

initSimpleNps()

Initializes and shows the NPS script.

// Basic usage
initSimpleNps();

// The function does not take parameters -
// use window.simpleNpsConfig for configuration

Configuration Object

Property Type Default Description
gaId string null Google Analytics 4 Measurement ID
i18n object English only Language strings for internationalization
defaultLanguage string "en" Fallback language code
customCSS string "" Custom CSS to inject

Google Tag Manager Integration

Step 1: Upload the Script

Upload the built script from packages/script/dist/index.js to your website and note the URL.

Step 2: Create GTM Variables

Create variables in GTM for configuration:

  • GA Measurement ID - Your Google Analytics 4 ID
  • NPS Trigger Condition - When to show the script

Step 3: Create Custom HTML Tag


<script>
window.simpleNpsConfig = {
  gaId: "{{GA Measurement ID}}", // GTM variable
  i18n: {
    en: {
      intro: "How likely are you to recommend us?",
      followUp: {
        detractor: "What could we improve?",
        passive: "What would make this better?",
        promoter: "What do you love most?"
      },
      placeholder: "Tell us more...",
      submit: "Submit",
      thankYou: "Thank you for your feedback!"
    }
  }
};

// Show the NPS
initSimpleNps();
</script>

Step 4: Configure Triggers

Set up triggers based on your needs:

  • Page View - Show on specific pages
  • Timer - Show after user spends time on site
  • Scroll Depth - Show after user scrolls
  • Custom Event - Show based on user actions

Best Practices

  • Don't show the NPS immediately - wait for user engagement
  • Use frequency capping to avoid annoying users
  • Consider mobile vs desktop display preferences
  • Test thoroughly before deploying to production