There are three ways to put a feedback widget on a WordPress site. Most guides show you one and imply it is the only one. They differ in what breaks later, which is the part worth knowing before you pick.
1. The plugin
Plugins → Add New → search "Feedback Magic" → Install → Activate. Then paste a publishable key per widget type under Settings → Feedback Magic. It is in the official WordPress.org directory, so it updates like everything else on your site; there is more detail on the plugin page if you want it before installing.
This is the route to take if you have a choice, and the reason is maintenance
rather than convenience. The plugin does not contain the widget — it enqueues the
hosted one through WordPress's own script_loader_tag filter. So the widget gets
fixed when we fix it, and your site does not need updating for that to happen.
When it is wrong: when you cannot install plugins. Plenty of managed hosts and locked-down client sites simply do not allow it, and no amount of explaining that it is a 30KB loader changes the policy.
2. The script tag
One line before the closing </body> tag, through whatever your theme or a
headers-and-footers plugin uses for custom scripts:
<script src="https://cdn.feedback-magic.com/widget.js" data-key="fm_pub_…" defer></script>
Works on any theme, any host, no plugin required.
When it is wrong: when you paste it into a theme file. Theme updates overwrite
theme files, and the failure mode is silent — the widget just stops appearing and
nobody notices until someone asks why feedback dried up. If you go this route, put
it in a child theme or a snippets plugin, never in the parent theme's
footer.php.
3. Don't touch the site at all
Every widget also works as a page we host. You get a link; you send the link.
That sounds like a lesser option and for one case it is clearly the better one: a client site you do not control. A survey link in an email, a QR code on a printed card, a feedback link in a support reply — none of these require anyone to approve a script tag, and the responses land in the same dashboard as the embedded ones, tagged by which channel they came through.
It is also the answer when there is no site yet. A business with an Instagram profile and no website can still collect testimonials.
Which to choose
| Situation | Use |
|---|---|
| You control the site and can install plugins | The plugin |
| Locked-down host, or you prefer no plugins | Script tag, in a child theme |
| Client's site, no access, or no site at all | The hosted link |
Where this is the wrong tool entirely
Worth saying plainly, because it will save some readers a wasted afternoon.
All three routes load a widget from our servers and store submissions on our side. If what you need is feedback stored inside your own WordPress database, with no third party involved, none of the above is right and one of the self-hosted form plugins is. That is a real requirement for some organisations and we are not going to pretend otherwise.
We are also new. If a long reference list of WordPress agencies is what would convince you, we do not have one yet.
Two things people get wrong
A key is per widget, not per site. Each widget type you enable has its own publishable key. They are safe to put in public HTML — a key only permits submitting to that one widget, and it can read nothing.
Test on staging if your theme is unusual. The enqueue goes through the standard filter, which is well-behaved, but themes that aggressively concatenate or defer scripts can still surprise everyone involved. Five minutes on a staging site is cheaper than finding out on the client's launch day.
Add all six surfaces to a WordPress site from your own admin → Feedback, surveys, visual annotation, changelog, a voting board and testimonials on one flat plan. Embed them or send them as a link. Responses, visitors and page views are never metered. The like-for-like comparison is Pro at $79 against about $261/mo across four vendors. 7-day free trial, no card.