Collecting customer feedback with GKit SheetsAPI
Wire a feedback widget to GKit SheetsAPI: POST ratings and comments into a Google Sheet, triage in the spreadsheet, and read back with search and sort over REST.
Turn a Google Sheet into your feedback inbox
Product teams want feedback to land somewhere everyone can see it - not buried in a database that only engineers can query. With GKit SheetsAPI your in-app feedback widget POSTs straight into a Google Sheet, and the whole team triages right there in the spreadsheet they already use.
Send feedback from your widget
Give your sheet a header row that defines the fields, e.g. rating, comment, email, status. Then have your widget append a row when someone submits:
await fetch(
"https://sheetsapi.gkit.mreshank.com/api/spreadsheets/{userKey}/Feedback",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
rating: 4,
comment: "Love the new dashboard, wish exports were faster.",
email: "user@example.com",
status: "new",
}),
},
);The first row of the tab defines the JSON field names, so the keys you send line up with your columns automatically. That POST is the entire backend - no server to deploy, and CORS is enabled so it works straight from the browser.
Triage in the spreadsheet
Once feedback is flowing in, your team works it like any other sheet. Add a status column and move rows from new to triaged to done. Tag themes, assign owners, sort by rating - all the things a spreadsheet is already good at. Non-technical teammates can read and edit submissions live without touching code, and everything stays in one place product, design, and support can all open.
Read feedback back into your app
When you want to surface feedback elsewhere - a weekly digest, a dashboard, or a "recent reviews" panel - read it back with query params. List the newest high-priority items still waiting for triage:
GET https://sheetsapi.gkit.mreshank.com/api/spreadsheets/{userKey}/Feedback?search=status:new&sort=-rating&limit=50
search=field:value does a case-insensitive substring match (use search_exact for exact matches), sort=-rating orders by rating descending, and limit caps the rows returned. You can also narrow the payload with fields=rating,comment or switch the response with format=csv if a teammate wants a quick export. Need a single submission? GET /api/spreadsheets/{userKey}/Feedback/{row} returns one row by its 1-based position, and PUT to that same path updates it after triage.
Auth when you're ready
While you're prototyping, the API is public so you can wire the widget up in minutes. When you want to lock things down, create an API key from your account and send it as Authorization: Bearer sk_... on each request. Sign-in is via Google.
SheetsAPI is in beta and free while in testing, which makes it an easy way to stand up a feedback loop without committing to infrastructure.
Connect a sheet and start collecting feedback today.