Skip to main content

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.

Shown in StoryProof when you copy a widget’s embed code.

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.

  • Problem 2

    Same testimonials needed on many pages

    Pasting code into each CMS page means editing ten places when something changes.

  • 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.

  • 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.

  • Problem 5

    Asking every buyer by hand

    Without a trigger, review requests depend on someone remembering to export orders.

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.

Which Magento placement suits you?

Product page placement strategy is covered in our blog guide to where testimonials belong.
WhereSet it up inGood for
HTML Code directly in one CMS pageContent › Elements › PagesA single About or testimonials page
CMS block placed by a widgetContent › Elements › WidgetsThe same proof across many page types or categories
Block per categoryOne block and widget per categoryCategory specific testimonials

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

  1. Elements: HTML Code, Adobe Experience League. Checked 2026-11-13.
  2. Add a block, Adobe Experience League. Checked 2026-11-13.
  3. Create a widget, Adobe Experience League. Checked 2026-11-13.
  4. Content security policies, Adobe Developer. Checked 2026-11-13.

Last updated 2026-11-13.