Install · Shopify
Bug reports and feedback from your Shopify site, in one script tag.
Where it goes
In layout/theme.liquid, immediately before the closing body tag — the layout every storefront page renders through.
Setup
Adding the widget to Shopify
- 01
Copy your widget key
From the Widget tab of your project in UserWants. The key starts with uw_pk_ and is public by design: it will be visible in your storefront source, and the domain allowlist is the control that matters, not hiding the value.
- 02
Duplicate your theme first
In Online Store → Themes, use Actions → Duplicate before editing anything. Editing a live theme on a store that is taking orders is a bad habit, and the duplicate costs nothing. Edit the copy, preview it, then publish.
- 03
Edit layout/theme.liquid
Open Edit code, find layout/theme.liquid and paste the tag just above the closing body tag. Every storefront page renders through this layout, so one paste covers products, collections, cart and your policy pages.
liquid{% comment %} layout/theme.liquid {% endcomment %} <script src="https://userwants.app/widget.js" data-userwants-key="uw_pk_..." defer ></script> </body> - 04
Identify logged-in customers and allow your domain
Shopify already knows who is signed in. Passing the customer id means a report about a broken discount code arrives attached to a real order history. Then add your myshopify.com host and your custom domain under Allowed domains — they are different hosts and the list fails closed.
liquid{% if customer %} <script> window.UserWants?.identify({ identifier: {{ customer.id | json }}, name: {{ customer.name | json }}, email: {{ customer.email | json }} }); </script> {% endif %}
Worth knowing
What bites on Shopify
Checkout is not your theme
Shopify renders checkout from its own layout, and theme.liquid is not involved. On Plus you can add the tag through checkout.liquid or a checkout UI extension; on other plans the widget covers the storefront but not the checkout steps.
A theme update replaces the file
Updating your theme through the admin overwrites theme.liquid and takes the tag with it. Re-add it after every theme update, or keep the edit in a snippet you include, which is easier to spot in a diff.
App embeds are not needed
There is no Shopify app to install, which means no app permissions over your customer data and nothing appearing in your billing. It is your own theme code calling a script.
FAQ
Questions
- Is there a Shopify app for this widget?
- No. Installation is one script tag in theme.liquid, so nothing requests access to your orders or customer records and nothing is added to your Shopify bill. The trade-off is that you re-add the tag after a theme update.
- Can shoppers report a bug without creating an account?
- Yes, and that is the point on a storefront. A visitor who cannot complete checkout is exactly the person least willing to sign up for anything, so the widget asks for a description and collects the rest automatically.
The full reference — every field the widget collects, the domain allowlist rules and the JavaScript API — is in the widget docs.
Try it on your Shopify site.
Paste the tag, add your domain, and the next report arrives with the screenshot and the JavaScript error already attached.