Embed the CatalogScan scan on your own site
One <script> tag. Two modes. Zero dependencies. Drop a free AI-agent readiness scan into any blog post, podcast page, course module, or store footer — and turn passive readers into scored stores.
Quick install
Paste this once at the bottom of any HTML page. Then add a mount <div> wherever you want the widget to render. Multiple mounts on the same page are fine — each is rendered independently.
<script async src="https://catalogscan.com/embed.js"></script>
Scan-form mode
Default mode. A small inline form that asks for a store domain and sends the visitor to catalogscan.com with the scan auto-running. The right call for blog posts, podcast pages, and any content that mentions catalog hygiene, AI shopping agents, or Shopify SEO.
Embed code:
<div data-catalogscan-embed></div>
<script async src="https://catalogscan.com/embed.js"></script>
Score-badge mode
Display a store's current AI-readiness score as a chip with a backlink to its public scorecard. The right call for store owners who want to flex a high score on their own footer / about page, or who want to track changes after they ship a fix.
Embed code:
<div data-catalogscan-embed
data-mode="badge"
data-domain="yourstore.com"></div>
<script async src="https://catalogscan.com/embed.js"></script>
Mount attributes
| Attribute | Required | Default | Notes |
|---|---|---|---|
data-catalogscan-embed |
yes | — | Marks an element as a mount point. Value is ignored. |
data-mode |
no | scan |
Either scan (form) or badge (score chip). |
data-domain |
badge mode only | — | The store domain to fetch. Accepts yourstore.com or a full URL — we strip https://, www., and the path automatically. |
What you get
- Self-contained. No external CSS, no dependencies, no React, no jQuery. The widget injects scoped styles only — your page's CSS won't leak in and the widget's CSS won't leak out.
- Light + dark. Honors
prefers-color-scheme. Looks correct on a dark blog template and on a light docs theme without configuration. - Privacy-respecting. No cookies. No analytics. No tracking pixels. Badge mode does one CORS GET to fetch the cached score; scan-form does zero network calls until the visitor submits.
- Backlink built in. Every embed includes a
Powered by CatalogScanlink with?utm_source=embed, so we can attribute traffic and you can track what drove it. - SPA-friendly. If you mount embeds after initial render (Next.js, Astro, Vue), call
window.CatalogScanEmbed.refresh()after the new node is in the DOM.
Where to embed it
- End of any blog post about GTINs, Shopify AI agents, or catalog hygiene — the scan turns the post into a tool.
- Footer of a Shopify storefront — pair badge mode with your store's domain to display a live trust signal that updates as you fix signals.
- About / portfolio pages where you want to show off your store's score next to other social proof.
- Podcast show-notes pages and YouTube video descriptions linking to a landing page that embeds the scan form.
- DTC newsletters with a hosted-page archive (Beehiiv, Substack web) — drop the scan form once and every issue's archive page becomes a lead magnet.
Got an embed live? Tell us.
If you ship the widget on a public page, link us at catalogscan.com and we'll feature it on the leaderboard's "Spotted in the wild" strip — extra backlink, extra reach.