Docs

Set up Apex Bot

Everything you need to go from sign-up to a live assistant on your website. Most sites are done in under ten minutes.

Setup guide

  1. Create your account and verify your email. Your workspace and your assistant are created automatically.
  2. Add knowledge. Give Apex your website address and it reads your pages. Add text for anything that isn't online.
  3. Customize the widget under Dashboard → Widget: name, colors, greeting, tone and model.
  4. Allow your website under Install & security. The widget only runs on the addresses listed there.
  5. Paste the embed code into your site and open it to test a conversation.

The Setup checklist in your dashboard tracks these steps for you.

Knowledge

Apex only answers from the content you give it. Under Dashboard → Knowledge you can add two kinds of source:

  • Website. Apex reads the page you enter, your sitemap and the pages they link to on the same domain, up to the page limit. It respects robots.txt and skips menus, footers and cookie banners. Re-sync it whenever your site changes.
  • Text. Paste FAQs, policies or product details that aren't on your website. Give each one a clear title; it's shown as the source of answers that use it.

When nothing in your knowledge matches a question well enough, the assistant says it doesn't know rather than guessing, and offers hand-off to your team if you've turned it on. The Answer confidence setting under Persona controls how close a match must be.

Customize

Every setting has a live preview in the widget studio. The most important ones:

SectionWhat it controls
GeneralBot and company name, header subtitle, default and interface language
AppearanceBrand color, theme, launcher icon, label and position, window width, corner radius and font
MessagesGreeting, suggested questions, the “I don't know” reply, disclaimer and privacy link
BehaviorAuto-open, teaser bubble, sources, feedback, how long chats are remembered and pages to hide on
AI modelProvider, model, creativity, answer depth, answer length, memory and a fallback model
PersonaTone, answer length, emoji, your own instructions, topics to decline and answer confidence
Hand-off & leadsThe email that receives hand-offs and the optional contact form before the chat

Changes reach your live widget within about a minute of saving.

Install the widget

Copy the embed code from Dashboard → Widget → Install & security. It has your own site key filled in and looks like this:

<script src="https://api.apexbot.eu/widget.js" data-site-key="apex_pk_…" async></script>

Paste it just before the closing </body> tag on every page where the chat should appear. Then add each address visitors use, for example https://example.com and https://www.example.com, under Allowed websites.

The site key is public by design: it only works on the websites you allow. If it's being misused, rotate it from the same screen and update the snippet on your site.

Platforms

WordPress

Use a header/footer code plugin (for example WPCode) and add the snippet to the site-wide footer, or paste it into your theme's footer.php before </body>.

Shopify

Online Store → Themes → Edit code, open layout/theme.liquid and paste the snippet before </body>.

Webflow, Wix and Squarespace

Add it as site-wide custom code in the footer: Site settings → Custom code (Webflow), Settings → Custom code (Wix) or Settings → Advanced → Code injection (Squarespace).

React, Next.js and other single-page apps

Load the script once, for example in your root layout. The widget keeps the conversation across client-side page changes on its own.

JavaScript API

Optionally set window.Apex before the script loads to override a few settings on a specific page:

<script>
  // Optional settings, read when the widget loads
  window.Apex = {
    lang: "auto",                 // "auto", "tr" or "en"
    greeting: "Hi! Ask me anything about our store.",
    suggestions: ["Shipping times", "Return policy"],
    theme: { primary: "#312c85", position: "bottom-right" },
  };
</script>

Once loaded, window.Apex lets your own code control the widget. Calls made before it has loaded are queued and run in order.

Apex.open()                          // open the chat
Apex.close()                         // close it
Apex.toggle()                        // open or close
Apex.send("Where is my order?")      // open and ask a question
Apex.identify({ name: "Ada", email: "ada@example.com" })

Apex.on("message", (m) => console.log(m.text, m.sources))
Apex.on("open", () => analytics.track("chat_opened"))
EventWhen it fires
open / closeThe chat window opens or closes
messageAn answer has finished streaming; receives { text, sources }
leadThe visitor submitted the contact form; receives { email, name, phone }
handoffThe visitor sent a “Talk to a human” request

Privacy controls

  • Conversations are deleted automatically after the retention period you set under Install & security (30 days by default).
  • Visitors can start a new chat at any time, which clears the old one from their browser. You can delete any stored conversation from the Conversations page.
  • Emails, phone numbers and card numbers are masked in our logs.
  • Add your privacy policy link under Messages to show it in the widget footer.

Troubleshooting

The launcher doesn't appear

  • Check that the page's exact address (including www and https) is listed under Allowed websites. Your browser console shows [Apex] Widget disabled: origin_not_allowed when it isn't.
  • Check the page isn't under one of the paths in Behavior → Hide on these pages.
  • Make sure the snippet's src points to https://api.apexbot.eu/widget.js and that the site key matches the one in your dashboard. After rotating the key, the old snippet stops working.

It says “I don't know” too often

  • Check Knowledge: a website source that failed or found few pages shows why.
  • Add the missing information as a text source.
  • Set Persona → Answer confidence to Lenient for small knowledge bases.

Answers stopped

The daily token budget under Install & security may have run out; the chat offers hand-off until midnight UTC. You can also check the system status page.