Nuvaka › Developer docs › Feedback box
Feedback box
The feedback box lets users who installed your extension send you bugs, ideas or questions directly. You open the box per extension. Users open tickets and you reply. Talking to real users this way is the cheapest and most honest testing you can get.
Enabling the box
The box is closed by default. There are two ways to open it; both need a verified email (otherwise 403 email_not_verified).
- In the app: go to Profile › Developer › Feedback box › Settings, pick your extension, turn the box on and save the accepted types and the welcome text.
- With the API:
PUT /api/ext/v1/dev/extensions/{id}/feedbackwith an app session or annvd_developer token.
// PUT /api/ext/v1/dev/extensions/{id}/feedback
{
"enabled": true,
"categories": ["bug", "idea", "question"], // at least one
"welcome": { "tr": "Hata bildirirken sürümü ve adımları yaz.", "en": "Please include steps to reproduce." }
}
// → { "success": true, "feedbackEnabled": true }
| Field | Rule |
|---|---|
enabled | Box open or closed. |
categories | bug, idea, question; at least one. Invalid → 400 bad_categories. |
welcome | Optional; { tr, en }, each 1–300 characters. Users see it before they write. Invalid → 400 bad_welcome. |
- Sending
welcomereplaces the whole object: a language you do not send is removed. To delete a language, leave it out. - If you omit
welcomeentirely, the existing welcome text is kept. - To read the current settings:
GET /api/ext/v1/dev/extensions/{id}/feedback→{ enabled, welcome, categories }. Works for unpublished and hidden extensions too;404if the extension is not yours.
While the box is closed, successful upload (dev/upload) and store listing (listing) responses carry a recommendation; the app shows it as a one-click "Open" hint:
"recommendations": [{ "code": "feedback_off", "message": "…" }]
How users write
- If the box is open and the user has installed your extension, a Write to the developer button appears on its store page. Users who have not installed it cannot write.
- The user picks a type (from the ones you accept), a subject (3–120 characters) and a message (1–5000 characters), and can choose to send anonymously.
- Up to 2 images can be attached per ticket: png, jpeg or webp, each ≤ 2 MB. The type is detected from the file content.
- App version, extension version and platform are attached automatically, so you do not have to ask for them.
- Users see their tickets and your replies under Apps › My feedback and get a notification when you reply.
- You cannot send feedback to your own extension (
own_extension).
Limits
| Limit | Value |
|---|---|
| User: new tickets | 5 per extension per day |
| User: messages | 20 per hour (including new tickets, across all extensions) |
| Developer: replies | 60 per hour |
| Images | 2 per ticket, each ≤ 2 MB (png, jpeg, webp) |
Going over a limit returns 429 (error: "rate_limited"). At most one notification is sent per ticket and recipient every 10 minutes.
Statuses
| Status | When |
|---|---|
open | When the ticket is created; when the user writes a new message. |
answered | When you reply. |
closed | When you close it. |
If the user writes to an answered or closed ticket, it becomes open again. You can also change the status by hand.
Inbox
You find tickets under Profile › Developer › Feedback box › Inbox: filter by extension and status, see the unread count, reply and change the status. Each ticket shows the type, subject, app/extension version and platform. You get a notification for new tickets and messages.
The same actions are available through the API with a session or an nvd_ token:
GET /api/ext/v1/dev/feedback?extId=&status=&page=→{ items, total, unread, page, pageSize: 20 }GET /api/ext/v1/dev/feedback/{ticketId}→ ticket, messages and attachmentsPOST /api/ext/v1/dev/feedback/{ticketId}/messages { body }(1–5000 characters; the ticket becomesanswered)PATCH /api/ext/v1/dev/feedback/{ticketId} { status }(open|answered|closed)
If the extension moves to another developer (ownership transfer), its tickets show up for the new owner. Tickets and attachments of a removed extension are deleted after 30 days.
Blocking
- You can only block a user who opened a ticket to you: use Block inside the ticket, or block by username in the Blocked tab.
- For an anonymous ticket you do not see the name, so you block from inside the ticket (
ticketIdin the API); the identity is still not shown to you. - A block can apply to all your extensions or to one extension only.
- A blocked user cannot open new tickets to you or reply in existing ones:
403 blocked_by_developer. - See and remove blocks in the Blocked tab.
// POST /api/ext/v1/dev/feedback/block
{ "username": "someone" } // or, for an anonymous ticket:
{ "ticketId": 123, "extId": "me.extension" } // extId: this extension only
{ "username": "someone", "block": false } // unblock
// GET /api/ext/v1/dev/feedback/blocks, DELETE /api/ext/v1/dev/feedback/blocks/{id}
Privacy
- You never see the user's email or account id; you only see their username.
- If the user writes anonymously, the username is hidden too; the ticket shows "A user".
- Attachments are only available to the user who opened the ticket and to you.
Abuse
The box is for talking about your extension. As a short guide, avoid:
- spam, advertising or sending the same message over and over;
- harassment, insults or threats;
- asking users for personal data such as email, phone number, passwords or ID;
- pushing users to contact you off the platform (another app, email, phone).
Ask for what you need to debug (steps, screenshots, settings) inside the box; app and extension version and platform already come with the ticket.
Consequences:
- A user can report one of your messages (reason 3–1000 characters). The report goes to the Nuvaka team as a support ticket (
extension_feedback_abuse) with the conversation context. - The team reviews reports and may take action; in serious or repeated cases this can go as far as suspending the publisher account.
- Only developer messages can be reported, and the same message cannot be reported twice.
You can block a user who abuses the box against you.
Error codes
| Code | Status | Meaning |
|---|---|---|
feedback_disabled | 403 | The extension's box is closed. |
not_installed | 403 | The user has not installed the extension. |
blocked_by_developer | 403 | The developer blocked this user; they cannot open tickets or reply. |
own_extension | 400 | Feedback to your own extension. |
bad_category | 400 | Type invalid or not accepted for this extension. |
bad_subject | 400 | Subject is not 3–120 characters. |
bad_body | 400 | Message is not 1–5000 characters. |
bad_reason | 400 | Report reason is not 3–1000 characters. |
already_reported | 409 | The message was already reported. |
bad_welcome | 400 | Welcome text may only contain tr/en, each 1–300 characters. |
bad_categories | 400 | Types outside bug, idea, question, or empty. |
email_not_verified | 403 | Changing box settings needs a verified email. |
bad_image / too_many / too_large | 415 / 400 / 413 | Attachment is not an image / ticket already has 2 images / image over 2 MB. |
rate_limited | 429 | Daily ticket or hourly message limit exceeded. |
Nuvaka Apps API v1 · last updated 2026-09-27