Joomla installation
Joomla Testimonials with a Custom Module
A Joomla Custom module is the natural home for the StoryProof embed: it sits in a template position and shows on the menu items you assign. The catch is the editor. TinyMCE removes script tags by default, so the trick is saving the module with the right editor and the right account.
- Embed code for the module content
- How to stop TinyMCE removing the script
- Menu Assignment for chosen pages
Code generator
Code for a Joomla Custom module
Enter the widget id. Paste Part 1 into the first Custom module. If the same page will show a second StoryProof module, that one takes Part 2, the div alone.
Part 1 · First Custom module, saved with Editor - None
Content › Site Modules › New › Custom › Module content
<div data-storyproof-widget="YOUR_WIDGET_ID"></div>
<script src="https://app.storyproof.io/embed.js" async></script>Part 2 · Any further StoryProof module on the same page
Content › Site Modules › New › Custom › Module content
<!-- A second Custom module on a page that already has one -->
<!-- The script from the first module fills this div as well. -->
<div data-storyproof-widget="YOUR_WIDGET_ID"></div>Set the Position and Menu Assignment, click Save & Close, then open the front end in a private window and view the page source to confirm the script tag is still there.
The snippet is built in your browser and never sent anywhere.
The problem, solved
Why Joomla swallows embed code, and how to get it to stick
- Problem 1
The script disappears when I save
The Joomla guide lists script, applet and iframe as the elements TinyMCE always removes by default, so the module saves with only the div.
How StoryProof solves it
Set your own user profile to Editor - None, which the Joomla guide says bypasses the editor filter, and paste the two line StoryProof embed as plain text.
- Problem 2
It works for me but not my colleague
Global text filters apply per user group. Super Users have no filtering by default, while other groups fall under the Default Forbidden List.
How StoryProof solves it
Have a Super User save the module that carries the script. Other editors can add div only modules, since one script on a page fills every StoryProof div there.
- Problem 3
It shows on every page
A new module appears on all pages by default, including ones where testimonials make no sense.
How StoryProof solves it
Use Menu Assignment to limit the module to chosen menu items, and give each placement a widget whose layout fits its position.
- Problem 4
Testimonial extensions want me to moderate in Joomla
Component based extensions put submission and approval inside your Joomla admin, with another set of permissions to manage.
How StoryProof solves it
Approval happens in StoryProof, and you choose which approved testimonials each widget shows.
In StoryProof
Install it in Joomla
Step 1 of 5
Switch your editor off for this job
Open your own user profile in the administrator, set its editor to Editor - None, and save. Switch it back afterwards if you prefer TinyMCE.
Step 2 of 5
Create the Custom module
Go to Content, Site Modules, click New and choose Custom. Give it a Title and paste Part 1 into the content box.
Step 3 of 5
Choose a position
Pick a Position from your template’s list, such as a sidebar or a main content position. If other modules share it, check the order they appear in.
Step 4 of 5
Assign it to menu items
On the Menu Assignment tab, choose Only on pages selected and tick the menu items that should show testimonials. Click Save & Close.
Step 5 of 5
Check the saved code and the front end
Reopen the module to confirm the script tag survived, then load an assigned page in a private window. If the script is gone, check the Text Filters tab in Global Configuration for your group.
Who can save the script, by default
Based on the defaults the Joomla guide describes. Your site may have changed them.
Before you start
Joomla caveats
Do not loosen filters for everyone
Removing script from TinyMCE’s prohibited list or turning off filters for broad groups lets anyone in those groups publish script. Change only what this job needs.
Template positions vary
Position names come from your site template. If the module does not appear, check that the template actually outputs the position you chose.
Not inside article text
This guide places the widget as a module. If you need it inside an article, use a content plugin that loads modules, which is outside this page.
No Joomla extension
StoryProof is embed code, not a Joomla extension. Widgets show a "Powered by StoryProof" badge until Pro.
Joomla guide as of 2026-11-13
Menu names and filter defaults follow the official Joomla guide at guide.joomla.org as read on 2026-11-13. Nobody has followed these steps on a live site yet, and labels shift between Joomla versions.
FAQ
Questions people ask
Short answers to what usually comes up next.
Is it safe to switch my editor to Editor - None?
It changes only your own account, and only how text is entered. Global text filters still apply when you save. Switch back to TinyMCE when you are done.
My script survived but nothing shows. What next?
Make sure the module is published, assigned to the page you are viewing and in a position the template outputs. Then check the browser console for a blocked script.
Can I avoid code entirely?
Yes. Link a menu item to your hosted Wall of Love, which every plan includes, and testimonials open on their own page.
Does this work with page builders such as SP Page Builder?
This page covers the core Custom module only. Page builders have their own code elements; follow their documentation for how they treat scripts.
Still have a question? Ask the StoryProof team or book a demo.
Put verified testimonials on your Joomla site
Collect and approve them in StoryProof, then paste one Custom module.
Sources
- Adding text (Custom module), Joomla Guide. Checked 2026-11-13.
- Editors: Global Configuration Text Filters and TinyMCE configuration, Joomla Guide. Checked 2026-11-13.
- Module display by menu item, Joomla Guide. Checked 2026-11-13.
Last updated 2026-11-13.