Magento and Adobe Commerce installation
Magento Testimonials with CMS Blocks
Most Magento testimonial extensions add a module, database tables and an upgrade to babysit. You can skip all of that: build one CMS block that holds the StoryProof embed in a Page Builder HTML Code element, then let the Widget tool drop that block into the page types and containers you choose.
- Code for a Page Builder HTML Code element
- Widget settings to place the block
- An optional CSP whitelist file
Code generator
Code for your Magento admin
Add the widget id. Part 1 goes in an HTML Code element inside a CMS block. Part 2 is a file for a small custom module, needed only if your store enforces its Content Security Policy beyond the payment pages.
Part 1 · HTML Code element inside a CMS block
Content › Elements › Blocks › Add New Block › Edit with Page Builder › Elements › HTML Code
<div data-storyproof-widget="YOUR_WIDGET_ID"></div>
<script src="https://app.storyproof.io/embed.js" async></script>Part 2 · Optional: allow the script host in a custom module
app/code/<Vendor>/<Module>/etc/csp_whitelist.xml
<?xml version="1.0"?>
<!-- app/code/Vendor/StoryProofCsp/etc/csp_whitelist.xml -->
<!-- Only needed if your store enforces CSP outside payment pages. -->
<csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Csp:etc/csp_whitelist.xsd">
<policies>
<policy id="script-src">
<values>
<value id="storyproof-script" type="host">https://app.storyproof.io</value>
</values>
</policy>
<policy id="connect-src">
<values>
<value id="storyproof-connect" type="host">https://app.storyproof.io</value>
</values>
</policy>
</policies>
</csp_whitelist>Save the block, place it with a CMS Static Block widget, refresh the cache if the admin asks you to, then open the storefront page in a private window.
Nothing you type here is sent; the code is assembled in your browser.
The problem, solved
Magento testimonial headaches and how the block approach handles them
- Problem 1
I do not want another extension
Every module is code that runs on your server, needs testing on each Magento upgrade, and can conflict with your theme.
How StoryProof solves it
The StoryProof embed is two lines of HTML in a CMS block. Nothing is installed in Magento, and the widget is rendered from StoryProof.
- Problem 2
Same testimonials needed on many pages
Pasting code into each CMS page means editing ten places when something changes.
How StoryProof solves it
Keep the code in one block and place it wherever you need it. One copy of the script fills every StoryProof div on a page, so two blocks on one page need only one script between them.
- Problem 3
Different proof for different categories
A furniture buyer and a lighting buyer care about different reviews, but a single block shows everyone the same quotes.
How StoryProof solves it
Create a StoryProof widget per category with its own chosen testimonials and layout, give each its own CMS block, and place each block on its category.
- Problem 4
Unvetted reviews on a live store
A storefront that publishes whatever arrives can show spam or an angry rant above the add to cart button.
How StoryProof solves it
Nothing reaches a widget until you approve it in StoryProof.
- Problem 5
Asking every buyer by hand
Without a trigger, review requests depend on someone remembering to export orders.
How StoryProof solves it
From Pro, a store can send StoryProof a webhook when an order is placed and the customer gets a review request a week later. Wiring that webhook from Magento is your own development work.
In StoryProof
Set it up in the Magento admin
Step 1 of 5
Prepare the widget in StoryProof
Choose the approved testimonials and a layout that suits the container you will use: a slider or list for a narrow column, a wall for a full width content area.
Step 2 of 5
Create the CMS block
Go to Content, Elements, Blocks and click Add New Block. Give it a Block Title, an Identifier in lowercase with underscores, and the store views it belongs to.
Step 3 of 5
Add the HTML Code element
Choose Edit with Page Builder, expand Elements, drag HTML Code onto a row, open its Settings and paste Part 1. Save the element, then Save & Close the block.
Step 4 of 5
Place the block with a widget
Go to Content, Elements, Widgets, click Add Widget, choose the CMS Static Block type and your theme, then Continue. Assign store views, add a Layout Update with the page type and Container, and under Widget Options select your block. Save.
Step 5 of 5
Refresh the cache and check
If the admin shows a cache message, follow it. Open the storefront page and watch the browser console for Content Security Policy errors.
Which Magento placement suits you?
Before you start
Magento caveats
Payment pages enforce CSP
From version 2.4.7, Magento runs its Content Security Policy in restrict mode on payment pages and in report only mode elsewhere by default. Keep the widget off checkout, or whitelist the host.
Hidden is not removed
Adobe notes that a hidden Page Builder element is still stored and can be crawled. Delete an HTML Code element you no longer want rather than hiding it.
No Magento extension
StoryProof is embed code, not a Marketplace module. Widgets show a "Powered by StoryProof" badge until Pro.
Not your native product reviews
The widget shows testimonials approved in StoryProof. It does not read or replace the review system built into Magento.
Adobe docs as of 2026-11-13
Menu names follow Adobe Experience League and the Adobe developer docs as read on 2026-11-13. Nobody has followed these steps on a live store yet, and themes can rename containers.
FAQ
Questions people ask
Short answers to what usually comes up next.
Does this work on Magento Open Source as well as Adobe Commerce?
The steps here follow Adobe’s admin guide for blocks and widgets. If your admin has no Page Builder, Adobe’s block guide says to add content with the editor’s own toolset instead; paste the code in its HTML view and check that it survives saving.
Why does the code disappear when I switch editor views?
A WYSIWYG view can rewrite markup it does not understand. Use the HTML Code element, which Adobe documents as accepting HTML, CSS and JavaScript.
Can I show different testimonials per store view?
Yes. Create one StoryProof widget per store view, put each embed in its own block, and assign each block or widget instance to its store view.
Will the script slow my storefront?
It loads with the async attribute, so the browser does not wait for it before drawing the page. Test your key templates after adding it.
Still have a question? Ask the StoryProof team or book a demo.
Put buyer testimonials on your Magento store
Collect and approve them in StoryProof, then reuse one CMS block across the store.
Sources
- Elements: HTML Code, Adobe Experience League. Checked 2026-11-13.
- Add a block, Adobe Experience League. Checked 2026-11-13.
- Create a widget, Adobe Experience League. Checked 2026-11-13.
- Content security policies, Adobe Developer. Checked 2026-11-13.
Last updated 2026-11-13.