Keeping the feedback experience consistent across apps
Keep feedback forms consistent across your apps by sharing placement, trigger style, type names, locale rules and statuses. Let each product differ only in its key, accent color and product name, set through one template.
By Rafael Thayto · Last updated
Decide what should match and what can differ
Start with a list of three columns: what must match across your apps, what can differ by brand and what belongs to one product only. Must match: the form's type names, the five statuses, the reply style and the placement of the feedback button. Can differ: the accent color, the language setting and the product name. Product specific: the product's key, its allowed origins and its webhook.
Write the list once. Every new app should copy it instead of reinventing it. Consistency comes from a shared decision, not from memory.
Use the same placement and trigger
Put the feedback button in the same corner of every app. The widget default is the right side, which you can set explicitly with data-position="right". Choose one position and keep it. A customer who learns the button in one app will look for it in the same place in the next. If one app needs the button on the left for layout reasons, treat that as a deliberate exception and write it down.
Use the same trigger style too. The default floating button works everywhere. Where a page already has its own help link, set data-trigger="none" to hide the floating button, then open the form from that help link with an element that has data-escuta-open. That keeps the entry point consistent without a second button competing with the help link.
Match the copy before you match the color
Customers notice wording before they notice color. If one app says "Send feedback" and another says "Report an issue", people will wonder whether they are reporting a bug or sharing an idea. The form uses four types: bug, idea, praise and other. Choose labels that map to those types in every app, and use the same sentence in the text around the button.
Language matters too. The widget supports English and Portuguese, and data-locale sets it explicitly. The default follows the browser language, which is usually right, but set it when your audience and your interface language differ. Use the same locale rule across all apps, so a Portuguese visitor does not get English in one product and Portuguese in another for no reason.
Give each product its own accent color
The accent color is the one place where each product should look different. Set the color in each product's widget snippet with data-color, and keep the same value as the product's accent color so the hosted feedback page matches the widget. That gives each app its own identity while the structure stays the same. Pick colors with enough contrast against the page background, and test the button on both light and dark pages.
Each app loads its own snippet with its own key and color:
<!-- Scheduler app -->
<script src="https://escutaproduto.com/widget.js" data-key="pk_your_scheduler_key" data-color="#1d4ed8" data-position="right" data-locale="en" defer></script>
<!-- Invoicing app -->
<script src="https://escutaproduto.com/widget.js" data-key="pk_your_invoicing_key" data-color="#0f766e" data-position="right" data-locale="en" defer></script>
Keep the configuration in one template
Write the snippet once as a template, and let the key and color be the only values that change per app. Keep the template in a shared note or a snippet library, and copy it into each project. When you change a shared setting, such as the position, change the template first and then update each app on purpose.
Do not hand-edit the attributes in five places. Small differences pile up. An app with a different position and no comment explaining why will confuse the next person who maintains it.
Match your replies and statuses
Replies should sound like the same person wrote them. Use the same greeting, the same length and the same sign-off across products. Keep replies short: one line that thanks the customer, one line that says what you did, and one line that says what happens next.
Statuses matter just as much. New, Planned, In progress, Done and Closed mean the same thing in every product, as described in one feedback inbox for many products. When a status changes meaning between apps, your weekly routine starts comparing unlike things. Write the meaning in one place and link to it from your routine.
Common inconsistencies to avoid
- Different allowed origins for the same domain. A staging domain added to one product and forgotten in another makes the widget work in one app and fail in the other.
- Two entry points. One app shows a help link and a floating button. Customers see two options and pick either at random.
- Mismatched types. One app uses only bug and idea, while another uses all four types. Your counts then mean different things.
- Forgotten locales. A Portuguese app with English labels, or the reverse, damages trust quickly.
Check consistency once a quarter
Every quarter, open each app's feedback button, submit a test message and compare the result. Check the placement, the labels, the language, the status of the test item in the dashboard and the alert that arrives in the channel. Five minutes per app catches most drift before a customer does. Write the date of each check in your notes, so you can see how long any drift lasted.
How to keep the widget consistent with Escuta Produto
Create one product per app in the dashboard, with its own allowed origins, webhook and accent color. Use the widget docs to check every option, and keep the template with the same position, trigger and locale rules across apps. Use the hosted page docs if some apps need a link instead of a button. For the weekly routine that keeps all of them readable, see a feedback routine for five products.
Frequently asked questions
What should stay the same across feedback widgets in different apps?
Keep the placement, the trigger style, the four type names, the locale rules and the five statuses the same. Let the product key, accent color and product name change, and set them from one shared template.
Should each app use a different accent color for the widget?
Yes, that is the one place where each product should look different. Set a data-color value per app that has enough contrast with its page, and keep the rest of the snippet identical.
Why set the locale explicitly when the browser language already works?
The default follows the browser, which is usually right. Set the locale when your interface language and your audience differ, and use the same rule in every app so visitors get the same language across products.
Related
- One feedback inbox for many productsWhy one feedback inbox beats a separate tool for each app, how per-product keys keep feedback apart, and what you give up by reading it all in one place.
- A feedback routine for running five productsA weekly feedback routine for five products: a daily count check, one fixed review slot per product, a bugs-first triage order and a list of what to skip.
- Using feedback to choose which product to work onHow to use unique customers, rating direction and revenue fit to pick the product that gets your next week of work, and avoid the loudest-product trap.
- How to organize Slack channels for product feedbackHow to set up Slack or Discord channels for product feedback: one webhook per product, a channel per product or a shared one, and ways to keep alerts quiet.