Proofloop Documentation · v1.0.0

Embedding widgets

A Proofloop widget is one script tag and one placeholder. It is under 15 KB gzipped, loads nothing from a CDN, and never blocks your page rendering.

The script embed

Build the widget in Display → Widgets, press Get embed code, and paste what it gives you. It looks like this:

<div data-proofloop="wgt_8f2a1c"></div>
<script src="https://yourdomain.com/w/proofloop-widget.js" async></script>

The div can go anywhere. The script can go anywhere too — it is async, so it never holds up your page. Several widgets on one page share a single copy of the script; add the tag once.

Options

AttributeValuesWhat it does
data-proofloopWidget IDRequired. Everything else is configured in the dashboard.
data-themeauto, light, darkOverrides the widget’s saved theme. auto follows the visitor’s system setting.
data-limit1–60Caps how many items load, below whatever the widget is set to.
data-lazytrue, falseDefaults to true: the widget fetches its content when it scrolls into view.

The iframe embed

Use this where you cannot add a script tag — a page builder that strips them, an email platform’s landing pages, a site whose Content Security Policy you do not control.

<iframe src="https://yourdomain.com/w/wgt_8f2a1c/frame"
        style="width:100%;border:0"
        height="640"
        loading="lazy"
        title="Customer testimonials"></iframe>

The iframe cannot resize itself to fit its content when it sits on a different domain, so set a height that suits your layout. The script embed has no such limitation, which is why it is the default.

WordPress

Three ways, in order of how much you will enjoy them.

Block editor

  1. Add a Custom HTML block where the testimonials should appear.
  2. Paste the embed code.
  3. Update the page. The block editor shows a placeholder in the editor and the real widget on the front end.

Elementor, Divi, Beaver Builder and similar

Every one of them has an HTML or Code widget. Drop it in and paste the same code. Do not paste it into a Text widget — those strip script tags on save, and you will get the placeholder with nothing in it.

Theme footer

If you want widgets on many pages, put the script tag once in your theme’s footer (Appearance → Theme File Editor, or a plugin such as WPCode) and then only the div on each page.

If the widget does not appear

Nine times out of ten it is a caching plugin that has minified the script tag away, or a security plugin blocking third-party scripts. Clear the cache first; if it is still missing, add your Proofloop domain to the plugin’s allow list. The iframe embed sidesteps both.

Styling

Colours, corner radius, layout, star style and typography scale are all set in the widget builder, and the builder checks your colour choices for contrast as you pick them — a testimonial nobody can read is not social proof.

The widget deliberately does not ship a font. It inherits yours, so it looks like part of your site rather than an embed. If you need finer control, every element carries a plw- prefixed class you can target from your own stylesheet.

Performance

MeasureBudgetEnforced by
JavaScript15 KB gzippedThe build fails if it grows past this.
CSS6 KB gzippedSame.
DOM nodes12 per testimonialSame.
Requests to third partiesZeroThere is no CDN, no font host and no analytics in the widget.

Widget responses are cached for five minutes, so a page that suddenly gets popular does not turn into database load.

What the widget will not do

It will not emit Review or AggregateRating structured data for reviews imported from Google, and there is no setting to make it. Marking up someone else’s platform reviews as your own site’s rich snippets breaks Google’s structured data guidelines and can get the page penalised. First-party testimonials collected through Proofloop are marked up correctly and automatically. See Compliance.