HomeGuidesHow to Add Social Proof to Shopify Without Faking It

How to Add Social Proof to Shopify Without Faking It

One loader in theme.liquid, three widgets that can only show what really happened.

Updated

You can have a social proof widget running on a Shopify storefront in about ten minutes: paste the BootSignal loader before the closing </body> tag in theme.liquid, then add a mount element for each widget you want. The part to understand before you start is what the toast is permitted to say. It replays activity that BootSignal widgets on your store already recorded (comments, reactions, ratings, poll votes), it never reads your Shopify order feed, and when nothing has happened recently it renders nothing at all. A blank corner is the honest state of a quiet store, so most of this page is about the install, and the rest is about what to run while the real activity accumulates.

The feature that should make you close the tab

Shop for a social proof app and you will keep meeting the same option, usually presented as a way to get started before you have data. You type in the notifications yourself, or the tool produces a stream of plausible looking purchase events for you: a first name, a city, a product, a timestamp. Then it shows them to shoppers in the corner of your product page as though someone had just bought something.

A shopper does not read that as a marketing flourish. They read it as a fact about your store, offered at the exact moment they are deciding whether to hand you their card number. Consumer protection regulators treat invented customer activity and endorsements nobody gave as deceptive advertising, and both the US Federal Trade Commission and EU consumer law have moved against fabricated reviews and testimonials in recent years. Whether a generated purchase toast gets prosecuted in your particular market is a question for a lawyer, not for a widget vendor.

The part that needs no lawyer: if the events come from a list rather than from your store, the list repeats. Someone leaves a tab open, watches the same three names cycle past, and learns that this store is willing to lie about small things while asking to be trusted with a card number. That is an expensive way to fill a corner of the page.

What a truthful toast can actually say

The BootSignal Social Proof Toast has no compose field and no generator, because it has no source of events other than your own site. It reads the activity BootSignal widgets already store for your domain (comments, reactions, ratings, poll votes) and rotates through it. The wording stays generic and no visitor names are shown: "Someone just left a comment", with a relative time beside it. Activity older than three days falls out of the pool, so a burst from last month cannot be recycled as this afternoon.

That design has a consequence you should accept deliberately before installing it. A store with no recent activity shows an empty corner. There is no fallback message, no filler, no demo mode that leaks into production.

Preview
Someone just left a comment2m ago

One toast at the size it appears over a storefront. It sits above the page in a corner and rotates while there is real activity to rotate through.

No plan to upgrade, and two Shopify plans that cannot do this

There is no upgrade to buy for the install itself. Shopify documents the theme code editor, the theme editor, the Custom Liquid section and app embed blocks without attaching a plan requirement to any of them, and the Basic plan page describes an online store you customize through the built in theme editor. Two plans are excluded for a more basic reason. The Lite plan does not include the online store sales channel, so there is no storefront to put a widget on. The Starter plan restricts you to the Spotlight theme and states that other themes and customization options are not available, without saying whether the code editor is reachable, so treat Starter as unverified (it is also closed to new stores).

Where each of the three widgets goes

The loader is site wide and the toast is site wide, so both belong in the layout file. The other two are page specific and belong in a section. Getting that split right the first time saves you an afternoon.

  1. Your store answers on two hostnames, so the dashboard gets two entries

    Open the BootSignal dashboard and add your storefront domain, then add the .myshopify.com domain too. The widget compares location.hostname against the domains registered for your site id, and a Shopify store serves on both. Registration returns the site id, which is the only value you carry into Shopify.

  2. Before Edit code, make a fallback copy of the theme

    Open Online Store in the Shopify admin, then use the "..." menu beside the theme and pick Edit code. On mobile: Menu icon > Sales channels > Online Store > Manage themes > horizontal menu icon > Edit code. Duplicate the theme before you touch anything, because a theme update can remove code changes.

  3. Paste the loader and the toast into theme.liquid

    Expand Layout in the file tree and open theme.liquid. Put both lines just before the closing </body> tag and Save. Here the global layout is the correct home: you want the toast on the product pages, the collection pages and the cart, and one loader serves every widget you add later. Leave defer in place, since Shopify Theme Check flags parser blocking scripts as a storefront slowdown.

    <script src="https://bootsignal.com/bootsignal.js"
            data-site-id="YOUR_SITE_ID" data-lang="en" defer></script>
    <div data-bootsignal="social-proof-toast"></div>
  4. Add the testimonial wall where reviews belong

    This one is a block of page content, so it goes in a section. The route that needs no code editor: Online Store > Edit theme, switch templates with the dropdown in the middle of the top bar, then Add section > Custom Liquid and paste. The wall shows reviews of four stars and up by default and caps the grid at nine cards; both are attributes you can change.

    <div data-bootsignal="testimonials" data-min-stars="4" data-max="9"></div>
  5. Put the live visitor badge on pages that have visitors

    The badge is per page, so it takes a data-thread-id that separates one page from another. Bind it to the product handle from inside the main product section, or from a Custom Liquid block placed in that section. A thread id cannot contain a colon or a slash, which a handle never does.

    <div data-bootsignal="live-visitors" data-thread-id="{{ product.handle }}"></div>

Three things about the Custom Liquid route are worth knowing before you paste into it. Its content cannot exceed 50kb, which no widget snippet approaches. Unclosed HTML tags are closed for you on save, which can quietly rearrange a sloppy paste, so keep the snippet well formed. And it cannot use {% javascript %} or {% stylesheet %} tags, so whatever goes in has to be ordinary HTML with a <script src> and nothing Liquid-flavoured. Custom Liquid is a Shopify Theme Store requirement rather than a platform guarantee: a custom built or older theme can simply not have it, and everything below then happens in the code editor instead.

What each widget can and cannot claim

WidgetWhat a shopper seesWhere the data comes fromOn a quiet day
Social Proof ToastRotating one line notices, generic wording, no visitor names, relative timeComments, reactions, ratings and poll votes stored by BootSignal widgets on your siteRenders nothing; activity older than three days drops out of the pool
Live Visitor CountA "N people here now" badge on one page, no sign in requiredSessions active on that page right now, counted per data-thread-idShows a small number, because that is the true number
Testimonial WallA card grid of reviews with star scores and the reviewer name they gaveReviews visitors left through the BootSignal Ratings widgetRenders nothing until matching reviews exist
A generator style toolPurchase style notifications with a name, a place and a timeText you wrote or events the tool produced, not your visitorsKeeps showing notifications
The BootSignal rows describe the shipped widgets, checked 2026-08-25. The last row describes a pattern common in this category, not any specific product.

When your store is genuinely quiet

This is the situation the fake generators are sold for, and it is a real situation. A store that launched last week has nothing to replay. The answer is not to invent activity; it is to run the widget whose truthful output is useful on day one, and to start collecting the material the other two need.

  1. Install Ratings on your product pages first. It is the collector: the Testimonial Wall and the toast both read what it stores, so nothing else fills up until this one is live.
  2. Email people who already bought a link to the product page and ask for a rating. Buyers you have already served are the fastest legitimate source of reviews, and this is the step the fake generators exist to skip.
  3. Use the live visitor badge where concurrent traffic is plausible, such as a launch, a sale, or a product you are actively advertising. It states a fact about this moment, so it needs no history to be true.
  4. Take the badge off pages that are quiet. A badge reading one person is accurate and still unhelpful, and there is nothing dishonest about choosing where to display it.
  5. Add the Testimonial Wall once reviews exist, then leave the toast on permanently. It stays blank while the store is quiet and starts appearing on its own as activity arrives.

If your blog is where the activity actually happens, the Shopify comment widget guide covers the article section install, and every comment on a post becomes something the toast can replay on your product pages.

Show Real Activity on My Product Pages

Reads your own widgets, invents nothing, stays blank when there is nothing to say.

What it costs when a sale quadruples your traffic

One subscription covers it: $20 per month or $200 per year per registered domain, with every widget in the catalog included and no component of the price tied to traffic, pageviews or impressions. That matters more on Shopify than on a brochure site, because your traffic is seasonal by design. A store that quadruples its sessions during a sale week pays the same as it did the week before, and so does the store whose toast was blank all month.

The catalog is 31 paid widgets plus 31 free browser tools, and widgets released after you subscribe are included too, which is why the second and third mount element on this page cost you nothing extra. Extra domains are bought separately from the dashboard, which is the case if you run more than one store. Full numbers are on the pricing page, and the alternatives section carries the priced comparisons against other tools.

The failure you will not notice

Every honest social proof install has one weakness, and it is worth naming. Shopify is explicit that if changes you have made to a theme code are incompatible with a theme update, all your code changes are removed in the updated copy. Your loader and your mount elements are code changes. When that happens to a comment thread, you notice immediately: a section of the page is missing. When it happens to a toast that only appears during real activity, it looks exactly like a normal quiet week.

So the check has to be deliberate rather than visual. After any theme update, theme switch, or theme purchase, do this:

  1. Open any storefront page and search the page source for bootsignal.js. If it is not there, the loader went with the update and every widget is offline, not quiet.
  2. Load a product page with the live visitor badge in a normal browser tab. The badge draws whenever the widget is running, so it is the fastest proof of life on a store with no other activity.
  3. Re-paste in the same two places if either is gone: the loader and the toast in theme.liquid, the page specific mounts in their sections.
  4. Do not worry about the data. Comments, ratings and reviews live on the BootSignal side keyed by site id and thread id, so a re-paste brings back the same history, unchanged.

Put those four lines wherever you keep notes about your theme customizations, next to whatever else a theme update breaks. Then go read the reviews the wall is showing. A store with real activity to display has customers telling it things, and the widget is the least interesting part of that.

Questions people ask

Does the toast show Shopify orders or purchases?
No. It reads only what BootSignal widgets on your site have stored: comments, reactions, ratings and poll votes. It has no connection to your Shopify order feed, no access to customer records, and no way to produce a purchase event. If purchase style proof is what you want, the honest version is reviews from people who actually bought, collected with the Ratings widget and displayed on the Testimonial Wall.
Can I write the notification text myself?
Not in this widget. There is no compose field, because a message you author is not evidence of what other shoppers did. If you want to tell visitors something in your own voice, use the announcement bar instead, which reads as a message from the store: <div data-bootsignal="announce" data-message="Free shipping this week" data-link="/collections/sale" data-link-text="See the sale" data-id="sale-1"></div>.
How far back does the toast reach for activity?
It replays the recent activity BootSignal already stored for that site: comments, reactions, ratings and votes your own widgets collected. It reads a bounded pool of the newest items rather than your whole history, so a store that was busy last month and quiet this week shows less, not more. That is the intended behavior, not a limit to work around.
Does the theme editor preview tell me whether the widgets are working?
Only partly. The markup usually renders, since the theme editor loads your own storefront rather than a sandboxed third party frame. The toast is the part the preview cannot settle for you: it can be blank there for an entirely legitimate reason, because it only shows real recent activity and the pool covers about three days. Save, then open a live storefront URL in a normal tab, and use the live visitor badge as your proof that the loader is running.
Can a shopper make the toast stop?
It cycles through a bounded pool and sits in a corner rather than over the buy button, which is the honest version of this pattern. If you would rather not have a moving element on a checkout path at all, put it on collection and product pages and leave cart and checkout alone.
What if I have no reviews yet, so the testimonial wall is empty?
It renders nothing rather than showing placeholder quotes, and it cannot invent one. Install Ratings on your product pages, then ask past buyers for a review by email. The wall shows four stars and up by default, so early ratings that clear that bar start filling it without any further work from you.
Add Real Activity Social Proof to My Shopify Store

Register your store domain first; the loader and the toast are two lines in theme.liquid.

Family Site