Developer docs

Embed the widget in one snippet.

Publish an experience in Widget Studio, then drop this script onto your storefront. It works with any site that lets you add a script tag.

Quick start

1. Publish an experience

In Widget Studio, build and publish a finder, assistant, search or configurator experience. Publishing gives you the experience ID used in the snippet.

2. Allowlist your domains

In dashboard settings, add every storefront domain that will embed the widget. Sessions from domains that aren't listed are rejected.

3. Add the snippet

Paste the script tag below into your storefront template, replacing data-id with your published experience ID and data-experience with the type you published.

4. Verify

Load your storefront, open the experience, and confirm shopper events appear in dashboard analytics. Use the simulated storefront to test before going live.

Install snippet

<script
  src="https://www.sellentum.com/api/widget.js"
  data-experience="finder"   <!-- finder | assistant | search | configurator -->
  data-id="YOUR_PUBLISHED_EXPERIENCE_ID"
  data-mode="modal"          <!-- modal (floating launcher) | inline (iframe) -->
  data-color="#0459fc"
  data-label="Find my match"
  data-position="right"      <!-- launcher side for modal mode: right | left -->
  data-height="780px"        <!-- iframe height for inline mode -->
  async
></script>

Configuration attributes

data-experience

Which experience to load: finder, assistant, search or configurator.

data-id

The published experience ID from Widget Studio (required).

data-mode

modal renders a floating launcher that lazy-loads the iframe on open; inline embeds the iframe directly.

data-color / data-label

Launcher accent colour and button text.

data-position / data-height

Launcher side (modal) and iframe height (inline).

Public runtime

Session

The loader calls POST /api/widget/session to mint a short-lived, domain-scoped widget token. Add your storefront domains in the dashboard so sessions are accepted.

Experiences

The iframe loads /finder, /assistant, /search or /configurator for your published experience and posts shopper interactions back to /api/events.

Data boundary

Only published, shopper-safe data is served; product selection is deterministic and server-side, and grounded AI describes selected products from approved facts.

Test the embed on a simulated storefront

Reports API

Pull your workspace analytics programmatically. Create a key in Dashboard → API Center (the slk_live_… secret is shown once) and send it as a Bearer token.

curl https://www.sellentum.com/api/v1/reports/summary \
  -H "Authorization: Bearer slk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Base URL

https://www.sellentum.com

Dates

from / to are YYYY-MM-DD UTC day bounds (inclusive). Default window is 14 days; a range may not exceed 180 days.

Envelope

Every response is { data, meta: { workspace_id, from, to, generated_at }, next_cursor }. Paginate by passing next_cursor back as ?cursor=.

Rate limits

120 requests/minute per key, with X-RateLimit-* headers; a 429 includes Retry-After.

GET /api/v1/reports/summary

Headline totals — views, starts, completions, recommendations and buy clicks.

GET /api/v1/reports/timeseries

Trend series over the window, by day or week.

GET /api/v1/reports/products

Per-product performance across the guided-selling funnel.

GET /api/v1/reports/revenue

Revenue attribution for recommended and purchased products.

GET /api/v1/reports/recommendation-quality

Recommendation-quality signals from shopper outcomes and feedback.

GET /api/v1/reports/feedback

Aggregated shopper feedback on recommendations.

GET /api/v1/reports/cohorts

Cohort breakdowns of shopper behaviour.

GET /api/v1/reports/events

Raw event export (requires the opt-in events:read scope; paginated).

Full OpenAPI specification

Troubleshooting

Widget doesn't appear

Check the experience is published and data-id matches its ID, the script tag loaded (no console errors), and no Content-Security-Policy is blocking www.sellentum.com scripts/frames.

Session rejected / blank experience

The storefront domain isn't allowlisted. Add the exact domain (including subdomain) in dashboard settings.

Wrong experience loads

data-experience must match what you published (finder, assistant, search or configurator) and data-id must be that experience's ID.

Inline embed is cut off

In inline mode, set data-height to the space you want the iframe to occupy.

API returns 401 / 403

401 means a missing or invalid key; 403 means the key was revoked or lacks the scope — raw event export needs events:read.

Launch checklist

  • Experience built and published in Widget Studio.
  • Product catalog imported, with facts approved for grounded answers.
  • All storefront domains added to the dashboard allowlist.
  • Snippet installed with the correct data-experience and data-id.
  • Tested on the simulated storefront and on the live domain.
  • Shopper events confirmed flowing into analytics.
  • Optional: API key created in API Center and report subscriptions configured.