# Quizzings > Collect customer reviews and embed them on your own site. This file is the complete integration guide. Everything needed to add the widget is below. There is no SDK to install and no API key. ## Concepts A business has an id (a UUID) and a public review link. Reviews are left by anyone with the link, with no account. Only reviews with status "published" are ever returned by the API; a business can hide a review from their site but cannot edit or delete one. The site id is shown in the Quizzings dashboard under Embed. ## Option 1: script tag Works on any website, including plain HTML, WordPress, Webflow and Framer.
The script renders into every element matching the target selector. Place the div wherever the reviews should appear. The script tag itself can go anywhere. ### Script tag attributes data-site required. The business id from the dashboard. data-layout grid | list | badge. Default grid. data-limit how many reviews to fetch, 1 to 50. Default 6. data-accent any CSS colour. Default #007aff. Overrides both themes. data-target CSS selector for the container. Default [data-quizzings="reviews"] The product was called Proofly before, so the default selector also still matches [data-proofly="reviews"]. Existing installs keep working untouched. Use data-quizzings for anything new. ### Layouts grid responsive cards. For a homepage section or a landing page. list a score header over stacked rows. For a dedicated reviews page. badge compact score summary. For a pricing page, sidebar or footer. ### Styling notes The widget renders in a shadow root, so host page CSS cannot restyle its internals and its CSS cannot leak out. Two properties are inherited from the host on purpose: font-family and color. To make the widget match the surrounding design, set those on the container element: Do not attempt to target internal classes such as .pf-card from the host page. They are not reachable and are not a stable API. Use data-accent and the inherited font instead. The widget emits Schema.org AggregateRating JSON-LD into the light DOM next to the container, so it is visible to search crawlers. ## Option 2: React or Next.js There is no npm package. Copy this component into the project. It has no dependencies beyond React. "use client"; import { useEffect, useState } from "react"; const QUIZZINGS_ORIGIN = "https://reviews-rhf8acz8h-nas-projects-4df7577e.vercel.app"; type QuizzingsData = { business: { name: string; url: string | null; reviewUrl: string }; summary: { score: number; count: number }; reviews: { id: string; rating: number; body: string; name: string; verified: boolean; createdAt: string; }[]; }; export function QuizzingsReviews({ site, limit = 6, }: { site: string; limit?: number; }) { const [data, setData] = useState{"\u2605".repeat(review.rating)} {"\u2606".repeat(5 - review.rating)}
{review.body}
{review.name}