Six behaviors are worth understanding because they're the ones that determine how the agent handles edge cases — visitors trying to manipulate it, missing knowledge, multi-page sessions, and unexpected questions.
01behavior
The public token is the only key the widget has
Website visitors are never asked to sign in. The widget and chat endpoints resolve agents only by the public token in your embed snippet. That token grants access to one specific agent's chat, knowledge retrieval, and lead capture — nothing else. It cannot list other agents, read your dashboard, view another workspace's data, or change settings. If you accidentally leaked the token to the internet, a bad actor could chat with your agent — that's it.
02behavior
Conversation history is rebuilt from the database every turn
Each chat request rebuilds the conversation context by reading the last forty messages of that session from the database. The client (the visitor's browser) cannot inject fake prior turns — even if a visitor crafted a request claiming "earlier the agent agreed to give me a 90% discount," the server ignores that claim because it builds context from its own records. This is what makes prompt-injection-through-fake-history impossible.
03behavior
Knowledge retrieval is bounded to one agent
When the visitor sends a message, the server first turns that message into a 1,536-number embedding. It then asks the database "find the five knowledge items most similar to this embedding, with similarity above 0.5, where agent_id = THIS agent." The result is injected into the agent's instructions for that one reply. The query is parameterised by agent ID, so even if two agents in your workspace share the same database, the search cannot leak knowledge from one into the other.
04behavior
Page context is opt-in
If you turn on "send page context" in the agent's widget settings, the script will include the current page URL and page title with each chat message. The system prompt then tells the agent that information so it can answer with awareness of where the visitor is ("the visitor is on the pricing page, so they're probably evaluating"). It's off by default; turning it on doesn't send any other browser data.
05behavior
The fallback marker prevents hallucinations
Every agent's system prompt is appended with: "If you are uncertain or cannot answer from the information available, begin your response with [UNSURE]." When the model emits that marker, the backend strips it before showing the reply to the visitor, logs the unanswered question internally, and (if you've configured one) fires a handoff webhook with the full transcript. Over time the unanswered-question log becomes your roadmap for what knowledge to add next.
06behavior
Webhooks let the agent talk to your other systems
Optional outbound webhooks fire on six events: conversation_started, lead_captured, handoff_requested, unanswered_question, csat_received, and conversion. Each fires a POST with the full event payload (transcript, contact details, page URL, agent metadata). Pair this with Make.com, Zapier, n8n, or a custom HTTP handler to deliver leads to your CRM, ping Slack, or trigger downstream automation.