Skip to content
Sendora Cloud
Create account
Operate

Contact Widget

Embeddable chat widget with KB-grounded retrieval + LLM (Ollama Cloud free tier; BYOK Anthropic / OpenAI for paid plans).

Features

  • **Public `POST /chatbot/message` endpoint** — submission creates a `support_tickets` row + emits `ticket.created_via_widget` event. Honeypot + signed-token challenge replaces a Turnstile dependency.
  • **AI auto-reply (opt-in)** — gpt-oss:20b on Ollama Cloud. RAG: case-insensitive `ILIKE` over `kb_articles.title + body`, top-5 retrieved, re-ranked (title hit ×3, body hit ×1), top-3 fed as context. System prompt anchors strictly to retrieved context.
  • **Citations in reply** — model returns article id + title for each citation; UI can link to KB.
  • **Canned fallback** when AI off OR LLM unavailable — per-org `ai_chatbot_enabled` toggle + `AI_CHATBOT_ENABLED` env kill-switch. Widget never sees a 500.
  • **`ai_traits` on inbound** — extracts profile traits from message content (fire-and-forget; per-org `ai_auto_traits_enabled` opt-in).
  • **Per-project chatbot configs** — colours, labels, persona name, KB binding, handoff toggle + message.
  • **Drop-in chat bundle (Wave 49)** — `<script src="https://go.sendoracloud.com/chat.js" data-chatbot=UUID async>` adds a floating chat button + AI-replied panel to any page. ~6 KB, dependency-free. Talks to public `POST /widgets/:widgetId/chat` (UUID-as-key, no API key needed on a public page). Multi-turn context via server-minted `sessionId`.
  • **Drop-in contact-form bundle** — `<script src="https://go.sendoracloud.com/widget.js" data-widget=UUID async>` for the email-based ticket flow. ~4 KB.
  • **SDK helpers** — Web `sendora.chatbot.send()`; RN 0.18.8+ ships `chatbot.sendMessage()` with auto session id per JS lifetime. Use these when you need custom chat UI inside a native app.

Common use cases

  • Contact form on a marketing site where the submission should land in your existing Support inbox, not a separate vendor.
  • AI-assisted support entry-point grounded on YOUR KB articles (not a generic LLM hallucinating product details).
  • Multi-turn chat in your own app — call the SDK from your custom UI; backend handles retrieval + LLM + ticket creation.

Setup

  1. 1
    Toggle AI on (optional)
    Dashboard → Settings → AI features → Enable chatbot LLM. Per-org opt-in.
  2. 2
    Author KB articles
    Knowledge Base module. Chatbot retrieves on ilike match before LLM call.

Chatbot

Mount the widget

FREE

Drop-in floating chat bubble. The widget loads the bot config + knowledge-base index lazily; cold-start <100KB.

<script src="https://api.sendoracloud.com/widgets/chatbot.js"
        data-widget-id="{{WIDGET_ID}}"
        async></script>

Send a message programmatically

FREE

Bypass the widget UI and send messages from your own chat surface. Returns the bot reply + session id for follow-ups.

const reply = await sendora.chatbot.sendMessage({
  botId: "bot_abc",
  message: "How do I reset my password?",
  sessionId: previousSessionId,
});

Create a bot

GROWTH+

Define system prompt, knowledge sources, and fallback policy. Per-org `ai_chatbot_enabled` opt-in required for live LLM-backed replies.

curl -X POST https://api.sendoracloud.com/api/v1/orgs/<ORG_ID>/chatbots \
  -H "x-api-key: pk_prod_…" \
  -d '{
    "name": "Helpdesk bot",
    "systemPrompt": "You are a friendly support agent…",
    "knowledgeBaseIds": ["kb_main"],
    "fallbackToHuman": true
  }'

Related