User Feedback

When a user experiences an error, Sentry provides the ability to collect additional feedback. You can collect feedback according to the method supported by the SDK.

User Feedback API

The user feedback API provides the ability to collect user information when an event occurs. You can use the same programming language you have in your app to send user feedback. In this case, the SDK creates the HTTP request so you don't have to deal with posting data via HTTP.

Sentry pairs the feedback with the original event, giving you additional insight into issues. Sentry needs the eventId to be able to associate the user feedback to the corresponding event. For example, to get the eventId, you can use beforeSend or the return value of the method capturing an event.

Requires JS SDK version v7.47.0 or higher.

import * as Sentry from "@sentry/browser";

const eventId = Sentry.captureMessage("User Feedback");
// OR: const eventId = Sentry.lastEventId();

const userFeedback = {
  event_id: eventId,
  name: "John Doe",
  email: "",
  comments: "I really like your App, thanks!",

You could also collect feedback and send it when an error occurs via the SDK's beforeSend callback:

  dsn: '',
  beforeSend: event => {
    const userFeedback = collectYourUserFeedback();
    const feedback = {
      event_id: event.event_id.
    return event;

Embeddable JavaScript Widget

Our embeddable JavaScript widget is useful when you may typically render a plain error page (the classic 500.html) on your website.

To collect feedback, the widget requests and collects the user's name, email address, and a description of what occurred. When feedback is provided, Sentry pairs the feedback with the original event, giving you additional insights into issues.

The screenshot below provides an example of the User Feedback widget, though yours may differ depending on your customization:

An example of a user feedback widget with text boxes for user name, email, and additional details about the break.


The widget authenticates with your public

DSNThe Data Source Name (DSN) key tells the Sentry SDK where to send events, ensuring they go to the right project.
, then passes in the Event ID that was generated on your backend.

If you're using a framework like React or Angular, the best place to collect user feedback is in your error-handling component. (Please see platform-specific docs for examples.) If you're not using a framework, you can collect feedback right before the event is sent, using beforeSend:

    dsn: "",
    beforeSend(event, hint) {
      // Check if it is an exception, and if so, show the report dialog
      if (event.exception) {
        Sentry.showReportDialog({ eventId: event.event_id });
      return event;

Customizing the Widget

You can customize the widget to your organization's needs, especially for localization purposes. All options can be passed through the showReportDialog call.

An override for Sentry’s automatic language detection (e.g. lang=de)

eventIdManually set the id of the event.
dsnManually set dsn to report to.
userManually set user data [an object with keys listed below].
user.emailUser's email address.
user.nameUser's name.
lang[automatic]override for Sentry’s language code
titleIt looks like we’re having issues.
subtitleOur team has been notified.
subtitle2If you’d like to help, tell us what happened below. – not visible on small screen resolutions
labelCommentsWhat happened?
errorGenericAn unknown error occurred while submitting your report. Please try again.
errorFormEntrySome fields were invalid. Please correct the errors and try again.
successMessageYour feedback has been sent. Thank you!

The optional callback onLoad will be called when users see the widget. You can use this to run custom logic, for example to log an analytics event:

  // ...
  onLoad() {
    // Log an event to amplitude when the report dialog opens

The optional callback onClose will be called when users close the widget. You can use this to run custom logic, for example to reload the page:

Requires JS SDK version v7.82.0 or higher.

  // ...
  onClose() {
    // Refresh the page after the user closes the report dialog

User Feedback API

If you'd prefer an alternative to the widget or do not have a JavaScript frontend, you can use the User Feedback API.

Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) to suggesting an update ("yeah, this would be better").