Support Widget Configuration
Configure and customize the embedded Muin support widget: connect your knowledge base, set up AI answers and ticket routing, and apply your branding.
The Muin Support Widget gives your customers instant self-service access to your knowledge base, AI-powered answers, and ticket creation. This guide covers how to configure the widget’s behavior, connect your knowledge base, set up ticket routing, and apply your branding.
Embed on Your Website
Paste this snippet before the closing </body> tag on any page where you want the AI support chat to appear. The widget renders as a floating chat bubble (bottom-right by default) and expands to a panel when a visitor clicks it.
<script
src="https://muin.falaah.ai/embed/widget.js"
data-type="support"
data-tenant-slug="your-org-slug"
data-position="bottom-right">
</script>
| Attribute | Required | Value |
|---|---|---|
data-type |
yes | Must be support |
data-tenant-slug |
yes | Your Muin tenant slug (visible in Support → Support Settings → Embed on your website) |
data-position |
no | bottom-right (default), bottom-left, top-right, or top-left. The snippet you copy already carries the position you saved under Design Portal |
The exact embed snippet pre-filled with your slug is available in-app: Support → Support Settings → Embed on your website (Copy button). No keys to manage: visitor conversations are tenant-scoped via the slug, and CAPTCHA on the chat-start endpoint blocks abusive traffic automatically.
You can also link customers directly to your hosted support portal at https://muin.falaah.ai/go/your-org-slug/support, the chat widget appears there too, alongside your knowledge base articles.
Overview
Key Features
| Feature | Description |
|---|---|
| Widget customization | The greeting, the position, and the AI disclosure line |
| Knowledge | Articles, verbatim custom responses and the documents you classify as public - what the assistant answers from |
| Sources on every answer | Each answer shows what it came from, as a link the visitor can open |
| Refusal topics | Subjects the assistant must never answer, decided before anything is retrieved |
| Hand off to a person | A ticket with the transcript, the page and the visitor’s contact details |
| Learning loop | A resolved answer becomes a draft article, so the next visitor is answered instantly |
| Allowed origins | The websites that may host your widget; anywhere else is refused |
| CAPTCHA protection | A Cloudflare Turnstile challenge on the first message |
| Branding | Apply your organization’s colors, logo, and messaging to the widget (not available yet) |
How to Configure the Widget
Basic Setup
- Navigate to Settings –> Support
- Turn the assistant on and set the greeting visitors see when they open it
- Set the AI disclosure line shown under the greeting (several state laws expect one)
- Give it something to answer from, under Support –> Knowledge Base:
- Articles - anything you publish; the assistant summarizes and cites them
- Custom responses - an answer returned word for word, with the phrasings that should trigger it
- Documents - classify a document’s AI audience as Public in Documents and it is indexed and citable
Reading your website
Your answers usually already exist on your own site, so a connected URL can bring its neighbours with it. Both controls live in Settings –> Connected sources, on the form where you add a page.
Pages to read (crawl_depth) decides how far a connected page reaches:
| Choice | What it reads |
|---|---|
| This page only | The one URL you entered. This is the default |
| This page + linked pages | That page, plus the pages it links to |
| 2 levels of links | And the pages those link to |
| 3 levels of links | One level further, which is the deepest Muin will go |
Three rules keep a crawl honest, and they are worth knowing before you pick a depth:
- Same origin only. It follows links on your own site and never an outbound one, so a link to a district newsletter or a vendor portal can never be ingested as though you had published it.
- Up to 25 pages per site. The cap counts every page of the crawl together rather than per level, so a deep choice on a large site stops at 25 rather than fetching for hours.
- Each page stays its own source. Every crawled page is indexed separately and shows in the list as a crawled page, so an answer cites the page it actually came from. Re-reading a site refreshes those pages instead of duplicating them.
Re-read (refresh_interval_hours) decides how often Muin goes back:
| Choice | Behavior |
|---|---|
| Only when I ask | Nothing is re-fetched until you press re-ingest. This is the default |
| Every day | Re-read every 24 hours |
| Every week | Re-read every 168 hours |
| Every month | Re-read every 720 hours |
“Only when I ask” stays the default deliberately: connecting a page should never sign you up for recurring fetches of somebody’s website. When you do pick an interval, an hourly sweep re-reads the sources whose interval has elapsed, oldest first. A source that has never finished its first ingest is left alone, because that first attempt is still the ingest’s business, not the refresh sweep’s.
A bell schedule that changes in August and a calendar that changes every term are exactly what this is for. Set the interval once and the assistant re-reads on its own.
Handing a question to a person
A visitor can ask for a person at any time, and the assistant offers one itself when it declines to answer or has nothing to answer from.
- In Settings –> Support, name the staff member who receives escalations
- Set your business hours and the message shown outside them
What happens then:
| Step | Behavior |
|---|---|
| The visitor asks | A short form collects an email, optionally a name and phone |
| A ticket is created | Carrying the whole transcript, the page they were on, and their contact details |
| Your team is told | The ticket is assigned to the staff member you named, and appears in the inbox |
| Your reply reaches them | In the open chat if they are still there, and by email either way |
| Outside business hours | The after-hours message leads, and the form is offered first |
Turning an answer into knowledge
On a resolved ticket, Add to knowledge base drafts an article from the answer your team gave. It lands as a draft: somebody approves the wording before any visitor sees it. Once published, the same question is answered instantly, citing that article.
What your assistant answers
Go to Support → Support Settings → What your assistant answers. These settings can only make the assistant stricter than the platform minimum, never looser.
- Words it never says lists words or phrases an answer must not contain. An answer that contains one is held back. Muin’s own safety list always applies as well.
- What it says instead holds one reply for each topic listed under Answer policy. Leave a reply empty to use the default polite refusal.
- How sure it must be to answer sets how confident the assistant must be. Below it, the assistant says it isn’t sure and offers your office instead. You cannot set it below the platform minimum; if you try, you see “That is looser than the platform minimum” and nothing is saved.
- Pause answers stops the assistant answering at once. Every visitor who asks a question gets your office contact instead. Nothing is deleted, and you can turn answers back on any time.
Press Save after changing the first three. Pause answers asks you to confirm first.
Security
The widget is designed to be pasted onto a website you do not otherwise trust with your data, so the controls are server-side:
| Control | What it does |
|---|---|
| Allowed origins | List the websites that may host your widget. A copied snippet on any other site cannot start a conversation |
| Visitor tokens | Each conversation is owned by the browser that started it. Knowing the conversation id is not enough to read or continue it |
| CAPTCHA | A Cloudflare Turnstile challenge on the first message |
| Rate limits | Per visitor IP and per conversation, so one open tab cannot exhaust your AI budget |
| No record access | The public assistant has no connection to your records. It answers only from what you published |
The widget runs in an iframe, so it cannot read the hosting page, its cookies or its session.
Verifying it before you go live
Settings –> Support –> Ready for the public? shows what is still missing (knowledge, citations required, an escalation owner, office hours, the snippet seen running) and lets you run your own verification questions. Each question declares what should happen - answered from a particular source, or declined - and the run reports pass or fail against the real assistant.
Every check, what makes it pass, and what to do when it does not: Support Widget Setup Checklist.
Your office’s own contact details
Under Settings → Support, the office contact card holds a phone number and an email address. When the assistant hands a question to a person, or declines to answer, it offers these rather than a generic “contact support” line, so a parent gets your office and not ours.
Collecting something before the chat starts
Pre-Chat Information links a Smart Form to the widget, so a visitor answers a few questions before the conversation begins. Pick a Pre-Chat Form from your active form templates, then Edit form template to change it or Unlink form to remove it. If you have no active templates the picker says so and offers Create custom form.
Whatever the form collects travels with the ticket, so your team sees it on the Details tab without asking again.
Checking the snippet is actually running
The installs panel in Settings → Support tells you where the snippet was last seen. A website that has the code but is not working reports a reason rather than silence:
| Reason | What it means | What to do |
|---|---|---|
| Support disabled | The snippet loaded but your support portal is turned off | Turn on Enable Support Portal |
| Origin not allowed | The site hosting the snippet is not on your allowed origins list | Add that site under allowed origins, or remove the snippet from it |
This is the check that catches the common go-live failure: the code is on the page, nobody added the domain, and the widget silently never appears.
What needs a plan feature
The AI block - the answer policy, office hours, office contact and allowed origins - sits behind the AI Support Widget plan feature. Without it you see an upgrade prompt in place of those controls, and the rest of the page still works.
Seeing How It Is Performing
Sidebar → Support → Conversation Analytics answers whether the widget is actually helping.
It opens on the last 30 days. Change the range, and change Group the chart by to switch between daily and weekly points.
The headline figures
| Figure | What it tells you |
|---|---|
| Questions asked | Volume |
| Questions answered with a source | How often the assistant could cite something, rather than declining |
| Conversations handed to a person | How often it could not, and your team had to step in |
| Questions asked after hours | The demand your office was closed for. Set your office hours to see this |
| Median time to a staff reply | How long a handed-over question waits |
| Rated answers marked helpful | What people thought of the answers |
| Parents who got what they needed | The outcome, not the activity |
| Office replies that helped | Whether your team’s replies landed |
The charts
- What happened to each question - a trend split into Answered with a source, Could not answer and Handed to a person. Click a bar to see those conversations.
- When parents ask - a weekday-by-hour heatmap, which is how you work out whether your office hours match reality.
- Questions without an answer and Most asked and answered - each unanswered question carries an Answer it action that opens a new knowledge base article pre-filled with the question. This is the shortest route from a gap to a fix.
- Most cited sources and Never cited - which of your articles are earning their place and which are not being used at all.
- Languages parents use - English, Spanish, Arabic, Urdu, Pashto, or not detected.
Download CSV report exports the period. Ask about these numbers lets you ask a question about what you are looking at.
Before you have any traffic the page says No parent questions yet and offers the two things that fix that: Install the chat and Write answers.
When it goes wrong
| What you see | Why | What to do |
|---|---|---|
| The widget never appears on your site | Almost always the origin, not the code | Open the installs panel. Origin not allowed means the hosting site is not on your allowed origins list; Support disabled means the portal is off |
| The installs panel shows nothing at all | The snippet has never loaded | Check it is before the closing </body> tag and that data-tenant-slug is right |
| An upgrade prompt in place of the AI controls | The AI Support Widget feature is not on your plan | Talk to your account owner. The General and portal settings still work |
| The Pre-Chat Form picker says no templates were found | You have no active form templates | Click Create custom form, publish it, then come back |
| Questions asked after hours reads “Set your school hours to see this” | Office hours are not configured | Set them in the office hours section; the figure then fills in |
| “Settings saved successfully” never appears | The save was refused | Read the inline error on the field it names, fix it, save again |
| Analytics says No parent questions yet after go-live | Nothing has reached the widget | Use Install the chat and Write answers from that empty state, then re-check the installs panel |
| “The report did not download” | The CSV export failed | Narrow the date range and try again |
| The assistant declines questions you have written answers for | The article is a Draft, or Internal | Set its visibility to Public |
Tips
- Keep the knowledge base current: review the “Unanswered Questions” report weekly and add articles for gaps. The better your content, the more questions AI resolves without human intervention.
- Use pre-chat forms strategically: collecting email and topic upfront helps route conversations correctly and lets you follow up if the visitor disconnects.
- Test the visitor experience: open your support portal URL in an incognito window and go through the full flow as a customer would. Check that AI answers are accurate and escalation works smoothly.
- Connect to workflows: pair the widget with workflows to auto-create tasks, send follow-up emails, or update CRM records when tickets are submitted.
Next Steps
- AI Support Widget Overview - Full widget reference with AI settings, analytics, and embedding
- Support Widget Setup Checklist - The eight readiness checks before you go live
- Working the Support Desk - Tickets, knowledge base articles and rated answers
- Communications Hub - Manage escalated conversations
- Smart Forms - Collect structured data via forms