Skip to main content

Deploy Website Widget

This guide embeds Customer AI on your website using the Qefro widget script.

Outcome

  • Widget loads from https://cdn.qefro.com/widget.js
  • Conversations hit https://api.qefro.com
  • Chat is bound to a specific Support workspace
  • Optional identify() for logged-in users

Prerequisites

  • Support workspace with validated knowledge (Build AI Customer Support)
  • Widget token from Admin Console
  • Ability to edit your site HTML / tag manager

Step 1 — Copy embed values

From Admin Console → Widget:

AttributePurpose
data-tokenPublishable widget token
data-endpointhttps://api.qefro.com
data-workspace-idSupport workspace id

Platform: Website Widget.

Step 2 — Add the script

<script
src="https://cdn.qefro.com/widget.js"
data-token="YOUR_WIDGET_TOKEN"
data-endpoint="https://api.qefro.com"
data-workspace-id="YOUR_SUPPORT_WORKSPACE_ID"
async>
</script>

Place it before </body> on pages where chat should appear (or load via your tag manager).

Step 3 — Verify in production-like preview

  1. Open the page in a private window.
  2. Ask a known FAQ; confirm citations.
  3. Ask an unknown topic; confirm refusal.
  4. Confirm the widget is not bound to an HR workspace.

Step 4 — Optional identify()

When Business Tools must act as the logged-in customer:

<script>
// After your app session is ready:
window.QefroWidget?.identify?.({
token: 'END_USER_JWT_OR_SESSION',
// follow current widget docs for exact payload fields
});
</script>

Exact helper names/fields: see Identity Forwarding and the embed snippet in Admin Console (source of truth as the widget evolves).

Workflow checklist

Widget go-live

  1. Validate Support workspaceCitations pass offline.
  2. Embed scriptToken + endpoint + workspace id.
  3. Smoke test on stagingFAQ + refusal + mobile layout.
  4. Optional identify()Only if tools need end-user authz.
  5. Monitor analytics/feedbackAdmin Console insights.

FAQ

Can one site use multiple workspaces?
Yes — use different embeds or switch workspace ids per page/section. Do not point a public page at an internal workspace.
Does the widget work with SPAs?
Yes. Load the script once; call identify() after client-side login completes.