M cenaly.com

Free · numbers computed server-side

Give visitors a reason to believe the numbers on your site

A small badge in the corner: “14 orders today”, “7 appointments this week”, “★ 4.8”. Our server counts them from your own orders, bookings, appointments and reviews — you cannot type in an invented number or your own wording, because there is no such field. For sites where the numbers really exist.

  • Back your offer with real events instead of claims
  • Show demand without exposing anyone’s name, city or purchase
  • Never police freshness by hand: data older than 36 hours goes dark on its own

No card · a minute to sign up, another for the tag · settings reach your site in 5 minutes

Social proof
One tag for every widget8 of 12 are freeShadow DOM — layout-safeLabels in your page languageTwo clouds: AWS and Russia
fact types: orders, table bookings, appointments and average rating
4
maximum data age — beyond that nothing is displayed at all
36 h
days of rating history, and never fewer than 5 ratings inside it
90
for the widget: it is part of the platform, not a notification service
$0

How it works for the visitor

  1. 1

    A visitor opens the page

    They start looking at your offer. The badge doesn’t jump out at once: you set the delay before the first one, and by default the widget lets people settle in.

  2. 2

    They notice a real number

    They see “14 orders today” or “★ 4.8 — 37 ratings”: a short note about what other guests chose — with no names and no details of anyone’s purchase.

  3. 3

    They carry on reading

    The badge leaves by itself, and the next one appears no sooner than the pause you set — 45 seconds by default, counted from the moment the previous one left, so nothing flickers.

  4. 4

    They dismiss it if they’d rather not

    The cross switches the badges off for the rest of the visit. If they just move to another tab, impressions wait for them instead of being spent.

Set up in three steps

1

Sign up and add your site

A free Cenaly.com account and your site domain in the "My website" section.

2

Paste one tag

One line before </body> — in your theme, in a Tilda or Wix HTML block, in Shopify's theme.liquid. It serves every widget.

3

Switch widgets on in the admin

Each widget is a toggle and a settings form. Changes reach your site without touching code; CDN cache is five minutes.

The tag

<script src="https://cdn.cenaly.com/site/v1.js" data-domain="your-site.com" async></script>

One tag for all widgets. `data-domain` is your site; everything else lives in the admin.

What the social proof widget does

Count what actually happened

Four fact types: orders today or this week, table bookings, service appointments and the average rating over 90 days. Only a real event moves the counter — there is no manual entry of “purchases” at all. Best where the demand exists but visitors can’t see it.

Show a number nobody could fake

There is no “badge text” field in the settings: the wording is assembled by the system from the fact type and the number, plural forms included. The public projection contains no free-text field other than dates and the time zone — there is physically nowhere to put a guest’s name, and a build test guards that. Best for anyone who needs the numbers to be trusted.

Retire stale data automatically

Anything older than 36 hours is not displayed in any form, and “today” is checked against the venue’s own calendar: once the day turns over, yesterday’s orders stop counting as today’s. Best for venues with days off and uneven flow.

Keep a decency threshold

A number below the threshold isn’t shown at all — 3 by default. The average rating has a floor of its own: it only appears from 5 ratings over 90 days, and that floor cannot be lowered. Best for new locations and seasonal businesses with sparse data.

Don’t get in the visitor’s way

Up to 4 badges per visit by default, the pause counted from the moment the previous one left, a hidden tab spends no impressions, the cross switches the badges off for the session, and the animation respects the system “reduce motion” setting. Best for sites with long sessions.

Put it where it belongs

Any of the four corners, your own accent colour, page masks, device and a schedule. If one of our floating buttons already sits at the bottom, the badge rises above it instead of landing on top. Best for sites running several widgets.

Where it pays off

A storefront with delivery

“14 orders today” on the menu page shows the visitor that people have already ordered through the site today.

A salon with online appointments

“7 appointments this week” on a service page shows real demand without a single invented review.

A restaurant taking bookings

“The table was booked 5 times today” belongs exactly where a guest is choosing between you and the place next door.

An average rating on the page

“★ 4.8 — 37 ratings” comes from your own reviews over 90 days and appears only from 5 ratings.

Campaign landing pages

Masks keep the badges on the landing pages you choose, and away from the blog and the legal sections.

A new location with no history

While the numbers are small the widget stays silent: the decency threshold won’t advertise an empty room, and the badges appear by themselves once the flow starts.

How it looks on your site

Colour, position and labels adapt to your site. The widget lives in a Shadow DOM — your styles don't break it, and it doesn't break yours.

Where it goes

Exact menu names and plan requirements, taken from each platform’s own help center.

Sites built with our website builder ship with the widgets already wired — nothing to paste.

Step-by-step guides per platform — in the help center →

Pricing

Free

  • The widget is free — no cap on impressions or websites and no “notification packs”
  • Our server counts the numbers as events happen — nothing to collect or refresh by hand
  • It works on your Cenaly.com storefront too: one toggle covers both surfaces
  • There is no manual event entry, so there is no per-event pricing either
  • We charge nothing per impression, per visitor or per domain — we sell none of the "notification packs" the market is built on

Why free

Widgets are the door into the Cenaly.com platform: requests, chats and orders from your site land in the same admin as everything else, and some owners later buy extensions. We earn from plans and from four paid add-ons rather than from the widgets — which is why we charge nothing per visitor, impression, request or domain.

Add it for free

With and without

Without the widget With the widget
Where the number comes from ✕ The badge arrives by webhook, and its content is down to whoever sent it Our server counts the number as the order, booking, appointment or review lands
Badge text ✕ The text is written by the site owner, and a visitor cannot check it There is no “badge text” field: the system builds the wording from type and number
Stale data ✕ Yesterday’s numbers keep showing up as if they were today’s Anything older than 36 hours is hidden, and “today” follows the venue’s calendar
Personal data ✕ The notification carries one person’s name, city and purchase The public schema has no fields for a name, a city or one person’s purchase
Cost ✕ A separate notification service means its own subscription and its own event source The widget is free and works on your site and on the storefront at once

Honest about the limits

  • The widget only shows facts that qualify: with no fresh data past the thresholds there will be no badges at all, and that is not a fault.
  • An order rung up at the till straight into a closed status doesn’t reach the badges: they describe the website’s guest flow, not the shift’s takings.
  • The average rating is published from 5 ratings over 90 days. You can raise your own threshold, but not lower it.
  • There is no badge text of your own and there never will be: you cannot type in a marketing line or an invented event — and it is exactly the absence of that field that makes the numbers checkable.
  • The badge text is translated into four languages (en, ru, ka, tr) — in other site languages it shows in English.
  • The widget does not count free appointment slots: live availability is the job of the appointment widget, not of social proof.

Who it's for

  • Venues taking online orders and table bookings
  • Salons and studios running appointments through Cenaly.com
  • Anyone whose demand is real but invisible on the website

What social proof is and how to show it without inventing anything

Social proof on a website is a short note that other people have already made a choice: how many orders today, how many bookings this week, what the average rating is. It works on a simple basis — people feel safer where others have been before them.

The trouble is that the genre damaged itself. More often than not the badge is arbitrary text that arrived from outside, and in places the events are typed in by hand. Visitors sense it, and a line like “someone from the next town just bought this” produces distrust rather than trust — and it rubs off on your offer.

This widget is built differently at the schema level: our server counts the number as an order, booking, appointment or review lands, and the public file has no free-text field at all — there is physically nowhere to put a name or an invented purchase, and a build test checks it. Stale data retires itself: anything older than 36 hours is hidden, “today” is checked against the venue’s calendar, and the average rating is only published from 5 ratings over 90 days. The owner chooses WHAT to show and from which threshold — not what it will say.

Social proof is the wrong widget for a young site with no orders and no ratings yet: the thresholds are built so that with empty data the badge simply never appears, which is better than invented activity. And it is not a popup — proof can say nothing beyond a counted number. If you need to carry an offer, a discount or capture a contact, that is the job of smart popups.

Questions and answers

What if there are no orders today?

There will be no orders badge until the number reaches the decency threshold — 3 by default. Other enabled fact types can still show if they pass their own conditions. If nothing qualifies, the widget stays silent, and that is deliberate: advertising an empty room does more harm than showing nothing.

Does it show customer names?

No. Only aggregates go out — the number of orders, bookings and appointments, the average rating and the number of ratings. Names, cities and products are absent from the public projection by schema, not by promise.

Can I write my own badge text?

No, and that is the widget’s defining feature. The system builds the wording from the fact type and the number, plural forms included: you cannot add a marketing line or an invented purchase. Any free-text field would turn the badges into a place to make things up.

Where do the numbers come from?

From your own events: an order reaching the “placed” status, a table booking or a service appointment being created, a review being applied. The recalculation happens as the event lands, not on a schedule.

How often does a visitor see the badges?

Up to 4 per visit by default, each staying for a few seconds, with the pause counted from the moment the previous one left (45 seconds by default). The cross switches the badges off for the session, and a hidden tab spends no impressions.

What does the average rating show?

The average and the number of ratings over 90 days from your own reviews — three numbers and nothing more. It is published from 5 ratings; review texts, names and dates are not in the public file.

Does it also run on my Cenaly.com storefront?

Yes. One toggle switches the widget on for both your website and your Cenaly.com storefront: the same selection rules, the same timings, the same text. There is deliberately no surface switch — you cannot enable the badges on only one of them.

How do I add it, and what does it cost?

It is free: the widget is deliberately absent from the add-on catalogue. Paste the shared “My website” tag and flip the toggle — WordPress, Tilda, Shopify, Webflow, Wix and custom-built sites all work.

Will social proof slow my site down?

Social proof is the lightest of our page widgets: about 15 KB gzipped, with the async attribute and after the page has loaded. It doesn't compute anything in the browser — our server refreshes a ready public file the moment an order, booking or review happens, and the widget reads it once. No database calls, no work on the visitor's device. The badge lives in a Shadow DOM.

What exactly loads on my site?

One loader — about 26 KB gzipped, with the async attribute: it reads which widgets you switched on and pulls only those, as separate files. A widget you left off is never downloaded, and the weight of each one you did switch on is stated on its own page.

Will it break my layout?

No. Widgets render inside a Shadow DOM: your site's CSS doesn't affect them and theirs doesn't leak out.

Which language will the widget speak?

It reads your page's `<html lang>` or a `data-lang` attribute on the tag. Built-in labels are translated into 45 languages — the guest chat covers the same list; your own texts you write in the admin in the languages you need.

Where is the data stored?

In the cloud your account lives in: cenaly.com — AWS, cenaly.ru — Yandex Cloud in Russia. Requests, conversations and bookings stay within the brand's contour.

More — installation per platform, settings and troubleshooting — in the help center. Installation guide →

Back your offer with numbers people will believe

Free, with the shared tag and a toggle. The server does the counting — you never have to invent the numbers or refresh them by hand.

Start for free

No card required · no “badge text” field · no qualifying facts, no badges