Skip to main content
← Back to blog

A Self-Service Feedback Form That Resizes Screenshots

Riya Mittal
Riya Mittal Engineer · Zop.Dev
3 min read
A Self-Service Feedback Form That Resizes Screenshots

A Self-Service Feedback Form That Resizes Screenshots

The fastest way to learn what is wrong with a product is to let people tell you from inside it. ZopNight, ZopDay and ZopCloud now share a Feedback item in the sidebar, directly above Settings. It opens a short form: rate the product you are in from 1 to 10, add a comment if you like, and attach up to five screenshots by picking, dragging or pasting them. The feedback goes straight to the Zop team.

For a platform team, the difficult part is not the form. It is what the form does with a screenshot, because a raw screenshot is large, slow to send, and can carry more than the person meant to share.

The Image Is Rebuilt Before It Leaves the Browser

Every screenshot is resized in the browser before anything is uploaded. The image is re-encoded as WebP and scaled so that it is no wider than 1920 pixels. Re-encoding drops the original file’s metadata, including EXIF fields such as device and location, so the picture that leaves the machine is the pixels and nothing else.

Architecture diagram

Each image uploads the moment it is added, not when the form is submitted. A slow connection pays the cost one image at a time while the person is still typing a comment, and pressing Submit at the end only has to send a rating and a few words.

Limits Chosen So the Form Stays Short

The rating from 1 to 10 is the only required field. A comment can run to 4000 characters, and a maximum of five screenshots can be attached. Those limits keep the form closer to a thirty second task than a bug report, which is what raises the number of people who finish it.

The product is never typed by the person. Each submission carries the name of the product the person is currently in, either zopnight, zopday or zopcloud, taken from the active product. That removes a question the person would otherwise have to answer and removes a mistake the team would otherwise have to guess at when sorting feedback.

FieldRule
RatingRequired, 1 to 10
CommentOptional, up to 4000 characters
ScreenshotsOptional, up to 5, WebP, at most 1920 pixels wide
ProductSent automatically from the active product

A Menu Item That Costs Nothing Until Opened

The Feedback screen is loaded lazily, so it adds nothing to the first page load. It is prefetched shortly after the first paint, which means that by the time someone clicks it, the code is usually already in the browser and the form opens immediately. In playground mode, where there is no real account to send feedback from, the item is hidden.

Two analytics events record when the form is opened and when it is submitted. Together they show how many people open the form and how many finish it, which is the number a feedback form most needs to improve.

On the receiving side, each submission appears in the internal console under Marketing → Activities, with a Feedback filter. Screenshot thumbnails are served through signed links that last 30 minutes. A link copied out of the console expires after half an hour, so a screenshot is visible to staff who need it without ever having a permanent public address.

This works when staff open the screenshot within the link’s lifetime, and the console simply asks for a fresh link each time a page is viewed. It would not be appropriate for a link that has to be shared for days, and that is deliberate: feedback screenshots can contain real customer data, and short-lived links are how a team treats them that way.

Tagged
Riya Mittal

Riya Mittal

Engineer · Zop.Dev

Riya is an AI engineer at ZopDev, working on production LLM pipelines behind the company's content and account-intelligence platforms. She works on the engineering that makes these systems reliable and repeatable, from multi-provider orchestration and structured output validation to evals, idempotent pipelines, and automated recovery. She writes about what it takes to make AI systems reliable enough to run in production.

Stop watching the waste.
Start cutting it.

See. Find. Fix. Automatic.

Connect your first cloud account in under 5 minutes. See your first remediation in under 7. No credit card required.

CDCR connect detect classify remediate
full audit every action traceable
read-only default access
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·