Docs

FAQ

Do users need to install anything?

No. The widget is a single JavaScript file. Users just paste the embed code into their HTML — no npm packages, no build steps, no dependencies.

Will it conflict with my CSS?

No. The widget renders inside a Shadow DOM, completely isolating its styles from your page.

Does it support single-page apps (React, Vue, Next.js)?

Yes. The script loads once and persists across route changes. For React/Next.js, place the script in your root layout.

Next.js App Routertsx
// app/layout.tsx
export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        <script
          dangerouslySetInnerHTML={{
            __html: `
              window.Respondo = window.Respondo || {};
              Respondo.init = Respondo.init || function(c) {
                window.RespondoAIConfig = c;
              };
              Respondo.init({ agentId: 'YOUR_AGENT_ID' });
            `
          }}
        />
        <script src="https://api.respondo.ai/widget/widget.js" async />
      </body>
    </html>
  );
}

What happens when a conversation is resolved?

If the user sends a new message after resolution, a brand new conversation is automatically created. The AI agent handles it from scratch.

How is the widget loaded?

The widget is loaded asynchronously (async), so it never blocks page rendering. The total bundle size is ~40KB (gzipped ~15KB).

How does escalation work?

Users can click the "Talk to human" button, type a phrase requesting a human, or the AI may escalate automatically if it cannot answer confidently. Once escalated, the AI stops responding and all follow-up messages are forwarded to your support team. See the Escalation & Handover section for details.

Can users continue chatting with AI after escalation?

Yes. The widget shows a "Continue with AI" button that lets the user dismiss the escalation and resume the AI conversation.