Feedback.Hub · Docs
Dashboard

Integrate in one line

Every source — web, mobile, or a backend service — sends the same JSON to one endpoint. Get a project key from your dashboard.

Web widget

<script
  src="https://feedback.sreternals.com/widget.js"
  data-project-key="YOUR_PROJECT_KEY"></script>

React

import { FeedbackWidget } from '@feedback-hub/react';

<FeedbackWidget projectKey="YOUR_PROJECT_KEY" user={{ id: 'u_123', plan: 'pro' }} />

React Native

import { FeedbackModal, submitFeedback, isShake } from '@feedback-hub/react-native';

// drop-in sheet
<FeedbackModal visible={open} onClose={() => setOpen(false)} projectKey="YOUR_PROJECT_KEY" />

// or submit directly
await submitFeedback({ projectKey: 'YOUR_PROJECT_KEY', message: 'Great app!', rating: 5 });

REST — the intake contract

POST /api/ingest
{
  "projectKey": "YOUR_PROJECT_KEY",
  "type": "bug | idea | praise",      // optional, default idea
  "message": "required, <= 5000 chars",
  "email": "optional",
  "rating": 1-5,                        // optional
  "source": "web | android | macos | service | ...",
  "url": "optional",
  "appVersion": "optional",
  "screenshotUrl": "optional (R2 URL)",
  "metadata": { "any": "json" }
}
=> 201 { "id": 123, "replyToken": "…" }

Other endpoints

Admin endpoints (feedback, stats, analytics, export, notes, notifications) require a signed-in session and are scoped to your organization.