Feedback routing
When a user submits feedback to POST /v1/feedback, Nordva Launch does three things in one call:
- Classifies the text into
bug,feature_request,praise,billing,support, oruncategorised. On Indie and up an AI model does it, with a one-line summary, up to the plan’s monthly allowance (Indie 500, Builder 3,000). On Free (50 messages a month per project), and past that allowance, a keyword matcher does it, with no summary and nothing sent to a model. - Persists it under your project.
- Routes it to one or more destinations you’ve configured.
This page covers (3).
Configure a destination
Section titled “Configure a destination”One destination per call, with its own fields beside destination. Saving the same destination again replaces it.
curl -X POST https://api.nordva.dev/v1/feedback/routing/slack \ -H "Authorization: Bearer nv_live_sk_..." \ -H "Content-Type: application/json" \ -d '{ "destination": "slack", "webhook_url": "https://hooks.slack.com/services/T.../B.../...", "categories": ["bug"] }'| Destination | Fields |
|---|---|
email | destination_email |
slack | webhook_url |
linear | api_key, team_id; optional label_map, assignee_id |
github | personal_access_token, owner, repo; optional label_map, assignee |
GET /v1/feedback/routing lists what is set up, DELETE /v1/feedback/routing/<destination> removes one. In the dashboard it is Feedback Routing; an AI agent uses configure_feedback_routing, get_feedback_routing and remove_feedback_routing.
Destinations by plan
Section titled “Destinations by plan”| Destination | Free | Indie | Builder |
|---|---|---|---|
email | ✓ | ✓ | ✓ |
slack | ✓ | ✓ | |
linear | ✓ | ✓ | |
github | ✓ | ✓ |
For anything else (Discord, your own server), use an outgoing webhook on the feedback.created event, from Indie.
Only some categories
Section titled “Only some categories”categories sends only those classifications to that destination, for example ["bug"] to Linear and ["feature_request", "praise"] to Slack. Leave it out (or send null) and the destination gets every category. In the dashboard, tick the categories when you add the destination. Feedback in other categories is not sent there and does not count as a failure.
The hosted feedback form
Section titled “The hosted feedback form”Feedback from the hosted form is routed only when you switch that on (Send to the destinations below under Hosted form, or "route_hosted_feedback": true on PATCH /v1/project). Otherwise it is stored and sent as the feedback.created webhook only.
Encryption
Section titled “Encryption”Destination credentials (webhook URLs, OAuth tokens, etc.) are encrypted at rest with AES-GCM. They are never returned in GET /v1/feedback/routing; only a redacted summary is.
Failure handling
Section titled “Failure handling”If a destination call fails, the feedback row is still persisted and the API still returns 201 to your caller. Failed deliveries appear under routing_results[<dest>] in the response, and again in your daily activity log so you can retry or escalate.