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}/feedback with an app session or an nvd_ 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 }
FieldRule
enabledBox open or closed.
categoriesbug, idea, question; at least one. Invalid → 400 bad_categories.
welcomeOptional; { tr, en }, each 1–300 characters. Users see it before they write. Invalid → 400 bad_welcome.
  • Sending welcome replaces the whole object: a language you do not send is removed. To delete a language, leave it out.
  • If you omit welcome entirely, 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; 404 if 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

LimitValue
User: new tickets5 per extension per day
User: messages20 per hour (including new tickets, across all extensions)
Developer: replies60 per hour
Images2 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

StatusWhen
openWhen the ticket is created; when the user writes a new message.
answeredWhen you reply.
closedWhen 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 attachments
  • POST /api/ext/v1/dev/feedback/{ticketId}/messages { body } (1–5000 characters; the ticket becomes answered)
  • 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 (ticketId in 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

CodeStatusMeaning
feedback_disabled403The extension's box is closed.
not_installed403The user has not installed the extension.
blocked_by_developer403The developer blocked this user; they cannot open tickets or reply.
own_extension400Feedback to your own extension.
bad_category400Type invalid or not accepted for this extension.
bad_subject400Subject is not 3–120 characters.
bad_body400Message is not 1–5000 characters.
bad_reason400Report reason is not 3–1000 characters.
already_reported409The message was already reported.
bad_welcome400Welcome text may only contain tr/en, each 1–300 characters.
bad_categories400Types outside bug, idea, question, or empty.
email_not_verified403Changing box settings needs a verified email.
bad_image / too_many / too_large415 / 400 / 413Attachment is not an image / ticket already has 2 images / image over 2 MB.
rate_limited429Daily ticket or hourly message limit exceeded.

Nuvaka Apps API v1 · last updated 2026-09-27