Skip to content
Hazelsong is still being built.Skip to content
Hazelsong

Publish

A page you can send somebody

A hosted page with your testimonials on it, at its own address, with review markup so search engines read the ratings. Named walls of your own on every plan, each with its own selection.

PlanNamed walls on every plan — ten a project on Free, twenty-five on Starter, a hundred on Pro — each with a button if you want one. Your own address on Starter and Pro.

How it works

Walls of Love, step by step

  1. Named walls on every plan

    One for each service, each location, each language: ten a project on Free, twenty-five on Starter, a hundred on Pro. Each is its own page with its own address and its own set, and a change you make reaches it within a minute.

  2. Review markup, built in

    The structured data that lets a search engine understand what it is reading, generated from the testimonials themselves.

  3. At your own name if you want one

    acme.hazelsong.com, or testimonials.acme.com on a domain you own, with the certificate issued for you.

  4. A button of your own

    Give a named wall a button — your words, 2 to 40 characters, and your https link, to book, buy or get in touch — and it is drawn under the heading and again after the testimonials, in your brand color, moved only as far as it must to be read. Your report shows how often each wall's button was pressed against how often that wall was shown, and so do the CSV and a client's share link.

yourbusiness.com
Your customer's words appear here, exactly as they wrote them.
CNCustomer nameTheir role · Their company
A longer one grows its card instead of being cropped. Nothing is truncated, nothing rewritten.
CNCustomer nameTheir role · Their company
The rating is optional.
CNCustomer nameTheir role · Their company
Approve one and it appears. Delete it and it goes, everywhere, at once.
CNCustomer nameTheir role · Their company
Drawn from the product's own markup and labels, with example words — not a real customer.

Safe by design

The rule that makes it safe to have

Clear boundaries

What it will not do

Every capability page ends with this list. It is the part that says what you are actually buying.

  • It will not publish an unapproved testimonial.
  • It will not invent a rating for a testimonial that has none.
  • It does not present itself as every review you received or as an independent review site: the top of every wall says the testimonials were selected and published by you, and its average says it is over the published ones.
  • It does not promise stars in search results. A wall's markup describes your business, and Google does not show stars for reviews a business collected about itself; the widget's markup on a page about a product, a course, an app or an event is the kind Google can show, and Google still decides whether it does.
  • A wall's button never says anything we wrote about your business. There is no default label and no suggested one: no words of yours, no button.
  • It will not make named walls without a figure: past the plan's number a new one is refused with a sentence saying so, and nothing already made is touched.
  • A wall's button goes to your address exactly as you typed it. We add no tracking parameter and send nobody through a redirect of ours; a press is counted beside the link, not by changing it. It takes https only, never mailto: or http://.
  • A hosted wall says how the testimonials on it were collected, counted from their own records (your form, a request link Hazelsong emailed, a reported order, an import, the API) and that you chose them. It never says one was verified, and it links to Hazelsong's review policy.

Where it lives in the code: lib/walls.ts · lib/wall-cta.ts · components/WallBody.tsx · components/NamedWalls.tsx · app/w/[slug]/page.tsx · app/wall/[slug]/page.tsx · lib/domains.ts · scripts/wall-cta.mjs

Questions

Asked about this

From Help, where every answer is written from the product as it runs.

How much code is it?

Two lines: a script tag and a div. The layout is a query string on the script tag, or a data attribute on the div — both of which live in your page, so turning a wall into a marquee later means editing those two lines where you pasted them. There is nothing to rebuild at this end.

It shows nothing on my page.

Three usual causes, in order of likelihood: nothing is published yet (Pending is not published); the builder you are using strips script tags from block content, in which case the tag goes in the theme footer; or you are looking at the editor preview rather than the live page, which is normal on Webflow, Framer, Elementor and Squarespace.

Can I embed it in Notion or a newsletter?

No, and not because of us: neither runs a third-party script. Link the hosted wall in Notion, and use a testimonial image in the newsletter. Email has not run JavaScript for twenty years.

Does the widget slow my page down?

It is one small script with no framework behind it and no font to fetch. It draws after your page has drawn.

More on putting them on your site

This is running now

Open a project and use it. Nothing on this page is a roadmap.