Wall of Love

The Wall of Love lets you hand-pick your best approved praise and publish it as an embeddable testimonial wall on your own website. You curate the order, and a public, no-login page renders the chosen testimonials in your chosen layout.

What the Wall of Love is

The Wall of Love is a curated collection of testimonials drawn from your praise submissions. It is managed at /dashboard/wall-of-love and published at a public URL (/wall/p/[projectId]) that can be embedded on any website via an iframe.

Only items you explicitly add appear on the wall. Nothing is published automatically. Each wall item is a reference to an existing submission, so the testimonial text, rating and author details (name, title, company) are pulled live from that submission.

The dashboard wall shows items across the whole workspace. Team members see the workspace owner's wall items, scoped to the owner's account.

Author details shown are author name (falls back to 'Anonymous'), author title and author company, plus a star rating if one was given.

Eligibility: only approved praise can be added

When you open the Add Testimonial dialog, the wall fetches submissions with status 'approved' and type 'praise' (the dashboard calls /api/submissions?status=approved&type=praise). Submissions that are pending, rejected, or that are not praise are never offered.

Two further filters apply in the picker: submissions already on the wall are hidden, and submissions with no text content are excluded. So if a piece of praise does not show in the picker, it is usually because it is not yet approved, is already on the wall, or has no written content.

If you have no eligible submissions, the dialog shows 'No approved praise submissions available' with a link to the Inbox to approve submissions first.

To make praise eligible, approve it from the dashboard inbox before coming to the Wall of Love.

Adding testimonials to the wall

Adding an item creates a wall entry that points at the chosen submission and appends it to the end of the wall (its position is set to the current count of items on that form plus one).

The same submission cannot be added twice. If you try, the request is rejected as a duplicate ('Already in wall').

  1. 1Go to Dashboard > Wall of Love.
  2. 2Click 'Add Testimonial' (top right).
  3. 3In the dialog, browse your approved praise submissions. Each row shows a short preview of the quote, the author, company and rating.
  4. 4Click 'Add' on the testimonials you want. Each added item appears on the wall immediately and is removed from the picker list.
  5. 5Close the dialog when finished.

Permission: adding requires the 'wall:write' permission. Owners, admins and editors can add; viewers cannot (the API returns 403 Forbidden for viewers).

Ownership is enforced server-side: you can only add submissions belonging to a form in your own workspace.

Reordering the wall

Wall items are displayed in a draggable list. Drag the grip handle on the left of a card to change its order; the new order is saved automatically. Reordering is also keyboard-accessible (focus the handle and use the keyboard sort controls).

While saving you will see a 'Saving order…' indicator. If saving fails, the wall reverts to its previous order and shows 'Failed to save order — reverted' for a few seconds. The order you set here is the order the public wall uses (items are returned sorted by position ascending).

Permission: reordering requires 'wall:write' (owner, admin, editor). Viewers cannot reorder.

Every item in a reorder request is checked for workspace ownership; if any item is not yours, the whole reorder is rejected.

Removing testimonials

Hover over a wall card and click the bin icon to remove that item from the wall. This deletes the wall entry only — it does not delete or change the underlying submission, which remains in your inbox and can be added back later.

Permission: removing requires 'wall:write' (owner, admin, editor). Viewers cannot remove items.

Removal is permanent for the wall entry, but the testimonial itself is untouched.

Previewing the wall

The 'Preview' button opens an in-dashboard modal that shows your current wall items as a simple two-column grid of quote cards with ratings and author details. This is a quick internal preview; the live public page is rendered separately and supports more layout options (see below).

Embedding the wall on your site

Once you have at least one testimonial on the wall, the dashboard generates an iframe embed snippet under 'Embed Your Wall'. Copy it with the copy button and paste it anywhere on your website. The iframe points at your public wall page (/wall/p/[projectId]) and is responsive with a sensible minimum height.

You can also click 'Open' to view the public wall directly in a new tab. The form ID used in the embed is taken from your first wall item, so the embed reflects that form's wall.

  1. 1Add at least one testimonial to the wall.
  2. 2In the 'Embed Your Wall' card, click the copy icon to copy the iframe snippet.
  3. 3Paste the snippet into your website's HTML where you want the wall to appear.

Until you add a testimonial, the embed card shows 'Add at least one testimonial to generate your embed code.'

The embed URL uses your app's configured public URL (NEXT_PUBLIC_APP_URL) or the current origin.

How the public wall renders

The public page at /wall/p/[projectId] fetches wall items from a public, unauthenticated endpoint (/api/wall/public/[formId]). That endpoint returns the approved wall items for the form, ordered by position, including content, rating and author name/title/company. Because the data is served by a service-role read, the page works without anyone logging in — wall items are treated as public once added.

The page supports two URL options. 'layout' chooses how testimonials are arranged: grid, carousel, masonry or single; anything else (or no value) defaults to masonry. 'theme' controls appearance: it is dark by default, and theme=light gives a white background. For example: /wall/p/<projectId>?layout=grid&theme=light.

Each testimonial renders as a card with a quotation mark, the quote text, a star rating (if present), and the author's name, title and company. Cards animate in on load. If a testimonial has a video, the card shows a play button that opens it in a modal — though the standard wall items returned by the public endpoint are text testimonials. If there are no items, the page simply shows 'No testimonials yet.'

A small 'Collected with Roast' branding link is shown by default on the public wall.

The public wall page is set to noindex/nofollow, so it will not be indexed by search engines on its own — it is intended for embedding.

Responses are cached briefly at the CDN (about 30 seconds, with background revalidation), so newly added or removed items may take a short time to appear on the live wall.

The public endpoint sends Access-Control-Allow-Origin: * so the wall can be embedded on any domain.

Who can do what (permissions)

Reading the wall in the dashboard is available to all workspace roles. Curating it (adding, removing, reordering) is gated behind the 'wall:write' permission.

Owner, admin and editor roles have 'wall:write' and can fully curate the wall. The viewer role is read-only and cannot add, remove or reorder items; those API calls return 403 Forbidden.

All curation actions additionally verify that the wall item or submission belongs to your workspace before making any change.

Frequently asked questions

Why can't I see a testimonial in the Add Testimonial dialog?
The picker only lists submissions that are approved, of type praise, not already on the wall, and that have written content. If a piece of praise is missing, approve it in the inbox first, check it is praise (not another type), and confirm it has text and is not already added.
Does adding praise to the wall publish it automatically?
It becomes available on your public wall page (/wall/p/[projectId]) and in any iframe embed straight away (subject to a short cache). Nothing reaches the wall unless you explicitly add it.
If I remove a testimonial from the wall, is the original deleted?
No. Removing only deletes the wall entry. The underlying submission stays in your inbox and can be added back to the wall later.
Can team members curate the Wall of Love?
Owners, admins and editors can add, remove and reorder. Viewers have read-only access and cannot change the wall.
Can I change the wall's layout or colour scheme?
The public wall supports layout and theme via URL parameters: layout can be grid, carousel, masonry (default) or single, and theme=light switches to a white background (dark by default). For example /wall/p/<projectId>?layout=grid&theme=light. The copied embed snippet uses the default masonry/dark wall unless you adjust the iframe src URL yourself.
Why don't my changes show on the embedded wall immediately?
The public wall is cached for roughly 30 seconds with background revalidation, so newly added, removed or reordered items can take a short while to appear on the live wall and embeds.
Where does the embed code come from and why is it empty?
The embed snippet is generated only once you have at least one testimonial on the wall; before that you'll see a prompt to add one. The iframe points at /wall/p/[projectId] using your app's public URL.