Feedback
Store what players tell you from your own in-game feedback UI, tie it to who they are, and triage it by cohort, platform or anything else you know.
You keep your own feedback UI, such as an in-game "Send feedback" button, a rating after a match, thumbs up/down on a new map or a bug report form. When a player submits it, send it to RoChart. RoChart stores it, links it to the player who wrote it, and gives you one inbox you can slice by anything you know about them: what do players on phones complain about? or what do new players struggle with?
Hand this to your coding agent. It finds your feedback form, or adds a small one, and sends submissions to RoChart.
Feedback pages
Different flows usually need different inboxes. General feedback shouldn't be mixed up with bug reports or ratings of a new map. Each feedback page is its own inbox, with its own counts, categories and average rating.
Every project starts with General. Anything sent without a board goes there. To add another page, click New page on the Feedback screen, or just start sending with a new key:
{ "board": "bugs", "message": "Fell through the floor on Volcano", "category": "map" }If a key doesn't exist yet, RoChart creates that page the first time something is sent to it, so wiring up a new flow needs no setup. Keys are lowercase letters, digits, - or _. You can rename a page and give it a description at any time, but its key stays the same. Deleting a page moves its feedback to General. A project can have up to 50 pages; once it has 50, feedback sent to a new key goes to General.
Each page has its own Copy Prompt, which tells your coding agent to connect that flow to that page.
Send feedback
Only message is required.
Players submit from a LocalScript through a RemoteEvent. The server sends it with HttpService:
local HttpService = game:GetService("HttpService")
game.ReplicatedStorage.SendFeedback.OnServerEvent:Connect(function(player, message, rating)
if typeof(message) ~= "string" or #message == 0 then return end
local ok, err = pcall(HttpService.PostAsync, HttpService, "https://app.rochart.co/i/feedback",
HttpService:JSONEncode({
token = "rc_your_project_token",
distinct_id = tostring(player.UserId),
message = string.sub(message, 1, 2000),
rating = typeof(rating) == "number" and rating or nil,
board = "general",
}), Enum.HttpContentType.ApplicationJson)
if not ok then warn("Feedback not sent:", err) end
end)Never trust what the client sends: check types and lengths on the server.
It resolves with the feedback id and fails with a message if RoChart didn't accept it. Show a thank-you on success, and keep the user's text on failure so they can try again. It only needs your public project token, so you can call it from a game server or straight from a browser.
| Field | |
|---|---|
message | What they wrote, up to 10,000 characters (required) |
board | The feedback page it belongs to, such as support. Defaults to general. |
distinct_id | Who wrote it: the player's UserId as a string. Leave it out for anonymous feedback. |
rating | Any number |
category | Your own bucket |
email | A contact address from your form. It isn't saved on the person. |
url | The page or screen it came from |
properties | Anything else: place version, map, level… |
groups | Groups it belongs to, such as { "clan": "c_42" } |
uuid | Your own id for safe retries. Sending the same id twice stores it once. |
Who wrote it
With a user id, feedback lands on that person's profile and timeline, so every property, cohort and group you know about them applies. Without one, it's kept as anonymous.
Feedback is also recorded as a $feedback event (with $feedback_board, $feedback_rating and $feedback_category), so the rest of RoChart works on it:
- chart the average rating over time, broken down by category;
- build a cohort of people who gave a rating of 2 or lower in the last 30 days;
- put a feedback metric on a dashboard.
Triage
Feedback in the sidebar is the inbox, with new feedback first. It opens on your feedback pages. Pick one to see its feedback, or pick All pages to see every page together. Inside a page, click its name to jump to another one. Each item shows the player, rating, category, group and the URL it was sent from, if any.
- Filter by status, category, rating, text or cohort.
- Mark items resolved, or archived for spam and noise. RoChart records who resolved each item and when.
Agents can triage too. For example: "Summarise this week's open feedback from players on phones, group it into themes, and archive the spam."
Switch it off
Feedback is a product you can turn off in project settings. That hides the inbox and its agent tools. Submissions are still accepted, so nothing is lost if you switch it back on.