Your reporters don't know what priority to set. They don't know who to assign a bug to. And they shouldn't have to.
The less your reporters think about, the more they report. Widget forms let you control exactly what people see when they submit feedback through Marker.io, so you collect the right information without asking unnecessary questions.
This guide covers form types, field visibility, presets, labels, AI features, and dynamic variables.
Quick start: three moves that change everything
If you're short on time, these three changes will make the biggest difference:
Hide fields your reporters don't need (assignee, priority, project). Preset the values instead.
Rename confusing labels. "Description" becomes "What happened?" and reports get better overnight.
Turn on AI Title Generation. One less field for reporters to fill in, and every ticket gets a clean title automatically.
You can do all three in under five minutes. The rest of this guide explains every option in detail.
Two form types, two audiences
Every Marker.io widget has two independent forms:
Guest Form is for public reporters, clients, and external users. These people are not on your team. They don't know your workflow, your field names, or your tool. The guest form should be as simple as possible. One or two fields is ideal.
Member Form is for your team: members and admins who understand the product and your process. You can show more fields here because these users know what they mean.
Each form is configured separately. You can also give each Issue Type its own form layout, so a "Bug" report asks different questions than an "Improvement" suggestion.
The goal: guests describe the problem. Your tooling handles the rest.
π Where to configure: Dashboard β Website Project β Widget β Guest Form / Member Form
Control what reporters see
Show or hide fields
Every field from your connected integration is available on the form. You decide which ones reporters see.
Hiding a field doesn't remove it from your integration. It just removes it from the reporter's view. The field still exists, and if you preset a value, that value gets submitted with every report.
Rule of thumb: if a reporter has to pause and think about what to put in a field, hide it and preset the answer.
Preset values
Presets are pre-filled answers. They serve three purposes:
Remove decisions. Reporters don't choose priority, assignee, or project. You choose once, and every report inherits it.
Ensure consistency. Every issue from a specific widget gets the same values.
Speed up submissions. Fewer fields means faster reports means more reports.
You have two options with any preset:
Preset + visible: The field appears pre-filled but the reporter can change it. Use this when you want a sensible default but the reporter might know better.
Preset + hidden: The reporter never sees the field. Use this when the answer is always the same and the reporter shouldn't need to think about it.
Examples:
Preset Assignee to your triage lead and hide it. Every report goes to one person.
Preset Issue Type to "Bug" and hide it. All feedback is categorised automatically.
Preset Priority to "Medium" and leave it visible. Clients see a sensible default but can escalate if needed.
Want to go further? Dynamic variables can auto-fill fields with data from your app, like user ID, subscription plan, or environment. See Dynamic variables below.
Required fields
If your integration marks a field as mandatory (like "Priority" in Jira), Marker.io automatically flags it with an asterisk. You can also mark any field as required directly in Marker.io.
β οΈ If you hide a required field, always preset a value. If there's no value and the field is hidden, submissions will fail silently.
Make your labels human
You can rename any field label on the widget without changing anything in your connected tool.
This matters more than most people think. Your integration's field names were designed for developers and project managers. Your reporters are often neither. Renaming labels turns a confusing form into a conversation.
Integration field name | What reporters actually understand |
Summary | Give your issue a short title |
Description | What happened? |
Repro Steps | How can we see this bug? |
Issue Type | What kind of feedback is this? |
Environment | Where did you see this? |
π Where to configure: Dashboard β Website Project β Widget β Form β click the edit icon next to any field label. Changes are cosmetic only. Your integration's field names stay untouched.
Title, description, and prefix
Title can be hidden entirely when AI Title Generation is enabled. Reporters write a description, and Marker.io generates the title automatically on submission. One less field, zero loss of information.
Description is always visible. This is where reporters describe what they saw.
Prefix adds a short text string to the beginning of every issue title submitted through a guest form. Use it for categorisation and filtering.
For example, a prefix of [Homepage] means every issue appears as [Homepage] Button not working in your backlog. Useful when multiple widgets feed into the same project.
βΉοΈ Prefix is currently available on guest forms only.
Issue Types
Issue Types let reporters classify their feedback: Bug, Improvement, Feature Request, or custom types you define.
Each issue type can have its own form layout with different fields. A bug report might ask for steps to reproduce, while an improvement suggestion might ask for a description of the desired behaviour.
You control which issue types are visible to guests versus members. If only one type is enabled, the selector hides automatically and every submission uses that type.
More details at:
Issue Priority
Priority lets reporters (or you) mark how urgent an issue is.
You can show the priority field and let reporters choose, or preset it and hide it. When your project is connected to an integration, you may see your integration's native priority levels instead of Marker.io's defaults.
π‘ Tip: most teams preset priority to "Medium" for guest forms and hide it. Clients don't always have the context to judge urgency, and "High" becomes meaningless when everything is marked "High."
More details at:
AI features
Three AI features reduce friction on the form. All are in beta and free on all plans.
AI Title Generation
Hide the title field entirely. Reporters write a description, and Marker.io generates a clean, specific title when the issue is submitted. Turns "it's broken" into "Login button unresponsive on mobile Safari."
AI Magic Rewrite
One-click cleanup. Reporters write a rough description and tap rewrite. Marker.io restructures it into clear, actionable feedback with steps, expected behaviour, and actual behaviour.
AI Translation
Reporters write in their native language. Marker.io translates the title and description into your team's language on submission. Supports 200+ languages.
π Where to enable: Website β Settings β AI
More details at:
Dynamic variables
Dynamic variables auto-fill form fields with data that already exists: reporter identity, browser context, timestamps, and custom metadata from your application.
Use the {{variable}} syntax in any text-based field mapping. Type {{ in any field to open the variable picker.
More details at:
Built-in variables
Variable | What it injects |
| The reporter's email address |
| The reporter's display name |
| Current timestamp in ISO format |
| Full environment details (browser, OS, screen size, URL) in one field |
Custom metadata
Pass any data from your application into form fields using the JavaScript SDK:
customData: {
userId: getCurrentUserId(),
plan: getSubscriptionPlan(),
environment: getEnvironment()
}Reference these in your field mappings with {{customData.userId}}, {{customData.plan}}, etc.
This is how you get context like "which user," "which plan," and "which environment" into every ticket without the reporter lifting a finger.
More details at:
βΉοΈ Dynamic variables are available on Team plan and above.
Putting it all together
A well-configured form does most of the work before the reporter even starts typing.
Guest form (external users): One visible field (description), AI generates the title, assignee and priority are preset and hidden, labels are renamed to plain language. The reporter describes the problem in their own words. Everything else is automatic.
And everything your reporters don't type - browser, OS, screen size, console errors, network requests - is captured automatically behind the scenes. Your developers get the full picture without anyone filling in a single technical field.
Member form (your team): A few more fields visible (issue type, priority, maybe a component picker), but still with sensible presets and renamed labels. Members move faster because the form respects their time.
The result: more reports, better data, less back-and-forth. Your reporters describe problems. Marker.io handles the rest.
