User feedback reports allow your application to collect non-crash feedback and bug reports from end users. Unlike crash reports that are generated automatically when an application fails, user feedback reports are submitted intentionally by users to describe issues, request features, or report bugs.
When a user feedback report is posted to BugSplat:
- The title becomes the stack key (crash group), making it easy to group and track related feedback
- The description becomes the exception message, providing additional context
- Reports appear alongside crash reports in the BugSplat dashboard with the platform label "User Feedback"
User feedback reports can be uploaded as either feedback.xml or feedback.json.
<?xml version="1.0" encoding="utf-8"?>
<feedback version="1">
<title>Login button does not respond</title>
<description>Tapping login on iPhone does nothing.</description>
</feedback>{% hint style="info" %}
Special XML characters in title and description (&, <, >, ", ') must be escaped using standard XML entities.
{% endhint %}
{
"title": "Login button does not respond",
"description": "Tapping login on iPhone does nothing."
}| Field | Required | Description |
|---|---|---|
title |
Yes | Short summary of the feedback (becomes stack key) |
description |
No | Detailed description of the issue (can be empty) |
User feedback reports are uploaded using the same presigned URL flow as crash reports. See Crash Post Endpoints for full details on Steps 1-3.
Use crashType=User.Feedback (or crashTypeId=36) when committing the upload in Step 3.
- Step 1 β
GET /api/getCrashUploadUrlto get a presigned upload URL - Step 2 β
PUTthe zippedfeedback.xml(orfeedback.json) to the presigned URL - Step 3 β
POST /api/commitS3CrashUploadwithcrashType=User.Feedback
Optional fields on commit: user, email, description, appKey, attributes
The bugsplat-js-api-client package provides a postUserFeedback() helper that handles XML generation and upload:
import { CrashPostClient } from 'bugsplat-js-api-client';
import { postUserFeedback } from 'bugsplat-js-api-client/src/post/user-feedback';
const client = new CrashPostClient('your-database');
await postUserFeedback(client, 'MyApp', '1.0.0', {
title: 'Login button does not respond',
description: 'Tapping login on iPhone does nothing.',
user: 'jane@example.com',
email: 'jane@example.com',
});