Integration

Add Spectare to any site in an afternoon

Four paths, one atom library. Pick the one that fits your setup.

See how Spectare assembles pages

Read visitor intent from signals. Watch the personalisation engine decide what content matters.

From: What is Spectare, Silent intent detection plus explicit visitor input

Silent intent detection plus explicit visitor input

Spectare works out who each visitor is the moment they arrive, without asking anything. It reads the referrer, UTM parameters, the page they landed on, and any prior visit patterns stored locally to build a signal picture and classify intent. That classification drives which atoms are selected and how the page is assembled.

When a visitor types a question through the ask surface, a different signal path activates. The question is explicit demand in the visitor's own words, and Spectare records it alongside the best atom similarity score the search returned. A high similarity means the library answered well. A low similarity, below 0.45, means the question went unanswered and the visitor's exact wording is flagged as a content gap.

These two signal types are treated separately in assembly. Inferred signals from referrers and UTM parameters feed the general intent summary. Typed questions get their own section in the gap detection prompt, and a weak similarity score on a typed question outweighs inferred-signal evidence when assessing what content is missing from your library.

The assembled_pages record captures source and top similarity for every page built from a typed question. This data feeds both the live unanswered questions feed in your admin and the nightly gap detection run, giving you a complete picture of where your library is strong and where it is not.

Weak match threshold

similarity below 0.45

Signal types tracked

inferred and explicit

Server-rendered personalisation on warm cache hits

Spectare solves the flash-of-default-content problem that plagues most personalisation platforms.

Read more →
01Script tagAny site
02WordPress pluginNo code
03Next.js SSRZero flicker
04REST APICustom integrations
01Script tag

Works on any platform

Drop one script tag into your page head. Mark your content areas with data-spectare-slot attributes. Spectare handles intent detection, assembly, and slot filling automatically.

Works on Webflow, Shopify, Squarespace, Next.js, or any site that runs JavaScript. No build step, no backend changes.

✓WordPress
✓Webflow
✓Shopify
✓Squarespace
✓Next.js
✓Plain HTML
index.html
<!-- Add to <head> on every page -->
<script
  src="https://spectare.ai/spectare.js"
  data-org="YOUR_WORKSPACE_SLUG"
></script>

<!-- Place slots where personalised content should appear -->
<div data-spectare-slot="primary"></div>
<div data-spectare-slot="supporting"></div>

<!-- Set conversion URL in Settings. Fires automatically. -->
<!-- Or call manually on any event: -->
<script>spectare('conversion');</script>
02WordPress plugin

43% of the web. Zero code.

Install the plugin, add your workspace slug and API key, and place Spectare Zone blocks in Gutenberg. Zones render personalised content into the HTML at first paint: no shimmer, and SEO-ready. Prefer no API key, or personalising a heavily cached page? Spectare Slot blocks fill client-side instead. The plugin can also publish an llms.txt on your domain from your content: a curated entry point so an agent that reads your site extracts your facts accurately from a few fetches, instead of scraping a rendered page.

1In wp-admin, go to Plugins → Add New, search for Spectare, and install it from the official WordPress plugin directory
2Go to Settings → Spectare and paste your workspace slug, plus your API key to enable zones.
3In Gutenberg, add a Spectare Zone block (hero, body, proof, or cta) where you want personalised content. Prefer client-side fill? Use a Spectare Slot block instead. Publish.
4In your Spectare admin under Settings, add your conversion URL pattern to activate tracking.
WordPress: Edit Page
● Saved
ParagraphWelcome to our site. We help teams ship faster.
Spectare Zone
zone="hero"
Personalised content rendered into the HTML
HeadingOur key features
Spectare Zone
zone="body"
Block · Spectare ZoneZone: hero ›
03Next.js SSR

Personalised content before the page loads

Call /api/assemble/ssr from a Next.js server component. Spectare classifies intent from your UTM params and referrer, assembles content, and returns a component list before HTML is sent to the browser. No shimmer. No layout shift. Personalised from first paint.

The client pipeline still runs in the background. Returning visitors with browsing history get a more specific assembly; the DOM updates silently in ~150ms if audience or stage differs from the server result.

✓
Zero content flash: Content is in the HTML before JavaScript runs
✓
Shared Redis cache: Warm intent patterns return in under 50ms, no Claude call
✓
Full pipeline still runs: Conversion tracking and returning visitor logic always active
app/page.tsx
import { headers } from 'next/headers';
import PersonalisedSection from '@/components/PersonalisedSection';

export default async function Page({ searchParams }) {
  const h = await headers();
  const sp = await searchParams;
  const res = await fetch(
    'https://spectare.ai/api/assemble/ssr',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${process.env.SPECTARE_API_KEY}`,
      },
      body: JSON.stringify({
        orgSlug: 'your-workspace-slug',
        referrer: h.get('referer') ?? undefined,
        utmSource: sp.utm_source,
        utmMedium: sp.utm_medium,
      }),
      next: { revalidate: 0 },
    }
  );
  const { assembly, intent } = res.ok
    ? await res.json()
    : {};

  return (
    <PersonalisedSection
      orgSlug="your-workspace-slug"
      initialAssembly={assembly}
      initialIntent={intent}
    />
  );
}
04REST API

Full control over rendering

Call /api/qualify first to get a signed token, then choose your assemble path. /api/assemble/components returns structured JSON with a named component and slots for each section, making it straightforward to render in React or any custom UI. /api/assemble streams SSE events for slot-based or server-rendered output.

All three endpoints are public. No API key required. Rate limited by IP.

// 1. Qualify the visitor
POST /api/qualify/{orgSlug}
{ "summary": "developer evaluating personalisation",
  "direct": true }
→ { token, intent, ... }

// 2a. Assemble: slot/SSE rendering (widget path)
POST /api/assemble
{ "token": "<token>", "orgSlug": "your-slug" }
→ streams sections as server-sent events

// 2b. Assemble: component JSON (React / custom)
POST /api/assemble/components
{ "token": "<token>", "orgSlug": "your-slug" }
→ { assembly: [{ component, slots, size }, ...] }
For AI agents

Automatic, nothing to install

Once your content is in Spectare, an agent that reads your site gets structured facts rather than a guess, with no setup. Your site serves an llms.txt describing what you offer, and every published atom is available as clean JSON at /api/content and /api/content/{slug}, each with a stable slug.

An assistant can also call the public qualify endpoint with what its user is after and share the returned link, so an agent-driven referral lands on a page personalised for that person. Through the WordPress plugin and SSR helper the same JSON is served on your own domain, not just spectare.ai.

Content API reference →

Not sure which path fits?

Start with the script tag or the WordPress plugin. Add Next.js SSR or the REST API later without changing your atom library.